cut-sea:log5

cut-sea:log5

GNOMEに移行

以前GNOME使ってた時はえらい重かったし不安定だったと思うんだが、いまさらですが十分なようですね。 GDM使ったりしたらまた設定がよく分からなかったりして手間取ったけどなんとか。

ついでにOSの方もcurrentにupしたんだけど、etcupdateで判断ミスしてrootもログインできなくなってあわてた。 強制的に電源落としてシングルユーザで起動してetcのバックアップでなんとか復旧したけど、 GDMの設定いじったりもしてて、ググるとそっちの情報もあったりしてちょっとビビった。

まだ使いかたとか設定関係が全然不明だけど、昔の印象とは全然違ってえらい安定してるしシンプルでよろしい。

あ、あと電源断した時に気付いたけどACPIも最初の頃と違ってこれもまたえらい安定してる。 安定だ安定だと言っても今迄だってOSが落ちるなんてそんなには経験はしてないわけで、 実際のところXないしアプリレベルだからそれがマトモならcurrentとはいえ十分実用に耐えるわな。 cut-sea:2007/12/17 21:22:24 PST


UTF-8に移行

マイノリティってのはいろいろ不便な点が多く最近日和見な私としてはUTF-8への移行をすすめる。 別にOSやら言語処理系程にこだわってたわけでもないしね。

と、おもったらktermがUTF-8は対応してないらしいじゃん。 うーん。まぁterminalもなんでもいいけど、シンプルなやつでオススメがあれば教えてちょ。

ちなみにGaucheのHEADもeuc-jpだといくつかfailしてたけど全パスするようになったし、 DBD:MySQLもパスするからいいことの方が多い。cut-sea:2007/12/15 21:52:38 PST


ACLセミナー2007

22日だけ行ってきた。

午前の講演も意外にも面白かった。 数理システムさんのユーザカンファレンスってことなんでLispとは無関係な話なんだけど。

今回は直接Common Lispに関係なさげなセッションが多く、 Lispなものとしては進行中の案件が少し紹介されたくらいだったので、 個人的には21日のチュートリアルを受けた方がよかったのかもしれない。 さすがに2日とも出ると5連休になってしまうので避けたわけだけど。

でも同室感のある新しいTV会議システムなんかは実に面白そうなアイディアだったし、 機会があれば是非遊びにいってみたいものだと思った。 確かに私もTV会議って何度となくやったけど、 本当映像なんてあってもなくても同じじゃんと思ったことがあるし、 結構近い将来にはこのシステムになるんじゃないかと思ったよ。 説明の中でも最初に夢が語られてたけど、 インプリメンテーションとしてホログラフなんてことになればすごいよね。

体調が良くなくてセキばっかしてたから、懇親会は出席せずにそそくさと帰宅。cut-sea:2007/11/25 20:29:38 PST


右と左は大違い

うーん。分かってたつもりだけどまだまだだ。orz
fold-leftとfold-rightってもう全然別物っつーくらい別物なプロセスだ。 (scanrとscanlもそうなんだろうけど) いろいろいじくってて難解なのはやはりright。
正直rightの方が面白いけど頭がついてかない。cut-sea:2007/11/04 20:34:41 PST

なんか書いてみる

fold-rightやらfold-leftばっかやってると頭は疲れるくせに 一向に成果物っぽいものがなんも書けてないのに気付く。
先週末nobsunと晩飯を一緒した時に話をしてたものを少し書き始めたりする。 まぁまだ半分くらい?でもって残り半分が最も重要なんだが、 どうやろうか今頃考えたりして。^^;
いや、まぁでもデータが手元に出てきてるわけだから、 あとはこれを見ながらそれらしく動くものにできればいいんだけどさ。cut-sea:2007/11/04 20:34:41 PST


itojun氏逝去

2000年のNetBSDのBOFで見たことあるが、 最前列の一番左手に座っててイケメンだったな。
どの世界も一流の人ってカッコいいなぁとitojun氏を見て思ったんだよね。 たしかUSENIXのお土産でUNIXのナンバープレートを持って来て プレゼントしてたんじゃなかったっけ。 この日記あたりがそうだ。

当時31くらいなんだな、そら若いはずだ。 残念というか、なんというか本当に悔やまれます。 同世代の誇るべき人を失うとものすごい心細く感じてしまうよ。cut-sea:2007/10/30 22:24:06 PDT


継続

久々に継続について書いてあるドキュメントや書籍を再読。 なんだかまた少し理解が深まった気がする。
以前はただ継続というものを理解したいと脳に力が入ってたんだなぁ。

けど、今回は色々なものが自然に結びついてきたかもしれない。 なんだか青い鳥は家に居たのね。って気持ちだったり。(意味不明)
書いてあるものを見ているのに見えてないのってなんなんだろう?cut-sea:2007/10/19 12:43:12 PDT


javascriptのお勉強

amachangさんによる記事。 Autocompleterの日本語入力時のイベント取得が出きない件で、 以前amachang氏がはてなにコードを公開してたけど、 誰かがコメントしてる様に私もダメだったんだよなぁ。 バージョンが違うから、それでだろうと思うけど。 で、そろそろ対策をと思ってググったら出てきたので読む。cut-sea:2007/09/30 22:23:41 PDT


modular X.org移行

した。っつーかしてる最中。 pkgsrcの場合、パッケージシステムから入れたのは全部pkg配下に入る ということになってるから安全に移行しやすい。

/usr/pkgを/usr/pkg.bakとして別に/usr/pkgを用意。 /var/db/pkgと/var/db/pkg.refcountもパッケージのdbになってるから、 こいつも移動しておいて、一からpkg_compでbuildしてpkg_addでinstallすれば良い。

やってみてダメなら(今回は特に不安だったので)いつでも戻せる。

ものによっては/etc配下の設定に影響するのもあるけど、 それは自分が書いたものなのでまぁ分かるか忘れてても使ってれば気付くでしょう。 (X11/xorg.confとかshellsとかrc.localとかservicesとかその辺ね。) ひとまずmodularなX.org自体は問題なく起動して使えてるけど、 いくつかfontが見付からないってwarningが出てたり、 その影響かいつものフォントが使えなくてフォントサイズがちとデカかったりするから、 この辺も含めて順次調査&アップデートしてく予定。

しまった。この機会にUTF-8にしておけばよかった。orz
まーしょーがない。次までeuc-jpで頑張ろう。cut-sea:2007/09/30 18:04:18 PDT


First-class object

やはりGaucheFestでのこと。

何の話から派生したか忘れたが、関数型言語の特徴を説明する文脈において、 「Cはfirst-classの関数を扱えない」という話がでる。 これについてとおる。さんと話が弾んだ。

これにはCプログラマから 「関数ポインタで引数に渡せるし関数ポインタも返せるし、その関数ポインタを変数に格納できるよ。」 という反論がありえることは私もずっと気になってたし、 私自身が納得できてなかったのだ。

「それはポインタを渡してるんであって、関数オブジェクトじゃないよ。」 実はこれはCプログラマを納得させるにはあまりにも弱いと思ってる。
Cではキャストという機能と合わせることによって確かにその3つの機能については実現できているからだ。

で、以前から私の中での一つの結論になっていたのが、 「そもそもデータと言うにはデータコンストラクタが無いってのはダメなんじゃない?」というもの。

つまり、3+5というプログラムを書いて8を生成することはCでも出来るけど、 even?とnotからodd?を生成するなんてことがCでは出来ない。 あるいは"int foo(int n) { return n * n; }"というデータから関数を生成できない。 これなら納得させられそうなんだ。

ところが反対側に座ってたkoguroさんがブスリと快心の一撃。
「そうすると(Schemeの)シンボルはstring->symbolが必須になる? あるいはstring->symbolがなければfirst-class objectとは言えないってことになるのかな?」

ガーン!自分に返ってくるとは思わなかった。
その瞬間の直観というか希望としてstring->symbolは 数多あるxxx->yyyの一つにすぎないという考えがあったので、 そんなのなくてもfirst-classだと主張したかったが、 確かにそうするとシンボルをコンストラクトするにはreadしかないな。 ってことは入力しないと出来ないってのも嫌だよなぁ。

で帰ってから、「プログラミング言語 Scheme」の解説とR5RSを読む。 string->symbolについては、他のxxx->yyy系とさほど変わらない解説なのだなぁ。 でもこれによってコンストラクトするって主旨は読めるし、 当然あわせてインターンされることも保証されるのだから間違いない。 ただ、もちっとこの関数は重要なんだみたいなのが書いてあるかと思ってんだが期待はずれ。

で、そもそもfirst-class objectってなんなのよ?と 調べたら…

  1. being expressible as an anonymous literal value
  2. being storable in variables
  3. being storable in data structures
  4. having an intrinsic identity (independent of any given name)
  5. being comparable for equality with other entities
  6. being passable as a parameter to a procedure/function
  7. being returnable as the result of a procedure/function
  8. being constructable at runtime
  9. being printable
  10. being readable
  11. being transmissible among distributed processes
  12. being storable outside running processes

むむむ、being constructable at runtimeってのがあるし、

For example, in C and C++, it is not possible to create new functions at 
runtime (although see anonymous lambda bindings in the Boost library), 

という記述もその直後にあるから、私の主張も正しいんだよね。 当然string->symbolがあればシンボルもこれを満たせそうだ。

ところが、今度はここまで満たさないといけないとすると、 最後の二つの being transmissible among distributed processesbeing storable outside running processesってのはさらに厳しい。

read/write invarianceがあるから大抵は問題ないけど、 そうするとやっぱ環境をfirst-class objectにしないと、 環境へのポインタを持つクロージャだって first-classじゃないよと否定されることになりそうにみえる。
first-classってこれだけ要件があったのか、ってか本当なのか?cut-sea:2007/09/08 19:08:38 PDT


そのような欠点はSchemeにはない

SICPのp19-p20にあった今年の流行語大賞候補。

Q. なぜ反復のための構文が無いのか?

