空想犬猫記

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

Nerd

return throw 問題

今日ハマったC++の落とし穴。次のコードの出力結果を予想してください。 #include <iostream> #include <exception> using namespace std; static void assertZero(int i) { if (i == 0) return // // I'm sure it is not a zero!! // throw exception("Not a zero"); } int main(</exception></iostream>…

Building Emacs on Cygwin

いままでバイナリ配布されているNTEmacsを使っていたけど「gnupack + Cygwin/Emacs24 が快適 - ああああ」というのを読んで同感だったので、ちょっと自前でビルドしてみた。下にあるとおり、3つのコマンドで簡単にインストールできるので、私にはgnupackのあ…

GUIアプリケーションをCLIアプリとしても使えるようにする

Win32 APIの話題というだけで、かなり今更感があるのだけれども、臆せずにメモっておく。やりたいことは、 Windowベースのアプリケーションがあるんだけど、たまにコマンドラインアプリとしても利用したい(バッチ処理など) しかもコマンドラインアプリとし…

Gitサーバの設定メモ

最近、AtlassianからSourceTreeというWindows上で動く有望な無料のGitクライアントが発表された。ようやくWindows環境でもGitをまともに使い始められそうな機運が高まってきたので、それにあわせてサーバの設定などを簡単にまとめてみる。一般的な情報は「Gi…

Caps LockにCtrlを割り当てる

新年早々、メインマシンのHDが吹っ飛んでしまい、予備のディスクに再インストールする羽目になってしまった。毎回、インストールのたびに同じことをしているので、ここにもメモとして残しておく。同様のことをするユーティリティも存在するが、レジストリを…

XP-400

EPSONのXP-400という家庭用複合機を購入。本当はレーザープリンタが欲しかったが、家庭用のコンパクトなサイズでワイヤレス+スキャナ+コピー機を兼ねたものは、一般家庭向けには作られていない模様。個人的にはスキャナと返品用のリターンラベルが印刷でき…

続・はてなダイアリーの編集画面(Chrome上)で「メイリオ」と「Consolas」を使うようにする

id:xoinu:20120830 の続き。はてなダイアリーはもう関係ないんだけど、とにかくMSゴシックやMS Pゴシックからオサラバしたかった。昨日のだと、スタイルが全く指定されていないサイトで、まだメイリオが使用されない場合があった。主な変更点は以下の3点: …

はてなダイアリーの編集画面(Chrome上)で「メイリオ」と「Consolas」を使うようにする

追記:この記事には続きがあります(id:xoinu:20120831)MacからWindows7、そしてChromeに移行してから、しばらくはてなダイアリーを更新するのが億劫になってしまった。非常にくだらないのだが、編集画面のフォントが汚くて何も書く気がしなかったのが一番…

etolisp 進捗 (33) 〜 継続について考えてみる

「なんでも継続」というテキストを読んで,継続について考えてみた。メモ代わりに文章化してみる。 ぶっ飛んだ理解 プログラミングにでてくる継続の概念が難しく感じるのは,私が馴染んでいるようなC/C++のような言語から見ると,継続は言語のランタイムによ…

etolisp 進捗 (32) 〜 GCの改良と高速化!

徒然なるままにetolispをいじってみた。そのむかし,etolispにGC(ガーベージコレクタ)を組み込むにあたってCodeProjectでたまたま見つけたサンプルコードを参考にしたのだが,思えばこれが悪い出発点だったのかもしれない(評価は4.5ポイントと高いが…)。…

PowerBookG4の分解Tips

週末,twitterでわんわん騒いでた件。つい最近もiPhoneに水をこぼして,乾かしたりとかしてたわけですが,今回はPowerBookにコーラをこぼされてしまいました。特に水の浸入しやすいポート周りを中心に横からアタックされ,即死状態でした。直ぐに電池を抜き…

そろそろ答を見るかの。

今までetolispの実装に関しては「他の実際を一切参考にしない」というスタンスだった。それによって,何か新しいものが生まれると思いきや,できたものは,素朴で効率の悪い構文木を直に評価するLispだった。まあ,そんなものだろう。目下のところ,Emacs が…

Emacsのソースコード

今まで読まなくて正解だった。これを読んでたら,まず,C++で書こうなんて思わなかっただろうし,影響を受けまくっていただろうなぁ。半日,見た限りでは,Emacs Lispはかなり素朴であることが分かった。Lispを記述能力の高いDSLとして利用するぶんには,そ…

etolisp 進捗 (31) 〜 Undoのサポート

以前,etolisp は「Lisp界のSQLiteを目指す」と書いたことがある。SQLiteは僕が最もクールだと感じたソフトウェアの1つである。その理由にはいくつかある。一つは,全てにおいてシンプルであること。ライセンス形態はパブリックドメインで,何も考えず商用ソ…

フィボナッチ数を計算する

