タグ

ブックマーク / qiita.com/cubicdaiya (10)

  • GoのnetパッケージにおけるIPアドレスの内部表現 - Qiita

    // IP address manipulations // // IPv4 addresses are 4 bytes; IPv6 addresses are 16 bytes. // An IPv4 address can be converted to an IPv6 address by // adding a canonical prefix (10 zeros, 2 0xFFs). // This library accepts either size of byte slice but always // returns 16-byte addresses. package net // IP address lengths (bytes). const ( IPv4len = 4 IPv6len = 16 ) // An IP is a single IP address,

    GoのnetパッケージにおけるIPアドレスの内部表現 - Qiita
  • go-bindataで実行バイナリにWeb UIをバンドルする〜slackboardの場合〜 - Qiita

    個人的にGoはミドルウェアやコマンドラインツールの開発によく利用していますが、その理由の一つにシングルバイナリなのでデプロイが楽、というのがあります。一方で、(特に)サーバ系のミドルウェアだとちょっとしたWeb UIを付けたくなることがあります。こうなると、シングルバイナリのほかにHTMLCSSJavaScriptといったリソースファイルが多数付いてくるのでちょっと面倒です。 そこでgo-bindataを使って実行バイナリにそれらのリソースファイルをくっつけてしまうという方法があります。go-bindataは各リソースファイルの内容をGoのコードとして生成し、Asset()という関数を呼び出すことで内容を取得することができます。 go-bindataによるコード生成 まずは、go-bindataをインストールします。

    go-bindataで実行バイナリにWeb UIをバンドルする〜slackboardの場合〜 - Qiita
  • Slackboard〜Slackプロキシサーバ in Go〜 - Qiita

    昨年末の話だけどSlackへの通知をプロキシするサーバをGoで書きました。如何せん1〜2時間で書いたので一部洗練されてない箇所があるかもしれませんが、 今年のはじめからすでに実運用をはじめています。 Slackboardの役割 SlackboardはSlackへのプロキシサーバであるslackboardとそのためのクライアントであるslackboard-cliの2つから構成されています。↓の図のようにSlackへの通知をクライアントが行うのではなく、クライアントからのリクエストを受け取ったプロキシサーバであるslackboardが行うという仕組みです。 このようにSlackへの通知を直接ではなくプロキシを介して行うのには以下のメリットがあります。 Slackへの通知設定をプロキシサーバで一元管理できる Slackへの通知リクエストをロギングできる 各サーバに散らばったSlackへの通知プロ

    Slackboard〜Slackプロキシサーバ in Go〜 - Qiita
  • nginxのパラメータチューニングとh2o - Qiita

    (追記:タイトルが少々煽り気味な気がしたので微妙に変更しました。) h2oとnginxの性能比較 nginxよりも速いとされるh2oですが、実際に自分でもローカルでベンチマークを取ってみました。環境は以下の通りです。 EC2のc4.8xlargeインスタンス gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16) Linux ip-172-31-13-40 3.14.35-28.38.amzn1.x86_64 #1 SMP Wed Mar 11 22:50:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux nginx-1.8.0 h2o-1.2.1-alpha1 wrk(ベンチマーク) ベンチマークコマンド 実行するベンチマークコマンドは以下になります。なお、オプションはできるだけRequest/secが大きくなるように調

    nginxのパラメータチューニングとh2o - Qiita
  • cgoがGoのコンパイル速度に与える影響 - Qiita

    はじめに (タイトルはScala の機能がコンパイル速度に与える影響にインスパイアされました。) Goのコンパイル速度の速さはセールスポイントの一つです。しかし、そんなGocgoを使い始めるとコンパイルが途端に遅くなります。あんまりこのあたりについて言及しているエントリがないので書いてみることにしました。 このエントリではサンプルプログラムがいっぱい出てくるので以下のリポジトリにまとめました。 また、コンパイル速度の比較もmakeで行えるようになっています。

    cgoがGoのコンパイル速度に与える影響 - Qiita
  • cachectldでOSのページキャッシュ削除を自動化 - Qiita

    サーバを運用していると時々全然メモリが余っているはずなのにスワップが起きてしまうことがあります。この場合よくあるケースは非常に大きなログファイルがあってそのログファイルのために大量のページキャッシュが利用されていることです。 ログファイルなんて滅多に読まないので、そんなのにメモリ使うぐらいだったらもっと別のアプリケーションにちゃんと割り当ててくれよと思うのですが、なかなかうまくいかないものです。 そこで効果的なのがposix_fadivseをラップして指定したファイルのページキャッシュを解放するツールです。 ページキャッシュがどんどん増えている…そんな時に役立つワンライナー ファイル指定で、ページキャッシュにのっているか確認したり追い出したり 私の場合、今まではnocacheというツールをちょこっと改造して使っていましたが、最近もうちょっと便利な風に改造したいと思うようになってきました。例

    cachectldでOSのページキャッシュ削除を自動化 - Qiita
  • nginxパフォーマンスチューニング〜静的コンテンツ配信編〜 - Qiita

    今回はHTMLCSSJavascriptといった比較的軽量な静的コンテンツの配信をnginxでやるケースに絞ってチューニングする際のポイントについて紹介しようかと思います。 (注:worker_rlimit_nofileやsysctl.confのネットワーク周りの設定のような定石的なチューニングについてはあえて解説しないのであらかじめご了承ください。) コンテンツをgzip圧縮する 何はともあれgzip圧縮です。ネットワーク帯域に比べればCPUリソースなんて安いものです。 しかし、多くの場合これだけでは十分ではありません。何故ならnginxはデフォルトではContent-Typeがtext/htmlのコンテンツしか圧縮しないためです。圧縮対象のContent-Typeを増やすにはgzip_typesを使います。 単純なWebサイトであれば上記の設定で十分ですが、場合によってはappli

    nginxパフォーマンスチューニング〜静的コンテンツ配信編〜 - Qiita
  • h2oとUnixドメインソケット - Qiita

    h2oは部分的にではありますが、Unixドメインソケットをサポートしています。 Unixドメインソケットでlisten h2oでUnixドメインソケットでlistenするには例えば以下のようなconfを用意します。

    h2oとUnixドメインソケット - Qiita
  • Goサーバのモニタリング - Qiita

    5日目担当の@cubicdaiyaです。先月末のGoConではGoのカンファレンスなのにほぼnginxをビルドする話しかしてなかったので今日はちゃんとGoの話をします。 Goで書くサーバプログラム Goではサーバプログラムを書くためのユーティリティが豊富に揃ってる上に、ゴルーチンやチャネルを利用することで高いパフォーマンスが要求される環境でも十分な性能を発揮することができます。いつだったか「あれはHTTPサーバ書くための言語ですよ」なんて話をとあるエンジニアから聞いたことがあるくらいです。 例えば「Hello, World!」を返すだけのHTTPサーバであれば標準ライブラリのnet/httpを利用することで以下のように書くことが出来ます。 package main import ( "fmt" "net/http" ) func handler(w http.ResponseWriter,

    Goサーバのモニタリング - Qiita
  • nginx-buildでnginxをビルドしよう - Qiita

    nginx-buildGoで書かれたnginxをビルドするためのツールです。Goの環境が整っていればgo getでインストールすることができます。 また、Goがインストールされてない環境向けに↓でビルド済みバイナリ(linuxmacの64bit版)を用意しています。 nginx-buildにできること nginx-buildは主にnginxのビルドにまつわる以下のタスクの大部分を自動化します。 nginxのソースコードのダウンロード configureのオプション指定 依存ライブラリ(PCRE、ZLIB、OpenSSL)のダウンロード、組み込み サードパーティーモジュールのダウンロード、組み込み、バージョン管理 筆者は過去にnginxのサードパーティモジュールを開発したり、数十台のnginxサーバを運用していたので、これらのタスクを頻繁に実行していました。しかし、ある時あまりにも面倒に

    nginx-buildでnginxをビルドしよう - Qiita
  • 1