A. 逆に考えるんだ! 反復のための構文でしかループが書けないなんて、 そのような欠点はSchemeにはない!(w

モナドクラス

GaucheFestってことで今回はGauche本の査読会。
nobsun来たので夕食と駅までの帰り道にいろいろ聞く。

「そもそもクラスってのは型について共通の性質を取り出してるものだよね」 というところからモナドについて。
そっかモナドモナド言ってたけど、モナドクラスだったのだよなぁ。

以下nobsunの話をとりあえず忘れないように。

例えばeqクラスってあるよね?
整数でも文字列でも何であっても良いんだけど、等しいってことを扱いたい場合、 eqクラスのinstanceにする(eqクラスを継承する)だけじゃ足りないんだよね。
具体的には(==)というメソッドが必要で、 それを具体的な型に対して定義してやる必要があるわけだ。 その型において等しいってのはこういうことだという定義ね。
が、実はそれでもまだ足りない。
反射律(a==a)や対称律(a==bならb==a)、推移律(a==bかつb==cならa==c)を 満足するように(==)をデザインしなくちゃならないわけよ。

で、この制約はHaskellでは記述できないので、プログラマが自主的に守ってね。となるわけだ。 (もちろん他の言語でインターフェースとか書く時でも大抵そうだし、 等価に限らず共通の性質ってのを守るように書くねぇ確かに。 その性質が○○律とかって呼ばれないものが多いかもしれないし、 性質を満足するように記述するってことを意識して書いたことなかったけど。)

じゃあその制約を守ることで何が嬉しいの?何が得られるのか? っていうと、我々が知っている同じか同じじゃないかという性質を 使うことが可能になる、ってことだ。 ただ可能になるんだけど、その嬉しさは等価という概念を知り使ってる人にとって 価値があるわけで、等価という概念を知らない人には分らないよね?

一方、モナドもモナドクラスというクラスで、 eqクラスとは違って型じゃなくて型コンストラクタのクラス (型コンストラクタの共通の性質)なんだけど、 共通のモナド的性質とでもいうものを表現している。
MaybeやらListという型コンストラクタをモナドにするためには、 モナドクラスのinstanceにする(モナドクラスを継承する)だけじゃだめで、 (>>=)とreturnを定義してやんなきゃならない。
で、やっぱりeqクラスと同じくそれだけじゃ足りなくて、 あのモナド則を満足するように定義してなきゃダメなんだってことだ。
そうすることによってモナドのもつモナド的な性質を使うことが可能になるわけだけど、 モナド的な性質の使い方が分からなきゃやっぱり嬉しさなんて分かんないでしょ?

等価とはどういう性質か、同じか同じじゃないかという意味を扱えることの嬉しさが 理解できれば(==)ってのの使い方や定義が出来るようになるのと同じように、 モナドを使ってみてモナドの意味する共通の性質を理解できれば、 別に難しいとか悩むようなものじゃないんだよ。

まーだいたいそんな話でした。
あーなるほど、そうかってことで。 私はずっと意味が分かんなきゃ使えないって言ってたけど、 確かに使ってなんとなく覚えたことって山程あるよなー。
まぁ今日の教訓は理屈は棚上げにしておいて、とにかく書けってことですかね、要するに。cut-sea:2007/09/08 06:04:26 PDT


私の脳内

脳内メーカーで私の本名を入れてみたらこんなん出ましたけど

さらにcut-seaだとこんなん

ともにネタっぷりが良い。cut-sea:2007/09/03 21:07:25 PDT


文系・理系・体育会系の決定的な差

さかいさんとこから。 私も笑った。体育会系を入れるとこうも楽しくなるのか。cut-sea:2007/09/02 20:30:42 PDT

1001 名前:以下、名無しにかわりましてVIPがお送りします。[] 投稿日:2007/07/03(月) 00:03:04.97 ID:ScHeMEr

このスレを見てツッコミ。

  • 文系:「はは、面白いね」
  • 理系:「なんで理系はこんな…」
  • 体育会系:「体育会系のヤツってバカなwwwwwwwww」

バブルへGo!!

DVDで観賞。

サイコーに楽しかった。
あとバブル景気の頃の雰囲気がスゲー懐しかった。 そこで流れるBGMもファッションも。

Wikipediaの バブル景気でさらにトリップ。 ジャパンマネーってやつが「ひまわり」やら「ロックフェラーセンタービル」やら 落して日本人評判悪かったよなーとか。 就職活動なんてどーにでもなって、先輩達とかも複数内定もらって、 どうやって断るかの相談してたなーとか。 (Wikipediaの都市伝説は私のところでもあった) いわゆるディスコで前髪巻子さん達がボディコンシャス着てパンツ見せながら どーでもいーよーな踊りを踊り狂ってたよなーとか。 …あ、これは今もほとんど同じか。

TV CMでも何度も観たけど、まさにバブルにまみれた広末涼子の背景に、 当時開発中のウォーターフロントが象徴的。

リアリティがどうとか、最後のオチがどうよとか、そういうツッコミは不粋か。 エンターテインメントとして楽しめたから私は十分満足できた。

バブルの頃は学生で、はじけてから就職だったから 全然甘い汁は吸ってないんだけど時代は知ってるからかもしれない。
バブル期の印象が無い世代の人にはピンと来ないだろうな。cut-sea:2007/08/29 09:30:47 PDT


Stallmanの欠点は他人の感情を理解しない点だと思うか?

うーん。単にRMSは子供の可能性というものを軽く見過ぎているだけじゃないかなぁ。
子供が生まれれば、ジオ^H^Hオジンはあと20年は夢を見れるわけですよ。

…と、独身のオレがほざいてみる。orz cut-sea:2007/08/28 00:07:23 PDT


modular-xorg

夏休みから帰ってきて、pkgsrcのcvs upとlintpkgsrcをかけたら xorg関係が軒並Unknown packageになったので何事かと思ったら、 modular-xorgとやらに変ってたらしい。
それなりに情報収集したんだけど安心できる程の情報もない。 MLをあさったら一応記録があったんだけど、結構古いな。 オレが知らなかっただけなのねん。orz

とりあえず、mk.confに

X11_TYPE=modular
PKG_OPTIOS.xorg-server=glx

を入れてpkg_compで安全圏の中でbuildをしてみちゃいる。 build自体は問題なさげなんだが、MLやら絹の日記とか見てるとかなり手強そう。 おそらくXさえ起動できれば、あとは順次ありとあらゆるpackageを buildしまくるだけなんだろうが、そこまで行けんのかよ? なんか不安になってきたなぁ。cut-sea:2007/08/21 07:54:47 PDT


Gauche本

MOPやっぱりいいねぇ。 ってことでクラス周辺じゃなくて、こんどは総称関数の方をいじりたくなった。

こっちね -> Scheme:MOP:ProfiledGeneric


不完全性定理

読了。 やはり面白かった。
でもちゃんと理解できたか?って言われたらできてませんって感じです。 いや、理屈を形式的には追えたんだろうけど、 自分の理屈になったか?ってレベルではブーッって状態。cut-sea:2007/08/06 18:07:36 PDT


LL魂

行ってきた。
まずは主催者の方々ご苦労さまでした。

今回は個人的には和田先生の基調講演とXULによるプレゼンソフトなんかが目的でした。
小黒さんのプレゼンが面白かったのはいつもの通り。cut-sea:2007/08/04 05:51:50 PDT

koguro(2007/08/04 06:15:54 PDT): どうもありがとうございます。ちょっと今回はオチが強引だったのですが、楽しんでいただけてよかったです。


NetBSD Magazine

え、ウソ?ホント?
誰が買うんだ?そんなもん?? あ、オレか。cut-sea:2007/07/30 00:50:46 PDT


X.orgが起動した

はぁ。なんとか窓のある世界にI'm back。

偶然なんだけど、/var/chroot/pkg_comp/default/etc/mk.confに自分のmk.confの 設定をマージし忘れたのが良かったのだろうか?

libfontencをpkg_comp buildしたらOK。
お?こりゃいけると思ってlibXfontをbuildしたらこれもOK。
そのままbdftopcfをbuildしたら無事成功。
(これらが、なんでbuild出来たんだろうと振り返ったら、 X11_Typeの設定忘れでたまたまだった感触)

で、これらをインストールしてやった。 すると/usr/pkg/binにbdftopcfが入っちゃった。 本来は/usr/pkg/xorg/binの下に入るべきなんだろう (xorg-fonts*のbuildではそっちのpathを指定してbdftopcfをcallしてるらしい)が。。。

ともあれ、bdftopcfが手に入ったので、/usr/pkg/xorg/binにシンボリックリングを用意してやって、 再びxorg-fonts100dpiなどのbuildをしたんだが、 pkg_compからだとダメぽ。orz

なんなんだかなぁ。 さんざん色々ビルドしようとしてxorg-clientのbuildにコケる。

仕方ないので、直接pkgsrc下でのmakeを行って100dpi/75dpi/miscを入れたら何とか実体がそろった。

fonts.dirにもそれなりのフォントリストがあるようだ。

で、無事1日振りくらいでX.orgが起動しました。 はー疲れた。cut-sea:2007/07/29 22:47:52 PDT

ただし、これって結構イビツな状況。 実際、/usr/pkg/lib/libXfont.so.1.4.1ってのと/usr/pkg/xorg/lib/libXfont.so.1.5ってのがあって 1.5の方は

nm libXfont.so.1.5 | grep is_digit
=> U is_digit

ってのが出てくる。 libfontencの方も微妙にオブジェクトサイズが異なる。

うーむ。結構綱渡りっぽい感じがしなくもない。(w
といってもxorgに入るようにlibXfontが現状ではbuildできないし、 次にバージョンが上がるまで様子を見ることにするかなー。 つか、早くX.org 7.*系でXglしたいよー。cut-sea:2007/07/29 23:00:35 PDT


X.orgが起動しねぇ

週末、例によってNetBSD本体とpkgsrcのupdateをしてた。

OSの方は問題なくupdateできたんだけど、pkgsrcのビルド中にフリーズしちゃって 仕方なく再起動したら今度はX.orgが起動しなくなった。orz

fatal error:
could not open default font 'fixed'

だっけか。そんな感じのエラーが出てた。 その前には100dpi/75dpi/miscにフォントリストが無いという警告が。

で、mkfontdirで作り直してみるがまともにfonts.dirが生成されない。 中身が'0'一行でフォントリストがなんもない。 なんで生成されないかなーと調査にえらい時間がかかっちゃった。

あら?と思ったら*.pcf.gzファイルが破損してやがる。 ファイルサイズは全部20バイト。こりゃなんも無いわな。

調べたら、bdfファイルからpcfファイルにコンバートするツールbdftopcfが無いにも関わらず 強引にbdftopcf *.bdf > *.pcfして、そのままビルド成功ってことにしてやがった。 buildは成功に終わってたので知らずにインストールしてしまったわけだ。 はた迷惑なパッケージ!!

で、bdftopcfが無いのは何でかわからんが、 ありゃいいんだろう?とbdftopcfをビルドしようとしたら、 こいつが又ビルドできねぇ!

undefined symbol 'ft_isdigit'

とかなんとか。 libXfontのビルドでエラーになってる。

調べたら1.3.0にしたら行けるという報告が色んなOSのMLで上がってる。 pkgsrcを何度も取り直してるので、情報を得た時点での私のpkgsrcでは1.3.0になってて、 さっきの直接の原因が何かはもう分からん。 まーいーやこれでいけるでしょうと思ったら。。。

今度は また違ったエラー。

これもビルドエラーについてはぐぐったら出てきてるんだけど、 解決したって報告に遭遇しねぇ。

  1. pcfファイルを正常に生成したいがbdftopcfがない
  2. bdftopcfをビルドしたいがlibXfontのビルドエラー
  3. libXfontをビルドしたいがlibfontencでビルドエラー

うーん。どんどん遠くなってる気がする。orz

Xが起動できないと真っ暗闇。 昔はこれで快適に色々出来てたつもりなのにー。

(続く...つまりまだ格闘中w)


半径ワンクリック

へぇ、うまい表現だなぁ。

Webにおける距離感覚をうまく表していると思った。 はてなによれば初出は今年の3月だっつーから、比較的新しい。cut-sea:2007/07/24 20:36:31 PDT


XUL

ワケあって勉強中。

XUL Periodic Tableってのがある。
こういうのは結構参考になりそうなので一応メモっとく。

でもこのサイトマウスジェスチャーが殺されるっぽいんだよなぁ。cut-sea:2007/07/24 18:41:39 PDT


LittleLambdaLisp

RubyでLispを実装してる解説。 面白そうなのではじめてRubyネタ(?)でupつけたと思う。

でも、これ読んでRubyでの実装を追っかけてみようとは一切考えず、 久々にSICP再読しようかなーとか思うあたりが、まぁなんだなぁ。(wcut-sea:2007/07/22 19:04:52 PDT


Rubyではじめるゲームプログラミング

次回のRHGの本なので買ってきた。 で、まっさきに目に飛び込んできたのは、

p5 より引用

まずRubyというすばらしいプログラミング言語を作り出してくれたまつもとひゆきさんに感謝します。

まつもとひゆきさん。うーん。謝辞で間違えると目もあてられん。 とくに"まつもとゆきひ"とか"まつもとゆきろ"とかなら一文字delしちゃったのね。(笑) くらいに思うんだけど、ひゆきだと少し前にMatzにっきで、 そろそろひろゆきと間違えるのやめてほしいっておっしゃってたのが思い浮かんじゃう。

CDも附属してて使用する処理系やらライブラリも含まれているらしく、 これで2300円は、まぁ安めかなって印象ですね。
内容は来月までおあずけ。cut-sea:2007/07/22 04:23:40 PDT


apr

pkgsrcで入れてたsubversionが起動しない。 長いこと使ってない内に錆びたか。

色々調べたらlibaprにlibpthreadがリンクされてないらしく、 結果としてpthread_*系のいくつかのシンボルがundefinedになってたらしい。 Makefileに以下の2行を入れて、pkg_comp buildしたら無事リンクされたものが生成。 再インストールしてsubversionやらapacheやら個別に手当てをしていく。

.include "../../mk/pthread.buildlink3.mk"
PTHREAD_AUTO_VARS=yes

svn自体も起動はできたようだ。 あとついでにapacheも2系にupdate。

で、*-subversion系のpackageもここ最近ビルドエラーになってたのを作り直す。 あとはdarcsがfailしてて長らくupdateしてないのでこっちだな。cut-sea:2007/07/21 21:44:32 PDT


なんという青

自然界のこういう青ってハンパない!
目頭がアツクなるよ。
敬虔なキモチになってしまうな。cut-sea:2007/07/19 19:05:07 PDT


CSS Nite騒動?

えーっと、こういうのの現場(blog上のフレーム)にリアルタイムで居合わせないと、 「あーオレってアンテナ低いんだな」と改めて思う。
つーかアンテナ張ってないよなぁ。 生粋の引き籠りなんだね。

こういうフレームに居合わせないのってわざとなのかもしらん。 メンドクサイのダイキライだし。 オナニーコードをカイてる方がはるかにマシだと思うし。 腹立てるようなことに時間を使うと寝られなくなるわ ストレスたまるわ胃に穴開くわハゲるわ(笑ぃごっちゃねーけど

これとは別に今年のLLはちょっとビミョー。
早々にチケットは購入したんだけど、 個人的に見たい人が突如召喚された時のための保険みたいなもので、 今年はあんまり行くつもりなくチケットを入手した。

結局、和田先生が基調講演されるとのことなので、 それは聞きに行く価値ありだなぁってところでしょうか。
LL Weekendでの竹内先生以来の超大物だし、 昨年一度だけモグらせてもらった講義も楽しかったし。cut-sea:2007/07/18 19:24:35 PDT


NetBSDで/etc/servicesが変わってた

暫く前のNetBSDのcurrentでetcupdateした時に/etc/servicesが 大幅に変わってたのは気付いてた。
ただ、あまりの大幅な変更具合にビビって置き換えちゃったんだよね。
こりゃ昔のだとイロイロ動作しなくなっちゃうんじゃなかろうか?と。

その時skkservを割り当ててた1178番ポートが別のサービスに取られてたのと、 ちょっと確認した所ではなんとなく変換できてたのとで、 安心してとりあえず放置プレイしてしまった。

その後しばらくして、なんだかEmacs以外での日本語入力で どうも変換できないケースが多いことに気付いた時にはそんなこと忘れてた。

なんかEmacsの方はlarge-jisyoの方で変換できてただけみたい。
しかし、この.emacsの設定も結構前からコメントアウトしてたので、 今も効いているのが不思議。 (でも効いてる。ファイルを移動したら、そのパスの辞書ファイルが無いって エラーになるし、別に設定している箇所も見当たらない。 しらんけど、recordとかそーゆーのに残ってるのか?)

今日Xを落とした時にSKK Serviceにconnect失敗したってエラーが見えたので、 調べたらskkservが起動してなかった。(当然ちゃー当然)

ともかく不便なので/etc/servicesに11178番として登録したら無事どこでも変換できるようになりました。 よかったよかった。cut-sea:2007/07/18 08:33:38 PDT


Gauche:text.prettyprint

HughesPJ.hsのフル実装移植。
APIを一通り実装してlazyにもしたので、あとはS式ppを書くだけよ。 コメントとかどうするんだろう。 サンプルのtreeやXMLみたいにデータ構造を作るのもアレだしなぁ。cut-sea:2007/07/15 22:02:51 PDT

こっちね -> Gauche:text.prettyprint


数学

以上読了。 途中別のことを色々やってたから予定よりかなり時間がかかっちゃった。 結局3weekってところでしょうか。いずれも良い本でした。 ゆとり教育とか学力低下とか問題にされてても他人事だと思ってた。 これを読むと私よりさらに昔の世代から、どんどん教育の質が低下してたようで、 私も上の世代から見れば学力低下世代なんだろうなぁ。 でも数学の本当に面白い話を全部すっとばししちゃうのは間違いだよな。 興味を持ってもらえるものも持ってもらえなくなっちゃう。cut-sea:2007/07/13 18:50:46 PDT


Text.PrettyPrint.HughesPJの移植

一応全コードを写経完了。
かなりAPIも違ってるし多いので、まだ全APIの動作確認までは行ってない。

つっても全体がそれなりに正しくなきゃ簡単なものでもエラーが出るから、 そこそこ完成してるんだとは思う。 動作までは長いけど、動作してしまえば結構安定してるのが Haskell的なコードって気がする。

なんかすっかりHaskellのコードからSchemeへの移植に慣れてきた。 コツを掴んだ感じで、Haskellのコードもこうやって見ると なんかリストとパターンマッチだけって気がしてきた。

糖衣構文が多いけど、最近Perlのコード書いたりしてるから ちょっと…いやかなり感覚がマヒしてるのかもしれない。

Haskellでの動作確認をしながらGauche:WadlersPrettierPrinterLibraryと 同程度まで動くようになったら、今度はそのサンプルコードを使って lazyに変換していく予定。cut-sea:2007/07/11 09:29:08 PDT


GaucheFest

えんどうさんちでHack。
えんどう,nobsun,田原くんと私の4人。それから猫たち。

今回は何をするか全然決めてなくて、最初は数学の本を読もうかとか考えてた。
そばでnobsunがWadlerのpprライブラリのデバッグをしてたので、 オレもやりたーいとか言って始めました。

で、お互いにコードを読みあわせながらバグを潰していって、 なんとかScheme版が動作するところまで行ったところでnobsun就寝。
その後、田原くん、えんどうさんの順で就寝。

一人でリビングのソファに寝ころんで、S式のppを作っていくんだが、 ライブラリの使い方が良くわからずに四苦八苦。

その脇を猫達が駆け回る駆け回る。
昼間は寝てばかりで、わざわざ腕の上に乗っかって来て、 キーボードを叩けなくしてたチビが忍び足をしてソファの下から出てきたり、 突然飛び掛ったと思ったら、あちらこちらで取っ組み合いをしてじっとしてない。
でかいヤツは窓の外をずーっと眺めてた。(外に出たいのかな?)

なんとなく分かりかけたところで朝になった。
皆も降りて来て、朝食をいただきました。

で、再びHack開始。
サンプルを少しだけ大きめにしたら、途端に止まった。 無限ループだと最初思って、すぐCtrl-Cしてたんだけど、 ある時、放置してたら結果が返ってくる。

結局lazyじゃないので、こりゃ使いものにならないという話になる。 しばらくnobsunの高笑い。
チクショーとは思ったが、やっぱlazyじゃなきゃダメなのかぁとガックシ。

後日、util.streamを使用して書き換えたら案外簡単に移行できた。

基本はリストを構築する所を全部stream-delayでラップして、 あとはエラーが出る順に必要な部分だけforceする。 エラーが無くなれば完成。 意外に簡単に移行できることが証明できた。cut-sea:2007/07/09 20:04:18 PDT


Wadler's Prettier Print Library

WadlerのppライブラリととりあえずなS式ppをGaucheFestで実装。
Fest中に完了せず、宿題になったlazy版にするところまで終わった。

これを使ってS式のppを書いてみたけど、イマイチ。 これは、またじっくり実装しよう。 まだライブラリの使い方が良くわかってないんだよねぇ。orz

こっちね -> Gauche:WadlersPrettierPrinterLibrary

Festではnobsunとたっぷり議論したり教えてもらったり。 amazonでまた数学の本をポチったり。cut-sea:2007/07/09 07:43:33 PDT


点と線

松本清張の作品ではない。

今週、社外MTGの帰りに数学科出身の上司と晩飯を食った。
その時に圏論とか数学基礎論とか色々話をしたんだけど、 彼も「重要なのは双対って概念だよ」とまっさきに言う。

「あー、やっぱそうなんだ。 本でも双対性は分かるようになると至るところにあるのが見えるって 書いてあるんだけどさ、だったらその例を書いてくれりゃいいのに。 そしたらなんか感覚が掴めるんじゃないの?って思う」と話したら、 「一番簡単な例は点と線だよ。」だって。
点と線について書いてある定理の、点・線を全て入れ替えるとやはり成立する。

で、その後電車の中で「交点はどうなるの?交わるって概念は何かに変わる?」 「うーん線分になるね。」なるほど。 でも交わるという概念は消えるって言われたけどそうなのかなぁ。 消えるんじゃなくて、やっぱり線分という境界のある線に写された と考えるべきなんじゃないかと思った。勘だから根拠ないけど。
この交点の話の時に、 最初「交点って何?」と逆に聞かれたので頭の隅で考えてたんだけど、 「交点を考える時、直線は点の集合だという考えはしないんですよね? つまり交点を定義するのにAND(積集合)という考え方はしない?」と確認したら、 「それはダメ。アトミック(プリミティブ)なものじゃないと (関手で世界を)写す意味がない。 それ以上分解できないからこそ、写した時に 扱いやすくなったり新しく見えるものがあることに意味があるわけじゃん。」 これが言われてみりゃ当たり前なんだけど妙に納得した。

あと、「集合論の話で全射と単射って別物って感じなんだけど、 圏論的に双対になるってのが理解に苦しむ。 図だけを見るとそうなのは分かるけど、なぜ全射がそういう図になって 単射がそういう図になるのかが納得いかん。」と白状すると 「あーそうなるんじゃない?わかんないけど、そういわれたら双対になるなって思う。」 のだそうだ。どうもその感覚がうらやましい。cut-sea:2007/06/28 18:26:27 PDT


圏論: 「状態」が見える世界から「出来事」が見える世界への招待

わずかこれだけの分量の中に私が引用したい!と思うステートメントが一杯。
他の本の最初の方に書いてあるものと同じ事を書いてるだけのハズなんだけど、 ご自分の言葉になってらっしゃるので、気持ちいいくらい理解できる。

今朝、朝食を摂りながら一読しただけだけど、 両方とも現時点の私が求める最良の文書。
キマイラで紹介されてたクックのpdfも興味深かったけど、こっちのがもっと簡単。
特に後者の論文はもう一度じっくり時間を取って読むことにしよう。 これについては観測理論へと繋がるんだけど、最後の方に関しては、 まるで学生時代の担当教授の言かと思ってしまうくらい同じ表現を使われている。 cut-sea:2007/06/26 18:33:33 PDT


モナド

この説明が理解しやすい。 ただし、補足以降のDialogueとの相互の変換は別。cut-sea:2007/06/20 07:50:38 PDT


RHG前

先週金曜はnobsunとchatで部分適用とカリー化について延々話をする。
その後はnobsunの研究している内容について盛り上がる。
そっちは前提になる箇所を私がスルーしちゃってたから話が延々噛みあわず。
帰宅してからさらに話をしててようやく分かった。遅くまですんません。

翌日RHGで少し前にnobsunと待ち合わせてから昼食へ。

「どうも私はその処理系がどう動いているかってのが書いてある本を読むと理解できそうだ。 Haskellがどう計算をしているかってのを説明してくれると理解できるんじゃないかと思う。」と言ったのが発端。
「いやいや、動作を記述してるわけじゃないから」とnobsun
「でも、簡約して評価して最後にIO()を絞り出して実行してるわけじゃん? それを知りたいんだけど」とかなんとか。

その後ちょっと話がズレていったんだけど、質問を切り替える。

   x = 1 + 2
   y = 3 + 5
   z = x + y

こう書くってことはある部分については、計算の手順を書いている(指示している)。 つまり、1+2を計算したものを取っておいて、3+5を計算したものを取っておいて、 最後にその取っておいたもの同士を足すという計算の仕方を表現してる。
多分レジスタが有限であるというアセンブラを引きずった考え方になってる。 ここでx,y変数を無くすと

   z = (1 + 2) + (3 + 5)

になって、どう計算するかを指示するんじゃなくて言語に任せるようになるよね。
zは1と2と3と5を足したものっていう、zがなんであるかだけ書いてて、 それをどう計算するかは計算機に任せてる。と。
これを他のプログラムでもガシガシやれば、一時変数に代入するって指示も消えて、 最後に巨大な式の塊ができあがるんじゃないか。 逆に言えば、この巨大な式の塊を作る作業をどう構成するか? を最初のコードはわざわざ指示してたわけ。
とりあえず、こういったことを延々推し進めたその先(極限)に Haskellの姿があるんじゃないか?と最近思うようになってた。
逆に他の言語だって副作用だけで出来てるわけじゃなく、 式が書けるところでは似たことをやってるわけだし、 その比率が違うだけなんじゃないだろうか。
つまり、どうやるか何であるかの記述は違うと言いつつ、 案外そんなに違わなくない?というか極限でシームレスに繋がるんじゃない? と最近思いはじめてたので、 そういう方向で説明をしてもらえれば分かるかもと考えて誘導したわけだ。

まぁ式なものは同じ要領でやればどうやるかは消せるだろう と思ってたので残るはIO関係。

   x = 1 + 2
   print x
   y = 3 + 5
   print y
   z = x + y
   print z

こうprintをはさむとどうなるの?

   print (1 + 2)
   print (3 + 5)
   print (1 + 2) + (3 + 5)

こうなるんだよ。
で、この順序を守る必要があるので、各printアクションを合成して 順序通りにprintするような合成アクションを生成する。と。
な~るほど!了解です。(←なるほどじゃない。実は分かってねぇ)
式をどんどん簡約してって残り滓のアクションが最後にできる。 じゃーreadも同じっすかね。

   x = (read) + (read)
   print x
   y = (read) + (read)
   print y
   z = x + y
   print z

白板に書きながら、あーこれダメだわと気付く。 (read)+(read)なんて書けたら参照透明性が壊れちゃってる。
で、予想通りWorldの話になっていく。 これまでも色んな所で聞く様な話なので、まーその話単独では分からなくもないが、 ごちゃごちゃしてしまってて、もちっと分かりやすくならんものか。
ただreadってのは本来引数にポート(外の世界)を必要とするもので、 こいつが毎回変われば違う値を持つ何かを返してきても良いわけだから、 WorldやStateなるものを隠さずに記述するようにすれば見える気もしてきた。 あと一歩な感じなんだけどな。

print文の例に戻って考えると、(1+2)は後で+式に使われるんだけど、 単一のprint文の値は、それ以降のアクションにどう使われるのか という視点に立てば理解できるような気もしてくる。
readして得た値は使われないかもしれないのに飛ばされることなく readするというアクションが行われるのは、 そのreadした値がじゃなく、そのreadするというアクションが使われるからだなぁ。 その辺りがもう少しはっきり見えてくればHaskellも理解できそうなんだけど。 cut-sea:2007/06/17 19:47:57 PDT


いまさらですが、初IPv6アクセス

Interopに来てます。
隅の方にアクセス環境があったのですが、 IPv6専用のクチが開いてたので試してみました。
なんせKame ProjectなんてNetBSDの面々がやったんじゃねーの? という偏見(?)も手伝ってフツーに使えるだろう?と思ったわけです。 最初よく分からずにdhclientしたらiwi0つまり無線LANの方が繋がった。 Googleさんだけは直接見えたので、NetBSDのFAQを調べつつ。。。しばし。

## rc.confに追加
## IPv6 Test
#
ip6mode="autohost"
rtsol="YES" rtsol_flags="bge0"

で、これでDNSサーバのアドレス設定してねってメモに従いresolv.confに設定。

cut-sea@nkisi> ping6 practical-scheme.net
PING6(56=40+8+8 bytes) 2001:3e8:115:1:215:58ff:fe09:5064 --> 2001:3e8:115:2::cdc4:d197
16 bytes from 2001:3e8:115:2::cdc4:d197, icmp_seq=0 hlim=49 time=115.739 ms
16 bytes from 2001:3e8:115:2::cdc4:d197, icmp_seq=1 hlim=49 time=115.560 ms
16 bytes from 2001:3e8:115:2::cdc4:d197, icmp_seq=2 hlim=49 time=115.407 ms
16 bytes from 2001:3e8:115:2::cdc4:d197, icmp_seq=3 hlim=49 time=119.012 ms
16 bytes from 2001:3e8:115:2::cdc4:d197, icmp_seq=4 hlim=49 time=115.401 ms
16 bytes from 2001:3e8:115:2::cdc4:d197, icmp_seq=5 hlim=49 time=115.593 ms
16 bytes from 2001:3e8:115:2::cdc4:d197, icmp_seq=6 hlim=49 time=115.899 ms
16 bytes from 2001:3e8:115:2::cdc4:d197, icmp_seq=7 hlim=49 time=115.893 ms
cut-sea@nkisi> ifconfig bge0
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        capabilities=3f80<TSO4,IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx,TCP4CSUM_Tx,UDP4CSUM_Rx,UDP4CSUM_Tx>
        enabled=0
        (snip)
        status: active
        inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
        inet6 fe80::215:58ff:fe09:5064%bge0 prefixlen 64 scopeid 0x1
        inet6 2001:3e8:115:1:215:58ff:fe09:5064 prefixlen 64
cut-sea@nkisi> 

わーい。2007年にして初めてIPv6体験です。(遅っ cut-sea:2007/06/13 21:18:05 PDT

というワケで初めてかめさんが動いているところを確認したっす。cut-sea:2007/06/13 21:22:22 PDT


まつもと直伝 プログラミングのオキテ

最初だけざっと見たらスゲー面白そう。特に文章が。 ruby勉強しようかなーって思いながらなかなかその気になれなかったから、 これ読んで勉強した気になることにする。cut-sea:2007/06/11 21:44:20 PDT

透過型電子顕微鏡で圏論を学んでた?

どうやら学生時代に透過電顕で圏の一例を実体験してたらしい。
当時スイッチ一発で切り替えてたけど、実空間と逆空間の行き来が関手だったわけか?
物理学的にも相補的な観測に対応してたし、 結晶回折学でも実空間と逆空間は双対になるとか そういう記憶があるんだよね(コムツカしい事は忘れたけど)。

なんつーか具体例が無いとイメージ出来ないし、 具体例があると足枷になってイメージが膨らまずにパワーを堪能できないし。
どうしても具体的なことを書かない数学書の側の理屈も分かるんだけど、 具体例がないとやっぱワレワレ普通人には一番単純な例ですら浮かばないよ。cut-sea:2007/06/11 18:12:40 PDT

PostScriptとカッコ

なかなか面白い。スキにはなれそう。
で、思ったこと。

Lispがカッコまみれなのは、 「全てが式な言語で、それを前置記法のみを使いながら 一次元で表現しているから」

これに加えて

「Lispは可変長引数を許すくせに型付けが無いから。」

まぁ、これは正しくはカッコを減らすことができない理由か。

PostScriptは後置記法で、確かえんどうさんがforthは後置記法だからカッコ不要 って言ってて、納得できなかった。前置でも後置でも対称なので同じ気がしたから。
正しくは引数の数が決まっているからカッコが減るんでしょう。 例えばPostScriptのaddがLispの+同様に引数を複数取れるならカッコは必要になるはず。 PostScriptでもカリー化みたいに命令列をpushできるけど、 こいつは当然引数の数が分からないからカーリーブレースで括ってやる必要がある。

% example
/add1 {1 add} def

Haskellでは型付けがあるから、引数の型を見ることで自動カリー化できるだろうけど、 それでも曖昧になる場合があるので、それはさすがに省略できんだろう。

foo x y = x + y
bar f z = f z

-- fooの引数はどこまで?
bar foo 3 5 => bar (foo 3) 5

返り値の型まで解析すればさらに省略できる可能性は広がるけど。 でも、そこまでいったら人間には瞬時には分からないよなぁ。cut-sea:2007/06/11 17:54:53 PDT

あ、だからHaskellがカッコまみれにならないのは、 式言語なんだけど、インデントルールとinfix operatorがあるからだけじゃなくて、 引数が固定であることと型付けがあることにより、 処理系が見えない括弧を探すことが可能だからかな。 より一般的に言えば、どんな言語もおんなじじゃんって気がしてきた。

ルールを増やせばカッコが減らせる。
ルールを減らせばカッコが増える。

外延列挙と内包規則の関係がここにも見える。cut-sea:2007/06/11 19:08:59 PDT


んなこと言ったら

なんか圏論とか霞を貪り喰うことに夢中になってたらえらい話になってたのね。
こーゆーところが引きこもりの悲しいところ。orz
完全に現実世界の問題にオイテケくらっちった。

でも、「んなこと言ったらWebプログラマがフツーにセッションステート扱ってる ほぼ全てのWebアプリってアウトじゃん。(w」とツッコミたくなった。

とはいえ、当然継続ベースだって完全じゃなくて(万能ではなくて、と言うべき?)、 Webアプリのデザインの仕方次第では臭いケースがあるわな。
ただ私の認識では、継続ベースであっても問題になるケースってのは、 Webアプリが今のブラウザの上で動作する以上は不可避かなぁと。
それはもうほとんどアプリの設計領域の問題だと思うんだけど、 なかなかそこまで見越して完全には作りこめないなぁと思う今日この頃ここ最近。 cut-sea:2007/06/10 19:11:33 PDT


圏論

やはり手強くて、圏論の基礎じゃなくて数学の基礎から勉強し直し。 でも、かなーり面白くなってきた。
元来数学とか物理とかキライってわけじゃないしなぁっ、つか大好きだし。 学生時代に量子力学で得ていた世界観の裏づけが取れるような快感もある。

数学は面白いぞ。危険なくらい。

根拠もなくインドに行きたくなってきた。衝撃欲しさに。cut-sea:2007/06/05 18:19:03 PDT


HTMLアート

スゲー!!
つか、DHTMLでアニメーションまでやってやがるし。
CPU利用率が天井貼り付いてんですけど(w

これはもうgif2htmlがあるんだろうなぁと。cut-sea:2007/05/30 18:12:04 PDT

やはり、あった サイトに作品を連ねてる方のものか。cut-sea:2007/05/30 18:29:35 PDT


圏論の基礎

以前から興味がありながら、学生時代の時程には学問をすることに尻ごみしてた。
SICPみたいな分かりやすい名著ばっかじゃなくて、 たまには「なにぃ〜?この前書き〜!意味わかんなーい!チョーウケるんだけど〜(w」 って叫びたくなるような難解そうなもので頭を活動させないと 近々ボケるんじゃねーか?と思ったので、 本屋で最初の章の2節程度を座り読みして、購入することにした。

さてさて、これで何か悟れるのか、はたまた自分のコードに何があらわれるのか。 てか、そもそも読み終えるのか。 いや、終える必要はないけど、本質にあるものを咀嚼できるのか。cut-sea:2007/05/26 05:36:35 PDT


SICPトリビア

帰宅してすぐ索引を見たら47pになってる。
えー?47って最初の方じゃん?こりゃ第1章じゃね?と思ったんだが、 第2章だった。
うーん。まだまだ読み込みが足りないか。。。orz

評価と実行が明確に分かれてない?

「readとcompileが明確に分かれてない」に対する第二弾なるか?

まず、以前から何かっちゅーとアクションなどと言う 得体の知れないモノを持ち出してケムに巻かれてる気がしてたんよ。 ま、nobsun曰く、 「いやいや、だからダマしてるんだって。ある意味説明のためだけのものなんだから(笑)」ですって
でもそれでは終わらなかった。少なくとも私的には。

まず私のギモンからスタート。

(注)当然二人の間では演算子の優先度とかは前提の上で、どこから評価しても良いと合意している。

というわけで式言語において、 副作用のあるものや外部世界に作用するものも式だと考えると、 その式、例えば(sys-sleep 1)を評価してアクションを作る過程と そのアクションが実行されて1秒待つってことは区別すべきなんだな。
あきらかにHaskellに洗脳されてる自覚があるんだけど、 まーいーや正しそうだから。

あともひとつ。簡約評価も区別しなきゃならんのだそうな。

なーる。

WHNF というのは、乱暴にいうと一番外側(の一番左)に
データコンストラクタが出てきた形、または、 λが出てきた形です。

という引用がProgramming:WayToHaskeller:つかまり立ちにある。
どっから引用したか忘却、 つか、これも教えてもらったものを忘れないように書いておいたんだろうな。
でもなぜデータコンストラクタかλが出てきた形ということになるのか ようやく納得した。

あと、Haskellで処理系が世界をmainであるIO()に渡すって話でも少し理解が深まる。 >>=ってのが処理を繋ぐのではなくて、 アクションを合成するってニュアンスの違いがようやく理解できた気がする。
世界は処理系によって最初に一回渡されるだけで、 それは合成されたmainなるIO()に対してだ。
実はreplみたいの(単なるechoでもいい)をHaskellで書いた時に、 その中で起こるread/writeでは世界はどう渡ってくるのか疑問だったものでね。 なんだか、そう見るとHaskellって普通のコンパイル言語とあまり変わんない気がしてきた。
アクションを合成するなんて大袈裟に言ってるけど、ダマされてる。

って言われそうだけど (w

なぜ再帰が分かりにくいの?

なんでカッコがイヤがられるんだろう。という話から派生。

再帰って分かりにくい?

で、なんでかについてなんだけど、

すべてが式だったら値を再帰で求めるのはとても普通にやってるわけだが、 操作を書くことに慣れた人には、その操作を再帰で書くなんて考えてるとしたら、 確かに難しいわな。
納得したけど、別に私が「分かんねーっ!」って困ってるわけじゃないので、 真剣味というか切実さが欠落してる故に簡単に納得しちゃったかも。

cut-sea:2007/05/18 05:49:42 PDT


T43pファン・アセンブリ交換

だいぶ以前からうるさかった。
同機種を保有しているnobsunに聞いたら、 同じだったらしく、すでに交換したとのことだった。

というわけで私もサポート経由で連絡したんだけど、 私の機種で搭載されているファンには2種類あるとのことで、 しかもシリアルNoからではどっちが載ってるか分からないと言われる。

しょーがないから、レノボのサイトからメンテナンスマニュアルを入手して、 関係あるところを印刷して持っておき、開腹して型番を確認。 026R9075とかって型だった。(2K円くらい高い方だった)

これで連絡して、購入申請書を送付してもらったのがGW前のこと。

GW明けに7K円強の振込みをして、購入申請とともに振込みの領収書をFAXしたら、 一昨日宅配で入着。

というわけで昨夜は帰宅後に交換作業をしたんだけど、 nobsunが言うほど簡単じゃなかったぞ。 ファン・アセンブリの取り外しにえらい手間取った。
かなりガッチリ装着されてて、しかも図にはマイナスドライバーみたいのを 横から水平に挿し込むように描いてあるんだけど、無理っす。 どうにも水平になんて挿し込めないし、チップに傷が付きそう。

途中でこりゃあかんと思ったものの、すでに歪曲した板を見ると 引き返すに引き返せない状況でしばしボンヤリ。

最終的にはカクゴを決めてO型流にバキッっとやりました。(^^;
同時になにやら細かな金属板が飛んだんだけど、これなーんだ?

まーいーや。ファン・アセンブリに付いてた止め金みたいなもんだろうとポイッ。
機械なんてな口金さえ合えば良いのさっとマッコイみたく軽口をたたきつつ閉腹。

なんか結構変な汗かいたんで、二度とやんない。cut-sea:2007/05/14 21:15:53 PDT


なぜマクロを使うのか?

久々にnobsunが会社に来てた。
唐突に、「昨日のGaucheNightの座談会の議論の中で ようやく『なぜマクロを使うのか』が分った。」とnobsunが言う。

私は『え?どゆこと?』だった。 実は私もよく分ってなかったということを思い知る。

実を言えば、私もあの議論の中で、 nobsunが「8割9割はほとんど関数で書けるじゃん」と主張した時に、 「あーHaskellerの関数ってのは非正格だから、 マクロを使わなきゃ表現できない構文なんかも関数の 枠組の中で表現できちゃうもんなぁ。 プリミティブとも言えるifでさえ、簡単に定義できるもんなぁ。 そのifにおいてtrueとなるものも自分で意味付けできるし。 つかパターンマッチで書けばいいだけだし。ぶつぶつ。。。」 と正直nobsunの発言の方が理解できたつもりだった。

『でも「(Haskellerの指す)関数を使えばいいじゃん」という回答は まったくの的はずれだったんだ。』とnobsunに教えてもらう。
確かに最初の黒田さんのツッコミは「パフォーマンスのことを考えたことないでしょ?」だったな。 その後Shiroさんの展開した話も、確かにパフォーマンスに関連する話だったようだ。 ふむ、なるほどそらそうだ。

すべてが式ならtreeになるの?

今度はGauche本の「すべてが式である」について議論してて、こんな話になった。

nobsun:「全てが式ならtreeになるんだよ。」
cut-sea: 「そうなの?全てが式な言語でtreeじゃないことってありえないの?」

まぁこれについては、なかなか理屈で納得できたわけじゃないんだけど、 その後の話の展開。

cut-sea:「Haskellって全部が式っすよね?当然。」
nobsun: 「そうだよ」
cut-sea: 「Lispのカッコはtree故だと思うんだけど、 Haskellはなぜカッコまみれにならないの?」
nobsun: 「treeだからカッコまみれになるんじゃないよ。treeを一次元で表現しようとするからカッコまみれになるんだよ。」
cut-sea: 「あー、インデントルールがあるからなぁ。」
nobsun: 「それだけじゃない。あともう一つある。」
cut-sea: 「なんすか?」
nobsun: 「infix opereatorがあるからカッコが減らせるんだ。」
cut-sea: 「なるほど」
nobsun: 「ただし優先順位がでてくるんだけどね。」
cut-sea: 「そうかカッコと引き換えに優先順位の概念を導入したんだ。」

というわけで、カッコの秘密。

Lispがカッコまみれなのは、 「全てが式な言語で、それを前置記法のみを使いながら 一次元で表現しているから」

じゃあなぜ式だけなのか?

これまた盛り上がる。
詳細はもーいーや。(w
ただ、ここから話を進めていく過程で、全てが式ならtreeになるってのも、 なんとなくだけど、分かったような感じもする。
とりあえず、nobsunが月曜までに書くってことで宿題になり解散。
しかしいつものことだけど、nobsunと話をすると、 なんか色々再認識させられることがあるなぁ。 どれもこれも最新の話題とか高度な話じゃなくて、 昔から当たり前の様に理解してなきゃいけないことばかりのような気がするんだけどね。
高いんじゃなくて深いんだなぁ。私にとっては。cut-sea:2007/05/10 09:02:53 PDT


Class Partitioning Class on Kahua

プレゼン資料はこっちです。 ソースとかは貼り付けます。cut-sea:2007/05/10 00:53:54 PDT

こっちね -> Kahua:CPC


GaucheNight

参加。

携帯買い替えよっかなぁ。
残念ながら私のだとどうも写真がボケボケで1枚も撮れなんだ。

座談会がえらい盛り上がったのは、やっぱ黒田さんを注入したからだな。
昨年のLLの関数型言語座談会はまったりすぎで正直退屈だったけど、 やっぱ痛恨の一撃をくれる方が居るとヒートアップする。 和気あいあいじゃーダメなわけよ。
matz氏には足代などが出せず、Skypeになってしまって一番気の毒したなぁ。 現場に居れば反撃のチャンスもあったろうに、あれではつらい。
お子様達も声だけ出演(w
ちょっと場が和みました。

えんどうさんご苦労様でした。 司会もですが、あれだけのメンツを集めたというのが一番のファインプレーっす。
大成功でしたね。cut-sea:2007/05/09 18:20:21 PDT


AWS:実験/CPC

明日Nightで発表予定のClass Partitioning Class on Kahua。
いちおう試してみよーってことで、AWSで作ってるアプリの<book>クラスを CPC継承させてみた。 まーベンチ取れりゃ取っておくのもいいかもしれなかったな。 問題無く動作してやがる。 キーにはASINを使ってる。ユニークだしね。
11万だか12万だかダウンロードされた書籍データが8千件程度の13の仮想クラスにマップ。 find-kahua-instanceを使っている処理はやはり心持ち早い体感。 当然だけど、make-kahua-collectionしてるものは結局全部をかき集めるから、 かわらないか、ちょっと遅くなるよな。 つってもコレクションを再構成する分だけだけど。cut-sea:2007/05/08 00:00:45 PDT


GaucheNight準備

GWは実家でGaucheNightの準備ということでコード書き。
ip reachableだととりあえず聞いちゃうんだけど、 私の実家はunreachなので一人で黙々とやる。 最初はかなりキワドクてアヤシイ挙動をしてて、 バグを追うのも遅々として進まずだった。 振り返ると二重三重にバグやら仕様上の問題やらがあったんだけど、 なんとか全体が見通せて、おかげで動作の方はバッチリになった。
動いてしまえばこっちのもの。 あとはプレゼンをどういう風にするかだけなんだけど、 これが一番問題かも。 なんせエバってみせるのが主体になるからなぁ。(いつもだけど) cut-sea:2007/05/06 05:38:03 PDT


AWS:検索機能

RHG読書会のjavascirpt本読書会の初回で知ったFirebugなんだけど、 jsの機能よりCSSの機能を重宝している。
なんせ、inspenctでWebパーツを選ぶと、CSSのどれが効いてるかよく分かるし、 その場で変更してみてどうなるか確認できる。
shadowされて無効になってるエントリは見え消しされるので、 以前みたいに関係ないところを変更しては変わらないなぁと頭を抱えることも減った。
コーディングの合間とかにたま〜になら、デザインいじりも楽しい。 (多分この楽しさは、CSSデバッガとしてのFirebugを知ったことに起因する。 つまりデバッガ重要なんだなぁとしみじみ。)

というわけで、amazonカラーをチェックしつつ、似たようなカラーデザインに。 重要なのは機能デザインの方なんだけどね。

どうしようと思ってることが多い時は、 実装の見えてるものからやっちゃうってのが案外突破口になることもあるみたい。
ひとまず検索機能を実装したら次のアイディアを練りやすくなった。

実は、検索機能をどう実装するかここ二、三日考えてたんだけど、

  1. 自分で実装。ひたすらローカルのDB内を探す。確実に結果が得られるけど、 12万のオブジェクトのスロットをサーチするのはかなり遅いはず。 籠入娘。やつづらで分ってる。
  2. 形態素解析しておいてタグ化する。 これはあるにも関わらず引っ掛からないケースがありそう。 それなりにマジメに調査して実装しないと無駄骨になる。
  3. AWSを利用する。検索のRESTをAWSにバッチリクエストで投げて、 その結果からDBにあるオブジェクトをマッピングする。 1秒ルールがあり、カート操作には使用せざるを得ないと思ってるので、 AWSをcallしないですむなら極力さけるべきだし、 さらに最高でも20件しか取得できないので、それだけでは不十分かも。 あと、DBに100%のデータがあるとは限らないので、 マッピング時のイレギュラーな処理が面倒くせぇかも。

と、ざっと三種類が頭に浮かんだ。
とりあえず、一番欠点が多そうに見える最後のを採用した。 欠点は多いけど、今回の使用目的としては、どれも致命的ではないから。
最初のはおそらく遅くて使いものにならない可能性大だし、 二番目のもノウハウ溜めてる内に挫折する可能性大。 というのも、すでにタイトルのインデクシングだけで結構ハマってきてるし。 最後のだと、まぁ速度面では問題ないし、こちらのDBとうまく組み合わせて、 それなりに抽出できる皮算用ができてる。(つもり)

ひとまず初期段階としてはさくっと動作するようになった。 次はローカルに持ってるDBからうまくイモズル式に引き出すロジックを書くことに。

タスクとかもぞろぞろ出始めたので、少し前からKHeadのつづらで管理をはじめた。cut-sea:2007/04/27 09:04:28 PDT

今の時点の画像。

[image]


AWS:MySQL移行

さすがにインデックスをガンガン張るようにしたら、 efsだと8万件を超えたあたりからぐっと取り込みが遅くなることが分かったので、 MySQLをバックエンドに変更。
Lingrでさんに教えてもらいつつ起動まで。

/etc/mk.confに

MYSQL_CHARSET=eucjpms

を入れてpkgsrcのdatabase/mysql5-serverをrebuildしてinstall。

昨夜は4:00頃まで色々いじってから取り込みを開始したけど、 朝には12万件弱のデータの取り込みまでが完了。
最後の方も様子を見てたけど、さすが速度は一向に落ちてなかった。 構造上当然といえば当然だけど。cut-sea:2007/04/26 22:24:47 PDT


AWS:アップデート

どうも変。更新にこんな時間がかかるというのは、なんかおかしい。 基本的にはfind-kahua-instanceしてあればset!なきゃmakeするだけ。
同じコードでダウンロードしてたけど、更新だからって時間がかかるものか?

一日たってもほとんどタイムスタンプが更新されてないのはなぜだろう。 となりでpkgsrcのupdateもやってるから多少遅くなるとは思うんだけど、 あまりにも遅すぎて使いものにならない。

更新しないわけにもいかないし、ちょっと面倒だけど、もう一度最初から順にやり直すか。cut-sea:2007/04/21 10:14:23 PDT


AWS:ダウンロード

あーそっか。多分BrowseNodeを再帰的に辿ればいいんだ。
BrowseNodeを辿れば徐々に絞り込めるらしいんだけど、 それは少しずつ細かなカテゴリに分割していることと同じ。

ってことは、あとは3200ページ以下になるところで実際にダウンロードを行い、 それ以上のページ数がある内は再帰的に子供のBrowseNodeを検索していけばいいハズ。

複数のBrowseNodeにぶら下っているのもありうるから、重複はしてるだろうけど、 必ずどれかには所属してるだろうから、この方法で全部取得できるんじゃないかな。

私の取得したかったBrowseNodeは、実際そのようにして再帰的にさがすと、 55のBrowseNodeまでいき、それぞれの商品点数のリストは、

(22912 20435 24187 16639 223 1747 578 6166 524 1038 157 1850 
190 3692 534 135 585 13233 1535 122 19380 27476 448 889 338 49
 823 328 1499 116 2780 934 1115 3811 910 241 3466 26 441 222 353
 31 812 7293 5259 4647 6259 2123 4507 4837 4241 10092 9239 5411 7)

ってなり、トータルで246,885点の商品点数になる。
トップのBrowseNodeの持つ点数の倍近くになるが、大抵は重複しているはずだ。 それはBrowseNodeの名前を見るとなんとなく分かる。 直交する概念でカテゴリが切られてたりするから。

というわけで、今著者をキーにして取得している処理が終了したら、 このロジックでも試してみるとしよう。cut-sea:2007/04/18 09:41:17 PDT

BrowseNode再帰取得では92000件くらい取得できた。 夜中に見てたら、

  1. 8万件以降から重複分にぶつかるらしく、新規取得件数が激減する。
  2. 数百ページのBrowseNodeで後半まともにデータが得られないものがある?

後者は調査要だが、フォーラムとか見ててもそういうケースはしばしばありそうなので、 あまり当面はこだわらないことにする。cut-sea:2007/04/19 19:34:40 PDT


matzにっき

現実世界に「状態」があるのに、プログラミング言語がそれを表現できない 
(ということは、間接的に表現しなければならない)というのは、
私の脳内モデルとプログラムの距離が遠くなって大変つらい。

nobsunと話をしてて、よく現実世界に副作用があるんだから(w
って私も言うんだけど、それはある種挨拶みたいなもんになりつつあるな。
とりあえずちょっかいを出してみるという。

関数プログラマというか純粋プログラマというか、そういう方々は、 全部新しく作っちゃうんだよねぇきっと。
「1秒あとの自分は別の自分」な感覚でプログラムを組んでいる。

つまり、オブジェクトが状態を持ってて、 プロパティの値を書き換えることで状態を表すんじゃなくて、 オブジェクトに変化があったらその変化があった別のオブジェクトを作っちゃう。 常にmakeしてるんだよね。
ただ都度作ってるって感覚があるかというと無いんじゃないかと思うけど。

例えば、

(define-class <human> ()
  ((name :accessor name-of :init-keyword :name :init-value "")
   (age  :accessor age-of  :init-keyword :age  :init-value 0)))

(define cut-sea (make <human> :name "cut-sea" :age 36))

ここでcut-seaが37になった時にOO的には

(set! (age-of cut-sea) (+ (age-of cut-sea) 1))

とするんだけど、そうじゃなくて

(make <human> :name (name-of cut-sea) :age (+ (age-of cut-sea) 1))

したものを次なるcut-seaにするわけだね。

で、昔の自分にアクセスできちゃうとまずいから、 作るたびにletして、よりローカルな環境にもぐっていく。

(let1 cut-sea (make <human> :name "cut-sea" :age 36)
    ... ;; 36才でなすべきことをやらせる
  (let1 cut-sea (make <human> :name (name-of cut-sea) :age (+ (age-of cut-sea) 1))
     .....  ;; 37才でなすべきことをやらせる

そうすると昔の自分より新しい自分が近くに見えるから、 シャドウされて新しい自分だけが対象になる。

そういう感覚なんじゃないかな。
ちょっと厳密な話をツッコミ入れられると答えに窮するけど、 レキシカルスコープさえあれば、FP的なのは評価順が関係ないのに対して、 OO的なのはどういう順で更新されるかが重要で意味が変わってきちゃう。 ってのがFPな人たちの主張するところの一つなのかなぁと。cut-sea:2007/04/16 20:12:00 PDT


AWSの制限がまたひとつ

Gaucheのcharconvのfixのおかげで、SANITIZEが不要になった。
ところがまた、エラーが発生している。 調べたら、またひとつAWSの制限が見えてきた。

ItemPageは1から3200までしか指定できない。

らしい。そーいやそういう話をしてた人もいたな。

今対象にしているBooksでは14000ページくらいになる。 商品点数が140000くらいあるから。

ところが、その内の3200ページまでしか取得できないんだと。 それでも3万点以上の商品になるのだから多いんだけど、 そういう問題じゃないんだよねぇ。

カートの操作はAWSをcallせにゃならんと思ったから、 商品はローカルにダウンロードした情報を使うことでいけそうと思ってたんだけど、 夜間バッチで全商品をダウンロードできないとなると話が変わってくるよ。トホホ。

もちろん、ソート順や検索条件を換えれば、取得できるものもでてくるだろうけど、 確実に全商品データを取得する方法がなさそうに思える。 無駄もおおそうだしなぁ。

さて、どうしよう。cut-sea:2007/04/16 09:48:54 PDT


AWSのResponseをサニタイズ

データのダウンロードをしてたら、えらい失敗するケースが多いことに気付いた。
Kahuaがダメなのかと思ったら、<Brand>タグの値が文字化けしている現象が、 思いのほか多いことがわかった。つーかますます増えてる?ダメじゃん。

ところが、Brandタグを含まないようなSmallなデータだと、欲しい情報に足りない。 つーわけで、しょーがあんめえ。
サニタイズするか。
ってことで、とりあえず、動くものをでっちあげ。 正規表現を使うと一発で除去できると思ったら、そっちはエラーになっちゃう。残念。

(define (SANITIZE str)
  (apply string-append
         (map-with-index
          (lambda (o i)
            (if (even? o) i ""))
          (append-map (cut string-split <> "</Brand>")
                      (string-split str "<Brand>")))))

なんともマヌケなんで早く修復してくんねーかなーアマゾンさん。cut-sea:2007/04/16 03:08:14 PDT


AWSデータキャッシュ

うだうだ考えててもしょーがないので、ともかくキャッシュをするようにしよう。
これはやるしかなさそうだし、AWS的にもそうしろってことだし。

ということで、1sec sleepして20件ずつダウンロードしてはinstance化してみたが、 とりあえずco.jpのBooksのみに絞っても、ざっと計算して2Hr以上かかる。 1Hrキャッシュ制限だとするとすでに使いものにならない。
たぶん24Hrなんだろう。つーかちゃんと調べろ。オレ。

自由に絞り込んだ時に1個以上古いのがまぎれこんでいると、 データを取りだすのに一般に2callしなきゃならん。 残念ながら、AWSのクエリの能力がそんな十分じゃないのよ。 複数ASINを指定してLookupできればいいけど、それがバッチリクエストってやつでも 2個までしか取得できない。
つまり、たまたま同じページで10件同時に取得できるような キセキに期待するしかないわけで、それは無理だし、それでも20件が上限だし。

しかし、この時点で12000以上id-counterがまわって、 Kahua的にも未知の領域に突入したんじゃないかな。 すくなくともこれまでmake-kahua-collectionで数秒待たされる経験はしてない。 つまり、ここではフルのmake-kahua-collectionを使っちゃダメだ。
とすると複数のデータを取得するのに、index slotを上手く活用して、 ある程度まとめておくようにしておきたい。 発売月単位とか、キーワード単位とか、著者単位とか。cut-sea


AWS結構不便じゃね?

Kahuaでアプリを書いてみてるんだが、 AWSっていろんなことが出来そうなのに、実は意外に苦しい。

それぞれの条件は、まぁなるほどと思うんだけど、 全部を満たそうとすると結構厳しい。

まず、最初の1secルールと2番目の10件の上限。 バッチリクエストしたとしても20件じゃあまり変わらない。
はっきり言ってAWSのクエリはSQLほど強力なものじゃないので、 精密に条件を指定して欲しいデータのみ得ることができません。全然ダメ。

そうすると、callを増やさざるを得ないんだけど、 1secルールがあるから、そう富豪的にcallする訳にもいかない。 表示されるまでに何秒も待たされるなんてそんなバカなことはないわな。

結果としてキャッシュする機構とその情報の管理が重要になる。
大抵の情報は実は3ヶ月までキャッシュしていいとされている。 とは言え、当然価格などの重要な情報はこまかく変化するし、 24Hrだか1Hrだかしかキャッシュが認められてない。
だいたい3ヶ月以上キャッシュしていい情報は、 ユーザにとってはどーでもいいのが多い。

結局は短命な情報こそが頻繁に表示したくなるもので、 アクセス頻度はこの短命な情報に依存する。 キャッシュするにしても取得する周期はそれに依存する。

いろいろと、使いやすいUIを考えてもそれを実現するには、 キャッシュを細かく制御しないといけなかったり、 複数マシンを使ってクエリを投げて、それを纏めたりの機構がいりそう。 そうでないなら、この画面に表示してて欲しいけど、 表示するわけにはいかないっていうような結構不親切な画面になっちゃう。

実はこのあと、色々やりたいことがあったんだけど、 どうも、こういう使い方じゃダメなんじゃないかと思いはじめている。 cut-sea:2007/04/15 08:06:02 PDT


美少女セレブ?

なんじゃそら(w
でもツッコまずにはいられない。

ついさっきTVでCMやってて、あまりにキャッチーなので大爆笑!
昔美少女戦士とかってのがあったけど、なんか主婦が主役らしい。

憶測だけど、最近は子供と一緒にウルトラマンとか見て、 イケメン俳優にのめり込むママさんがいるから、 今度はそのママさん自体を責めようというのかな。 財布握ってるの彼女達だしね。

で、驚愕のセリフを叫んどったよ。

「シロガネーゼ アターッッッックー!」

正気ですか?(w cut-sea:2007/04/13 18:41:30 PDT


AWS

前回Festで実装。 一応見える範囲では一通り実装した。 これからが本番。 すでにアイディアはあるんだが、ながらく実装してなかったサービスをKahuaで実装するのだ。cut-sea:2007/04/10 18:09:20 PDT

こっちね。-> Gauche:AWS


synergy

先月までの仕事では結構な量のファイルを同時に開いてないと とてもやってられなかったので、 同僚に進められてsynergyを使ってた。
これがメチャメチャ便利で、とてもじゃないがコレなしに 複数台のマシンで仕事できないカラダになってしまった。

で、聞いたらNetBSDにもpkgsrcがあるってことだったので早速buildしてsynergyってみた。
WindowsマシンとNetBSDでコラボ。 あっちでコピーこっちでペースト。:)cut-sea:2007/04/05 18:06:41 PDT


syntax-case理解への第一歩か

あ、なんとなく視点が得られた感触。 一応記録しておこう。2007/03/28 08:45:27 PDTです。

参照は以下。

もーネタはKent DybvigのPortable syntax-caseやら srfi-93(このAutherもKent)のサンプルコードに尽きるって感じか。

最後の村上氏訳のR.Kent Dybvig本の拡張シンタックスは 以前まるでチンプンカンプンだったけど、少し手触りが…。cut-sea:2007/03/28 08:44:19 PDT


無双

ガ■ダム無双ではない。 将棋無双ってやつ。 (ゴメンね。例によってGaucheSchemeも関係なしです。)

江戸時代九段が名人、八段が準名人だったんだって。 当時の名人とか段位の認定がどういう制度かよく知らないけど、 世襲といいつつ実質実力制でもあったとか。 つまり、子が実力不足なら弟子などから養子を取って世襲させたんだとさ。 また、実力ある者が不在の時には空位になることも実際にあったそうな。

で、準名人になると、将軍(某国のカレじゃないよ)に図式を献上していたという。 図式とは詰将棋のこと。
これは名誉でもあり、門外不出の宝物だったんだってさ。

当然、準名人になると皆自分のジツリキの高さを見せつけんと張り切ったらしい。 どんどん難度は上がっていったと以前米長さんがTVで解説してた。
そして、今なお越えられないとされる最高傑作が 伊藤宗看と伊藤看寿の兄弟により世に残されるわけよ。
(それにより一気に図式献上に対して熱が冷めてしまったとかって話もしてたように思う。 要するにスゴすぎて、後続の方々はすっかり戦意喪失になっちゃたんだね。)

ともあれ彼らは、それぞれ将棋無双と将棋図巧という図式を献上した。 図式は100題ずつあり、長らく正解手順が不明だったため、 『詰むや詰まざるや』と呼ばれるようになったんだって。

この将棋無双と将棋図巧はまさに『詰むや詰まざるや』というタイトルで 今でもAmazonでポチれる。
私も持ってはいたが、読むことなさげーとか思ってた。 ところが、最近「秘伝 将棋無双」という本が出版されたのよ。

あえて言えば、「はじめての人のためのLISP」のような感じで、 伊藤家の師範の一馬が三人の入門希望者と対話を通して詰将棋を教え、 無双の難問のうち、20題を解いていくという趣向である。 分かりやすく、細かな変化についても解説してくれていて面白い。

しかし、よくもまぁこんな巧妙なものを作れるものだと感心するというか、 コンピュータが無い時代に作ったものと言われてもちょっと信じ難い。

どうやら解いてみたくなってきましたよ、『詰むや詰まざるや』。 単に難問なだけじゃないし、手数が多いだけでもない。 本筋・裏筋いずれもキラリと光る手筋が潜んでいて、 一問ごとにちょっとした感動が味わえる。 コラムもなかなか面白い話がいっぱいで、 これは実に楽しい本です。星5つって所でしょうか。cut-sea:2007/03/02 05:30:36 PST


DocFest

金曜のつもりで出てきたら土曜でした。 しかたなくFestに参加。(w

こっちね -> Scheme:使いたい人のための継続入門 prefix微妙だな。cut-sea:2007/02/03 02:33:26 PST


スノボ

楽しかった。
昨年のツアーに続き今回2回目。

初日は猫魔で、午前中はスクール。 最初はノーズドロップとか、ごくごく普通に教えてもらってたのが、 徐々に変則的なことばっかやってた気がする。

後ろ足のバインディングをはずして、 足を上げたり前後に突き出したりしながら滑ったり、 超前傾+ノーズを掴んで滑ったり(地面しか見えない)、軽くジャンプしてみたり、 向きを変えて回転したり(前後逆になった瞬間は重心が分かんなくなる)、 下半身だけ回転させて止まったり。
インストラクターの人は、もっといろいろ試してみなさい、 って事を伝えたかったようだ。
基本は基本で重要だけど、上に行けば当然やり方も変わってくるし、 漫然とやってると、皆フツーに滑れるようになるから、 4-5年でやめてしまうんだとか。
どんどん試してバリエーションを増やせば、いくらでも楽しくなるってさ。 午後はスクールを抜けてターンの復習ばっかやってた。

2日目はグランデコ。ただし、東京に戻るので午前中のみの滑走。
昨年は緩斜面(当時の私には緩斜面という程緩斜面ではない)の広いところを 何度も繰り返し滑っただけだけど、 今年は「大丈夫だから」と言われててっぺんまで連れてかれて、急斜面を経験。

リフトを降りて、さて行こうとしたら…えーっと、前が無いんですけど?(^^;
斜面がストンと落ちてて、マジ恐怖で顔ヒクつきました。
人がエスカレーターに吸い込まれていくみたいに、 次々姿を消してくのを、しばらく指くわえて見てましたよ。

で、意を決してサイドスリップから様子を伺うようソロソロと。
急斜面で自分のターンできる限界を知るべし! っつー教えを戴いたので、確認してきたわけですが、 山向きからノーズドロップして谷向きになる方向はギリで出来るかどうか。 ただボードがハネて制御できないこと多し。
谷向きからのノーズドロップはムリポ。
多分、不得手な方向に終端する場合は自信を持って前傾できないからってのと、 下を見るとそれだけで腰が引けちゃうからだけど、 もう転げ落ちるって感じです。止まりませんもの。
あそこをターンでガンガン行けるようになる日が到来するとは想像つきまへん。 腰を下ろしてても、下にズリ落ちそうで恐かったくせに、 下に降りるとノド元過ぎればなんとやらで、再挑戦。 2回挑戦したけど、ほとんど歯がたたないのが楽しい。 最初の一部をのぞけば、あとは丁度自分の限界レベルと思われる斜面で、 スっ飛ぶか曲り切れるかって感じでスピードも出て、 緩斜面と違って、もう笑いが止まんないっす。
スリルがあるのと、転んだ時もイキオイがある方が 体へのダメージが一点に集中しないので、案外イタくない(気がする)。

あとは以前ギリギリだと思ってた斜面が緩く見えるから、 自然と力が抜けて余裕を持ってスベれる。

というワケで、昨年末の「ゲレンデで笑い転げてます」という予告を少し訂正。 「ゲレンデを笑い転げ落ちてます」でした。cut-sea:2007/01/21 13:39:42 PST


Kahuaセミナー

いよいよ明日です。
皆さん心の準備は良いですか?>主に主催者(^^;
残念ながら私は夕刻から雲隠れ。cut-sea:2007/01/18 17:23:18 PST


Gauche 0.8.9

アップデートした。
先日Ruiさんがコミッターになったようなので、 正規表現エンジンとか近い内にPerl並に爆速になってくれるかな:-)。
パフォーマンスについてはShiroさんも 今年あたり本気で掛るつもりの様だから全体的な面でも期待。
別に現段階でパフォーマンスに不満は別段無いんだけどね。

最近は必ずc-wrapperも入れる。 早くGauche標準になるといいなぁ。:-)

Gauche-gl 0.4.3

こっちも一応アップデート。
gearsが爆速。(例によってglxgearsより速く見えるのは笑える):-)
LD_LIBRARY_PATHをGauche:NetBSDに書いてある様な変更を入れて、 それとsrc/MakefileのCFLAGS末尾に-I/usr/pkg/includeを追加でmake checkまでOK。

javascript

先週末にRHGで勉強。
クラス方式とプロトタイプ方式って静的型言語と動的型言語みたいな対応関係を感じる。
クラス方式はクラスの構造を定義の名の元に宣言している。
一方javascriptの場合には、宣言せずにちょこちょことプロパティ (関数も第一級みたいだから値として関数を付けれはメソッドになる)を 追加していくことで所望のオブジェクトを作ってる。
クラスとオブジェクトの区別はなく、 あるとしたらプログラマの頭の中にそれっぽい構造をイメージしてるだけかな。 当然、クラス方式は、そのクラスがどういう構造かが分かりやすいが、 宣言(定義)が必要。
一方、プロトタイプ方式は宣言しないでいいから慣れると楽そうだけど、 それがどういうモノかが分かり難くなりそうだ。cut-sea:2007/01/17 17:17:43 PST

More ...