空想犬猫記

※当日記では、犬も猫も空想も扱っておりません。(旧・エト記)

Nerd

scriptaculous.js

Drag-N-Drop を実現するためのライブラリを探してみた。どうやら scriptaculous.js が本命。MIT ライセンスで,ソースコードも読みやすい。ライブラリの名前がもう少し分かり易ければと思う。 JavaScript のオブジェクトモデルについて勉強したあとで,改め…

JavaScript Object Model

このブログでも数回触れたことがある JavaScript について,もう少し調べてみる。入門編として「まずは動かしてみる」という段階を踏まえ,最近まで open source の JavaScript を「読んでみる」というという段階を経てきた。prototype.js を使うとなんだか…

Emacs with X11 on MacOSX

普段,Mac で Objective-C 以外のコードを書くときには Carbon Emacs を利用している。しかし,描画の遅さ,特にスクロール時に一瞬チラつくのが許せなくて,X11 上の Emacs に乗り換えようかと検討してみた。 CVS から最新のコードを取得し % ./configure -…

スケッチ UML

最近,ようやく「ソフトウェアの設計図」がうまく書けるようになってきた。今回は,既存のライブラリに新規機能を追加するのに,クラス図とシーケンス図上で一週間程度検討を重ね,実装は2日で済ませた。今回はわりと設計段階で丹念に吟味したおかげで,実装…

バイナリアン度チェック

私は 46 点でした…(T_T)。まだまだですね…。

プログラマはどの言語を勉強するべきか

クライアントアプリケーションを書く場合,Windows だったら C#,MacOSX だったら Objective-C。効率が追求されるサーバー,CG,数値計算だったら C。その他のたいていの部分は Perl や Ruby,JavaScript などのスクリプト言語が強い。最近思うのは,Ruby と…

JavaScript のクラスのメンバ関数をイベントハンドラに登録する方法

先週の土曜日 に JavaScript をいじり始めて真っ先に戸惑ったのが C++ と JavaScript の間の this の違いだった。JavaScript には「カレントオブジェクト」なる概念があって,this は「カレントオブジェクトへの参照」という定義らしい。で「カレントオブジ…

Ajax with prototype.js の実験と Web アプリの MVC に関する妄想

さて,昨日の予定通り,本日は prototype.js の Ajax クラスを調べてみる。参考にしたのはこちら。だいぶ流行から乗り遅れたおかげで,資料が充実した環境で効率的に学べるという恩恵に与れるとは,マイペースも悪く無いなとおもう(我ながらおめでたい)。C…

検討

Java と C# を調べてみたけど,C# の方がよさげ。その理由は 後出しじゃんけんなので 開発環境が快適(私の中では Eclipse Emacs .NET) Java の Generics が怪しかった というわけで,色々考えても不毛だから C# で行くことにする。

Going Home

個人的にやっているプロジェクトの構想を練る。「クライアントの UI には WWW ブラウザか,そのプラットフォームのネイティブな toolkit*1を使う」というのと「クライアントにスクリプト言語*2のインターフェースを持たせる」という辺りの構想は,今のところ…

RubyCocoa = ObjC-Ruby Bridge

RubyCocoa というフレームワークがある。一般的には「Cocoa アプリケーションを Ruby で記述するためのフレームワーク」として認識されていて,御本家にも RubyCocoaは、オブジェクト指向スクリプト言語Rubyでの Cocoaプログラミングを可能とする、 Mac OS X…

掘り出し物

ハードディスクを整理していたら,高校生の頃〜大学初年度あたりに作った Java Applet のタイピング練習ソフトが出て来た。我ながらアホだ。文章がアホすぎてむかつく(笑)うえに,タイピングの練習に集中したいにもかかわらず,スライムがいろいろと話しか…

Graphviz

私が仕事で扱っている問題領域は,とにかく数多くのオブジェクトがプログラム中に存在して,それらが複雑に関係しあっていることが多い。そんな場合,デバッガと睨めっこするよりも,オブジェクトを直接絵に書き出して可視化した方が,あっさりとバグを発見…

よなよな GARMIN (4) 〜 GPSBabel を使ってみる

ほぼ一年ぶりの GARMIN ねた。最近の感触では,MacOSX の環境でコマンドラインから geko などの GPS 機器と通信するには GPSBabel が最有力っぽい。私は今のところ,geko 201 のシリアルケーブルに I-O DATA の USB-RSA Q3 をかませて,USB で通信する方式を…

Mighty Mouse のその後

昨日の日記のフォロー。冷静になって考えてみた。 白い紙の上で動かない*1 ムクの木の上では動かない 布製マウスパッドの上では動かない 布の上では動かない というのは,何もマイティに限ったことではないらしい。レーザーマウスには良くあることなのかな。…

