Entries from 2006-07-01 to 1 month

M-x info

あとで M-x infoで diredのinfoを読む。必ず読む。絶対読む。

番組表用にフィードとグループを整理した

グループを7つにすると良い感じ。 http://r.hatena.ne.jp/higepon/?mode=table

はてなRSSに番組表が!

機能変更、お知らせなど - はてなRSS日記 - 番組表の追加について 興味のある方はぜひ使ってみてくださいませ。

関数型言語の勉強にSICPを読もう - (60) 4章 - 超言語的抽象(220ページ) C++でSchemeインタプリタを作ろう9

前回の日記(id:higepon:20060719:1153323855)で書いた悩みですが shiro さんから以下のようなコメントをいただきました。いつもありがとうございます。 (define func B)の時点でBを評価しないとまずいです。R5RS 5.2.1節。 その時点で(lambda (a) ”test”) は…

関数型言語の勉強にSICPを読もう - (59) 4章 - 超言語的抽象(220ページ) C++でSchemeインタプリタを作ろう8

実装というか設計に迷いが。 (begin (define func (lambda (a) "test")) (func 3) )まず前提として、上の式を評価すると、"test" が返ることが期待されます。(Gaucheで試しました) SICPによれば(func 3)は以下の順に評価されます。 1. (予約語でない語句 …

作業

Monaのコードを少し書いてTranslatorをリファクタリングした。 どちらの作業も予想外に早く終わり何をしようか迷い中。 フレームワークを題材に、作る側、使う側という話を書こうと思ったけど大炎上して敵を増やしそうなのでやめておこう(もしくは別の場所…

関数型言語の勉強にSICPを読もう - (59) 4章 - 超言語的抽象(220ページ) C++でSchemeインタプリタを作ろう7

とりあえず今までの分をリファクタリング。 int main(int argc, char *argv[]) { if (argc < 2) { fprintf(stderr, "usage: %s file\n", argv[0]); return -1; } string input = load(argv[1]); if (input == "") { return -1; } Tokenizer tokenizer(input)…

FAT12ファイルのインポート計画

連休の前半2日間はかなりアクティブに出かけまくったので、今日はのんびりコード書いたりDVDを見たりする予定。 VnodeフレームワークにFAT12のコードを取り込む計画を立てる。 突然取り込むのではなくある程度考えてからのほうが良いと思う。 まずISO9660と…

svn commit できないと思ったら

sf.netでsvn ci できない(パスワード聞かれる)現象が続いて困っていたのですがやっと原因がわかった。 sf.netアカウントのパスワードの有効期限切れだった。 sf.netでログインしてパスワードを変更したらうまくいった。

数字キー

そういえば数字キーのタッチタイプを強化できる、フリーな練習ソフトないかな。 2,3日やればいけそうな気がするし。

関数型言語の勉強にSICPを読もう - (58) 4章 - 超言語的抽象(220ページ) C++でSchemeインタプリタを作ろう6

lamdaが動いた!。(前回アドバイスを下さった arinoさん、shiroさんありがとうございました) ((lambda (a) "test") 3) =>EVAL: "test" 構文解析をして「(」の直後にある要素は Applicationの本体、それ以外は Applicationの引数とします。 その時点では当然…

使われてない非常階段

メモリリーク殲滅

==9315== All heap blocks were freed -- no leaks are possible. Varlgrindで検出された メモリリーク(free/delete忘れ) invalid delete (複数 delete)→C++の仕様的にはあり invalid read/write (解放後のアクセス) をすべて直した。疲れた・・・。 今回…

M-x info

id:secondlifeが vim のヘルプを結構読み込んでいるという話を聞いたので、たまにはM-x infoでも読もうかと思って読もうとしたら info ファイルが見つからないと言われた。 どうも /usr/share/infoと /usr/local/share/infoのほうにインストールされているっ…

数字キー

テンキーじゃないほうの数字キーの話。 はてなの技術者(id:hideoki,id:secondlife,id:kambara)と話していて、数字キーをタッチタイプできるか? という話になりました。 実際正直に言うとみんな怪しいよねーという話になったので、全員で、キーボードを見ず…

メモリリークに悩む

C++

Valgrindでメモリリークを指摘される。大体つぶせた。 でも、ソースコード中の行番号くらいまでValgrindが教えてくれるんだけど条件が複雑でいまいち特定できないものがある。 こうなったら new しているところでそのポインタをグローバルな vectorに種類別…

I/Oエラー

I/Oエラーが頻発したので/etc/fstabを編集して起動時の fsck をするようにした。 しかし!。fsckの途中で手動でfsckしろ!とか言われる。 で、rootのパスワードを要求されるんだけどご存知のとおりUbuntuはsudoを推奨でrootのパスワードが設定されてなくてア…

メモリリークつぶし

しばらく地味な作業が続きます。 現在の進捗 ==2286== LEAK SUMMARY: ==2286== definitely lost: 168 bytes in 5 blocks. ==2286== indirectly lost: 17 bytes in 1 blocks. 関係ないけどYumeさんがlibcの開発への参加を表明してくださいました。 腕のある人…

関数型言語の勉強にSICPを読もう - (57) 4章 - 超言語的抽象(220ページ) C++でSchemeインタプリタを作ろう5

最近、字句解析とか構文解析をしていましたが、その試行錯誤のサマリです。 前提 SICPの4章ではSchemeのインタプリタをSchemeで実装します。 勉強のためにC++で実装してみます。 基本はScheme->C++に置き換えています。(そんなに簡単じゃないけど) 置き換…

購入

ONE PIECE 巻42 (42)posted with amazlet on 06.07.10尾田 栄一郎 集英社 (2006/07/04)Amazon.co.jp で詳細を見るDEATH NOTE 12 (12)posted with amazlet on 06.07.10大場 つぐみ 小畑 健 集英社 (2006/07/04)Amazon.co.jp で詳細を見るたのしいRuby―Rubyで…

キーボードのあれ

id:miyagawaさんが素晴らしいものを作ってくれました。 subtechグループ - Bulknews::Subtech - タイプ数カウンターをビジュアル表示 僕の結果は↓です。(PermaLinkがあるのがまた素晴らしい。) How you type keyboards: Visualized 追記 よく見るとid:miyag…

STL + valgrindの罠

C++

http://valgrind.org/docs/manual/faq.html#faq.reports 読んでおくと良いと思います。

どんなキーを押していますか?

「タイプ数カウンターのデータファイルからCSVを作る」でも書いたタイプ数カウンターの結果が面白かったので公表してみるテスト。 ひげぽんが2、3日コードや日記を書いてキーボードを打った結果の分布です。 結果・分析 最も押されたキーは「ctrlキー」。…

emacs22でkill-summary

emacs22でkill-summary.elを動かすには truncate-string を truncate-string-to-widthに変えると良い。 Googleキャッシュにしか情報を見つけられなかったのでここに書いておきます。 kill-summaryを使っていない人はインストール汁!(クリップボード(?)にコ…

インタプリタ開発中

SICP読書日記に書けるような完成度に向けてがんばっています。 begin/if/defineは動いています。 lambdaに挑戦して二つの問題点が発覚(まだクリアできていない) ((lambda (x) (+ x 1) 3)のように一番左側の( の直後がそもそもevalされなければいけない場合…

純Lisp

構文解析の話で盛り上がって、あれこれ相談していたら僕の思い込みが発覚。 「Nodeの構造は二分木しかありえない!」と思い込んでいた。 多分木でもぜんぜん良いことに気づかない僕を称して「純LISP - Wikipediaに冒されている」とか言われたw。 というわけ…

まだ構文解析

どうもNodeの種類が1つじゃない事をうまく言語化できずに悶々としていたのだけど、Gakuさんに相談したらすっきり。 よし。次に進もう! (+ (+ a b) 2) => FUNCTION_CALL:SYMBOL[+] FUNCTION_CALL:SYMBOL[+] FUNCTION_ARGUMENT:SYMBOL[a] NULL NULL FUNCTION_…

タイプ数カウンターのデータファイルからCSVを作る

局所的に話題になっているタイプ数カウンターの話。 面白いソフトなのですが、タイプ数を記録したファイルがバイナリデータなので他に流用できないのがちょっぴり残念なので、バイナリデータからCSVデータを吐くツールを作ってみました。 cygwinで作りました…

ちょっと動いた

かなり興奮気味! (define a 3) NODES SYMBOL[define] SYMBOL[a] NUMBER[3] environment variable: a:3↑は(define a 3)を実行したときの様子です。 字句解析 構文木がつくられ出力 Definitionオブジェクトが作成される オブジェクトがevalされる eval後のenvi…

構文木

多分木にした。超きれいになった。 (+ (list 1 2 a) "hoge") NODES SYMBOL[+] NODES SYMBOL[list] NUMBER[1] NUMBER[2] SYMBOL[a] STRING["hoge"]木を作る時点で(のなかの一番左側の要素を特別扱いしないので、特殊形式との相性がよさそう。