クラなんとか or くらなんとか or cla なんとかの日記

2011-08-08

symfony 1系でカバレッジをだす

このエントリは忘備録的な感じです.

本当は違うところの調査がしたかったのだった.


symfony 1系では,テストのカバレッジを出すタスクがあるんだけど,

Jenkins で見れるフォーマットじゃない感じ.


rsPHPUnitLimePlugin ってのがあってよしなにしてくれるらしい.


とりあえず入れてみる*1

$ git submodule add https://github.com/digitalkaoz/rsPHPUnitLimePlugin.git plugins/rsPHPUnitLimePlugin
$ vi config/ProjectConfiguration.class.php
$ git diff
diff --git a/config/ProjectConfiguration.class.php b/config/ProjectConfiguration.class.php
index 24e9ec0..d1cf7e5 100644
--- a/config/ProjectConfiguration.class.php
+++ b/config/ProjectConfiguration.class.php
@@ -8,5 +8,6 @@ class ProjectConfiguration extends sfProjectConfiguration
   public function setup()
   {
     $this->enablePlugins('sfDoctrinePlugin');
+    $this->enablePlugins('rsPHPUnitLimePlugin');
   }
 }

PHP_CodeCoverage が要求されるので入れる.

けどPHP 5.2.6 を使ってたら面倒だった.*2

PHP_CodeCoverage とかのplugin が5.2.7 を要求してきたので

手動で入れたらとりあえず動いてるみたい.

あとclass redefine とか言われたので修正