…イヤ,そんなことは,始めから,わかっていたことだ。末尾呼び出しの最適化のない etolisp には無理だろうってことくらい。sbcl にだって,無いんだから。いいじゃないか。そんなところで勝負したって,詮無いことだ。 (defun fib (n) (if (< n 2) n (+ (fi…

etolisp 進捗 (30) 〜 Object Systemの実装 (4):Auxiliary Mehotds

午前中,before-method,after-method,around-method が動くようになった。before,after は想像の範囲内。around は少々面倒だった。たかがメソッドの呼び出しを,よくもここまで高機能にして仕様化してくれたものだ…。ちっ…。一応,本に書いてある通り me…

etolisp 進捗 (29) 〜 Object Systemの実装 (3):defmethod

defmethod の実装が限定的に終わる。今のところ,メソッドの検索は class ID をキーに,ハッシュを利用した n 分木構造を辿る仕組みにしている。効率的ではないかも知れないが,一番,直感的に思える実装。Generic Function は,関数の配列と,関数を検索す…

etolisp 進捗 (28) 〜 Object Systemの実装 (2):defclass

今日は defclass の実装。継承もスタティックメンバもサポートできた。この辺,赤い本は少ししか言及がないので,理解が正しいかどうか不安だ。取りあえず本に載っているコードは全て動くようになった。Precedence も,図を書いて説明すると複雑そうだが,実…

etolisp 進捗 (27) 〜 Object Systemの実装 (1)

【ニコニコ動画】創世のアクエリオンを聞きながら作業。「あっいーしーてーるー」がリフレインしてあまり捗らない。ニコニコ動画に「作業用BGM」タグがあるのを発見。ニコニコだと時間制限がないので,平気で「神曲メドレー90分」とかがアップされている。MP…

iPhone SDK が Leopard + Intel Mac じゃないと使えない件。

Tiger + PowerPC G4 な私は,置いてけぼり。今や Microsoft の開発ツールも無料で手に入るわけだし,以前ほど,趣味で Mac を使うメリットがなくなったな。PowerBook G4を売ってDellのDesktopを買おう。

あまのじゃく

僕の個人的なマシンは,ここ10年来ずうっとMacであった。ここにきてMacがじりじりとシェアを上げてきていると聞くし,とくに学生や,いわゆるハッカーとよばれる人々のMacへの乗換えもよく聞く。VistaがコケてLeopardが成功したのもあって,その傾向は少しず…

Objective-C 2.0 でガベコレがサポートされてた

http://developer.apple.com/leopard/overview/objectivec2.html MacOSX 上でプログラムを組んでいる人は多いと思うが,その中で Objective-C を使っている人ってどれくらいいるのだろう?この日記では度々触れているが,C と SmallTalk から派生した(らし…

LINKSYSの無線LANをMacOSXで設定する方法

iPhoneを購入し,家のLANも複数台のマシンを接続する環境になったので,Wireless LAN Station(WRT54G5)を購入。よく調べないで買った自分も悪いのだが「設定方法:インストールCDをWindowsマシンに入れ,指示に従う」としか書いてなくて,Macしか持ってな…

etolisp 塩漬け

前回の package の修正後,また更に名前空間がらみでバグを発見。今までの実装はかなりいい加減で,back quote の「,」や「,@」を含むシンボルを「,arg」や「,@body」などのように,ひとつのシンボルとしてパースし,back quote の評価時に「,」や「,@」以降…

etolisp 進捗 (21) 〜 Packageの実装 (4)

朝起きると神のお告げがあり,etolispはまたも邪悪な「俺仕様」に陥らずに済んだ。イヤ,結局,仕様に当たったわけではないんだけど,私の好ましい方を支持する指摘があったので,そっちを信じることにした(『神のお告げ』たる所以・笑)。name ID とか sym…

etolisp 進捗 (20) 〜 Package (3)

追記:このエントリは誤っている可能性が高いです。 前々回,前回の実装は,parse 時にシンボルの値を決定していたが,それはやってはならないことだった。というのも,Common-Lisp では動的に active なパッケージを切り替えることができるので,パースした…

etolisp 進捗 (19) 〜 Package の実装 (2)

パッケージについてもう少し考えてみる。Paul Graham の本は package についてほんの3ページしか割かれていないが,その冒頭には A package is a Lisp object that maps names to symbols. とある。そう,Common-Lisp においてパッケージはオブジェクトなの…

etolisp 進捗 (18) 〜 package の実装

テストフレームワークも少し進化して,こんな感じでテストを書き始めた(少し冗長なのは,本人のスキル不足と etolisp 自体に最低限の関数しか用意されていないから)。 (defmacro nice-caught (&body body) `(progn (nice-catch 'error ,@body) *last-nice-…

etolisp 進捗 (17) 〜 user interface, test framework

Macro も大体動くようになって(まだまだ細かいところで問題は山積みであるが)いよいよ次は構造体や CLOS の実装を試してみようという気になってきた。ただそのためにはシンボル操作周りの関数が不足しているので,いくつか実装する必要がある。一つ一つ実…

etolisp 進捗 (16) 〜 変態マクロ動く

おやすみなさいと,オフラインになってから寝るまでの,1時間のコーディングが至福の一時だったりする。昨日の方針通り back quote にネストされた back quote の中身は展開しないという方針で,変態マクロが動くようになった。back quote を使って「`,@hoge…