Author Archives: 大須賀義浩

リモートブランチのbehindを調べる方法

こんにちは

株式会社Loco Partners エンジニアの大須賀です。

弊社ではソースコードの管理にGithubを使用しています。
GithubではBranchの一覧ページで、トピックブランチがmasterに対してコミットいくつぶん進んでいるか/遅れているかを視認できるようになっています。

Screen Shot 2015-02-26 at 9.42.42 AM

masterから遅れているブランチの作業者に対して、チャットでrebaseを促すツールを作ろうと思い、下記のようなスクリプトを作成しました。

「git rev-list –left-right branch1…branch2」は、branch1とbranch2のコミットの差を表示するコマンドです。
その出力からahead/behindコミット数を割り出し、表示します。

Linuxのメモリ使用量

こんにちは
株式会社Loco Partners エンジニアの大須賀です。

弊社で開発・運用をしている宿泊予約サイト「relux」のWebサーバは、AWSのEC2でAmazon Linuxを使用しています。

適切なEC2のインスタンスタイプを選ぶにあたり、メモリの使用量は重要な指標の一つです。
Linuxでメモリの使用量を見る2つのコマンドについて説明をします。

freeコマンド

$ free -m
total used free shared buffers cached
Mem: 478 454 24 0 142 92
-/+ buffers/cache: 219 259
Swap: 1474 2 1472

この結果を見ると、478MBのうち454MBが使用されていて、残りが24MBしか無い逼迫した状況のようにも見えますが、実際はそんなことはありません。
Memの行のuserdの値には実行中のプロセスが使用しているメモリの他、buffers,cachedの値も加算されています。
buffers,cachedはどちらも、ディスクIOを高速に行うためのキャッシュなのですが、その中には解放できる領域が存在します(解放できるのに解放していないのは使い回しをするため)。メモリの実際の空き領域は、(Mem:の行のfreeの値 + buffers,cachedのうち解放できる領域) ということになります。

buffers,cachedのうち解放できる領域はどれ程あるのかはvmstatコマンドで調べることができます。

$ vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free inact active si so bi bo in cs us sy id wa
1 0 2176 24688 29776 388344 0 0 0 1 0 0 0 0 100 0

上記出力のうち、inactの数値が解放できる領域のサイズです。
freeとinactの数値を合わせたものが利用可能なメモリ量なので、この例の場合だと54MB程が利用可能といえます。

※この例だとinactが少ないですが、実際はもっと多い(ことが多い)と思います。この例のような状態だったら、メモリの増設をしたほうが良いですね。

CakePHP2でComponent初期化より前に処理を書く方法

こんにちは

株式会社Loco Partners エンジニアの大須賀です。

弊社で運用をしている宿泊予約サイトreluxは、CakePHP2で開発しています。

CakePHPではControllerのアクションよりも前に処理を行いたい場合、ControllerのbeforeFilter()というコールバックメソッドの中に書くことが一般的です。
ですが、beforeFilter()はComponentの初期化よりも後に呼び出されるという点に注意が必要です。

beforeFilter() よりも前に呼び出されるControllerのメソッドは `__construct()` と `startupProcess()` の2つです。
Componentの初期化よりも前に実行したい処理があれば、これら二つのどちらかをオーバーライドして処理を書きましょう。