cut-sea:log3

cut-sea:log3

lambda

APLキーボードを見てると、λってキーがあるキーボードとかあるといーなーとか思ったのでした。 もちろん言語もそういうコードをサポするのだ。cut-sea:2006/06/29 21:58:00 PDT


PSD!PSD!PSD!

このftpサイトから最新のpsdのtar ballを取得。

doc/psd.pdfを見ながら設定してみる。

  1. tar zxvf psd-1.2.1.tar.gz
  2. cd psd-1.2.1
  3. mkdir /usr/local/lib/psd
  4. cp *.scm /usr/local/lib/psd ;; とりあえずここにインストールすることにした
  5. cp *.el ~/lib/emacs ;; 私の環境では.elをここに纏めていれてる
  6. emacs .emacs ;; 以下の2行を.emacsに追加
    ;; psd
    ;;
    (setq psd-directory "/usr/local/lib/psd/")
    (load-library "~/lib/emacs/psd.el")
    

あとはdoc/psd.pdfを参考にしてあそんでみる。

  1. M-x psd-mode (psd-modeにする)
  2. C-u ESC C-x (なんか分からんがpsdの機能が働くようにするのかな)
  3. C-c b => fact (factにbreak pointを設定)

あとは評価すればいいのさ。

gosh> fact
gosh> "Break on entry to fact"
gosh> (fact 10)
3628800
gosh> ok
gosh> (fact 10)
Entering (fact 10)
(if (zero? n) 1 (* n (fact (- n 1))))
n
psd> (* n (fact (- n 1)))
val n
psd> 10
n
psd> Entering (fact 9)
(if (zero? n) 1 (* n (fact (- n 1))))
val n
psd> 9
n
psd> (* n (fact (- n 1)))
val n
psd> 9
n
psd> Entering (fact 8)
(if (zero? n) 1 (* n (fact (- n 1))))
n
psd> (* n (fact (- n 1)))
n
psd> Entering (fact 7)
(if (zero? n) 1 (* n (fact (- n 1))))
val n
psd> 7
n
psd> (* n (fact (- n 1)))
n
psd> Entering (fact 6)
(if (zero? n) 1 (* n (fact (- n 1))))
n
psd> (* n (fact (- n 1)))
n
psd> Entering (fact 5)
(if (zero? n) 1 (* n (fact (- n 1))))
n
psd> (* n (fact (- n 1)))
n
psd> Entering (fact 4)
(if (zero? n) 1 (* n (fact (- n 1))))
val n
psd> 4
n
psd> (* n (fact (- n 1)))
n
psd> Entering (fact 3)
(if (zero? n) 1 (* n (fact (- n 1))))
n
psd> (* n (fact (- n 1)))
n
psd> Entering (fact 2)
(if (zero? n) 1 (* n (fact (- n 1))))
val n
psd> 2
n
psd> (* n (fact (- n 1)))
n
psd> Entering (fact 1)
(if (zero? n) 1 (* n (fact (- n 1))))
n
psd> (* n (fact (- n 1)))
n
psd> Entering (fact 0)
(if (zero? n) 1 (* n (fact (- n 1))))
n
psd> 1
n
psd> (fact 0) ==> 1
n
psd> (fact 1) ==> 1
n
psd> (fact 2) ==> 2
n
psd> (fact 3) ==> 6
n
psd> (fact 4) ==> 24
n
psd> (fact 5) ==> 120
n
psd> (fact 6) ==> 720
n
psd> (fact 7) ==> 5040
n
psd> (fact 8) ==> 40320
n
psd> (fact 9) ==> 362880
n
psd> (fact 10) ==> 3628800
n
psd> 3628800

おもしろい。

gosh> (fact 10)
Entering (fact 10)
(if (zero? n) 1 (* n (fact (- n 1))))
help
psd> Commands are:
val sym          give the value of sym
set! sym val     set the value of sym to val
g                run until the next break point
c                clear all breakpoints on current line
w                give the current context (file name and surrounding procedures)
s                step one step in the evaluation process
n                run until evaluation reaches another line
r expr           return expr as the value of current expression
u                go one level up in the call stack
d               go one level down in the call stack
                 expr can be a procedure call

