タグ

ブックマーク / christina04.hatenablog.com (3)

  • Goの実プロジェクトでのエラーハンドリングの悩みどころと解決案 - Carpe Diem

    概要 Go言語に限らずではありますが レイヤ間のエラー伝搬 外部APIを叩いた時のエラーコードハンドリング HTTPやgRPCとしてレスポンスを返す時のエラーハンドリング で悩むことは多いと思います。 今回はそれの1つの方針を紹介します。 課題 レイヤ間のエラー伝搬 Goのエラーは基的に例外を扱わず、常にハンドリングする前提です。なので user, err := findUser(id) if err != nil { return User{}, err } みたいなコードが大量に生まれます。 一方でその関数を呼び出した側ではそれがどんな種類のエラーなのか分かりません。 NotFoundだったりDB自体のエラーだったりしますが、それを外層のレイヤ(HTTPレスポンスを返すハンドラなど)でハンドリングするのは辛いです。 レイヤ毎のエラー内容を知る必要が出てくるため余計な依存が生まれてしま

    Goの実プロジェクトでのエラーハンドリングの悩みどころと解決案 - Carpe Diem
    chidakiyo
    chidakiyo 2021/06/14
  • Network Namespaceから外部ネットワークへアクセスする - Carpe Diem

    概要 前回の christina04.hatenablog.com の続きで、今回はネットワーク名前空間から外部ネットワークへアクセスできるようにします。 環境 Ubuntu 18.04 以下の状態からスタートします。 手順 ip_forwardの有効化 デフォルトだとIP FORWARDは無効になっているため、有効にしておきます。 # echo 1 > /proc/sys/net/ipv4/ip_forward 永続化したい場合は/etc/sysctl.confに net.ipv4.ip_forward = 1 を設定します。 ネットワーク名前空間のデフォルトゲートウェイをveth1に host1やhost2のルーティングテーブルを確認すると、デフォルトゲートウェイが設定されていません。 $ sudo ip netns exec host1 netstat -rn Kernel IP r

    Network Namespaceから外部ネットワークへアクセスする - Carpe Diem
  • iptablesの仕組みを図解 - Carpe Diem

    概要 ネットワーク周りでたまに触るiptablesですが、たまになせいで度々忘れてググり直すことが多いので理解しやすいよう図を作ってみました。 iptablesの仕組みを図解 iptablesの構成図 iptablesは以下のように iptables -> Tables -> Chains -> Rules という構成をとっています。 なのでCLIの書き方も # iptables -t {テーブル名} -コマンド {チェーン名} {ルール} といった形で順に指定するフォーマットで書きます。 テーブル テーブルには以下の4つ種類があります。 filterテーブル natテーブル mangleテーブル rawテーブル 各テーブルでは図のようにそれぞれがチェインを持っています。チェインはユーザが独自に定義することも可能です。 それぞれのチェインは初期状態では特にルールを持っておらず、基ポリシー

    iptablesの仕組みを図解 - Carpe Diem
  • 1