header image

Categories

FEED

  • goo RSSリーダーへ追加
  • Livedoorリーダーへ追加
  • はてなRSSへ追加
  • Googleへ追加
  • myyahooへ追加
  • feedpathへ追加
  • NewsGator Onlineへ追加
  • Bloglinesへ追加

携帯対応

QRコード

RING

人気ブログランキング



個人的には、以前からMockテストの実装の簡単さから、SimpleTestを使っていたのだが、継続的統合をやろうとすると、必然的にphpUnitになってしまうような気がする。

  • phpUndercontrolは、CruiseControlにアドオンを追加することで動作するPHP用の継続的統合プラットフォームだが、出自が、phpUnitの中からだから、多分SimpleTestには対応していない。3月くらいに作者のブログに、SimpleTestへの言及はあったみたいだが・・・。
  • Xincは、うーーん。そもそもドキュメントが少なすぎて手が出ない。

一方で、PHPのソースコードをeclipse上で書いている。
当然unitテストはeclipse上から簡単に実行したい、ということで、SimpleTestが提供しているeclipseプラグインを利用しているのだが、これがSimpleTestで実装したテストはちゃんと動くが、phpUnit2は対応しているといいつつ俺の環境では動作しない。eclipseのバージョンによる可能性もあるけど。

Running:
echo "<?php $path='C:\dev\xampp1.6.6\php\PEAR';ini_set('include_path', get_include_path().PATH_SEPARATOR . realpath($path));ini_set('html_errors','0');$fullpath = realpath('C:/dev/workspace/php_test/tests_phpunit2/SampleClassTest.php');$pathparts = pathinfo($fullpath);$filename = $pathparts['basename'];$_SERVER['argv'][1]=basename("$fullpath","");$_SERVER['argv'][2] = "$fullpath";$_SERVER['PHPBIN']='C:\dev\xampp1.6.6\php\php.exe -q -c C:\dev\xampp1.6.6\php\php.ini';include_once('PHPUnit2/TextUI/TestRunner.php'); ?>" | "C:\dev\xampp1.6.6\php\php.exe" -q -c "C:\dev\xampp1.6.6\php\php.ini"
*************
PHPUnit 2.3.6 by Sebastian Bergmann.
Console_Getopt: unrecognized option --log-eclipse

ということで選択肢は2つ。

  • phpUnderControlを利用するために、unitTestを全てphpUnitで書き直す。
  • 面倒だから、phpUnderControlも使わず、SimpleTestで頑張る。

あー、どうすっかな~。

先日作ったプラグインだが、IEだと動かなかった。普段IEなんて使わないので、全く気づかなかったよorz

ということで、修正した。ダウンロード

前回は、JAVAScriptで、window.onsubmitの時にチェックを行っていたんだけど、IEがこのイベントを通ってくれない(何かと競合?)ので、明示的にDOMからsubmitするフォームを取得して、そいつに対して、onsubmitを割り当てることで解決。

なお、新規登録はこれでOKだったが、チケット更新については、更新用フォームにidがついていないので、そのままだとうまく行かない。
ちゅうことで、テンプレートのticket.csについて、

<?cs if:trac.acl.TICKET_CHGPROP || trac.acl.TICKET_APPEND ?>の後の
<form action="<?cs var:ticket.href ?>#preview" method="post">
について
<form action="<?cs var:ticket.href ?>#preview" method="post" id="newticket">
のように変更すると、更新時もチェックできるようになる。

なんだかんだで意外と面倒。

なお、改めて、Firefox、Opera、Safari、GoogleChrome、IEで動作確認をした限りは問題なさそう。

2008/11/08 20:39:04 フリーソフト, 日記 none Comments
add Hatena Bookmark Tags:

前回のエントリを受けて、とりあえず初めてプラグイン書いてみた。

機能:予めtrac.iniに指定した条件に従って、チケットの新規作成および更新時に、入力フィールドのチェックをJavaScriptで行う。

ダウンロードはこちら(validation-0.0.1.zip)から。対象Tracのバージョン:0.10系のみ。

#不要なファイルが混じっていてインストールに失敗する不具合を修正しました(11/11)

インストールはpython setup.py installとし、trac.iniで、validator.* = enabledに設定するだけ。

