なんかかきたい

プログラミングなどの個人的なメモやサークル「ゆきいろパラソル」の情報を載せてます

新年だしお雑煮食べながらkibana4をインストールする

Kibana4.3になってelasticsearch2.1互換になったので試しにインストールしてみようと思ったのですが、新年なのでお雑煮でも作りながら触ってみました。

いつものようにDebianでのセットアップですが、応用すれば他の環境でも動かせると思います。

続きを読む

C89情報と12月近況2

コミケ(C89)について

三日目東メ49a 北海道プリンプリン騎士団 さまのスペースに 「ひだまりPHP vol.2 開発環境構築編」を20部ほど委託します。

chrome API本やSwift本などの頒布があるそうです。

東4ホールと5ホールの間くらいの位置ですので、C89参加の方はぜひお立ち寄りください。

内容についてはC88の記事に乗せていますのでそちらを参照してください!

t-cyrill.hatenablog.jp

後は近況です。

続きを読む

FreeDOSのイメージをPXEでブートする

2015年でもDOSを起動しなければならないことがあって、BIOSのアップデートとかBIOSのアップデートとかBIOSのアップデートなんだけど、2015年なのでフロッピードライブとか用意するのは簡単ではないし、何よりアップデート対象のマシンがデータセンターに置かれていたりすると、フロッピーをさすためだけにデータセンターに入館するのは正直しんどい。これはフロッピーがUSBフラッシュメモリーになっていたとしても同じだと思う。辛い。

そこでネットワークブートできないかなと色々試してみたらこれは行けそうみたいな方法を自分なりに確立したのでメモを残しておこうと思います。

技術的な話題が久しぶりな感じですが少々お付き合いください。

続きを読む

C89 抽選漏れしました / 凛ちゃんハピば

C89、今年もサークル参加できれば引き続きひだまりPHPの新作とサーバ運用系のペラ本を作ろうと思っていたのですが、今回は残念ながら抽選漏れとなってしまいました。残念。

同人ソフトで申し込みを行ったのですが、同人ソフト枠は激戦区なんですねー・・・。

夏まで9ヶ月ほどあるので、本来冬に書こうと思っていたネタはこのブログで適当に消化したり、商業のWeb+DB PRESSのほうに書いていこうとおもいます。

続きを読む

PHPのビルドにはgcc最適化オプションをつける

Linuxを使ってると、ディストリビューションパッケージのバージョンが古かったり、リンクされているライブラリがダメダメだったりして仕方なく自分でビルドするかーってなることがまあまああると思うのですが、何も考えずにビルドするだけではいい感じのバイナリが得られません。

これはPHPに限った話ではないのですが、長時間動かすサーバアプリケーションを自分でビルドするときにはgccの最適化オプションをつけるようにしないと、実行速度が遅くなったり、無駄にCPUを消費する時間が長くなってしまいもったいないです。

デフォルトでいい感じにビルドできればいいのですが、PHPの場合そういうことはなくgccの最適化オプションは自分でちゃんとつける必要があります。 オプションは環境変数、CFLAGSとCXXFLAGSを使って設定しconfigureスクリプトに渡します。

gccの最適化オプションは種類が多いのでとても複雑なオプションを指定しようみたいなことを書いているページもいくつかあるのですが、 複雑であまり効果のないオプションを指定する必要はないので、単に-O2-march=nativeを指定するだけで良いと思います。

export CFLAGS="-O2 -march=native -pipe"
export CXXFLAGS="${CFLAGS}"
./configure (色々ほかのオプション)

-march=nativeコンパイラに特定のCPU向けのコードを生成するように指示するオプション。 このを指定するとCPUの違いで動作しなくなることがあるかもしれないのでバイナリをコピーして使う時には注意が必要です。 ビルドしたマシンと異なるCPUが乗っているマシンにバイナリをコピーして使いたい場合は-march=native外してビルドすれば良いでしょう。

-O2gccの最適化オプションでコンパイル時間がかかるようになり生成されるバイナリは少し大きくなるかもしれませんが、一般に実行速度が速くなるような最適化を実施します。-O2はつけて害になることはまずないので特に動かす頻度の多いPHPのようなものではとりあえずつけておくのがよいでしょう。

ところで、実マシンの実行速度にどれくらい差が出るのかというと、平均で1割程度早くなります。コードによっては2割ほど早くなることもあるので、このあたりのオプションは必ずつけてビルドするようにしておくのがよいでしょう。

もう少し細かい話はGentoowikiあたりを見るといいと思います。

参考

GCCの最適化 - Gentoo Wiki

Sidekiqの様子もMuninに描いてほしいけどいい感じのプラグインがなかったので書いた

Sidekiqが仕事してるのか、暇なのか、エラーがあるのかないのか、キューが溜まっているのかはけているのか・・・。

Sidekiqには便利なAdminがついていて開いておけば統計情報をいい感じに表示してくれるのですが、

ブラウザを開きっぱにするわけにもいかないし、成功したジョブ数はどんどん増えていくので5分間でどれくらい処理されたのか、みたいな情報がわかりにくいです。

そこでmuninみたいな便利ツールにグラフを描いてもらおうと思ったのですが、sidekiq用のpluginないんですね。すぐ出てくるものだと思っていたので、世の中の厳しさを知りました。

厳しい世界を優しくするため、sidekiqのプラグインをさくっと書いてみることにしました。

github.com

どれくらい実行されているかみたいなのに関心があるので、ProcessedとFailedは差分で取るようにしていますがMuninの差分って普通に書くと秒間なんですね。

こうやって見る分には十分かなと思っているのですが、しばらく描いてみて微妙だったら調整するかもしれません。