■perlのUnitTestについて - その2 -
perlのテストにはどんなモジュールが用意されているのかTest::SimpleM
最も簡単なテストモジュールです。
簡単にしようできるの使ってみてください。
いかがテストコードのサンプル。
■テストコード
■実行結果
■テスト失敗時
Test::Harness
テストコードをまとめて実行するためのツールがあります。
それはTest::Harnessをインストールすることでインストールされる「proveコマンド」です。
proveによって複数のテストを実行した結果が実行、表示されます。
このproveスクリプトはTest::Harnessモジュールを使用しています。
このテスト結果をとりまとめているのは「TAP」にあります。
TAP
TAPとはテスト結果出力するという単純なプロトコルです。
「ok」「not ok」と表示するだけの単純作業です。
このプロトコルはperl以外のプログラミング言語でも使用できます。
| C言語 | → | libtap |
|---|---|---|
| Python | → | PyTap |
| PHP | → | SimpleTestのTAP拡張 |
| is( x, $y) | $xが$yと等しいか |
|---|---|
| like($got, qr/expected/) | 正規表現にマッチしているか |
| cmp_ok($got, '<', $expected) | 比較 |
| is_deeply($got, $expected) | ネストした構造のデータが等しいかどうか |
Test::Simpleを使用するならば、こちらを利用したほうが良いでしょう。
■perlのUnitTestについて - その1 -
最近、仕事での業務がJavaからperlやphpなどのスクリプト言語になりました。javaと違ってperlなどは型がきっちりとしていないので少しやりにくいです。。。
今回は、perlでシステムを実装する上で行う単体テストについてまとめます。
JavaでいうJUitです。
テストコードの重要性
そもそもなんでテストコードを作らなければいけないのか?
もしテストコードを作成せずにテストデータを用意して、エビデンスをとって・・・という従来の方法で単体テストを行ったとします。
もしリリース後、実装したコードに不具合があった場合はどうしますか?
再度テストデータをINSERTして処理を実行してエビデンスをとって・・・
また、修正した結果が以前と100%同じ結果を得られている100%の自信がありますか?
システムが大きくなるにつれて今回修正したコードが他の処理に影響を与えていたいという100%の自信がありますか?
もしテストコードを容易していれば、上記テストがテストコードを実行するだけで完了してしまいます。
すべてTRUEで返ってくればその処理は正常に動作していることがわかり、また自分たちの安心感にもつながります。
継続テスト
次に大切なことは継続テストです。
簡単にいうとでテストを定時実行させること。
方法何通りか存在します。
■cron
もっともシンプルな方法で、cronで定時にmake testを事項するように設定する方法。
■buildbot
Pythonで書かれた継続的テストのためのソフトウェア
Perlにも対応しているので容易に試すことができます
■Test::Chimps
継続的テストサーバとそのクライアントを提供します
Perlで書かれているのですが,依存モジュールが多いのと,インストールが面倒です。
ちょっと微妙・・・
気になる方は使ってみてください。
■Apache2.2 + PHP5.2 インストールしてみました。 - PHP編 -
Apacheの設定はこちらからhttp://kanamehackday.blog17.fc2.com/blog-entry-235.html
今回はPHPの設定です。
バージョンはPHP5.2を使用しています。
PHPの設定
1.PHP5のダウンロード
http://www.php.net/downloads.php
Windows Binariesの「PHP 5.3.0 zip package 」
↓
5.3.0は日地用ファイルが存在しないため、バージョンを「PHP 5.2.11 zip package」に変更
・jp.php.netのリンクからダウンロード
2.php-5.2.11-Win32.zipの解凍
解凍後にフォルダ名を
php-5.2.11-Win32
↓
php
に変更しておきましょう。
3. iniファイルの書き換え
C:\phpにある「php.ini-dist」ファイルを
C:\WINDOWS
にコピーします。
コピー後にファイル名を「php.ini」に変更します。
4.dllファイルのコピー
【php5の場合】
C:\WINDOWS\system32に以下ファイルをコピーします
・php5ts.dll
・libmysql.dll
【php4の場合】
C:\WINDOWS\system32に以下ファイルをコピーします
・php4ts.dll
・dlls\libmysql.dll
5.php.iniファイルの編集
■115行目:出力変換を有効に
;output_handler =
↓
output_handler =mb_output_handler
■447行目:HTTPヘッダcharsetを設定
;default_charset = "iso-8859-1"
↓
default_charset = "EUC-JP"
■475行目:拡張モジュールパス
extension_dir = "./"
↓
extension_dir = "C:\php\ext"
■599行目〜:dllのコメントアウト解除
extension=php_mbstring.dll
extension=php_mysql.dll
■1165行目:デフォルト言語を日本語へ
;mbstring.language = Japanese
↓
mbstring.language = Japanese
■1170行目:内部エンコーディングの設定
;mbstring.internal_encoding = EUC-JP
↓
mbstring.internal_encoding = EUC-JP
■1173行目:HTTP入力をauto
;mbstring.http_input = auto
↓
mbstring.http_input = auto
■1177行目:HTTP出力をEUC-JP
;mbstring.http_output = SJIS
↓
mbstring.http_output = EUC-JP
■1184行目:HTTP入力の変換を有効に
;mbstring.encoding_translation = Off
↓
;mbstring.encoding_translation = On
■1188行目:デフォルトの文字エンコーディング検出の順序をautoに設定
;mbstring.detect_order = auto
↓
mbstring.detect_order = auto
■1192行目:無効な文字の代替文字を検出しない
;mbstring.substitute_character = none;
↓
mbstring.substitute_character = none;
以上でPHPの設定は完了です。
ちゃんと反映されているか確認をするために、phpinfo.phpを作成します
<?php
phpinfo();
?>
C:\Apache\htdocs
に配置します。
Apacheを再起動させて
http://localhost/phpinfo.php
以下機能が表示されていることを確認してください
・mbstring
・MySQL
表示されていれば、完了です。
おつかれさまでした。
■Apache2.2 + PHP5.2 インストールしてみました。 - Apache編 -
最近JAVAからPHPを使う業務へと変わってきたので自宅PCにApacheとPHPといれてみました。
以前にも入れたのですが、慣れないとめんどくさい・・・
まずApacheのインストール/設定です。
バージョンはApache2.2
Apache
1.まず以下サイトへアクセス
http://httpd.apache.org/download.cgi
2.インストールパッケージをダウンロード
「Apache HTTP Server 2.2.14 is the best available version」
Win32 Binaryの
「apache_2.2.14-win32-x86-no_ssl.msi」をダウンロード
3.インストール
4.Apacheの設定
C:\Apache\conf\httpd.conf
のファイルを編集します。
■phpモジュールの追加
LoadModule php5_module C:/php/php5apache2.dll
を追記(174行目あたり)
↓
しかしphp5apache2.dllはApache2.0用と判明したため
php5apache2_2.dllを指定
■ファイルタイプの指定
phpの拡張子を認識させます。
#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
5、Apache再起動
起動失敗・・・
httpd.exe: Syntax error on line 127 of C:/Apache/conf/httpd.conf: Cannot load C:
/php/php5apache2.dll into server: \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\
x83W\x83\x85\x81[\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb
9\x82\xf1\x81B
Note the errors or messages above, and press the
調べてみるとphp5apache2.dllはApache2.2では動かないらしく、Apache2.0用らしい。
なので、php5apache2_2.dllをphpモジュールに指定しましょう。
これでApacheの設定は完了です。
次回はPHPのインストールと設定です。
http://kanamehackday.blog17.fc2.com/blog-entry-236.html
■Dockコネクター用ネックストラップ [DockStrap for iPod/iPhone]
今日はちょっとほしいものの紹介「Dockコネクター用ネックストラップ [DockStrap for iPod/iPhone] 」
自分もiPodを持っていますが、バッグの中にiPodを入れて聞いたり、ジャケットのポケットに入れたりと工夫しながら皆さん使用していると思います。
けど、これがあればお洒落にiPodを持ち歩くことができます。
iPodのDockコネクターにつなげるだけなので簡単に装着でき、耐久性も2kg程度までOKらしいのでiPod nanoなら落ちる心配もなく、iPhoneでも問題ありません。
個人的にはiPhoneを首にぶら下げるのはちょっと重い気もしますが・・・w
仕様
素材 シリコン(ストラップ)
プラスチック(Dockコネクター)
製品サイズ 26 × 25 × 7mm(W × H × D)(ストラップ部を除く/コネクター部)
ストラップ長 40cm
製品重量 11g
耐荷重 2kg
対応製品 すべてのDockコネクター装備のiPod/iPhone