Mighty Mouse が最悪な件

1ボタンマウスに小さなポッチがついた,あの形を見てからちょっと気になっていた Mighty Mouse。少し気持は揺らいだものの,まだ買う気にはなれなかった。しかし「Bluetooth 対応で wireless!」になったところで,遂にポチっと買ってしまった。 とにかく残…

Objective‐C―MacOS Xプログラミング入門

MacOSX で利用できる VNC client を探していたところ,Chicken of the VNC という有望なのを発見。描画速度も十分速い。ソースコードも筋が良さげ。というわけで久々に Objective-C を読んだ。 Objective-C は,Cの上位互換(C++ともチャンポン可能)で,Rub…

font-style customization of Emacs

私は昔から Monaco の 9pt を使い続けているのだが,Carbon Emacs でこれを使うと,bold や italic 体がつぶれてしまい,非常に残念なことになっていた。以前からそれが悩みだったんだけど,ググってもなかなか解決しなかった。Emacs のフォントのカスタマイ…

ヲタ芸

というものがあるらしい。モー娘。などのファンが,コンサート会場で行う変な振り付け付きの応援で,今はそれが一人歩きして,路上で,見世物になってるのだとか。最近は東大の学園祭でもやってるらしいぞ。YouTube より。 http://www.youtube.com/watch?v=9…

プログラムと数学

一度実装したロジックを「きれいなプログラム」に書き換える作業を行う。機能として何も生み出さないこの時間が,何とも楽しい。「きれいなプログラム」を書くのは,プログラマはみんな好きだと思う。で,「きれいなプログラム」って何だろうと考えてみた。 …

Xerces-C++ にて DOM の要素を手で組み立てる

頼まれて仕方なく Xerces-C++ をいじる。Xerces のコードは Java みたいで,色気が無くてあまり好きではない。でも流石に大手が参画しているだけあって,移植性が高いうえに高機能であるところは感心できる。 はまったのは,DOMImplementation クラスのオブ…

etolisp 進捗 (6)

San Jose と California 中北部の森の余韻に浸っていたら,この一週間はあっという間に過ぎてしまった。 今日は一旦休憩して parser の改良と print 系の関数を実装。parser はカッコとコッカとコメントしか考慮しないインチキなものだったので,ちゃんと「'…

etolisp 進捗 (5)

仕事が一段落し,時間が出来たのでいじる。前回のもくろみはうまくいかず,結局,前々回の計画どおり実装。本日は do の実装と parser の強化。 お手軽な parser の実装ってどうやるのがいいのかな。Interpretorパターンは速度的に不安があったので,結局コ…

etolisp進捗 (4)

ループよりも先に再帰とループと同等な末尾再帰を実装する。

etolisp進捗(3)

怠けていて細かい関数ばかり手をつけている。さっさとマクロを実装して,あとはLispで書いてしまうというのが,手っ取り早いように思えてきた。 その場合,C++で実装するのに較べると,lambdaを介するために少し動作が遅くなるのと,読み込みのため起動が少…

etolisp進捗(3)

前述のコードの if ( !pCons->cdr()->isNil() ) THROW_TOO_MANY_ARG; という記述がいまいち格好わるい。 pCons->mustBeRearGuard(); などという呼び出しに変えてみた。Rear Guradは「殿(しんがり)」という意味。Consのリストを,隊列を組んで作戦に取り組…

etolisp進捗(2)

今日は if の実装。九行。 LISPF_TRY( If ) { const Cons *pCons = pValue->asCons(); const Value *pCond = pCons->car(); pCons = pCons->cdr()->asCons(); const Value *pTSub = pCons->car(); pCons = pCons->cdr()->asCons(); const Value *pFSub = pCo…

etolisp進捗(2)

etolispのlambda実装完了。しかし,どうやらシンボルとか関数とかの考え方がCommon Lispとは違っていることに気付く。後で気付くのは「仕様はこんなもんだろう」と我ながら適当に作ってるせいだ。私の実装はlambdaもbuilt-in関数も,単なるシンボルも,全て…

くぁwせdrftgyふじこlp;@:「」

が,訓練の結果,0.2秒くらいで打てるようになった。 だがしかしここはアメリカ。誰にも自慢できないのが寂しい。

etolisp進捗(1)

今日は時間があったのでetolisp*1の実装を行う。今日の目玉はlambdaの実装。lambdaは,関数やクロージャの定義の他にも,lexical context(ローカル変数)の定義にも使う。プログラムを抽象化,モジュール化させる機能を一手に引き受けてしまうのだ。そう考…