A list is taken to be a procedure call to be evaluated.

r 3
psd> 3
gosh> 

一通りコマンドもある模様。 ソースを見た瞬間、「あ、SICPちっく!」って思った。 これは読まなきゃならんでしょーーーー!cut-sea:2006/06/27 01:53:33 PDT


Tuigwaa

むむむむ。なんかこれもまた思想が違う。
すんげー気になるんだけど、どういうものなのか分かりやすい15minits videoみたいなの無いか。cut-sea:2006/06/22 20:06:34 PDT


ナメクジの

またまたSchemeネタじゃなくてゴメン。 以前からうわさだけ聞いてて、見たかったけど見たこと無かった ナメクジの交尾 です。cut-sea:2006/06/21 18:11:17 PDT


thunderbirdからfirefoxを呼びだせねぇ

ということで設定要です。 あ、pkgsrcからbuildしたやつですが。。。1.5.0.4ね。

  1. firefoxでここからabountconfigエクステンションをダウンロードしておく。 これは現時点でfirefoxが呼びだせないのでfirefoxからになる。
  2. thunderbirdからローカルにダウンロードしたエクステンションをファイル名指しで インストール
  3. でもってここを参考に以下を追加
    1. firefoxではurlにabout:configと入れて設定画面を呼びだし、Newで追加
      • network.protocol-handler.expose.mailto=true
      • network.protocol-handler.app.mailto=/usr/pkg/bin/thunderbird
    2. thunderbirdではtoolからaboutconfigを選択して同様にNewで追加
      • network.protocol-handler.expose.http=true
      • network.protocol-handler.app.http=/usr/pkg/bin/firefox

これで両方とも再起動したらいけた。cut-sea:2006/06/19 22:17:39 PDT

と思ったら間違ってた。

こいつはfalseが正解。 trueにするとダウンロードファイルとして扱うようになるので そこでfirefoxを選択しても起動したように見えて実はhttpをダウンロードして そいつを開くのでfile:///tmp/....になっちゃう。

でもって、

ってhttpsも同様にセットしておく。


SigScheme

sigschemeだって。cut-sea:2006/06/17 21:02:40 PDT


顧客が本当に必要だったもの

ガンダム版で笑えたんだけど隣席の同僚に見せたら多分元祖はこれって上のを教えてもらった。 おもしろい。 初出は1973年とかいうから私はとても記憶にあるわけもないが、 これが笑えるってことは今もあまり変わってないってこった。cut-sea:2006/06/08 17:59:49 PDT


無線LAN on NetBSD current on ThinkPad T43p

ようやく。

/usr/pkgsrc/sysutils/iwi-firmwareをinstallして、

iwictl -i iwi0 -d /usr/pkg/libdata/if_iwi -m bss

ってやる。 /use/pkg/libdata/if_iwiの下にはiwi-boot.fwとかiwi-bss.fwとかの イメージファイルがインストールされてるのでそれを-dで指定するらすぃ。
そしたら

ifconfig iwi0 up
ifconfig iwi0 ssid "xxxx" nwkey "yyyy" up
dhclient

これで繋がる。 多分最初のupだけのは不要なハズだけど、まーいーや。cut-sea:2006/06/03 19:30:09 PDT


魔法のMOP

魔法のMOP だそうですよ。 ラストの〆は、

さあ、戯言を言っているのは誰でしょう?

ふふふ :-)cut-sea:2006/05/25 22:04:26 PDT


盆栽言語

昨日さんと話してたときに 盆栽言語のエントリを教えてもらった。 実は先週末に自分でコード書いてて、盆栽をやってるようだと感じた後だったので 正直びっくりした。 おおっ?同じようなことを感じた人がいるのか?と。

でも読んでみたら、あららら全然違うのね。

