2011-12-30
2011年はこんな年でした
その他 |
- ほぼPHP。ちょっとJavaScriptとC#。お遊びでOCamlとCommon Lisp
- Android買った
- 実家より遠いところにはいかなった
- はじめてTDDBCに参加した
- はじめてえにしテックカフェに参加した
- 転職した
今年グっときた動画。
2011-12-15
Windowsでphpunit --colors
あるいはコマンドプロンプトでANSIカラーを表示させる方法。
Windowsのコマンドプロンプトでphpunit --colorsすると、
こんな感じになります。ゲンナリです。グリーンにならないならテストに対する意欲も半減です。コマンドプロンプトに色を付けるには、SetConsoleTextAttribute()とかいうWin32APIを使う必要があるらしいです。で、調べてたら、
WindowsのコマンドプロンプトでもANSIカラーを使いたい「wac」 - MOONGIFT|オープンソース・ソフトウェア紹介を軸としたITエンジニア、Webデザイナー向けブログ
こんなのを見つけました。これはANSIエスケープシーケンスを読みこんでSetConsoleTextAttribute()を呼び出してくれるもの。なんですが中を見てみたら結構手抜きの実装で、phpunit --colorsの出力では上手くいきません。
なんでこれを直してやろうかと色々試行錯誤していたら、別の方法を発見しました。
パイプでwacじゃなくて単にcatに渡してやればいい。このcatはmsysのcat(\msys\1.0\bin\cat.exe)です。msysGitを使ってればそっち(\Program Files\Git\bin\cat.exe)でも良いと思います。
どこのレイヤでそうなってるのかよくわからないような、当たり前といわれれば当たり前ような解決でした。
2011-12-12
TDD Boot Camp 札幌 2.3に参加してきた
お題はボーリングのスコア計算システム。PHPチームで参加してきました。
ドキュメントを見ようとしたら、PHPUnitのサイトに全然接続できなくてどうしようかと思いましたが、githubでドキュメントのソースのxmlを見ながらどうにか頑張りました。
@shuji_w6eからもお誉めの言葉をいただき、半日Emacsと格闘したかいがありました。
よかったこと
- PHPUnitで試してみたかったことが色々できた
テストメソッド名は日本語で書いてみました。--testdoxで出力する場合、英字の大文字小文字変換を行なうところで若干文字化けがあったため、先頭は英字という命名規則でやりました。testdoxを使わないのであれば問題無いと思います。
@testアノテーションも使ってみましたが、メソッド名にtest付けた方が速いかなという気もしましたw。@expectedException、@dataproviderアノテーション、markTestIncomplete()は普通に便利。assertThat()も使ってみたかったんですがドキュメント見るのしんどくて断念。
- 簡単にテストを実行すること。見やすく書きやすいテストケースを書くことが重要ということを再認識できた
反省点
- 機能テストが通った時点で満足したのと若干集中力が切れたのでニコ動とか見てた
他のチームの振り返りを聞いている途中でやっと何故テストが通ったのかきちんと頭が整理できました。振り返りの順番が最初だったら説明できなかったかもしれませんw
ちなみに見ていた動画はこちら
2008年の角谷さんの講演。2/3からボウリングスコア計算のライブコーディング。見所満載です。
その他
- Behatやってみたい
- JavaScriptやってみたい
- pgTAPやってみたい
- SmalltalkとTDDBCの相性は異常
- Perlのテストコードも見てみたい
- 関数型言語のテストコードも見てみたい
- SCMのイベントもできそうじゃない?
他にも色々ありましたが気が向いたら書きます。
2011-09-14
deliciousで幸せになれる呪文
その他 |
一時期は存続が危ぶまれたhttp://www.delicious.com/ですが、自分用のブックマークというよりは、何か調べごとがある時にはとても重宝しています。
例えばCakePHPについて調べようと思った場合、それとは別の軸のタグも使って検索するようにしています。
http://www.delicious.com/tag/cakephp+bestpractice
とか。
プログラミング関係で使えそうなタグはこんな感じ。
- bestpractice
- patterns
- tips
- hints
- tutorial
- reference
- hack
あとタイトルの元ネタ - もみあげチャ〜シュ〜 : xvideosで幸せになれる呪文 - ライブドアブログ
2011-06-29
fork()した子プロセスが同じrand()を返す
PHP |
<?php for ($i = 0; $i < 5; $i++) { if (pcntl_fork() == 0) { echo rand(0, 100), "\n"; exit; } }
これはばらばらの値を返すけど、
<?php echo rand(0, 100), "\n"; for ($i = 0; $i < 5; $i++) { if (pcntl_fork() == 0) { echo rand(0, 100), "\n"; exit; } }
と、親プロセス側で先に一度rand()が呼ばれていると、子プロセスが出力するrand()はすべて同じになってしまう。rand()は最初に呼ばれた時に自動的にsrand()されるので、同じseedが使われているということか。