trac.iniの設定の例は以下の通り。

[validator]
rule_0 = document.getElementById('milestone').options.selectedIndex != 0
message_0 = マイルストーンを選択してください。
precond_1 = document.getElementById('owner') != undefined
rule_1 = document.getElementById('owner').options.selectedIndex != 0
message_1 = 担当者を選択してください。
rule_2 = document.getElementById('keywords').value != ""
message_2 = キーワードを入力してください。
rule_3 = document.getElementById('due_assign').value.match(/^[0-9]{4}/[0-9]{2}/[0-9]{2}$/)
message_3 = startdate in invalid

入力チェックは10個まで設定可能で、rule_0からrule_9までが有効。利用しない場合は未設定で可。
rule_xは、実際の判定条件で、正しい入力値の状態をJavaScriptで記入する。
message_xは、判定条件に合致しなかった場合のメッセージ本文をそのまま記入する。
precond_xは、実際の判定条件に入る前の事前条件をJavaScriptで記入する。(主にOwnerとかで利用する)
個々の設定値の妥当性はチェックしてないので、この設定を間違えるとTracがエラー起こしたりするよ。

※なお、初めてプラグイン作ったので、作り方があっているのかも良く分からんし、設計思想が正しいのかも分からん。もっと言えば、作った機能はそもそもTracに存在するとかいう可能性もある。そういう前提でご利用は自己責任で。

2008/08/10 06:49:29 フリーソフト, 日記 1 Comments
add Hatena Bookmark

QUERY_STRINGの扱いの問題

CodeIgniter(以下CI)では、標準では、QUERY_STRINGは全て無効化されてしまう(与えても消去される)という豪快な仕様になっている。
一応以下のオプションがあり

config['enable_query_strings'] = FALSE;

標準では無効になっているが、これをTRUEにすることで、QUERY_STRINGを扱える。$this->input->get('foo');としてデータを取得するのも可能。
しかしながら、中途半端なことに、データ検証メカニズムは使えないので、Validationチェックは自前で作りこんでやらないといけない。要はPOSTでデータを引き渡すと以下のように出来るのに、

$this->load->library('validation');
           
$rules['keyword']   = "required";
$rules['category']  = "required";
       
$this->validation->set_rules($rules);
           
if ($this->validation->run() == FALSE)
{
    $this->load->view('myform');
}
else
{
    $this->load->view('formsuccess');
}

GETでデータ引き渡すと、そもそも上記のvalidationのルールが適用されないってことだ。(system/libraries/Validation.phpのrunメソッドを見ると分かるが、$_POSTしか処理してない)

そもそも何が問題だっけ?

  • 検索結果ページって普通個別にURL付与したいよ。ページングも必要だし
  • しかも検索パラメータ一杯あるようなやつ(YAHOOの乗り換えみたいに)で、PATH_INFOでデータ渡すのは無理
  • POSTデータはvalidationをフレームワークの機能でやって、GETのデータは自前で処理するなんて見通し悪すぎる

解決方法

色々考えてみた結果、邪道な方法が一番楽だと気づいた。hook機能を使うやり方。hooksディレクトリに以下のようなモジュールを配置する。

class ConvertQueryString {
    //$_GETの配列を強制的に$_POSTの配列に追加する
    function execute()
    {
        if (is_array($_GET) AND count($_GET)> 0)
        {
            foreach($_GET as $key => $val)
            {
                $_POST[$key] = $val;
            }
        }
    }
}

んでもって、application/config/hooks.phpにてフックの定義を行う。

$config['enable_hooks'] = TRUE;

$hook['pre_system'][] = array(
                   'class'    => 'ConvertQueryString',
                   'function' => 'execute',
                   'filename' => 'ConvertQueryString.php',
                   'filepath' => 'hooks',
                   'params'   => array()
);

これで無理やり$_GETの中身を$_POSTに追加してしまって、その後にCI側での処理を行わせている。フックによってCI側に制御が渡る前にデータを変換してしまっているので、これならCI側では何も意識することが無い(はず)。他のやり方としては、Validationクラスを継承して、自前のValidationクラスを作り、runメソッドをoverrideするって手もありそうな。

