2011-01-04
■ コード書き初め「一二三」

書き初めに、以下のお題に答えます。 C++の問題ですが、 Javascript で。
1から1000までプリントせよ。ただし、ループ文や条件分岐文を使わずに。
c++ - Printing 1 to 1000 without loop or conditionals - Stack Overflow
コード(Firefox 専用)
var zero = function(f) function(x) x; function succ(c) function(f) function(x) f(c(f)(x)) function add(n,m) function(f) function(x) m(f)(n(f)(x)) function multiply(n,m) function(f) function(x) n(m(f))(x) function power(n,m) function(f) function(x) m(n)(f)(x) function cton(c) c(function(x) {document.write(x + 1 + '\n'); return x + 1;})(0) var two = succ(succ(zero)); var three = succ(two); var five = add(two, three); var thousand = power(multiply(two,five),three); cton(thousand);
実行例:
http://eva-lu-ator.net/~gemma/hatena/hihumi.html
参考
道 (TAO) から一が生まれ, 一から二が生まれ, 二から三が生まれ, 三から万物が生まれ, 云々
近況報告
新人1年目です。
仕事で Allegro Common Lisp を使っています。
いい処理系です。性能もいいし、ドキュメントもしっかりしてるし、 Emacs インタフェースもよくできてるし、マルチプラットフォームと国際化もバッチリだし。
うちの部長もよく言っていますが、確かに仕事で使うなら Allegro Common Lisp ですね。
うちの会社は ウェブサービス屋さんではないので、「入社したらウェブ技術とはお別れかな」と思ったら、全然そんなことなかったです。
おまけに、仕事で RDF とか セマンティックウェブの勉強もさせてもらいました。
書き初めといいつつ、年末年始もずっとコードを書いてました。
まとまった時間がとれたら片付けようと思っていたコードで、
Firefox 拡張で、 TCP/IP ソケットを開いて、 XMPP を nsISAXXMLReader でパースして、digest-md5 認証するやつができました。
今年もよろしくお願いします。
2010-06-22
■ ICFPc2010参戦記

- 会社の先輩に誘われて参加。
- Common Lisp と英語が共通言語のチーム。コミュニケーションはIRCとgitのコミットログ。
- 私は、Common Lisp書けない、ICFPc 初参加、月曜は会社で新人研修、なので、見学者扱い。
- 記録: 0点
- 任意の燃料を生成するための工場の生成プログラムを書く段階で断念。(大会の2合目といったところ)
- 大会開始
- 仲間が問題読む。
- 仲間が回路の文法の解析。
- 7時間目 仲間がゲートの入出力を同定。左 L-R(mod 3),右 L*R - 1(mod 3)。
- 12時間目 私 参加。IRCログで以上の経緯を知る。問題を読む。回路シミュレータがもう半分できかけてるし、私の出番はなさそうだ。
- 17時間目 仲間がサーバの入力列同定。
- 20時間目 仲間が backward wire の意味を同定。backward か forward かはゲートの行番号で決まる。入力の初期値は 0 。回路シミュレータが完成に向かう。
- 21時間目 仲間が回路シミュレータ完成。鍵prefix同定。
- 次の問題は、サーバの入力列から鍵prefixを出力するような回路の生成だが、誰も解決できず。
- 回路の記述 -> Graphviz 変換プログラム
- 大会2日目に、Common Lisp を書けない私でも何かできることはないかと思って作った。
- 問題文にあった鍵回路
http://eva-lu-ator.net/~gemma/hatena/icfp2010/keycircuit.gif
- 簡単な回路1
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple01detail.gif
- 簡単な回路2
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple02.gif
- 簡単な回路3
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple03.gif
- 簡単な回路4
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple04.gif
- 簡単な回路5
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple05.gif
- 簡単な回路6
http://eva-lu-ator.net/~gemma/hatena/icfp2010/simple06.gif
- 入力を出力する回路 (X:Xは気づかなかった)
http://eva-lu-ator.net/~gemma/hatena/icfp2010/identity.gif
- ゲートのダイアグラム
- 常に 0 を出力する 定数回路
- 常に 1 を出力する 定数回路
http://eva-lu-ator.net/~gemma/hatena/icfp2010/const1.gif
http://eva-lu-ator.net/~gemma/hatena/icfp2010/const1detail.gif
- 常に 2 を出力する 定数回路
http://eva-lu-ator.net/~gemma/hatena/icfp2010/const2.gif
- 定数回路じゃだめだ、NAND、カウンタ、シフトレジスタ…
- ゲートをとりあえず4つ以下とかで並びかえ全探索すれば手がかりになるかも…でも Common Lisp じゃないと…
- 仲間の Common Lisp を読めず、書けず、さりとて再実装する勇気もない自分がうらめしい。
- 日本時間 月曜は会社で新人研修。
- 日本時間 月曜21時に大会終了。何もできなかった。情けない。
- 男はつらいよ柴又慕情を見ながら、酒を飲み、下品なtweetをして、ふて寝した。
- 「あんときの酒は、辛口でしたネェ」
来年は Common Lisp でチームに貢献するぞ。
2010-03-26
■ スレの勢い、スレ検索を追加しました。

