Entries from 2006-05-01 to 1 month

自転車のライト

自転車のライト(キャットアイ LEDライト)を2つ購入しました。(自分とおくさま用) LEDでピカピカ光るやつで結構明るいです。 夜に自転車で移動することが多いので、少し強力なやつを買いました。 正直ちょっと高いかなと思ったんですが、これで交通事故にあ…

関数型言語の勉強にSICPを読もう - (39) 3章 - 小休止 ファイルI/Oと正規表現

実用っぽいコードを書かないと中々上達しないと思うので無理やり書いてみました。 引数で受け取ったファイルを開いて、ファイル内を置換する。 「sedとかPerlならすぐに書けるよ」とか「もっと汎用化したスクリプトを書いたほうが良い」というのは分かるので…

send/receive/sendRecive実装

send/receive/sendRecive実装を実装した。 次はfile_serverに組み込む。 listen portは pid をごにょごにょして生成すればよさそうだな。

関数型言語の勉強にSICPを読もう - (38) 3章 - 標準部品化力、オブジェクトおよび状態 (156ページ)

問題3.23 問題3.21の構造のままでfront-insert/rear-insert/front-deleteは O(1)を達成できるが、rear-deleteは無理。 なぜかというと rear-ptr を現在のrear-ptrの一つ手前の要素にしなければいけないから。 データの構造を変えなければいけないというのが…

関数型言語の勉強にSICPを読もう - (37) 3章 - 小休止 cut/let1

Gaucheのリファレンスを眺めていて面白かったのでメモ。 cutとlet1はマクロみたいです。 ;; macro cut (define (make-plus) (lambda (a b) (+ a b))) (display ((make-plus) 4 5)) (define (make-plus) (cut + <> <>)) (display ((make-plus) 4 5)) ;; macro…

お誕生日

はてなーずにお祝いしてもらいました。ありがとう! ドラえもんクォリティ高い。

まじめに勉強していますよ

メッセージエミュレート

BSD socketの部分はだいぶ出来たので後は結合。 0.プロセスAが送信(socket/send) 1.プロセスBの受信ループスレッドが受信 2.メッセージキューに追加 3.メインスレッドがreceive 4.メッセージがなければブロックされる 今出来ていないのは3, 4かな。絵を描く…

関数型言語の勉強にSICPを読もう - (35) 3章 - 小休止 外の世界とつながろうファイルを読む

#scheme-jp(wide系 IRCチャンネル)でのネタふりで、ファイルの読み込みを学んでみました。 Schemeは port を介して入出力するようです。 面白いのが read の戻り値がS式だということです。(これはひらっちさんから教えてもらいました。) なのでファイルの中…

関数型言語の勉強にSICPを読もう - (34) 3章 - 標準部品化力、オブジェクトおよび状態 (156ページ)