自分が思ってたのはさ、S式って木じゃないっすか。 で、S式のすごいところの一つとして コードを理解しなくても、見た目の姿形でキレイなコードかどうかがなんとなく分かっちゃうわけですよ。ええ。 で、うーんこの枝ぶりはどうもぶかっこうだな、ちょっと切り落とすか、 とかそういう風に剪定(リファクタリング)するわけですよ。 その自分の行為を客観的に「あら?俺今盆栽やってるみたい?」と思ったんですよね。 もっともSchemeでの剪定には制限もなければ自分の思うがままってのが面白く、 盆栽はそうもいかないところが逆に面白いのでしょうけど。cut-sea:2006/05/17 19:00:31 PDT


Olegさんからのメール

4/29のOlegさんとのmeetingの時、実は書いてたコードが未完成だった。 時間切れで引き上げたんだけど、Olegさんは気に掛けてくれてて、 GLSとの飲みの後、解散する時にメールあとで寄こせって言ってた。

で、GWから戻って先日ようやくmailしたら、返信くれてたのに誤ってremoveしちゃった。 ガーン!!sorry,sorry言って再送してもらった。(恥)

で、届きました。 あとから記憶ベースで再度書いたというコードにはビッチリコメントが入ってます。 communityの方にも通知してってことだったので、mixiの方にはさっきup。

Perhaps other members of your group might like to know of that URL and
of the fixed code. Please feel free to distribute and use the code as
you wish.

ってことなので、 sokuza-kanren.scmから取得OKです。

ちなみにコードの先頭には、

;                    Quick miniKanren-like code 
;
; written at the meeting of a Functional Programming Group
; (Toukyou/Shibuya, Apr 29, 2006), as a quick illustration of logic
; programming.  The code is really quite trivial and unsophisticated:
; it was written without any preparation whatsoever. The present file
; adds comments and makes minor adjustments.
;
; $Id: sokuza-kanren.scm,v 1.1 2006/05/10 23:12:41 oleg Exp oleg $

そして最後には

