Jeans & Development:2008年 02月の記事

PHPで、オブジェクトのメソッド内からスタティックメソッドを呼び出す [プログラミング]

2008年2月29日

PHP5の話。表題のことについて良く理解していない部分があったので、テストコードを実行してまとめてみた。

オブジェクトのメソッド内からスタティックにメソッドを呼び出しても、$thisオブジェクトは保存される。たとえ、呼び出すメソッドが、オブジェクト自身と何の関連の無いクラスに記述されていても。ただし、呼び出すメソッドが『static』指定されている場合は別で、$thisオブジェクトは使えない。

SQLiteラッパ ver 0.9.0.3 [Nucleus/SQLite]

2008年2月22日

SQLiteラッパ ver 0.9.0.2 (Nucleus-SQLite 3.31 SP1 に付属)において、MultipleCategoriesなど、REGEXPをクエリー中に用いているプラグインなどで不具合が出るバグを発見しました。

修正版を 0.9.0.3 として、Nucleusフォーラムにアップしました。該当する方は、アップグレードしてください。バグ修正だけなので、前のバージョンのまま使っていても、セキュリティー上の問題はありません。

フリーなプログラミングツール [プログラミング]

2008年2月22日

改訂版。以前記事を書いた時と比べてずいぶん状況が変わっているようなので、改めて調べてみた。

Visual Studio 2008 Express Edition
Eclipse
Turbo JBuilder
C++ Explorer/Compiler
Turbo Delphi
SharpDevelop

マイクロソフトのフリーツールは、以前は期間限定だったが、最近はそうでもないようだ。VC++ 2008 をインストールしてみたが、以前はできなかったGUIアプリケーションもこれでできるようになっている。

EclipseはJava開発環境だが、PHP開発にも使えることを最近知って、インストールしてみた。現在、調整中。

ボーランドは、JBuilder, C++ Explorer, Turbo Delphi と出している。まだ試していない。

SharpDevelopもまだ開発が続いているようだ。マイクロソフトがフリーで出すようになってからは、こちらにお世話になる機会はなさそう。だが、このツールはVB.NET←→C#.NETの相互変換ができる(最新版は未チェック)ので、そういったことが必要な場合は便利かもしれない。

以前ダウンロードできたVB5は、今はリンク切れになっている。

NP_StopDraft [Nucleus]

2008年2月9日

3.31 SP1 にアップグレードしたついでに、オートドラフト機能を止めてしまおうと思った。いろいろ調べた結果、最も良く使われている方法は、javascript/xmlhttprequest.js をインクルードしなくするというもの。ただこの方法だと、コアをアップグレードする時に、そのつど変更をする必要がありそう。

一方で、NKJGさんがNP_StopAutoSavingDraftというプラグインを公開されている。やっぱりこれかなと思ってダウンロードしてみたら、思ったよりも高機能の様子。私としては、インストールすることでオートドラフトをストップするだけでよいので、結局は自作することにした。

初心者プログラマへの提案 [General]

2008年2月8日

大垣氏の記事を読んで、ずいぶん気持ちが落ち着いたけれど、もう一言いいたい。

私が思う、今のWebアプリケーションをめぐるインターネット事情は、次のような感じ。

URIに『#』か二つ以上の『?』を含むアクセスを禁止 [Nucleus]

2008年2月8日

サーバーログを見ていつも思うのだが、『index.php?itemid=123#nucleus_cf』などのURIにアクセスしてくるスパムが結構多い。なぜ『#』を含むURIにアクセスしてくるかは、個別アイテムページのコメントフォームのソースコードを見れば分かる。まともなブラウザなら、こんなことはしない。

また、『index.php?body=http://cracked.site.com/foo.php?』のように、『?』を2つ以上含むURIへのアクセスもある。こちらは、リモートコードインサーションを狙った、クラッキングのトライ。本来ならば、『?』は『%3F』にエンコードされるべきである。

以上の理由から、URIに『#』か二つ以上の『?』を含むアクセスを禁止することにした。index.phpに次のコードを追加することで、対処した。
// refuse # and ? in URL
if (preg_match('/(#|\?[^\?]*\?)/',$_SERVER['REQUEST_URI'])) {
    exit("<html><body>URI shouldn't contain '#' and 2x'?'. Please check the browser/robot setting.</body></html>");
}

初心者のためのプログラミング言語 [General]

2008年2月6日

どうやら最近、『初心者のためのプログラミング言語』に関する議論があちらこちらでなされている様子。意見を述べている人たちはみなそれぞれ一流のプログラマで、自分のプログラミングスタイルを持っている人たちのようだ。おそらく、みなプロなのだろう。私の立場は、彼らのようにプロでもないし、初心者とも言えない。おそらく、両方の立場が比較的良く分かる位置にいると思う。

私が最も気になったこと。それを一言で述べると、『真のプロは教育には向かない』になる。プロの人たちは、初心者に向いているとされるプログラミング言語を取り上げ、構造型だけで記述されるだの、抽象化の概念が無いだの、だからこんなものを最初に教えると変な癖がつくだの、そんな風に議論しているように見える。初心者にとって何が分からないかが、上級者には分からないのではないだろうか。

Nucleus 3.31 SP1 出ました。 [Nucleus]

2008年2月6日

MySQL版、SQLite版共に、日本語バージョンの 3.31 SP1 が出ました。今回のバージョンは、XSS脆弱性の修正が入っていますので、必ずアップグレードを行うようにしてください。

ディープ・ブルーとボナンザはどちらが強いのか [コンピューター・その他]

2008年2月5日

以前からこの記事を書こう書こうと思いながら月日が経ってしまい、時期を逸していたのだが、友人からディープブルーについて質問があったので、やはり書くことにした。

Deep Blueは10年前、チェスの世界チャンピオンであったカスパロフ氏に勝ったコンピューターチェスプログラム。もう一方のBonanzaは1年ほど前、渡辺竜王に善戦しながら負けたコンピューター将棋のプログラムである。