Jeans & Development:
Deprecated: Function strftime() is deprecated in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/blog.php on line 333
2008年 03月の記事
PHPで動的OOPもどき [プログラミング]
2008年3月26日
PHP5では、クラスで__call()メソッドが使えるので、JavaScriptみたいな動的オブジェクトが作れそう。
実行結果
どんなときに便利か、今は思いつかないけれど。
<?php $obj=(object)$obj; $obj->testfunc=create_function('$i','return $i+1;'); //echo $obj->testfunc(2);// Fatal Error $f=&$obj->testfunc; echo $f(2);// 3 $obj=new dynamic_obj; $obj->testfunc=create_function('$i','return $i+1;'); $obj->testfunc2=create_function('$i','return $i+2;'); echo $obj->testfunc(2);// 3 echo $obj->testfunc2(2);// 4 $obj->__destruct=create_function('','echo "__destruct!";');//__destruct! class dynamic_obj{ public function __call($methodname,$args){ return call_user_func_array($this->$methodname,$args); } public function __destruct(){ if (isset($this->__destruct)) call_user_func($this->__destruct); } }
実行結果
334__destruct!
どんなときに便利か、今は思いつかないけれど。
PHPでクロージャもどき [プログラミング]
2008年3月25日
クロージャとは何かと言う話。
これを知るため、Googleで『クローじゃ』もとい『クロージャ』で検索すると、最上位に出るのがこれ。
クロージャ - Wikipedia
これによると、
クロージャ (Closure) は、プログラミング言語において引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決する関数のことである。
とのこと。ちなみに、『クローじゃ』で検索すると、次のものが出る。
PHPでクローじゃもどき - odz buffer
これを知るため、Googleで『クローじゃ』もとい『クロージャ』で検索すると、最上位に出るのがこれ。
クロージャ - Wikipedia
これによると、
クロージャ (Closure) は、プログラミング言語において引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決する関数のことである。
とのこと。ちなみに、『クローじゃ』で検索すると、次のものが出る。
PHPでクローじゃもどき - odz buffer
JScriptでinputBoxを使う [プログラミング]
2008年3月25日
マイクロソフトの新しいシェル、PowerShellについて色々と見ていて、私自身が一番分かりやすい説明だと思ったのが、次の記事。
Windowsスクリプティング環境比較:PowerShell vs WSH
PowerShell自身について何か書くのは別の機会に譲るとして、これを読んで面白いことに気がついたので、メモ。この記事の中から、マイクロソフトの次のページにリンクされている。
Converting VBScript Commands to Windows PowerShell Commands
VBScriptでできることは一通りPowerShellでできるらしい。で、思い出したのが、inputBox。これは、WSHにおいてはVBScriptにだけ実装されている機能で、JScriptでは使えない。PowerShellではどうかと、調べてみた。
Windowsスクリプティング環境比較:PowerShell vs WSH
PowerShell自身について何か書くのは別の機会に譲るとして、これを読んで面白いことに気がついたので、メモ。この記事の中から、マイクロソフトの次のページにリンクされている。
Converting VBScript Commands to Windows PowerShell Commands
VBScriptでできることは一通りPowerShellでできるらしい。で、思い出したのが、inputBox。これは、WSHにおいてはVBScriptにだけ実装されている機能で、JScriptでは使えない。PowerShellではどうかと、調べてみた。
SFC miniのインストールがWindows Vistaで失敗する件について [プログラミング]
2008年3月21日
現在配布中のSFC mini ver 1.0.1をWindows Vistaにインストールしようとすると、次のようなエラーが出てインストールできません。
このエラーを回避するためには、次に述べるいずれかの方法を用いてください。
1)管理者としてコマンドプロンプトを開き、SFC mini ディレクトリに移動した後に、install-AMD.vbsもしくはinstall-INTEL.vbsを実行する。
2)MakeExeを用いてinstall-AMD.vbsもしくはinstall-INTEL.vbsをexeファイルに変換した後、このexeファイルを管理者として実行する。
いずれの方法でもインストール可能なはずです。
また、Windows Vistaのバグだと思われること(下記参照)が原因で、サンプルプログラムのいくつかが動きません。VBSファイルを少し改変することで、この不具合を回避することができます。例えば、WinSockClient.vbsの場合だと、2行目あたりを次のように変更してください。
WinForm等のライブラリを用いているスクリプトについては、ライブラリ自身のVBSファイルを変更する必要があります。これについては、時期配布バージョンで対応する予定です。
(参考)
1)この不具合についてですが、COMからの戻り値である文字列を直接Executeした場合に、Execute自体は成功するけれども、その直後に不具合が発生するという状況です。ガベージコレクタ周りの不具合では無いかと考えています。WSHのこのような利用の仕方はまれなケースなので、Windows側でこのことについて改善されるかどうかは分かりません。
2)Windows Vistaでは、wscript.exeに対してDEPを無効にすることはできないようです。WinForm等を利用するスクリプトを実行する場合は、install-AMD.vbsを利用してください。
このエラーを回避するためには、次に述べるいずれかの方法を用いてください。
1)管理者としてコマンドプロンプトを開き、SFC mini ディレクトリに移動した後に、install-AMD.vbsもしくはinstall-INTEL.vbsを実行する。
2)MakeExeを用いてinstall-AMD.vbsもしくはinstall-INTEL.vbsをexeファイルに変換した後、このexeファイルを管理者として実行する。
いずれの方法でもインストール可能なはずです。
また、Windows Vistaのバグだと思われること(下記参照)が原因で、サンプルプログラムのいくつかが動きません。VBSファイルを少し改変することで、この不具合を回避することができます。例えば、WinSockClient.vbsの場合だと、2行目あたりを次のように変更してください。
dim code code=CreateObject("SfcMini.tools").Include("<Winsock.vbs>") Execute code
WinForm等のライブラリを用いているスクリプトについては、ライブラリ自身のVBSファイルを変更する必要があります。これについては、時期配布バージョンで対応する予定です。
(参考)
1)この不具合についてですが、COMからの戻り値である文字列を直接Executeした場合に、Execute自体は成功するけれども、その直後に不具合が発生するという状況です。ガベージコレクタ周りの不具合では無いかと考えています。WSHのこのような利用の仕方はまれなケースなので、Windows側でこのことについて改善されるかどうかは分かりません。
2)Windows Vistaでは、wscript.exeに対してDEPを無効にすることはできないようです。WinForm等を利用するスクリプトを実行する場合は、install-AMD.vbsを利用してください。
スパム対策ロードマップ [Nucleus]
2008年3月16日
スパム対策ロードマップを少し変更することを考えている。
Googleで『CAPTCHA』というキーで検索した場合に上位に出てくる記事に以下のものが有る。
CAPTCHAは愚策
CAPTCHAが人間に一手間とらせるのが嫌いと考えるのは私も同じで、だからこのサイトではProtectByMD5を採用している(JavaScriptを利用)のだが、この方法は上記サイトで提案している方法の一つである。ただ、心配されているとおり、ブラウザの機能をそのままスパムロボットが持ってしまった場合(実際には、これはそれほど難しくない)、そういったロボットにはJavaScriptの難しい計算は何の問題にもならなくなる。
Googleで『CAPTCHA』というキーで検索した場合に上位に出てくる記事に以下のものが有る。
CAPTCHAは愚策
CAPTCHAが人間に一手間とらせるのが嫌いと考えるのは私も同じで、だからこのサイトではProtectByMD5を採用している(JavaScriptを利用)のだが、この方法は上記サイトで提案している方法の一つである。ただ、心配されているとおり、ブラウザの機能をそのままスパムロボットが持ってしまった場合(実際には、これはそれほど難しくない)、そういったロボットにはJavaScriptの難しい計算は何の問題にもならなくなる。