2008.10.26
六月頃に研究室の課題でやったんだけど、ネット上でいいサンプルがなかったんで公開することにした。
OpenCVとOpenGLを連携させるサンプル
あと思いつきで英語版も書いといた。
OpenCV+OpenGL
やっつけ仕事なんですごく粗があると思うんだけど、それでも何かの役には立てるかなあと思って。
おそらくこういう課題って少なくないと思うので、学生が真似しまくって「おまえらみんなこのページのままじゃねえかボケ!」みたいな現象でも起きれば楽しいなあというむちゃくちゃな動機ですが。
これでバグでも含まれてれば最高なんですが、まあそのときはこっそり教えてください><
2008.01.07
http://www.masayashi.com/2008/01/05/536
王様は2038年にぶちのめされる前にXSSの対処をされることをお勧めいたします.
via: 王様に提言 - よくきたはてダ
うおー!ありがとうございます!
ご指摘を受け、以下のようにコードを一部改変しました。『受け取ったデータはhtmlspecialcharsかけようね』という指摘だと解釈しました。
$month = $_POST{'month'}; //月を受け取る
$day = $_POST{'day'}; //日を受け取る
↓ XSS対策
$month = htmlspecialchars($_POST{'month'}); //月を受け取る
$day = htmlspecialchars($_POST{'day'}); //日を受け取る
重ねて、今回のご提言に深く感謝します。
今後も至らない点が見受けられましたら、ご指摘いただければ幸いです。
2008/01/07 12:43 masayashi
2008.01.05
概要
この恋がいつの日か 表彰台にのぼる時
君がメダルを受けとってくれないか
たとえば千年 千年じゃ足りないか
できるだけ長生きするから
(千年メダル/ザ・ハイロウズ)
ソースコード
送信側(calendar.html)のコードは特別なことをしていないので省略します。
<html>
<head>
<title>PHPで誕生日の曜日を千年分調べたら2038年問題の壁にぶちのめされた</title>
</head>
<body>
<h2>PHPで誕生日の曜日を千年分調べたら2038年問題の壁にぶちのめされた</h2>
<?php
//変数定義とか
define("YEAR_START",1900); //とりあえずこのへんからスタート
define("YEAR_NUM",1000); //表示する年数
$year = YEAR_START;
$month = htmlspecialchars($_POST{'month'}); //月を受け取る
$day = htmlspecialchars($_POST{'day'}); //日を受け取る
$weeks = array('日','月','火','水','木','金','土');
//ちょっと失礼して先にテーブルとか組ませてもらいますよっと
print("<h3>".$month."月".$day."日の曜日を千年分表示しています</h3>");
print("<table border='1px'><tr><td></td>");
for ($i=0; $i<10; $i++) {
print("<td>0".$i."年</td>");
}
print("</tr>");
//ここから処理系
$counter = 0; //表示時折り返し用のカウンタ
print("<tr><td><strong>".$year."年代:</strong></td>"); //妥協の塊
for (; $year < YEAR_START+YEAR_NUM; $year++, $counter++) {
//10個表示するごとに改行入れるんば
if ($counter>=10) {
print("</tr><tr><td><strong>".$year."年代:</strong></td>");
$counter=0;
}
$week = date("w", mktime(0,0,0,$month,$day,$year));
print("<td>$weeks[$week]</td>");
}
print("</tr></table>");
?>
</body>
</html>
出力結果

- ずっと木曜日のターン!なんぞこれー
- 2038年問題っていうらしいよ。参照:【PHP TIPS】 8. 2038年問題:ITpro
- 時間の変数を32ビットで表しているらしいのですが、この限界(2の32乗-1)が2038-01-19 12:14:07であり、これより未来に関する処理はオーバーフローしちゃって扱えないよーごめんねー。という問題。
- PHPに関しては、PEARのCalcクラスを使用することによって対応できる。
うっわー!なんだこの小さな不幸は!困ったさんだなー。
実際に2038年になってこの問題に世間が脅かされるなんてことは、まあないはず。30年後にはコンピュータって単語が持つ意味そのものが変容しているだろー、というのが個人的な持論。
いい未来になっていてほしいもんです。などと考えたり考えなかったりしながら、次回の解決編へつづく。
2008.01.04
テストコード
<?php
$hoge = "ほげ";
print <<< EOD
ヒアドキュメント開始!<br />
ずっと俺のターン!<br />
$hoge 変数も表示される<br />
"'<>;/ この辺の記号も大丈夫<br />
そろそろ終了なんだぜ<br />
EOD;
?>
上のコード、全然よゆうで動きそうなものなのに、なんかエラーとかいうの。
ソースコードの最終行でエラー出てるから、EOD認識してないんじゃね? と思ったらやっぱりそうだった。
終了のIDの文字列の存在する行にはID以外は何も記述してはいけません。
IDの左側にスペースやタブ等を記述してもエラーとなります。
だってさー。テストコードにはEODの前にタブが入ってる。
正直タブぐらい入れさせていただきたいのだが。インデントさせてくれー。
2008.01.02
memo
- 『可変変数とは、変数名を変数でつけられる変数のこと』 うん、日本語でおk
- サンプルコード追いかけたら簡単。要するにポインタのポインタっていうか参照の参照みたいなことかー、違うかもしれないけど。スクリプト言語特有かな?RubyとかLispにもあるのー?
- 動的に変数名が付けられて鼻血が出るほど便利らしい。その便利さは今のぼくには 理 解 で き な い 。
- ちょっとまて参照関係ループにできるんじゃね?
- やってみたらできた
テストコード
<?php
$foo = "bar";
$bar = "foo";
print ("<strong>変数</strong><br />");
print ('$foo: '.$foo."<br />");
print ('$bar: '.$bar."<p />");
print ("<strong>可変関数</strong><br />");
print ('$$foo: '.$$foo."<p />");
print ("<strong>可変可変関数</strong><br />");
print ('$$$foo: '.$$$foo."<p />");
print ("<strong>可変可変可変関数</strong><br />");
print ('$$$$foo: '.$$$$foo."<p />");
print ("<strong>可変可変可変可変関数</strong><br />");
print ('$$$$$foo: '.$$$$$foo."<p />");
?>
可変変数の補足メモ
- $foo => bar
- $$foo => $ $foo => $ bar => $bar => foo
変態だー!
実行結果
変数
$foo: bar
$bar: foo
可変関数
$$foo: foo
可変可変関数
$$$foo: bar
可変可変関数
$$$$foo: foo
可変可変関数
$$$$$foo: bar
すごく・・・ループです・・・
無限って気持ちいいよねー
2008.01.01
- 地獄のようにどうでもいいのだけれど、本に載ってなかったのでテストしてみたらNULLだった
- ふつうだー
テストコード
<?php
function test() {
print ("exec test()<p />");
}
$ret = test();
print(gettype($ret));
?>
結果
exec test()
NULL
じゃーん。NULLでしたー。