#参考
Geez in the universe: CodeIgniter その5
標準のPaginationをQUERY_STRINGに対応させたものを作ってみた。

XSS MeはFirefoxの拡張で、現在表示している画面から入力項目(テキスト、リストボックス、ボタン、hidden)を抽出し、クロスサイトスクリプティングが存在しないかどうか確認するプラグイン。最新版は0.3.0ベータ。入手はこちらから。

使い方

  • XSS Meのサイドバーを表示させる
  • テスト対象の画面をブラウザで表示する
  • これで、ページになる入力フィールドが全て表示されるはずだ。

  • テストしたい項目にチェックを入れて、「Test all forms with all attacks」(全部のテストを実行)もしくは「Test all forms with top attacks」(よくあるパターンのテストを実行)を選択する。
  • 自動的にブラウザがリクエストを送信し始める。全テスト実行の場合は1項目あたり158程度、よくあるパターンのテストの場合1項目あたり18回程のリクエストをサーバに送信するのでしばらく待つ。
  • 完了すると下記のような結果画面を表示する。

    ここではテスト用でまったくサニタイジングをしないアプリケーションを用意してみた。なので警告がちゃんと出ている。

ちなみに、このツールを使って自分のものではないアプリケーションに対してチェックをかけてはいけないので注意が必要だ。

kanbanatweb1.png

かんばん@Webは、トヨタ生産方式でよく言われる「カンバン」をWeb化したもの。
入手はこちらから可能。

非常に使い方は簡単で、新規にタスクを入力し、todo(やること)、doing(仕掛)、done(終わった)にタスクを配置するだけ。Ajaxで実装されているので、読み込み毎のストレスがない。(一方で同時に複数人が使うにはどうするのかな?という疑問はあり)

日々のタスクを管理する(GTD)のにも有効。

JRA-VANではレーシングビューワーってサービスがあって、レースの動画を月額定額制で見放題な素敵なサービスなんだが、ただ一点毎週ライセンス認証を繰り返し、同じIDとパスワードを何回も入力させるってのが、ユーザビリティ的にはかなりイマイチ。
毎週面倒な作業を繰り返すのは開発者としては許しがたいのでソフトを作った。

ダウンロードはこちら

jvrvtool.JPG

■このソフトで出来ること
このソフトはJRA-VANのレーシングビューワー機能で1週間に一度行われるライセンス認証を簡単にするソフトウェア

■使い方
1.競馬ソフトでレーシングビューワー連携の機能等を使ってメディアプレイヤーを表示する。
2.一週間に一度ライセンス認証の画面が開きますので、そのタイミングでこのソフトを実行する。
3.実行すると予め設定しておいたユーザIDやパスワードを自動入力しライセンス認証を完了させる。

■現時点での問題
認証用のIDとパスワードは端末に保存していますので、セキュリティ上問題のある端末(不特定多数が利用する端末)では利用しないでください。

最新版の0.1.0.58を公開しました。
今回の変更点は下記の通り

  • 画像を保存する際に、画像名をURLにするかページタイトルにするかを選択できるようにした
  • ブラウザウィンドウの表示/非表示を切り替えられるようにした
  • ユーザエージェントを指定している場合、常にそのユーザエージェントを以降のアクセスに引き継ぐようにした
  • その他細かい修正

ダウンロードはこちらから

きゃぷちゃーまん

きゃぷちゃーまん

最新版の0.1.0.44を公開しました。
今回の変更点は1点だけ。

  • ページ取得の際のユーザエージェントを指定できるようにした

これにより、携帯サイトなんかもキャプチャー取れます。単にユーザーエージェントを偽装しているだけなので、当たり前ながら携帯のブラウザと同じ見え方をするわけではありませんが。

ダウンロードはこちらから

なお、ユーザーエージェントを追加したい場合は、アプリケーションと同じフォルダにある、ua.txtを好きに編集すれば良い。UAの一覧はこの辺を見ると詳しい。

defrag

Auslogics Disk Defrag

Windows標準のデフラグは時間もかかるし、進捗状況もよく分からんし、ということで、フリーなものを試してみた。
結果としてはかなり良好。もうWindows標準のデフラグは使う気がしない。

« 前の記事 


ads

Ryuzeeのお気に入り