問題3.22 え?手続きで出来るの?と思って一瞬でも疑った自分を恥じます。 Scheme楽しいよ。楽しすぎるよ。 (define (make-queue) (let ((front-ptr '()) (rear-ptr '())) ;; public interface (define (empty-queue?) (null? front-ptr)) (define (front-que…

dot.gaucherc

http://www.fobj.com/hisa/diary/20060514.html#p02 これは便利。頂きました! ;; 結果表示 (define (displayln v) (display v) (newline)) (define (displayln-kv k v) (display k) (display ": ") (displayln v)) 追記 g:sicp:id:hyukiさんからトラックバ…

関数型言語の勉強にSICPを読もう - (36) 3章 - 小休止 port-foreach

Ruiさんよりコメントを頂きました。 Schemeに慣れた人が書くとこんなにもきれいなのか。ありがとうございます。 このようにコードを見せていただくことはとても勉強になります。 sum は (apply + list) と書けますね。Gaucheだとport-for-eachという便利な高…

マンガ家目指したら負けですか?

30歳までにマンガ家をめざしているので*1、WACOM FAVO コミックパック CTE-440/W2を買いました。 28歳からマンガ家を目指したら負けですか? 購入の際には、id:ryoko_komachiさんや、id:mjtさんにアドバイスを頂きました。ありがとうございました。 元ネタは…

関数型言語の勉強にSICPを読もう - (33) 3章 - 標準部品化力、オブジェクトおよび状態 (152-155ページ)

問題3.18 最初の要素を保持しておく。 要素をたどっていって終端までたどり着いたら循環は存在しない。 最初の要素と eq? なものが見つかれば循環が存在する。 ところで下のコードの front ですが、constant(readonly)にするにはどうしたらよいんでしょうか…

メッセージエミュレートの図

socketの部分と、Messageの管理の部分を結合する。 図に描いてみると実装が簡単に思えてきます。

TSU-GCC製作記

面白い読み物。 大学の授業で作ったオリジナルCPUをターゲットとするGCCの製作記。 このようなものを大学3年のときにやるとは・・・。 TSU-GCC 製作記 じっと良く見てみたら、Min-Camlのid:sumiiさんだということに気づいてびっくり。 こういうのを読むと自…

関数型言語の勉強にSICPを読もう - (32) 3章 - 小休止 beginを利用した print デバッグについて

以前、traceを利用したデバッグ方法を紹介しました。 今日は begin を利用した print デバッグの方法を紹介します。SICPを1ページ目から順に読んでいくと begin がなかなか出てこないのですが、今日 begin を知りこのデバッグ方法に気づきました。例えば (de…

関数型言語の勉強にSICPを読もう - (31) 3章 - 標準部品化力、オブジェクトおよび状態 (152ページ)

問題3.17 3日くらいずっと考えていた。 (define (count-pairs x) (let ((already? '())) (define (count-pairs-internal y) (let ((add-count 0)) (if (not (pair? y)) 0 (begin (if (not (memq y already?)) (begin (set! add-count 1) (set! already? (con…

wgetにおかしなヘッダを喰わせたら

MonaのMessageエミュレートのためにテストsocket プログラムを書いていたんですが、ちょっと間違った文字列のHTTPヘッダを送信したら怪しい動作をした。 colinux% wget --version GNU Wget 1.10 colinux% wget http://127.0.0.1:2050 --14:27:03-- http://12…

Gaucheユーザーリファレンス HTML Help版(chm)

id:onishi:20060512#p1を参考にGauche ユーザーリファレンスのHTML Helpを作りました。 gauche-chm-20060512.zip (約1MB) 速く・簡単に検索できるのでとても便利です。 良かったらご利用ください。 備考 Gauche - A Scheme Interpreterにて2006/05/12時点に…

sourceforge.netのCVSサービスの変更と改善があるよ

dev

sf.netを利用していて、そのプロジェクトのAdminの人に 「SUBJECT: SourceForge.net: CVS service offering changes 」 という件名のメールが送信されているみたいです。(例のごとくspamに振り分けられていた。) 現地時間の5/12の午後にCVSサービスの改善が…

socketお勉強

BSD Socketのお勉強。 bindの第2引数はなぜ cast しているんだろうかとか man を読みました。 AF_INETはともかく、AF_UNIXは知らなかった。勉強不足だな。 man 以外でよい資料がなかなか苦労していたんですが、海外ならたくさんありました。 追記 file_serv…

socketプログラミング中

BSD Socketってベストなインターフェースではないよね。とか言ってみる。 bindに失敗すると思ったら、sockaddr_inを bzeroし忘れていたのが原因だった。 auto変数じゃなくすれば解決だね。(違うよ

autotoolsでプロジェクトを作るのが面倒なので

project_create.pl ってのを適当に書いてみた。 perl project_create.pl project_nameと呼び出すと。 created "project_name/Makefile.am" created "project_name/src/Makefile.am" created "project_name/src/main.cpp" ・・・ autoscan / autoheader / acl…

ミスった

Mona開発者の1人からメールをもらっていたのに spam 判定されていて2週間後の今日気づいた。 本当にごめんなさい。

SchemeとかのIRCチャンネル #scheme-jp

SchemeとかLispのIRCチャンネルとかってないかな。 気軽にそのあたりの話ができるとうれしいなと。 昨日、/squery alis コマンドで検索しようと思ったけど挫折。 #schemeは異国の人々ばかりで良く分からなかったw。 ということで #scheme-jpというチャンネ…

member/memq/begin

SICPの問題を解いているのですがその中で、member/memqの違いや、beginの使いどころがやっと分かってきた感じ。 set! は今までの雰囲気をぶち壊す感じだけど、でもまあいつも使っている分、親しみやすいです。

関数型言語の勉強にSICPを読もう - (30) 3章 - 標準部品化力、オブジェクトおよび状態 (138-151ページ)

新しい単語やよく聞くけど意味をきちんと理解できていない単語などが出てくる。(frames, bindings, unbound, enclosing environment, shadow) 問題3.9 再帰版は factorialの環境が横並びにできる。 反復版は factorialが1個、その横に fact-iterが横並び。 …

Messageエミュレート仕切り直し

sys/ipc.hを利用すると、Message::peekがどうしても実装できないことが分かったので仕切り直し。 Messageをためるデータ構造をSTLで書く。 socketを利用した IPC に切り替える の2本立てで行く。 データ構造は書いて trunk/experimental にコミットしました…

Makefileで if

ちょっとバッドだけどこんな感じでよいだろうか。 if ! [ -f Makefile ]; then ./configure --prefix=$(PREFIX); fi; \