; For more detail, please see `The Reasoned Schemer'

読まなきゃー。サインも貰ったんだし。cut-sea:2006/05/12 03:59:58 PDT


SPAMうざ

かなりうっとーしい。メールもそうだけどここのSPAM書き込みも。 なんとかならんもんかなぁ。 最近では人間にちょっと読みにくい文字列やら絵を表示して 入力チェックさせるってのもあるみたいだけど、 それ(認証みたいの)やると正確にはWiKiじゃなくなるかなぁ。
メールに関しては私は分量がそれほどでもないので、まだなんとかなってるけど、 やっぱりSPAMフィルターの導入も考慮するかなぁ。cut-sea:2006/05/10 06:30:08 PDT


GWに実家で書きました

whitespaceって言語、 随分前にslashdotでも取り上げられたっぽいけど、 私は最近知りました。 面白そうだったので作ってみた。cut-sea:2006/05/07 07:31:45 PDT

今のバージョンは結構色々機能が実装されてるので長いけど、 最初のインタプリタのみのバージョンだとjust 200行でした。

あ、そうそう。このwhitespaceって言語は可視文字は無視するので、 そのまま書けばコメントになる。 つまり、wsのコードと別のプログラミング言語のコードを共存させられる。 (ドキュメントを埋め込んだっていいんだけどさ) もちろん、その可視文字の区切りになってる空白は プログラムの一部になってしまうので注意が必要だけど。
例えばgoshに評価させれば電卓になって、 wsに食わせればhanoiを解決するようなプログラムだって実現できる。 それについてはwslinkという名前でwsのソースと別のファイルをmixするプログラムで、 作りかけたんだけど、自然なコードに見せるのはかなり難しくてとりあえず棚上げしてます。 特にschemeのようなセミコロンから改行までがコメントな言語では途中にwsの命令の改行が 混ざるとダメだし、コードが散乱しちゃってインデントとかも解析が面倒くさいし。

こっちね -> Gauche:whitespace


I meet Great Hackers!

ついさっきまでGuy L Steeleと一緒の鍋をつつかせてもらってた。 昼は昼でOlegさんが私のThinkPadでS式を書いて、 ほとんどマンツーマンでいろいろ教えてくれてました。
ってなわけで、今私のマシンには、Olegさんが書いた生コードが200行以上ある。

ちなみに重い思いをして持ち込んだ「Common Lisp 2nd Ed」の日本語訳と 「The Reasoned Schemer」を各2冊。当然それぞれからサインをGetしました。 これで私の手元には竹内郁雄先生のサイン入りの「初めての人のためのLISP」2冊を含めて 計6冊に及ぶお宝がある。 GLSと2shot写真を携帯で撮影してもらったんだけど、かなりボケてて悔しい。 まぁ額の後退が目立たなくていーかな。

印象だけど、Olegさんはすごいシャープな若々しいいいオトコでした。 一緒に来日されてたAndrewさんも似た印象。
Olegさんは容赦なしのスピーディーな英語をまくしたててくれましたが、 発音は聞き取りやすく、勿論全部じゃないけど、コードを交えて話した部分は 比較的理解しやすかった。
一方Guy L Steeleはなんだか気のいいおじさんて感じでした。 結構ゆっくりな話し方だったけど、それほど聞き取れなかったかも。 まぁ私にお酒がガッツリ入ってたせいにしておきましょう。

もうこんなこと一生ないだろうな。最高の日でしたよ。cut-sea:2006/04/29 05:44:38 PDT


モナド

dankogaiさんの404 Not Found経由で知った。 世界で一番か二番くらいにやさしい「モナド入門」は見事! としか言いようがないくらい素晴らしい説明だったと思います。

はい、そのとおり。でも、「カウントアップしたい」という意志を伝えることはできます。

とか、

関数から副作用を取り除き(汚れ作業はCountupMainに押しつけ)、代わりに戻り値に副作用の意図を詰め込み、それによって失われた関数結合の自由さを関数の拡張により取り戻しました。

うーむ。久々にスッキリ!cut-sea:2006/04/19 20:08:25 PDT


収穫物

実は前回の読書会で収穫物が一個。
本を借用しました。「CプログラムブックIII」です。
今途中まで読んだところだけど、すごく分かりやすい上に、 いろいろ図入りで解説してあります。 今まで用語は知ってたし、使ったこともあったつもりのものが、 「あれ?そうだったの??」みたいな感じで、スゲー勉強になる。
今本屋に並んでいる本だと、昔から知ってる人は常識だから説明省略って なってしまうようなものが丁寧に説明してある。

【結論】とにかく、自分が探しているものを周囲にアピールするのは重要。cut-sea:2006/04/17 16:42:45 PDT


モナド

本日SICP読書会なんだけど、RHGの方もあり。 雑談なんだけど、shelarcyさんとモナド関係でちょっとだけ話を。
えー、初めて彼と話が疎通した感じデス。 いや今まで何を言っているのかサッパリ理解できてなかったんで。cut-sea:2006/04/15 00:52:33 PDT


37

数字ネタ。ついさっきNHKで子供向け(?)にやってた。

gosh> (/ 999 37)
27
gosh> (/ 888 37)
24
gosh> (/ 777 37)
21
gosh> (/ 666 37)
18
gosh> (/ 555 37)
15
gosh> (/ 444 37)
12
gosh> (/ 333 37)
9
gosh> (/ 222 37)
6
gosh> (/ 111 37)
3

NHKでは昇順にやってたけど、降順で見せるべきかな〜と。
要するに111が割れる段階で後は当然なんだからさ。

あと昔教育番組でやってて思い出したけど、

ってのもなかなか。
全てが算式じゃなくて、途中で2回横に並べてっていうのがあるのが面白い。 実は、

gosh> (* 7 11 13)
1001

ってことで1001を掛けることに相当するんだけど、 1001が素因数分解できることに驚いたのを覚えている。
ちなみに1001のことをシェヘラザード(シャハラザード)ナンバーとかいうらしい。 千夜一夜物語を(シャフリヤール王に)語ってきかせた娘の名。
シャレてる。cut-sea:2006/04/12 07:31:45 PDT


packageの追っかけも

lintpkgsrc -iをしてみると、このマシンって最近セットアップしたとこなのに、 すでに50個くらいのパッケージが更新されていた。
そろそろ今回はpkg_compを使ってchroot環境を作って安全にアップデートしたい。 でもって探したらこのサイト あたりがまとまってそう。


無線LANのために

どうやらNetBSD 3.0ではダメそうだったのでMLで聞いたら currentじゃないとダメなんじゃん?ということで、currentを追っかけることにしました。
意外にすんなりupdateできて、しかもどうやら内蔵の無線LANを認識したようで、 PC Cardの無線LANを持たなくていいのは嬉しい。
でもPC Cardの方はこれはこれで何やら雲行きがあやしい状況。 まぁ後はゆっくり時間と意欲のあるときにでも。cut-sea:2006/04/08 22:56:24 PDT


display vs write

どうも通信先との対話的なことをすると、いつもハマるんだよなぁ。

(use gauche.process)

(call-with-process-io
 "mecab -O wakati"
 (lambda (in out)
   (display "こんちわ世界" out)
   (newline out)
   (read-line in)))

(call-with-process-io
 "mecab -O wakati"
 (lambda (in out)
   (display "こんちわ世界\n" out)
   (read-line in)))

(call-with-process-io
 "mecab -O wakati"
 (lambda (in out)
   (write 'こんちわ世界 out)
   (newline out)
   (read-line in)))

(call-with-process-io
 "mecab -O wakati"
 (lambda (in out)
   (format out "こんちわ世界~%")
   (read-line in)))

;; これは違う
(call-with-process-io
 "mecab -O wakati"
 (lambda (in out)
   (write "こんちわ世界" out)
   (newline out)
   (read-line in)))

今日Ruiさんに説明してもらいながら、なんとなくは分かってきたんだけど、 まだ自信ないな。

(format #t "~s~%" "こんにちわ") ;; write like
(format #t "~a~%" "こんにちわ") ;; display like

こんな感じなのも、分ったような気にはなるんだけど。cut-sea:2006/04/01 23:11:19 PST


MeCabってみる

ここから本体とIPA辞書をダウンロードして、 makeしたらとりあえず使えた。 どうやら./configure時に./configure --disable-mutex --with-charset=eucな感じの オプションを付けたら通った。

cut-sea@nkisi> mecab -O wakati
愛してるの響きだけで強くなれる気がしたよ
愛し てる の 響き だけ で 強く なれる 気 が し た よ 
^C
cut-sea@nkisi> 

さて、次はgauche-mecabかc-wrapperか。cut-sea:2006/04/01 21:08:22 PST


リスト処理

ちょっとメモっておく。Scheme:リスト処理


foldという名のvm?

T43p残念ながら今のところ無線LANが使えない。
つーかそれ以前のcbb0がnot configuredになる。 どうもGoogleで調べる限りはpccbb.cに対する変更がしばらく前から怪しいのかな。 特に現時点であやしいってより、OKなcommitとNGなcommitを繰り返してる様子。

で、調べてる内に、趣味的にっきで NetBSDでのdmesgから認識しているデバイスのツリーを書くってのをやってた。Rubyで。
Rubyは分からないけど、結構簡素なコードですごいなーって思った。 で、まぁツールとしては、あると便利かなーってことで、Gaucheで作る。

ただ、今までのように欲望の赴くままにってんじゃなくて、 あえてfoldにこだわって書いてみた。
しばらくは結構苦痛っていうか、思考が慣れてないせいか、 なかなかコードが書けなかったけど、 なんとなく何かが得られるのではないかと思ってのこと。 ちょっと悟れたかなーって感じ。

こっちね -> Gauche:devtree


quoteって久し振りに書いた

T43pでの環境構築。

alias  mailmax 'emacs --eval "(set-buffer-file-coding-system (quote iso-2022-jp))"'

これでmailの読み書きをnviからemacsに移行。 自分でもバカだなーって思いつつ、それでもmhを使い続けるのであった。cut-sea:2006/03/24 06:21:00 PST


ニヤリ

半年くらい前からかな、SKKを使い出したんですが、今回初めて知りました。 次の変換デス

こっか -> ")"

"国家"より先に出てきました。ぶははcut-sea:2006/03/22 17:54:48 PST


T43p環境構築

xjmanの設定はjman.confでcatとmanとの優先順位を入れかえないと面白くない。らしい。 まぁちゃくちゃくと進み中。cut-sea:2006/03/22 07:25:07 PST

manだけじゃなくinfoなんかも/usr/pkg/infoの方にgaucheのrefがあったりすると emacsからC-[iでエラーになる。 この辺ようやく回避してなんとかgosh単体ではバッチリな環境に。


アクタ

SchemeとActor理論 って以前読んだ気がするんだけど、今読むとまた違う。
以前より余裕を持って分かるけど、「あっそうか」ってのもあった。 多分細部まで見えるようになったからか。(と思いたい)cut-sea:2006/03/21 18:31:22 PST


RHGに参加

初めて参加。 Haskell関連だったので行ってきた。
なんかちょっとだけモナドが怖くなくなったような。 いや今回はモナドはやってないんだけど、 きちんとまとまったドキュメントを読んだり、みんなの議論を聞いてると違うね。
青木さん、ここを読んでるとは思えないけど個人的にはあれでいいと思うよ。 Haskellをわかってる方は正しくないと厳密を求めて突っ込みを入れてたけど、 その結果がよく分からないドキュメントの数々です。Haskellに限らずね。(w
入門者には少々不正確でも分かった気にさせるのが第一で、 Haskellでコード書けるようになってしまえば、 そのうち不正確だったことはいずれ自力で理解するでしょう。
青木さんが専門家からの突っ込みを甘んじて受け入れてくれれば、 入門者が増えることでしょう。 発刊を楽しみにしてます。つーか来月も参加します。もちろん。

さて、それとは別に話題の「Common Lisp オブジェクトシステム - CLOSとその周辺」 をartonさん(で綴り合ってるかな)に借りた。 初対面だったけど、借りたい人って聞かれて即手を挙げました。
これが一番の収穫かも。 復刊してくんないかなぁ。cut-sea:2006/03/19 08:44:33 PST


T43p購入

買いました。cut-sea:2006/03/17 04:53:36 PST


foldNを書いてみる

fold面白いってことで。

(use srfi-1)
(use gauche.collection)
(define (foldn n proc . args)
  (let ((nils (take args n))
        (cols (map (cut coerce-to <list> <>) (drop args n))))
    (if (any null? cols)
        (apply values nils)
        (receive vals (apply proc (append (map car cols) nils))
          (apply foldn n proc (append vals (map cdr cols)))))))

で、動作はこう。

(define (numbering from lst)
  (define (inc n) (+ n 1))
  (foldn 1 (lambda (elt data)
             (values (cons from (map inc data)))) '() lst))

;(numbering 0 '(a c a s d vg 2q 12 3 ))
; -> (0 1 2 3 4 5 6 7 8)
;(numbering 1 '(a c a s d vg 2q 12 3 ))
; -> (1 2 3 4 5 6 7 8 9)

(define (max&min lst)
  (foldn 2 (lambda (x a b)
             (values (max x a) (min x b))) -1/0 +1/0 lst))
;(max&min '(2 2 3 1 8 -3 9 7 0))
; -> 9.0 & -3.0

(define (max&min&sum lst)
  (foldn 3 (lambda (x a b c)
             (values (max x a) (min x b) (+ x c)))
         -1/0 +1/0 0 lst))
;(max&min&sum '(3 4 2 6 7 0 5 -2 8 -4))
; ->8.0 & -4.0 & 29

(define (max&min&ave lst)
  (let1 denom (numbering 1 lst)
    (receive (mx mn sm av)
        (foldn 4 (lambda (x y a b c d)
                   (values (max x a) (min x b) (+ x c) (/ (+ x c) y)))
               -1/0 +1/0 0 0 lst denom)
      (values mx mn av))))

;(max&min&ave '(1 2 3 4 5 6 7 8 9 10))
; -> 10.0 & 1.0 & 5.5

で、書いてて、gen-foldの方がいいかもしれんと思って、例の形式で書けるかと思ったり。

(define ((gen-fold n) proc . args) (apply foldn n proc args))

うひゃひゃ。cut-sea:2006/03/15 08:36:29 PST


オレのパクリも

AA折れ線グラフね。

(use gauche.sequence)
(define (crf->plist crf)
  (define (sub crf)
    (fold2 (lambda (in p y)
             (case in
               ((#\C) (values (acons #\_ y p) y))
               ((#\R) (values (acons #\/ y p) (+ y 1)))
               ((#\F) (values (acons #\\ (- y 1) p) (- y 1)))))
           '() 0 crf))
  (reverse (sub crf)))

(define (plist->graph plist)
  (receive (bottom top) (apply min&max (map cdr plist))
    (do ((y top (- y 1)))
        ((< y bottom) #f)
      (fold (lambda (p r)
              (cond ((= y (cdr p)) (display (car p)) #f)
                    (else (display #\space) #f)))
            #f plist)
      (display #\newline))))

(define crf->graph (compose plist->graph crf->plist))

(crf->graph "RCRFCRFFCCRFFRRCRRCCFRFRFF")

はい。パクリマクリです。こんなんだっけって思いつつも途中から記憶が。。。cut-sea:2006/03/15 07:31:20 PST


危機一発か?

会社のfirefoxに色々extensionを入れてたら、自分のnoteもって気になった。 やろうと思ったら、firefox 1.5.0.1がpkgsrcにあるのを見つけた。
で、makeしたら依存関係のあるものが他にあるよって叱られた。 確かにズラズラーって数えきれない程でましたよ。覚えてますとも。 しょーがないって、ついmake updateしちゃった。
いつもなら、こわいからやらないんだけどなぁ。あん時何を思ってたんだろう。 一瞬だけ手を止めたのは覚えてるんだけど、なんか勢いがついちゃってたんだろうか。 慣性の法則ってやつですかい(w

そーすると昼から開始して23時になってもまだバリバリmakeしてるし…。
でもさ、途中でmake終わるとひょいとftpを開始したりするしなぁ。 まぁ止めて続きから出来なくもない気がするけど、 残念ながら今まであんまり良い結果が出た覚えがない。 じりじりしてたんだけど、さすがに帰りたいので、mozillaのmakeに入ったのを見計らって、 無線LANカードを抜きさり、カリカリやってる最中のをリュックに詰めて、 出来るだけしずしずと帰りました。

帰宅後広げるとまだmakeしてる。OK!間に合ったか。
早速そのままifconfigを叩いて繋ぎたかったんだけど、なにぶん長いこと手動では継いでない。 ぐぐれればいいんだけど、そもそもip unreachだ。ダメダメじゃん。つーかこの時点では mozillaもfirefoxも使えないんだ。

man ifconfigとifconfig.pppoe0を見ながらバチバチやって数分、ようやくpingが通った!
って思ったところで1分もしないうちにmozillaのmakeが終了して 次のpkgのftpを開始。危機一発でした。(汗
で、ftpし始めたのはOOoですよ。はてしない。orz cut-sea:2006/03/10 07:39:24 PST


c-wrapperでcursesを

APIをたたいてみた。

こっちね -> Gauche:curses-draw


「bit別冊 Common Lisp オブジェクトシステム -- CLOSとその周辺」

ここ数日復刊.comからの通知がポンポンきてる。 ずっと沈黙してたのに。
matzにっき の影響力でけぇ。2006/02/28 23:22:57 PST


ため息

WiLiKiのWiKiフォーマットをパースする部分のコードを読んで感動。 こんなコードさくっと書けるとキモチいいだろうな。


クロージャ

うーん。クロージャなんてめちゃめちゃ簡単で、 Schemeの機能の中では継続だとかマクロ程に言及されることはないんだけど、 他の言語で開発してて、ここで使えたらなぁって思うことが一番多いのよね。
マジで不自由に感じる。 それ以外はそんなに思わなくても、 クロージャだけはなんとかどの言語でも使えりゃいーのに。cut-sea:2006/02/09 08:48:54 PST


Gauche:YAGHG

たのしみ。


半角カナー>全角カナ

全角から半角ほどに自明ではない。 なぜなら不正な半角文字列の並びってのがありえて、 それにどう対処するかは様々だからだ。 あくまで一案だが、まずは使ってみている。cut-sea:2006/01/06 07:11:03 PST

こっちね -> Gauche:半角カナ->全角カナ



Last modified : 2012/03/18 10:59:55 UTC