$ pear channel-discover pear.phpunit.de
$ cd ~/work
$ git clone https://github.com/sebastianbergmann/php-code-coverage.git
$ git clone https://github.com/sebastianbergmann/php-token-stream.git
$ cd /usr/lib/php
$ mkdir PHP
$ cd PHP
$ ln -s ~/work/php-code-coverage/PHP/* .
$ ln -s ~/work/php-token-stream/PHP/* .
$ pear install phpunit/File_Iterator
$ pear install phpunit/PHP_TokenStream
$ pear install phpunit/PHPUnit
$ pear install phpunit/Text_Template
$ cp PHPUnit/Framework.php{,.org}
$ vi PHPUnit/Frameworkk.php
$ diff PHPUnit/Framework.php{.org,}
61c61
< require 'PHPUnit/Framework/TestListener.php';
---
> require_once 'PHPUnit/Framework/TestListener.php';

これでJenkins のCloverPHP plugin から見れるようになった.


これだとrsPHPUnitLimePlugin のcoverage が出ちゃって面白くないので無効にしたいところ.

2011-08-13 追記

lib/test/LimeCodeCoverage.php の$blackList を編集すればいいんだけど

config とかで定義できるようにしておきたい気もするけどまだやってない感じ.

*1:普通にplugin:install でいいです

*2:5.2.7以降の人はpear installすればいいと思う.試してない

2010-10-17

YAPC::Asia 2010 にいってきた

今回で二回目の参加になります

前回は,@issm さんと一緒に参加したんですけど,

今回は,@hatyuki さんも居て三人で回ったりもした感じでした.

それも ゆるくPerl を語る会 が出会いの場になったからですね.*1

ゆる Perl を開始してくれた id:trinity777 ++

時刻的にも,最後のまとめ的な位置付けということもあると思うのだけど,

最後のkeynote が一番心に残っているのですよ.

やっぱりid:miyagawa さんかっけー(miyagawa rocks) と思った訳です.

とあいえ,id:miyagawa さんのスライドにもあったけど,

Perl is glue language. なんすよ.

ちょっと話が飛びますが,id:nekokak さんの発表であったんだけど,

id:kazuhooku が書いてるから安心みたいな話があって,

普通に納得したりしてた.*2

一定の信頼があって,繋りがあるってことかなー.と思うんですよ.

その辺がglue なんかなー.とか.

つまりはPerl は最初から他のものの力を借りるように

デザインされていたんだよ.(Ω ΩΩ<な,なんだってー)

オブジェクト指向って,メッセージパッシング,疎結合みたいな独立したオブジェクトがあって,

それがいっぱい集まって有機的に何かを形成しているみたいなイメージ*3

があるんで,そういうモデルなんかなー.とか.*4

Larry も言ってたんだけど,

"楽しまなければならない"

好きなことをやればいいと思うのですよ.

やりたいことをやればいい.

コードを書いたり,いろいろすればいいと思うのです.

それで join するみたいなイメージを自分は持ちました.

ということで,萌えもポロリも涙も笑いもSQLインジェクションもある.

YAPC::Asia 2011 に,みなさんも行ってみませんか?*5

今後の話

そういう訳で,ゆる Perl も何回か続けてみたけど,

どうやら継続できそうに思えたので,

今度は Nagoya.pm にバージョンアップしてみて,

ゆるPerl 自体の活動が変わる訳じゃないんだけど,

だんだん,みんなが楽しめるようなことをやるように変化していきたいな.と思っています.*6

そんで,rocks と思われる存在になるのもいいんだけど,

自分なんかはそんなにスゴイ人じゃないし,コミュニティにコミットしてないので,できてないので駄目じゃん.じゃなくても.

まずは rocks と言われてる人を見て欲しい.

その空気みたいなものを Nagoya.pm の人と一緒に感じたいなー.とは思いました.

よせがき?

あ,かってに後夜祭の中で,いっぱいサインしてもらいました.

提案してくれた id:nipotan さん,id:yappo さん,他サインしてもらったみなさんありがとうございましたー.

本当,旧なお願いで申し訳ありませんでした.*7

脱線話1

JavaScript をテストするJSTAPd の話とか,

mod_rewrite をテストする話とか,

省サーバ運用の話でid:nekokak さんが自分が決めたところまでは自分で見たいみたいな話があって,

そういう感覚って,完全に TDD の安心に繋がってるのかなー.とか思ったりもしてみた.

というか,Perl 界隈でテスト書かないとか無いですよね.みたいな*8

ということで,TDD 的な思想が当たり前過ぎてグリーンバンドをしてたけど,誰も触れてくれなかったYO!

脱線話2

Perl の人(主にd の付く人)は PHP をあまりイジめないでください,とか

Perl の人怖いとかいう話もあって,*9

うーん.評価とイジメは違うんだけどなー.

とか,PHP をHack するみたいな発想が,そもそもないのかなー.とかは思ったりした.

Ruby 界隈はそういうのも充分懐が広い気が(勝手に)してる.*10

あー,これもPHP DIS ってる,とか言われちゃうかなー?

リンク

  • サインしてもらいました

言語設計者たちが考えること

オライリージャパン
売り上げランキング: 1530
おすすめ度の平均: 4.0
3 軽い読み物
5 個性豊かな言語設計者の考え方がわかる

  • とりあえず

Smalltalkで学ぶオブジェクト指向プログラミングの本質
青木 淳 浅岡 浩子 澤本 依里
日経BP社
売り上げランキング: 128284
おすすめ度の平均: 4.0
5 オブジェクト指向を習う
4 古典的な「Smalltalk-80」の子孫であるVisualWorksの入門書として
4 オブジェクト指向で1冊目じゃなきゃ
2 ちょっとこれは・・・
4 “純正”Smalltalk-80の流れを受け継ぐVisualWorksの入門書として

  • たまたま思い出した

情熱プログラマー ソフトウェア開発者の幸せな生き方
Chad Fowler
オーム社
売り上げランキング: 134342
おすすめ度の平均: 4.5
5 「ソフトウェア開発者の幸せな生き方」とは
3 並ではあるが若手(のみに)読ませたい
5 社会人のみならず、学生にも是非読んで欲しい一冊

*1:途中一緒に昼食したとき,PHP のライブラリのポーティングの話をずーっとしてたのは秘密だ.

*2:誤解して欲しくないんだけど,無条件に受け入れるという話ではなく,理由があってやっているだろうから聞けばわかるだろうな.という予想みたいな話

*3:Smalltalk で学ぶオブジェクト指向プログラミングの本質

*4:逆か?自分にはそういう心理モデルがあるから,そう理解してしまうだけ?そう認識するだけ?Naming is hard

*5:あり?Hokkaido.pm だっけ?

*6:ゆるPerl in 岡山.とか?

*7:してもらったサインは,スタッフが美味しくいただきました.後で上げる?

*8id:yappo さんのセッションのときでもテスト書いてない型?と訊かれて誰も(?)手を上げてなかったような

*9:主に id:tokuhirom の人だけじゃね?という意見があったり無かったり

*10:OOP 界隈と密結合で,ファシリテーションとかあるから?メタプログラミングが関係するとか?そういえば PHP のメタプログラミングの話もしたなー(閑話休題)

2010-04-15

PHP の○○なところ

今流行りのPHPer になりましたので,一週間くらいでの雑感を書いてみる.

使う前に文句を言うのは違うと思っていたので,

今は言ってもOK.*1

嫌い

  • 行末の";"(セミコロン)が必須(最終文でも省略できない)
  • 5.3 まで名前空間が無い
  • 括弧が省略できない(悪い面とは言えないかもしれない)
  • 一々変数に入れないと駄目(example. array を返す f() で,(f())[0] みたいに書けない)
    • とあいえ,f()->at(0) とかは書けそう.とあいえ array にメソッドを刺せるのか?
  • 5.3 までクロージャが無い
    • string create_function(string, string) があるよ.
    • クロージャではないけど.これでも関数名を意識しないことは達成できるかな.
      • lambda_1 という(名前を意識しない)関数がグローバルに刺さるだけっぽいが.
      • 文字列で関数名として関数を呼んだりとか変数を操作できるらしい(Perl でいうところのハードリファレンスかな)
  • 関数引数の最後にカンマがあるとエラー(?)
  • 最初の行で,shebang を書くとrequire したときにそのまま表示される.これなんとかならんのか?
  • 5.3 まで,mixed array_reduce(array, callback[, int]) の初期値がint
  • boolean array_walk(array, callback [, mixed]) の存在価値がわからない.
  • int array_push(array, mixed) の戻り値が array じゃない
  • 変数宣言的なものが無いので,変数名を間違えるとアウト
    • インスタンス変数だったら,無いよって言ってくれるから少し助かる.
  • == 使うべからず.

好き

  • array が自動的にflatten にならない(Perl 比)
  • var_dump() がある.
  • foreach でイテレータっぽく回せる
    • range() あるし

微妙

  • 名前空間の区切り文字が "\"(バックスラッシュ)
  • 名前空間のネストができない
  • 型チェックが関数の引数にしか無い.(戻り値は?)
  • foreach で => 構文を導入
  • return を明示的に書くのメンドイ
  • array() なのでハッシュっぽいものに順序がある.
    • ksort() という関数(キィでソート)とかいうものもあるくらい

そういえば,一回言われたことで,

型チェックがある関数引数にNULL が入らないという話は,

(stdClass $a = NULL) みたくデフォルト引数が NULL だと

NULL を引数で渡せるとか.よくわかりません.

ということで最近は,lime を使ってお手軽にテストを書いたりしています.

Perl で言うところの Test::Simple みたいなもんすかね.

2010/04/20 21:08 追記

あと,無名であるということはそれを意識しない方向にするための手段である

ということで,無名関数重要.とか.


以下5.3 より前の array_reduce

<?php
function f($r, $i) {
    is_null($r) and $r = array(); // 初期値をここに書く
                                  // 第三引数を省略するとNULL になる
    $r[] = $i;
    return $r;
}
array_reduce(range(1, 5), "f");

以下5.3 より以前の create_function

<?php
array_reduce(range(1, 5), create_function('$r, $i', '
    is_null($r) and $r = array();
    $r[] = $i;
    return $r;
'));

参考

*1:間違えていることはあるかもしれないけど

2009-12-08

Erlang Lite #02 にいってきた

  • わざと並列っぽいことは一旦飛ばして後でじっくりやろう
    • まずは,3, 7, 9, 19 章を進める
  • Chapter 03, , 07, 09 など
  • Prolog に似てる話
    • C call と Pascal call の話
  • 普通のパターンマッチ
    • if/case とか パターンマッチとか改行とかのスタイルが知りたくはある
      • ガードで使えるものとか
  • List Comprehension
  • 問題まで進まなかった
  • みんなわかってるよね.という単語を使ってしまった(反省
  • 無名関数でパターンマッチが書けたのがおもしろいと思った
    • ということで,無名関数を再帰したくなった
      • fix f x = f (fix f) x を教えてくれた id:yoshihiro503 さんありがとー

ということで,PHP で fix を書いてみた

書いてみてわかったこと

  • return が必須っぽかった(何かの設定?
    • 当方ほぼデフォルトのMacOSX 10.6.2 の /usr/bin/php
  • 行末に";"(セミコロン)が必須
    • ブロックの最後とかはさすがに省略したかった
  • クロージャで外部の変数(自由変数)を使うのに,use 指定が必要
  • PHP を知らな過ぎる
    • 自由変数を書き換えるには & 指定が必要(リファレンス?
    • そもそも function とか 変数に $ を付けるということも(ほぼ)知らなかった
      • array() で配列ができることは知っていた
  • php-mode が入っていなかった(重要
  • 無名関数を作っても変数に一度代入しないとうまく使えないようだった(未確認
  • array_{unshift,push} の戻り値が int じゃなくて array が良かった
  • PHP を書いていたおかげでモテモテだった

閑話休題

ということで,こんなんを使えるみたい.あまりやらないだろうけど.

fix(fun(_ , [])      -> [];
       (F, [X | Xs]) -> ... F(Xs)
    end, XXX).

個人的には,パッケージングまでしたいので,

18章(Types and Documentation)あたりも楽しそうだと思うのだった.*1

でも試したら typer が PTL が必要とかいってきたので,後で試す.

$ typer --show aaa.erl
typer: Dialyzer's PLT is missing or is not up-to-date; please (re)create it

参考

http://www.amazon.co.jp/exec/obidos/ASIN/0596518188/search042-22/ref=nosim/

Erlang Programming

*1:パッケージ化するのにテストとドキュメントが要ると思う.

2008-11-29 ウェブカメラ買おっかなー

デザイナのためのプログラミング入門

デザイナとプログラマの歩み寄り的な立場で,

まずは,プログラミングをやってみよう

ということで PHP の基礎的な部分をやってみた感じみたいです.

変数,if-else ,辺り.

PHP は,ヒアドキュメントがちょっとキモいと思った.

Topics

  • ustream を試してみた (http://www.ustream.tv/channel/programmingfordesigner)
  • 直前に決めたので準備する間がない
  • 講師の方はかなり上手いと思った
  • 始めてお会いする方が多かった
  • twitter をやろうという意見があった
  • プログラミング言語の入門編を期待する意見があった
  • 運用まわりの話などを聞きたいという意見もあった
  • 動物を守ろうという話に感銘を受けた
  • Della.JS の宣伝をしまくった