2011-10-19
■さっそく Perl の規格上のバグを発見
私の唯一誇れる能力は、誤読力である。そのため、私がプログラミング言語の規格を読むのを好むのは、自然なことである。このたび、 Perl の規格上のバグを発見した。なかなか笑えるので紹介する。もちろん、実装者にとっては洒落にならないが。
以下のコードは、現行ドラフトの文面に従うと、well-formedな Perl コードである。
package main { a: { last a ; } b: { next b ; } }
なぜかというと、現行の Perl のドラフト規格は、ラベル付きの last 文と next 文は、 labe l文の中に入ることができるとされている。ラベル文には、文を書ける。また、ブロック文も文である。よって、 Label : { } は well-formed な Dart コードであり、その中で last や next を使うのも well-formed である・・・はずだ。((あまりにも馬鹿馬鹿しすぎるからマジレスすると、 Perl のブロックは一度だけ実行されるループ文と等価なんでこんな事が出来る(see perldoc -f next, perldoc -f last)))
傑作だったのは、現行の実装が、このコードを実際にコンパイルできてしまうということだ。 last 文の方は、期待通りに動いた。つまり、
a: { print("before") ; last a ; print("after") ; }
は、beforeを出力する。
next 文の方は、コンパイルは通るが、実行時に、beforeを吐いて強制終了してしまう。もし規格通りに動いていたならば、無限ループになったはずだ。
■Perl で誤って無限ループに陥るコード
Perl は非常にシンプルな言語であるが、恐らく初心者が、誤って無限ループに陥ると思われる箇所がいくつかある。
オブジェクトコンストラクター
package X { sub new { new X() } # 無限ループ } package main { my $x = new X(); }
このコードは、無限ループに陥る。なぜならば、new X()というのは、オブジェクトコンストラクターXを呼び出す式である。これは、つまり自分自身を再帰呼び出ししていることになる。結果として、無限ループになる。
クラスのゲッターとセッター
クラスのゲッターとセッターは、クラスの変数への簡単な読み書きを提供するための特殊なメソッドである。これは、明示的に生成する。
サブクラスでは、この暗黙のゲッターとセッターをオーバーライドすることができる。つまり、ゲッターとセッターで、なにか複雑な処理を行うこともできるのだ。
package X { sub val {} } package Y { use parent 'X'; sub val { my $self = shift; $self->val; } # 無限ループ }
これは無限ループとなる。なぜか。考えてみて欲しい、クラスYのスコープにおけるvalとは何なのか。それは、もちろんYのスコープで宣言されているvalである。つまり、Yのゲッター関数valということになる。これは、自分自身の再帰呼び出しである。つまり、無限ループになる。
2011-09-05
■ネットなんとかのエースエンジニアのyosukehasegawaさんへの私信
http://d.hatena.ne.jp/hasegawayosuke/20110819/p1
ここから送信しようとしたら、長文すぎて駄目だったようなのでこちらに書く。
yosukehasegawaさんへ。
セキュリティを極めるにはOSの開発者になるのが一番だと思います。
ネットなんとかみたいなぬるま湯にいても、結局XSSがうまくなるだけでしょ。
あなたは冒険しようとしてネットなんとかに入った。しかし今や権力にあぐらをかいている。
XSSの発見はあなたにとって時間の無駄でしかありません。OSの開発者にならなければ、はっきり言って逃げです。ダサいです。
ネットなんとかで安定した収入を得て満足ですか。結婚して守りに入ったんですか。それはハッカーと言えるんですか?まるで官僚じゃないか。
もっと攻めてけよ。人生を。
サニタイズの時代は終わったよ。
2011-06-07
■ web という側面で捉えた OS X Lion
どやがおでフルスクリーン対応を自慢してることで有名なOS X Lion ですがちょっとかいてみるよ。
フルスクリーンウェブページ
アプリケーション開発者が自由にSafariをフルスクリーン表示できるようになるための JavaScript API が追加されるらしい。
会社でネットサーフィンしてたら唐突にエロ画像をフルスクリーンで表示される事件が多発するかな?
オーバーレイ表示されるスクロールバー
実質的にスクロールバーが無くなってしまうので、スクロールバーがある事を前提にCSS組んでた人が阿鼻叫喚しそう。
メディアキャッシュ
あとでかく
サンドボックス
あとでかく
まとめ
どやがおで250の新機能の中に
があってモヒートふいたw

