組み込みバリデーションを拡張する

例えば、

  • 性別が男性になっているときにだけ
  • 彼女の名前が空白になっていないかチェックする

というのをやりたいときに、独自でバリデーションを組むことが
あると思うんですが、そのときにいちいち空白をチェックする
正規表現とかは組みたくない、と。


せっかく組み込みバリデーションでnotEmptyがあるんだから
これを拡張したいなぁというとき、こんな風にします。

if(Validation::notEmpty($value)) {
  // process
}

importしなくても使えたよ!(behaviorでは)



CakePHP】組み込みバリデーションを勝手利用する | ECWorks Blog
http://blog.ecworks.jp/archives/786

さくらでシェルスクリプト

ちょっと気をつけないといけないのは、PATHの指定をすること。

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin

これを冒頭に入れる。
あと、実行するときは./をつける。


カレントディレクトリの中にある
シェルスクリプトーという意味で。


さくらインターネットで、Cronでシェルスクリプトを実行する : kosukekato.com : the idea espresso
http://www.kosukekato.com/2009/10/cron.php


bashで始めるシェルスクリプト基礎の基礎(1/2)
http://www.atmarkit.co.jp/flinux/rensai/theory08/theory08a.html

Windows7・ThinkPadでトラックポイント対応アプリを増やす

結構苦労した。
トラックポイントはすごく便利なんだけど、対応していないアプリだと
全然スクロールしてくれなくて不便。


そこで有名なのがtp4table.datを触る方法ですが、
いろんな場所にtp4table.datがあって、どれを触ったらいいのかわからん!


ということでそのまとめ。

結局どこのtp4table.datを触ればいいの?

起動するプロセスなりサービスなりを確認するとわかる。

  • スタート → 下の検索窓 → msconfig でシステム構成を起動
  • サービスとスタートアップでトラックポイントっぽい名前のものを探す
  • ちなみに自分の環境では「Synaptics Pointing Device Driver」がそれ
  • これのコマンドを確認する

サービスがスタートアップにあり、かつコマンドが%Program Files%だったら
幸せ。あとはProgram Files下にあるtp4table.datを編集すればよし。


そうじゃなかった場合、おそらくサービス側にトラックポイントが登録
されていて、System32下のプログラムを参照しているものと思われるため、
それを消して、スタートアップ側にProgram Filesにある同様のファイルを
登録する。


Windows 7 の不要なサービスを停止(無効)にする方法 PCプチ技能向上委員会?
http://enjoypcblog.blog32.fc2.com/blog-entry-336.html


そうしないとSystem32側のtp4table.datを編集しなくてはならなくなるが、
これが編集できない(できるんだろうけど1時間探しても方法が見つからなかった)。


自分の環境では
%Program Files%\Synaptics\SynTP\tp4table.dat
を編集すればよかった。


Altebute Blog: Windows 7トラックポイント
http://altebute.blogspot.com/2009/05/windows-7.html

で、あとは?

あとはせうさんの記事を参照すればそのままでよし。
管理者で実行して、読み出して、Pass 0下に新たなアプリを追加すればおっけ。
再起動して動作確認。


せうの日記:TrackPoint未対応のプログラムでスクロール
http://ch00288.kitaguni.tv/e393281.html


これで快適ThinkPad生活!

DirectShowでキャプチャ時に取得イメージの解像度を変える

IAMStreamConfigで、ストリームの設定を取得して、
その設定を変更。そいつを再度格納してやるイメージですね。


ここのサンプルがものすごくわかりやすい。
というか途中までGEEKなページさんのまま。
いや、それがいいのです。非常に助かりました!


DiectShow
http://www.mvision.co.jp/WebHelpIM/_RESOURCE/MvCap_03.html

Windows7 64bitでDirectShow+OpenCVを使う

結論から言うと、DirectShowまでは32bit版と
さほど違いがないです。

Windows SDKのインストール

ここからダウンロードします。
正式名称は Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 です。


Download details: Microsoft Windows 7 SDK (ISO)
http://www.microsoft.com/downloads/details.aspx?familyid=71DEB800-C591-4F97-A900-BEA146E4FAE1&displaylang=en#filelist


注意しなくてはいけないのは、この中で64bit版のISOはAMD64というやつということ。
Itaniumも64bitのチップなんですが、命令セット系が違うんですって。注意注意。
逆にItanium系を使ってる方は、こっちになるのかなぁ。

DirectX SDKのインストール

これも恐るるにたらず。


DirectX ホーム
http://msdn.microsoft.com/ja-jp/directx/default.aspx


上記DirectXのページからだとNovember 2008版しかダウンロードできませんが、
実は…


ホイール欲しい ハンドル欲しい » DirectX SDK August 2009 の解説と Direct3D 11 RTM
http://wlog.flatlib.jp/item/1388


というように、August 2009があったりします。


Download details: DirectX SDK - (August 2009)
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=b66e14b8-8505-4b17-bf80-edb2df5abad4


自分はAugust 2009をいれましたが、今のところ問題なく動いています。


ここまで来たら、まずはDirectShowの動作をチェックします。
サンプルなりなんなりを持ってきて動かしてみます。

OpenCVがくせ者!

OpenCVはバージョンが上がり、2.0になりました。
しかし…結論から言うと、Windows7(x64)+OpenCV2.0+VS2008だと、
うまく動作しません。


OpenCV 2.0 リリースノートなど - BiBoLoG
http://d.hatena.ne.jp/Guernsey/20091001/1254402879


OpenCV 2.0 Release版が公開されました。 画像処理ソリューション
http://imagingsolution.blog107.fc2.com/blog-entry-176.html


いろいろと情報源はあるのですが、どうしてもエラーが出ます。
なんていうエラーか忘れてしまったのですが、VS2005の再頒布可能ライブラリを入れたら直るエラーらしい。
…なんですが、そのエラーは出続け…。うーん。


OpenCV1.1preで対応するとうまくいきます。
まぁ仕方ないですねー…。

Authのエラーメッセージにメッセージを格納する

とある条件下で認証エラーを起こしたいんだけど、
Authコンポーネントにはvalidateのようにエラーを作為的に
起こす方法がない模様。


で、エラーメッセージを格納したいんだけど、そういう時はどうするか。
setFlashを使います。

$this->Session->setFlash('MESSAGE', default, array(), 'auth');


こんな感じでOK。


[CakePHP]Session::setFlash()したメッセージをオリジナルのレイアウトで表示する | HappyQuality
http://www.happyquality.com/2009/07/15/1013.htm


setFlash :: メソッド :: セッション :: 主要なコンポーネント :: マニュアル :: 1.2 Collection :: The Cookbook
http://book.cakephp.org/ja/view/400/setFlash

時間経過を調べる

結局UNIX時を引っ張ってきて引き算するのが一番いいみたい。
mktime()で現在のUNIX時を取得できます。


PHP関数講座 : mktime -- そふぃのphp入門
http://nyx.pu1.net/function/datetime/mktime.html


PHP: mktime - Manual
http://jp2.php.net/manual/ja/function.mktime.php