- 勢いで並びかえれば、いま盛り上がっているスレがすぐわかります。
FC2ブログでのご利用方法
”テンプレートの設定”をします。
”テンプレート管理”になります。ページをグイッと下に進めると、
”スタイルシート編集”があるので、コピペしてください。
あとはいつもどおり、高機能テキストエディタ→ソースに挿入でお使いいただけると思います。
2010-03-17
■やったー2chまとめサイトエディター2.0できたよー\(^o^)/

ここがすごい
- 豪華なエディター
- 画像の大きさをマウスでグリグリ
- 見やすいテーブル表示。検索、ならびかえも。
- キャッシュでスイスイまとめがはかどる。
- 自動リンク、安価で並び替えもバッチリ。
実装
3週間かかりました。IE8, Firefox3で動作確認済。
/ || ̄ ̄|| ∧∧ 楽しく使ってね
| ||__|| (´・ω・`) 仲良く使ってね
| ̄ ̄\三⊂/ ̄ ̄ ̄/
| | ( ./ /
SS
fc2ブログで使うと、高機能テキストエディタ→ソースに挿入で
編集時にはちゃんと色もサイズも変わってるんですが
投稿してみると全て茶色いサイズも変わってない文になってしまうんですが
なにか解決方法はありますでしょうか?
TT
SSさんと同じ症状で悩んでおります。
解決方法をご教授願いたいのです。
お手すきの際によろしくお願いいたします。
Gemma
コメントをいただきありがとうございます。
FC2ブログでの使いかたをまったく説明していなかった私のミスです。申し訳ありませんでした。
早速、簡単にですが、FC2ブログでの使い方を書いてみました。
http://d.hatena.ne.jp/Gemma/20100326/1269612671
TT
Gemmaさん
迅速な対応ありがとうございます。大変助かりました。
銀
いつも利用させていただいております。
1.0ですが、クロームではあらゆるスレッドについて文字化けするようです。
ところで、古き良きハッカー文化的な投げ銭は受け付けておられますか?
as
2,0を使いfc2ブログに記事を上げたのですが追記の編集をしても「続きを読む」と一緒に全記事表示されます。可能であれば解決方法を教えていただけないでしょうか。
N
初めまして
今度、サイトエディター2.0を使わせてもらおうと思ったのですが、
これは編集の際に『最初全部の記事をボツにしておき、抽出したいレスをクリックで選ぶ』と言った使い方は出来るのでしょうか?御指南お願いします
2010-02-16
■ 計算モデルと論理とゲーデルの不完全性定理

ゲーデルの不完全性定理は、数学を扱う数学、つまりメタ数学を考えるが、それだと理解が難しい。しかし、証明(数学)=プログラムという悟りを開くと、プログラムを扱うプログラム、つまりメタプログラムを考えればよくなり、それならコンパイラ等でなじみがあるので理解が優しくなる。
話の流れは以下。
1. プログラムとは何か
2. 証明とは何か
3. 証明=プログラム
( {、 { ヽ.ー、、
\、__ぃ._ゝ⌒ヾ iヾ)}、_
ン_ー-_二ー-, 〉 {厶 _、ヽ _
ヽ._>'´ / /,ィ/ / ハYヘい ,. -- 〃⌒
r−-、 ィ´ 〃 ,イ/7' ,イイ/ 小ヽ 丶、 ,. ‐ '´ハ i ″`ヽ、
、ヽ、 /幺ィ {从{小込v' jゥ仏厶川リ} YV, 小 Vj. |丶 ヽ
` ー-ミー--'_,辷三彡'´ | V'芯` 芬Yjル/ハ. / V√ヽ._! l\ \ '⌒ヽ
,. -‐ ` ̄ _ファィ! "´ ``ン'´イハy′ l{辷 { い. ト、ヽ._ヽ、 \
y'´ __,,_ ___,,彡'´八ム _'__ 、_幺イ厶/ |'心`VヽヘE、ヽY い、 \
′ / |! r==ァ'゙’_ヘ、 ´_ー,Z.彡-―-〈 ‐- 、 ド¨ {tリj ハ> i`′ ヽ
. / !リ ,.幺-‐=,.イ´'´ ,. / / ヽ \l __ ' `゙ ん}.i_,」 `、
. i`¨¨´ . '´ /ィ<{V/ /,イ i′ ,ハ `、 、ぃヽ「⌒`j 厶イl」 、 ぃ ―――証明と
ヽい l / /レ′/〈.い、___,{.{ , -‐ \ \ーヘ` ` `ヒ´_イy , ム、 、 ヽ. }.}、
` \V /, ,{ { '´_,ム≧ー、-ヘー}-/ ,. -‐-、ヽノ ヽ ハ `バ´^)\`ー-) }ハ. ハ{
,. 、 >'/ { い.ィ/ゥ ̄`ハ}ヽ\.{ / _Vごヽ.._/ }ー}`丶乙ヽ '7ノ^ }/
ヽ'^\ー '´_,,. -‐<ゝ`ー之,_ // }ハヘ{、i ヽ`マTハ_ _/; ヽ、 ハ、}ノ┐
,、-‐¬''" ,イ丁二了 { ___彡' / ノノ ヘ! `∨だ¬ / ∠_` }ヘ ン
〉 -r‐/√ l ハ._乙 -‐'´/´/ ム ヾ^ `i′ \ ` ー1´ヽ
-ー‐¬、Y' |/ /了¨¨´ , ' -‐ ' ,.小、 丶 ! 丶. i
/_,. ,?..._ {イ{ / / |′丶 マi 、_ ト、 ,nyぃ/
/´ / ∠-- .._`丶、 ィ"¨¨ ーヘ 〉| \ ヽ -‐ ヽl `"¨¨´ ̄|il}い} , プログラムは―――
{ ,ィ,イ厂¨\.! `ヽ/ '´ ̄`¨マ´/ | i>、 , - \, '"⌒丶. ハ __,,.. 」リ近'´
∨い、 ` ', _,. -≧ュ、', |エ\ Y |´ ,ゝだンゥー
i ,./'´ヽ ヾ 'r-ヘ l-, -― 、 l. ! ` }} `^`
、_r{ヽ //´ ,.ィ √ }ーヘ -‐'´__,. 、 ヽ |__,,.. _、 、ヽ
ュ?ム′ , ' /。/ // ,'ム斗ヘ / `¨´ l ヽ 丶
ゞイ} ,ム./ ∧/−-/ ァZ/! i._ぃ (._,,.. ヘ下、 i l |ィT_i_、_ \. ',
ケ´|./ 〈 ∧/__ ,<./ / 7/、!´ 「 i.ヘ r‐ 、___`ー--‐―_、i. l i!ヘヘヽ、\ }
°厶イ\/∨¨7`ヽ'´ ; / l i l lヘヾヽ._`¨`ーァー ユ´l=キミ、vヘ_ぃ. Y 「「おなじだよ♪」」
,.ゝヘ2__,イ'‐ / / ′!j_! | !. -i¬ ヘ.く`ヽ`¨´ー'´/ィケ i. l i! l マヘ.ヘ\j
r'´ `¨^タ_ / / i /l_j、|i_,,. l-‐!__Vドヽ`ー‐z_'.イ√丁| i! ト、i_,.Vヘヾ`ヽ、
ヽ.___,.イ_/ `7、,' !´ i j ヘ Y'i,.ィ'"^v,.--}、`^マ´/ _/ 7√¨¨マ丁ンj_,.イ´ マベへ`ヽ、
/ //‐-/、/ヽ| / . V ! 〉¬ーi、_〉、Y´,_}厶_rt__ri.}└1厶ィつ}ヘへ>>>ぅ,
// //..__// ヽj' !、__! { jー-'¨´/ 厂ヽ.__マ^¨¨´ `1 r‐}_ `ーラ^´ r、√
Z/V ヽ,くノ _ 廴_j、ノ j,.、_y' / ム._广^i `¨´ `辷'´厶ノ´
ハスケル・カリー & ウィリアム・ハワード
4. プログラムできないこと(停止性問題)
5. 証明できないこと(ゲーデルの不完全性定理)
何はともあれ、定義を見てみよう。
自然数論を含む帰納的に記述できる公理系が、ω無矛盾であれば、証明も反証もできない命題が存在する。
なんのこっちゃだが、今から分かりやすく説明する。
fuga
間違いがあるので指摘します。
>例えば、命題論理は、無矛盾かつ完全な公理系である。
>よって、よくある勘違いに「どんな公理系も不完全である」というのがあるが、誤りである。
論理の演繹システムについて言われる「完全」というのは、公理系の「完全」とは異なります。
なので「どんな公理系も不完全である」への反論としては不適切です。
完全な公理系としては例えば実閉体の理論やPresburger算術の理論があります。
Shoon
証明=プログラム ってとこ詳しく説明願いたいんだが、、、
プログラム=任意の自然数 N に対して命題p(N)が成り立つことを帰納的に証明する
って考えればOK??
Gemma
fuga様
おっしゃる通りです。訂正しました。
ゲーデルの不完全性定理とゲーデルの完全性定理の"完全"は全く違う意味だから注意せよというやつにまんまと引っかかりました。
有益なコメントありがとうございます。
Gemma
Shoon
証明=プログラムについては、参考文献に挙げたP.WadlerのProofs are Programsが面白いです。
もう少し堅い説明は↓がおすすめです(参考文献に追加しました)。
http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/p/frag/frag_g.html
tobariki
とても面白かったので、
がんばってゲーデルの不完全定理を理解したいと再熱しました。
Gemma
tobariki様
ありがとうございます。
staff456
こんにちは。2chRSSのやつ、使わせていただいてます。
で、質問なんですが、最後のURLに //が2つついているのは仕様でしょうか?
http://2ch2rss.dip.jp/rss.xml?url=http://venus.bbspink.com/test/read.cgi/megami//1202620202
こんな感じになるのでリーダーに登録できません・・・
Gemma
staff456様
修正しました。ご迷惑をおかけして申し訳ありませんでした。
2010-01-24
■ SchemeコードバトンをGaucheでCGIにしてみた

Scheme コードバトンまとめページ - ひげぽん OSとか作っちゃうかMona-
より、英単語暗記補助ツールを作るお題。
最初はコマンドプロンプトで「この単語を知っているか? Y/N/Q」だけの単純なプログラム(67行)だったのが、
10人以上のバトンを経て、今はすごい複雑(570行)になってる。
とてもついていけないので、こうなったらもう、違う方向から攻めようということで、GaucheでCGIにしてみた。
http://eva-lu-ator.net/~gemma/baton/
↑のは、実はAjaxで以下の4つ5つのWeb APIを叩いてる。
q は問題ID(整数)。
問題データを返す。
<quiz id="3"> <word>defect</word> <mean>欠点</mean> <ok>4</ok> <ng>5</ng> </quiz>
2009-12-19
■Mozilla勉強会(#modest)に参加しました

Mozilla 勉強会 « Mozilla Developer Street (modest)
- プレゼン資料 アプリケーションプラットフォームとしてのFirefox拡張
- HTMLでプレゼンを作れるS5を使っています。gitとの相性もいいし、ブラウザの表現力を活かせるので好きです。
Firefox3 Hacksにサインをいただきました
ノベルティをいただきました
- クリアーファイル! レア物とのこと。
- ノートパソコン用バッグ! Firefoxのアイコン付き! これはすごい
- ステッカー、ボールペン、携帯ストラップ、ネックストラップなどなど!
ありがとうありがとう!
JetpackやMozillaの現状など、とても勉強になりました。次回もぜひお願いします。
2009-12-09
■ 「むすび」に費やした大学院の1年間

昨年の12月ごろ、つまりちょうど1年前に、XMPPとFirefox拡張の勉強を始めました。正月はずっとFirefox3 Hacksを読んでいました。
今年の5月15日に、構想をまとめて、2009年度上期未踏本体クリエータに応募したPDFです。結果は落選でしたが、めげずに実装を行いました。
7月4日にShibuya.lisp TT#3で途中経過を発表しました。
9月17日にJSSST第26回大会で登壇発表したときのスライドです。初めての論文投稿、発表で緊張しました。
11月20日、バージョン1.0をリリース。
12月7日に修士論文の中間報告としてプレゼンをしました。
学生生活の締めくくりとして1年間かけて、自分で構想から実装、公開までこぎつけることができて、満足しています。
ご指導いただいているジャック・ガリグ先生にも、とても感謝しています。
2009-12-06
■ むすびのチャットとチェスがGoogleガジェットになりました

※むすびが必要です。
むすびを使って、このページを開いてから、ブラウザのブックマークから遊びたい相手を選んでください。
それでブラウザのアドレスバーがこのようなxmpp URIになっていればOKです。
romeoとjulietが遊ぶURI xmpp://romeo@gmail.com/Musubi/juliet@gmail.com#http://d.hatena.ne.jp/Gemma/20091206/1260094125
- 私と遊ぶリンクは xmpp:teruakigemma@gmail.com#http://d.hatena.ne.jp/Gemma/20091206/1260094125
2009-12-05
■「むすび」でリアルタイム・ウェブなお買い物ページを作ってみた

むすびに新しいサンプルを加えました。
お買い物ごっこをするページで、相手(店主)とリアルタイムにチャットしたり、交渉したりできます。
チェスでは、双方ともchess.htmlを見てやりとりしますが、
このページでは、こちらはplayer.htmlを、むこうはmaster.htmlを見てやりとりします。
面白いでしょう?
■ むすび v1.1.0でTwitterをリダイレクション、パイプしよう!

むすびがバージョンアップして、リダイレクションとパイプ機能がつきました。
さて、WWW、特にURIは、世界規模のファイルシステムを実現しました。
しかし、今のWebには、ファイルとして表現できないものが生まれています。
それは、Twitterなどからリアルタイムに流れてくるメッセージのストリームです。
ところで、Unixでは、行指向のテキストストリームを扱うために、リダイレクションやパイプといった便利な機能があります。
catやgrepってすごく便利ですよね。
そこで、むすびでも、メッセージ指向のXMLストリームを扱うために、それらを真似してみました。
これで、例えばTwitterなどからのメッセージをcatして、
grep.htmlに通ったものだけ読むといったことが簡単にできるようになります。
従来は以下のxmpp URIでロードしたページは、juliet@localhostにしかメッセージできませんでした。
xmpp://romeo@localhost/Musubi/juliet@localhost#http://musubi.im/chat/
これからはリダイレクションとして、chan/0にもメッセージできます。
chanはチャンネルの略です。0はチャンネル名で、好きな名前を付けられます。
ページのスクリプトで、例えばこのようにしてください。
Musubi.send(<message to="chan/0">
<body>このメッセージはchan/0にリダイレクションします</body>
</message>);
catするには、複数のページから1つのチャンネルにリダイレクションするわけです。
chan/0にリダイレクションしたメッセージは、以下のようなxmpp URIに届きます。
xmpp://romeo@localhost/Musubi/chan/0
xmpp://chan/0/juliet@localhost
xmpp://chan/0/chan/foobar
ちなみに、ちょっとまぎらわしいですが、以下のURIにはjuliet@localhostやchan/foobarからのメッセージは届きません。
xmpp://chan/0/juliet@localhost
xmpp://chan/0/chan/foobar
パイプは以下のようにします。chan/0 -> alice@localhost の向きのパイプです。
例えばgrepするページを挟むとよいでしょう。
xmpp://chan/0/alice@localhost#http://musubi.im/grep/
リダイレクションするページ
パイプの例: grepするページ
まとめ
julietからのloveを含むメッセージをaliceに転送します。
xmpp://romeo@localhost/Musubi/juliet@localhost#http://musubi.im/rdr/ (julietのメッセージをchan/0にリダイレクション) xmpp://chan/0/alice@localhost/#http://musubi.im/grep/ (パイプでgrepしてaliceへ)
Unixのシェルコマンドと見比べてみてください。
romeo$ <juliet > chan/0 romeo$ <chan/0 grep love > alice
ほとんどの板のURLをいれてもエラーが出てきて変換できなくなっています
ご確認お願いします
私もhttp://gemmat.s206.xrea.com/matome/matome.cgi を重宝させてもらっています。
よろしければ対応お願いします。
お騒がせしました
治す方法はありますでしょうか?