アルファベットなしにJavaScriptでプログラムしている事例

JavaScriptでプログラムを作る際にアルファベットを一切使わないという事例です。プログラムの目的は以下のようです。
promptで3桁の自然数を2つ表示します。その人間がその計算結果をpromptから入力します。その解をしらべて正解ならば「That's right!」、不正解ならば「That isn't right...」とalertします。

どのようにプログラムされているかというと…reosabloさんが以下のページに具体的に書いています。

アルファベットを使わないというアイデアがパズル的で面白かったです。

evalの代用品

以下では、thisキーワードを使ってWindowオブジェクトを呼び出し、そのプロパティの中からsetTimeoutメソッドを特定して、望む文字列をeval、というアイデアについて記しました。(可能な限り既知の方法を使わない方向で…)

http://d.hatena.ne.jp/hoshikuzu/20090330#p3

昨日、上であげた方法とほぼ同様ですけれどthisキーワードを使わずに済むvariantを思いつきました。ただし、Firefoxでのみ動作確認しました。え?thisのかわりにwindowと記述すれば簡単だって?それは我慢する方向で。そもそもことの始まりはwindowのかわりにthisとしてもいいんだなぁという個人的なささやかな楽しみが起点ですので。

上で示したように改良前ではscript要素の中でのみ有効でした。これはthisキーワードを使っているためです。このたびの改良版ではその呪縛から解き放たれますので、onclickなどの属性の中で記述が可能となりました。なやんでいたのですよ、ひそかに。なやむ方向が間違っていますけれど、パズル的な趣味なので致し方なく。

その方法は…たとえば、0x1.__parent__などWindow Objectを示すものを使うんですね。

※あとは、文字列中に『(』や『)』を持つ異常なやりかたをなんとかして発見したいものです。これができると超面白いから…

プラス記号が使えないお話し

「ぼくしょうがくせいだからわかんない」と先日もつぶやいた通りです。「+」が使えなければUTF-7の記述も無理っぽいのでした。で、charsetがHTTPで明示されていなくてmeta要素でも指定されていなくてもUTF-7によるXSSアタックチャンスがないという不思議なものになっていたのですね。追記::う?はてなスターが(激狼狽

無関係な脈絡でふと思い出しました。hasegawayosukeさん、差出人不明のメール、そちらから着弾しました。どうもでした。

閑話休題

EUC-JPで送った「美乳」とかをそのままリターンするようであるならば、古めのIEが、EUC-JPのcharsetを自動選択することになるのかしら?とか考えてみました。若干恐ろしいのでくだんの金床さんのサーバには触らない方向で。ええと。後は脳内で。…ぼくしょうがくせいだからわかんない。たぶん長谷川さんならば考えるまでもなく即時、明快にお答えになるのでしょうね。

自室でサーバをふたつたてるおはなし

なんでひらがな?

perlについて何もしりませんので勉強しようと思いまして、cygwinと、そこで動くperlとを自室のPCにインストールしました。これだけだとつまらないのでANHTTPサーバも導入しました。ドメインが異なる複数のホストが欲しいのでやや悩みましたが、バーチャルホストをふたつ立てればよいことに気がつきました。でもグローバルなIPなんて贅沢はできません。172.0.0.1と192.168.100.1のローカルなIPにたいして、Windowsのhostsファイルでそれぞれドメインの名前を解決するように定義してやればよいと気がつきました。これでオッケー。自室の中で閉鎖した空間で誰にも気兼ねなくalice.tldとbob.tldの出来上がり。あとでeve.tldも作ってみましょうか…

…ここまでは良いのですが。ANHTTPDのバーチャルホストの名前の判別は単純な前方一致であるという文献をGoogleで発見。そういう意味の遊びはできないなぁと肝に銘じたのでした。本当はクッキーの、サブドメインでの取り扱いやpathでの取り扱いについて色々知りたかったんだけれど。少々気をつけなくては。あーびっくりした。

追記::Apacheなども動くようで、ブクマでのコメント、ありがとうございます!