空想犬猫記

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

Nerd

Rust独学メモ3

テストの書き方 Unit テストと Integration テストで、書く場所が異なる We create a tests directory at the top level of our project directory, next to src. Cargo knows to look for integration test files in this directory. We can then make as m…

Rust独学メモ2

モジュール Rustにおけるモジュールは、C++における名前空間のようなもの。アクセス指定子を付けることによって公開・非公開をコントロールできる。 Start from the crate root: When compiling a crate, the compiler first looks in the crate root file (…

Rust独学メモ

PackageとCrate 最初にRust入門した時には、cargo newして、コードを実装して、テストを書いて、何となく動いたわーい、って誰しもやると思う。でもある程度構造化されたプログラムを組もうとするとユーザ定義型・メソッド・関数 < モジュール階層 < クレ…

続Rust雑感

Rust雑感 - 空想犬猫記を書いてから、おおよそ5年が経とうとしている。Rustはその後も進化を続けて、ついにはLinuxのデバイスドライバの開発言語の地位を得たり、Androidの新規開発のデフォルトの言語にもなり、具体的な成果も報告され、ついに外堀が埋まっ…

Rust雑感

年初から、また少しだけ Rust(The Rust Programming Language)というプログラミング言語を覚え直していた。リンク先のサイトには以下のような特徴が挙げられている。 zero-cost abstractions move semantics guaranteed memory safety threads without dat…

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…