2007-01-01から1年間の記事一覧

Javascript使いもSICPを読むべき

Javascriptで名前空間を汚染しないようにクロージャを使うイディオム、例えばA JavaScript Module Patternって、 SICP第3章のコレじゃん。 3.1.1 Local State Variables (define (make-account balance) (define (withdraw amount) (if (>= balance amount) …

技術講演をニコニコで見よう

クリスマスだけに、Wiiリモコンネタで、ろうそくで赤外線だして吹き消すとかやるといいかも。 数学ではこういうものも。講義, 講演等のビデオを公開するプロジェクト自分で15パズルとマインスイーパの動画を作ってみて、少しずつノウハウがたまってきた。 キ…

javascriptで15パズルを作ってみた(動画)

Youtube ニコニコ http://www.nicovideo.jp/watch/sm1781363 prototype.js 1.6.0 使用。Firefox,IE6で動作確認。 http://eva-lu-ator.net/~gemma/geocities/nikoniko/puzzle.html var puzzle; var zeropos; function swap_puzzle(x,flag) { var tmp = puzzle…

glovePIEのスクリプト仕様が凝りすぎてて面白い

if文,while(for)ループ,変数,四則演算,三角関数,平方根,指数対数関数,日付,乱数...etc しかもこの言語は、手続き型言語じゃない!常にスクリプト全体がリピートしている。このスクリプト全体が、Windowsのイベントポーリングのループの内側で実行されている…

prototype.js 1.6.0 の DOM Builder で hello world

new Element('button',{onclick:"alert('hello world')"}) とやれば、 <button onclick="alert('hello world')"></button> になる。と思ったらダメだった。 Firefoxは大丈夫ですが、IEで動きません。 内部でsetAttributeが使われていて、setAttribute(onclick,"alert('hello world')")となるからです。 IEでは…

Wii RemoteをPCにつないで、Kaosspadみたいに使えないかということで、 Wii Remote -> Processing(ProMIDI) -> DTMソフト を検討したが、ProMIDIのMIDI出力でエラーがでてちょっとつまづいてる。 P5ならVJもできるし、Win,Mac,Linuxに対応するしフロントエン…

JavaScriptへのマルチスレッド・プログラミングの導入

これは素晴らしい。 ただ、自分はAjaxでツリー型の掲示板を作ったことがないせいか、内容をよく理解できない。 現時点でどこが理解できないのかメモ。 1. これまでの例ではgetArticleの中で同期通信を利用していると暗黙に仮定して話を進めてきました 暗黙な…

無限オブ無限

Schemeのコルーチンでやってみました。 (use util.queue) (use util.stream) ;; coroutine (define process-queue (make-queue)) (define (coroutine thunk) (enqueue! process-queue thunk)) (define (start) ((dequeue! process-queue))) (define (pause) …

javascript で SEND + MORE = MONEY

覆面算を append map の深さ優先探索で解いてみる。 参考 ocaml-nagoya:ネタ記録庫 function solve() { // var digs = [0,1,2,3,4,5,6,7,8,9]; var digs = $A($R(0,9)); var m = 1; var o = 0; var s = 9; return digs.without(m,o,s).map(function(e) { ret…

たたみすぎる Array#flattenはprototype.jsでも。

さくっと深さ優先探索したいときに map でこう書く。 aϵ[0,1,2]とbϵ[1,2,4]からa+bが奇数になるペアを求める。 function solve() { var a = [0,1,2]; var b = [1,2,4]; return a.map(function(x) { return b.map(function(y) { if ((x + y) % 2) return [x,y…

prototype.js の max,min がいまいち

体力が一番残ってるやつの名前が知りたいとき [{name: "foo", hp:5}, {name: "bar", hp:3}, {name: "boo", hp:2}].max(function(x) {return x.hp}); 実行結果 5 HP5じゃなくてインデックス(この場合 0)か要素をよこせ。 ああ、こんなとき関数型言語ならfold…

機動戦士ガンダム00の感想

主人公は4人、ガンダムは4体。SEEDはガンダムが多すぎた。∀はヒゲだった。Wは主人公が5人いてストーリーが間延びしがちだった。 ガンダムは変形するが、合体はしない。合体は"リアルな設定"と相性がよくない。変形したほうがおもちゃが売れる。 各話につき戦…

私は高河ゆんファンだが、彼女は作品を未完にしたまま次に取りかかることが多いので、連載完結してから読もうなんてことになる。 しかし、ガンダム00ではキャラデザインなので、安心して楽しめるのがうれしい。 そんな私の、

javascript で配列 [0..9] を作りたいときどうしてますか?

ふつう var a = new Array(10); for (var i=0; i < 10; i++) {a[i] = i;}; ふつう var a = []; for (var i=0; i < 10; i++) {a.push(i);}; prototype.js を使う var a = new Array(10); a.length.times(function (i) {a[i] = i}); var a = $A($R(0,9)); New …

javascript による 数独 自動解答 プログラム

http://eva-lu-ator.net/~gemma/geocities/jscont/sudoku.html バックトラックを実装してあるので、どんな問題でも解くことができます。 解答が複数あるときは全部表示します。 これを次のニコニコ動画のネタにしようと思ってるんですが、ずるずる後回しにな…

Where have all the cowboys gone?

大学の中央図書館で、10年前のbit誌を見てみた。特に懐かしかったのは、VRML。 VRMLに関わっていた人間はいったいどこへ行ってしまったのだろう。 また、Second Life みたいなものが10年前にもあった。PAW無邪気なマイコンやもめ達は今、どうしているこ…

Richard Stallmanの講演を聴いてきた。

「知的財産」だって? そいつは砂上の楼閣だ の内容を軸に、著作権の保護期間の問題や、DRM,ソニーのrootkit入りCD問題など。さすがに堂に入った、よどみのない話ぶりだった。 イヌイットには"雪"をあらわす語彙がウン百種類あるというが、彼の"Free"にかけ…

vi in javascript の隠しコマンド

:kwak 背景がアヒルちゃんになる :moo 作者からのちょっとしたコメントが表示される。

Curry-Howard対応

http://www.kmonos.net/wlog/61.html#_0538060508 を知ってアッー悟り体験ktkr。 call/ccとこんなところで出会うとは。それで皆 Coq Coq 言ってたのか

講演会つながりで。ooPSLA'07が空前絶後に豪華な件

http://theschemeway.blogspot.com/2007/10/why-attend-oopsla200.html を参考に Fred Brooks, チューリング賞受賞, 人月の神話 - 狼人間を撃つ銀の弾はない, あまり講演をやりたがらない人 John McCarthy, チューリング賞受賞, Lisp, 人工知能, あまり講演…

Richard Stallman 来日講演

東京、名古屋で講演をしてまわるようです。名古屋では以下が予定されています。 Feed Forth 07 10/26(金)15時- 名古屋大学国際開発研究科8Fオーディトリアム (公式)基調講演者リスト (公式)スケジュールPDF (公式)場所 SEA & FSIJ 合同フォーラム 10/27(土)1…

クロージャとオブジェクト

reddit.programming 経由 RE: What's so cool about Scheme? 高徳な導師Qc Naにお仕えしていたAntonが、参禅して、こう尋ねた。 "導師、オブジェクトはとてもよいものだと聞きました。それは本当でしょうか?" Qc Naは嘆傷してこう答えた。 "愚か者め。オブ…

Emacs問題の続き

javascriptでEmacs を結構楽しみにしている。 で, Ajax IME: Web-based Japanese Input Methodと組み合わせられるかもしれない。 Google Gears を使えば、オフラインのときはローカルに差分履歴をためて、オンラインになったらまとめてアップロード、みたい…

Mathematicaはすごい

http://ja.wikipedia.org/wiki/Mathematica http://www.wolfram.com/products/mathematica/analysis/index.ja.html を見ると、頭がクラクラする。

どう書く?org の「格子点の列挙」に投稿してみた。 Gauche. http://ja.doukaku.org/comment/3288/ Shaping the future of secure Ajax mashups クロスサイトするときの心得。現状ではURLのfragment identifierを使って通信するのが安全なのだとか。 なんだか…

プログラミング入門の言語はひとつに絞れない

大学の後期授業がはじまって、本屋のプログラミングの棚で学生がC,C++,Javaで迷っていた。 プログラミング入門にどの言語が良いかは、議論百出だ。 自分は、ひとつには絞らず、 「Cはご飯、Schemeはおかず、JavaScriptはデザート」 で、これらを残さず食べて…

Gaucheで数式処理を書いてみたい

数学科でD加群のゼミをとった。計算機科学との相性が良さそうだから。 で、国産の数式処理ソフトの名前がちらほら (Risa/Asirやkan/sm1) 耳に入る。 これらはC言語で書いてあるようだ。さらにBoehm GCを使い、Bignumや、exact number(有理数表現)を自前でや…

Don't say "abstract" (instead say "general")

という記事があって驚いた、まるで例のマシン語を知らないの騒動と時を同じくしているかのようだったので。あの騒動はマシン語に拘泥して、結局、知ってるに越したことはないになってしまったけど、この記事はサイエンスの風を受けていて、清涼に感じた。

ニコニコ動画に初投稿

javascriptでマインスイーパの動画をニコニコに投稿した。 http://www.nicovideo.jp/watch/sm1113536動画編集の拙さで、自分で見ていても3分と待たずに、×ボタンに手が伸びてしまう。 何かこう、爆発シーンとか、ロマンスシーンみたいなものがないと。Javas…

Emacs問題

EmacsLispをCommonLispにするのさえ、ちっとも簡単じゃない。 EmacsLispで書かれた膨大な資産がEmacsにはある。それを移植するのはしんどい。 移植しないと誰も使わない⇔誰も使わないから移植が進まない "EmacsLisp互換"が道だろうが、今までは失敗に終わっ…