トップ 最新 追記

じじぃの日記、ツッコミ可

Twitter: @jijixi_org
Xbox Live: jijixi

初心者が書いた OCaml 入門
Spotlight tips サイト内リンク集
1970|01|02|
2003|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|11|
2011|05|
2012|01|

2006-02-02 [長年日記]

% [game] セガラリー日記、復帰編

ようやく体調が良くなってきたんでセガラリーとかやってる。 いや、他にやる事あるだろーって話ではあるんだが、まあなんつーのかリハビリ(謎)ってことで。

二つあるメモリーカードのどちらがメインで使ってたものか忘れたんで、適当に入れてみたら 206RC に乗ってた古い方のだった。 んで、どうせインプだって行き詰まってるんだからこっちで良いや…と思って 206 をマニュアルで乗るようにしてまったりプレイ。

んー、多少成績は良くなったか? 誤差の範囲な気もするが。

四年目の真ん中くらいでやめてたんだけど、そこから半年くらいプレイしたらプジョーから SRC 参戦のオファーが。 大した成績も残してないのに、チャレンジャーだなあ(笑

そんな感じで、せっかくだから契約。 まあ、あんまりまじめにやる気無いので、すぐにアマに落とされると思うけど。


2006-02-06 [長年日記]

% [雑談] スーパーボウル観戦記

今年もリアルタイムで見る事ができたよ。 何はともあれ古豪復活おめでとう。 後から録画を見ようと思ってる人には悪いけど、感想書くですよ。 ネタバレ注意ってことで。

基本的にひいきのチームとかは無くて、接戦が見たいだけというわしとしては、後半は一貫してシアトルを応援してたわけだが。 ……なんつーか、ミス多すぎね。 あと、あんまりこういう見方をするのは良くないと思うけど、微妙な判定が全体的にピッツバーグ寄りで、何となくホームタウンデシジョン(厳密には違うけど)のような感じを受けた。 1Q でタッチダウンを取り消されたパスインターフェアランスだって、あんなの普通取るか?と思ったし。 押してねえよ。

まあ、それは置いといてもシアトルはミスが多すぎた。 プレイコールでは勝ってるのに、選手がミスして(特にレシーバー。スティーブンスのアホめ)台無しにしてる感じ。 ヘッドコーチがカワイソス。 逆にビッツバーグはレシーバーがすげえがんばってたね。 クォーターバックの調子は良くなかったみたいで、結構パスミスくさいのがあったけど、すごいキャッチングで救ってたり。

結局、最終的に勝負を決めたのはやっぱ、リバースからのトリックプレイかなあ。 普通リバースって距離が出ないプレイだけど、そっから RB がロングパス投げちゃうんだもんな。 あのシリーズをうまく守りきってれば、まだシアトルにも勝ち目があったんだけどねえ。 あれを決められた時点で、残り時間から言ってもやれることが限られちゃって、もうほとんど勝ち目無し。

接戦マニアとしては、最後はもう少しがんばって、オンサイドキック蹴るくらいのシチュエーションまでは持ち込んで欲しかったけど、それを望むのは酷ってもんか。 ともあれ、ビッグプレイも結構あったし、なかなか楽しめたと思う。 ……接戦マニアにはちょっと物足りなかったけど(苦笑

% [雑談] 今日はとても良い天気です

こんな日は外に出て……外に出て……屋根の雪下ろしだぁ、ゎぁ〜ぃ...orz

まあ、わしは極度のキョウショコウフショウ…もとい高所恐怖症なので、屋根には上らずに落ちてきたのを処理する係ですが。 硬く締まった雪だから重くて重くて。 つらいので一旦休憩中(つまり、まだ終わってない)。

ところで、高所恐怖症の辛さは高所恐怖症の人にしかわからないなどと申します。 ほんとの高所恐怖症ってのは、高いとこに行くと身体に力が入らなくなるのです。 「落ちると死ぬから怖い」とかそういう頭で考えるレベルじゃないのです。 何ともない人から「全然何ともないじゃん」(言外に「変な奴」と言いたげな匂いがする)とか言われると張り倒したくなりますね。

どうせそうではない人に説明してもわかってもらえないので、大抵「落ちたら死ぬとか、けがするとかっていう高さの場所で恐怖を感じない方がおかしい」とか言ってお茶を濁しますが、高所恐怖症ってのはもっと根源的な部分の症状であって、ある種のトラウマみたいなもんで本人の意志で簡単にどうこうなるもんじゃありません。 理解しろってのは無理かもしれないけど、せめてそうするフリくらいはできるようになって欲しいもんですよ、皆さん。

% [雑談] 終了

背筋痛い。 腕ダルい。 手に豆できた。

わーい、三冠王。 ……マジ疲れた。 まあ、パパンの方がもっと働いてるんだが。

どう見てもわしの方が年寄りくさいです。 本当にありがとうございました。

% [PC] リンクス、竹製のキーボードを発表 - その名も「竹千代」(MYCOM PC WEB)

タイトルでちょっと反応したが、記事の中身見てがっかり。 キートップが竹じゃないなら意味ないじゃん。 そんなもん誰が欲しいのかと問い詰めたい。

同じ事思った人はたくさんいるはずだ。 少なくとも一人はいた

どうでも良いが、キートップまで全部竹でできてるキーボードって、想像するとものすごく気持ち良さそうなんだけど、どっかで作らないものかね。

% [PC][Mac] fontconfig ってわけわかんねえ

いつの頃からか、iMac G5 に fink で入れた Firefox の bbs2chreader で mona フォントじゃなく Osaka が使われるようになってしまって困っていたのである。

そもそも bbs2chreader のフォント指定が決め打ちで、

font-family: "MS Pゴシック", Osaka, "mona-gothic-jisx0208.1990-0", sans-serif;

みたいになってるのがどうなのよ?という気がしないでもないんだが。 つか、見た目の再現度から言って Osaka は mona の後にして欲しいところだ。

まあそれはともかく、なんで Osaka が出てくるのん?と思いながら、xfontsel で見てみても Osaka なんて無い。 無いんだが、Firefox のフォントメニューには存在する。

原因は、fc-cache に -v オプションを付けて実行して初めてわかった。 なぜか /System/Library/Fonts とかまで見に行ってんの。 ハッハッハ、キミキミ、それは余計なお世話です。

と言うわけで、その辺の設定をどこでやってるか調べると、どうやら /etc/fonts/fonts.conf のよう。 xset q とかでフォントパス調べても /System/Library/Fonts なんて入ってないし、すごく悩んだぞ。 最近の X のフォント事情はわけわかんないや。 しかし設定ファイルは XML かよ、見づれえな。 とかブツブツ言いつつ眺めるが……このデフォルトファイルに設定されてる <dir> 要素を ~/.fonts.conf とかで上書きというか削除する方法がわからない。 <dir> 要素一つごとに追加されるってのはわかるんだけど、いらないものがデフォルトで設定されてるときにそれを無かった事にしたい場合どうすりゃ良いの?

結局どうしてもわからんので、仕方なく /etc/fonts/fonts.conf 自体を編集しちゃったよ。 ああ、クールじゃない。

ちなみに、この設定ファイル自体はもう何ヶ月もいじられてなかったっぽいんで、最近の fontconfig のアップデートで dfont ファイルも(今まではダメだったのが)有効になったってことなのかね。

% [雑談] 竹千代は今年度のがっかりアイテム大賞ノミネートってことで

そんな賞は無いけど。

向井さんが教えてくれた二人目(ツッコミ欄参照)に続き、たださんもがっかり発言(笑

ちなみにわしは、たださん、向井さん、Matz さんあたりの MM/Memo を RSS でこっそりチェックしてたりする。 あと、otsune さんは del.icio.us に一本化したっぽいんで、そっちを。

たださんのは、本人の日記ページから見つけたけど、向井さん、Matz さんは『似た傾向のメモ』(だったっけ?)を適当に突っついてるうちに見つけたんだと思った。 でも、この機能っていつの間にか消えてるみたいね。 暇つぶしに最適だったんだけどなあ(苦笑

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

% Zapper [なんだ八墓村は無関係なのか、つまらん <竹キーボ]

% Zapper [硬質軽合金に溶融亜鉛メッキで酸化防止処理したキーボードとか出ないかな、スイッチはCherry社のMX tactile..]

% jijixi [まあ、竹にしろ何にしろ技術の問題というより、コストの問題なんだろうけどね。]


2006-02-07 [長年日記]

% [雑談] 本日の戦果

昨日は雪も降らなかったし、車に雪が乗っかってないからわりと早めに出発できて、路面状況も良かったんで快調に進む状態。 そんな感じで気分を良くしていると、札幌市内に入った辺りからやたら道が混み始める。 あら〜?

特別渋滞するような要因があるようにも見えないんだが、なぜか渋滞しまくり。 出だしは良かったのになあ……と、がっかりしながらトロトロ進みつつ、ようやく気付く。 「ぐあ、今週って雪祭りだった...orz」

観光客の車が……てのもあるだろうけど、たしか大通りの辺りが通行規制かかるんで、普段そこら辺走ってるのが別の道に流れてきてるせいで混んでるんだろうなあ。 雪祭りなんつー個人的にどうでも良いようなイベントのせいで迷惑をこうむると、なんかすごくぐったりするよ。

今週一杯は憂鬱な日々が続きそうだ。

% [vim] .vimrc 晒しが流行ってるらしい

いくつか拝見させてもらったが、とてもじゃないが自分のなんてはずかしくて晒す勇気は出なかった(苦笑)。 ……けどまあ、役に立つ立たないは別として、基本的な部分の設定をどうしてるかってのは個性が出てておもしろいと思ったんで、その辺くらいは晒してみようかなと。 てことで、抜粋だけど……

set shiftwidth=3
set softtabstop=3
set smarttab
set expandtab
set number
set showmatch
set undolevels=0
set nobackup

au BufNewFile *.m setlocal filetype=objc
au BufNewFile *.m setlocal indentkeys=0{,0},0#,!^F,o,O,e,<:>
au BufNewFile,BufRead *.fs,*.fsi setlocal filetype=ocaml

set foldmethod=indent
set nofoldenable

set encoding=cp932
if has('iconv')
   set fileencodings=iso-2022-jp,utf-8,utf-16,ucs-2-internal,ucs-2
   if has('unix')
      set fileencodings+=,cp932,shift-jis,japan
   else
      set fileencodings+=,euc-jp,japan,shift-jis
   endif
endif

if has("cscope")
   set cscopeprg=/usr/local/bin/cscope
   set cscopetag
   set cscopetagorder=0

   set nocscopeverbose
   if filereadable("cscope.out")
      cs add cscope.out
   elseif $CSCOPE_DB != ""
      cs add $CSCOPE_DB
   endif
   set cscopeverbose
endif

3タブ同盟ソフトタブ派なんで、shiftwidth とかは 3 ね。 iconv 関係はどっかのメーリングリストで教えてもらったもの。 cscope 関係はなんかの雑誌で読んだものだったかな。

あと、基本的に Windows 用の vim に付いてくる vimrc の雛型をベースにしてるんで、その部分には何だかいろいろ書いてある。

% [雑談] あーなんだろー

なんか忙しいっぽいっすよ?あれー?

% [OCaml][vim] .ocamlinit 晒し

mmatsuoka さんから .vimrc の件でトラックバックが来てたんだけど、そのついでの .ocamlinit ネタがえらいことになってますな(笑

そういやわしはほとんど .ocamlinit なんていじった事無いなあ……と思いながら一応見てみると、なんか camomile を使おうとしてうまくいかなかった残骸が書いてあるだけだったとさ。 (残骸なので、コメントアウトしてあった)

つーかわしって、最近になって godi を使い始めるまで ocamlfind とかもろくに使った事無かった人なんで、シェルのエイリアスで…

alias iocaml='ledit ocaml str.cma nums.cma unix.cma -I +threads threads.cma'

とか書くだけでお腹一杯だったんだよね(苦笑

あと vim からのときは、

:let ocaml = "!ocaml str.cma nums.cma unix.cma -I +threads threads.cma %"

とか設定しておいて、

:exe ocaml

みたいにしたりしたこともあるかな。 ぶっちゃけ、OCaml を使い始めた頃すでに .ocamlinit は知ってたけど、その頃はあまり使い道が無くて、そのまま存在を忘れ去ってたりした。 シェルとか vim の設定で逃げるのがクセになってたし。 でも ocamlfind が絡んでくると、こっちの方が便利っぽいから今度からは使うようにしようかな。

本日のツッコミ(全1件) [ツッコミを入れる]

% TrackBack [http://d.hatena.ne.jp/mmatsuoka/20060207#1139315921 晩ごはんの履..]


2006-02-08 [長年日記]

% [雑談] NaCl で働きたい

とか書いとけば、誰かスカウトに来てくれないかな。はてなみたいに。

話を聞く限りでは、理想の職場なんだよな。 むしろ問題はわしのスキルにあるわけで(苦笑

  • これはまかせとけという言語
    • 無い...orz
  • 多少は書けますという言語
    • C
    • Ruby
    • OCaml
  • がんばれば何とかならなくもない言語
    • Python
    • Scheme
    • Java
    • Objective-C
    • VB.NET
    • C++ (テンプレートはわかんない)
  • 一応文法くらいは知ってますな言語
    • Perl
    • Haskell
    • 他いろいろ

……あー……ダメだろ、これじゃ。 ツールとしてちょろっとプログラムを書くことはあるけど、プログラムを書くこと自体でお金をもらったことはありません。 あ、一回あるけど、あれはこういう方面的にはノーカンの部類だろうなあ。

この日記を読んでる人が、わしに対してどんなイメージを持ってるかはわからないが、まあこんな感じなんで、技術的なことが書いてあっても鵜呑みにしてはいけないよ。

ところで、昨日の .vimrc ネタでも思ったけど、これを誰か五人に回すと『プログラミング言語バトン』とかになるなあ。 いや、回さないけどね。

% [雑談] 背筋の痛みが案の定腰に移ってきた

ゲンミツに言うと、背筋が筋肉痛でちゃんと働いてないから、その分腰に負担が来たって感じかね。 筋肉痛の方はもうほとんど平気なんだけど、腰が痛くてかなわんよ。

いやまあ、なんちゅーかかんちゅーか、決定的に運動不足なのがそもそも良くないわけだけどさ。 いかんなあ、とは思ってるんだがどうにも……

% [雑談] 紙に出力された C のコードを読むのがこんなにツライなんて知らなかったよ

もうね、シンタックスハイライトが無いと他人が書いたコードなんて読んでらんない。

あと、謎の略称使った変数名とか勘弁して欲しい。 わしはエスパーじゃないぞ。 nmb はおそらく number なんだろうなあ……略すなら num にしろよ(ぐったり


2006-02-09 [長年日記]

% [雑談] 炭酸ボンベ

わりと良い。舌にビリビリ来る感じがステキ。 ガラナ&炭酸中毒の人はどぞ。

舌にクルのは炭酸じゃなくて、トウガラシエキスなんじゃないかという気がしないでもないが……

% [雑談] 良い事なのか悪い事なのか

雇い主を変えて今の立場をもう一年延長って話が出てきた。

詳しい話をまだ聞いてないんで何とも言えないが、土壇場で日和った話が出てきちゃったなあ。 当然、ダメ人間のわしとしては楽な方に流されがちな訳で…… つーか、今の職場は給料が安いこと以外不満が無いしなあ。

いや、「しっかりせな」って気持ちはあるにはあるんですよ。 あるんだけどさ……ね?(ぉぃ

% [PC] VMware Server Beta

昨日落としておいた Windows 版をインストールしてみた。

……なんかすごく普通に VMware だな。 これがほんとに正式版になってもフリーで使えるなら、おいしすぎやしないか。

ともあれ、ちょろちょろ遊んでみることにしよう。

% [まんが] 惑星のさみだれ(リンクは Amazon)

最近注目の漫画家『水上悟志』の最新作。 第一話を読んだ時点では「サンデーとかに載ってそう」なアリガチ話かと思ったんだけど、良い意味で予想を裏切ってくれてて良い。

それにしても、前作『散人左道』のペン太といい、今作のノイといい、マスコットキャラに味がありすぎる(笑

短編集『げこげこ』もなかなか良い味出してるよ。


2006-02-10 [長年日記]

% [雑談] バスケットボール経験者を見分ける方法

バスケ経験者(少なくともある程度ちゃんとした指導を受けた者)には、人とすれ違うときにあるクセが出る。 狭い通路なんかですれ違うときに、身体を横向きにしなきゃならないというシチュエーションがあると思うが、そういうときバスケ経験者はほぼ間違いなく相手側の肩を前に(つまり相手に背中を向ける形で)してすれ違うはずだ。 ちなみに、わしが観察した限りでは、未経験者は大抵外側の肩を前に(相手の方を向く形で)してすれ違う。

バスケでは(特に攻撃のとき)マッチアップした相手を背後に位置させることが重要で、そのための動きをみっちり叩き込まれる。 なんでそれが重要なのかというと、ボールは身体の前側で扱うものだからだ。 そして、ディフェンスが背中側からできることは少ないので、そうなってくれた方がオフェンスとしては都合が良いわけ。

んでまあ、そのみっちり叩き込まれた動きが、ついつい無意識に出てしまうはずなのである。 少なくともわしはそうで、もう 10 年くらいはバスケなんてやってないのに、いまだにこのクセは抜けないのであった。

% [雑談] なんでこんなこと思ったかというと…

スーパーボウルを見たばかりだから。 アメフトの試合を見るといつも思うんだけど、やっぱりバスケとアメフトって体裁きというかそんな感じのところで結構共通点があるよね。 フィールドの広さが全然違うから、それに応じたそれぞれの最適化はあるけど、細かいところでは似てる。

NBA と NFL のかけ持ちで両方一流の選手がわりと多かったりするのも、そこら辺が関係してるのかなあ。

% [PC] 「木ーボード〜樹魂(じゅこん)〜」

/.J とかその他方々より。

これはこれでクールだけどさ、この値段は貧乏人のわしにはムリ。 まあ、元祖よりはマシなんだろうけど(苦笑

ちなみにこれなんかもわりとそそられるけど、洒落で買うにはツライ値段だなあ。 あとはこの辺とか。 キーボードの方はともかく、トラックボールは使いにくそうだ。 ステンレスの球にはそそられるけども。

そういや昔、ステンレス製の球型シフトノブを愛用してたことがある。 今はもうマニュアル車じゃないんで使ってないけど、たしかまだ持ってるはずだな。

% [雑談] 親父に殴られた(ワラタ2ッキ)

ほとんど病気(笑

マジお腹痛い。 つーか、わしも誰かに殴られるときは気を付けないと(爆

% [Ruby] Dir.chdir

…に、ブロック使えるようになってたなんて知らなかった。

% ruby -e '
quote> p Dir.pwd
quote> Dir.chdir "/Volumes" do
quote>    p Dir.pwd
quote> end
quote> p Dir.pwd
quote> '
"/Users/jijixi"
"/Volumes"
"/Users/jijixi"

ふむ、使おう。

% [Gauche] directory-list2

先のネタを見つけたのは、Gauche でディレクトリなめる方法を Ruby と比べつつ調べてたから。 んで、file.util モジュールの directory-list 関数が Ruby の Dir.glob の高機能な奴って感じなんだけど、この directory-list2 はさらに高機能っぽい。

% ls -l
total 2
-rw-r--r--   1 jijixi  admin     0  2 11 00:27 a
drwxr-xr-x   2 jijixi  admin  1024  2 11 00:27 b
lrwxr-xr-x   1 jijixi  admin     1  2 11 00:27 c -> b
% gosh
gosh> (use file.util)
#<undef>

gosh> (directory-list2 ".")
("." ".." "b" "c")
("a")

gosh> (directory-list2 "." :children? #t :add-path? #t)
("./b" "./c")
("./a")

gosh> (directory-list2 "." :follow-link? #f)
("." ".." "b")
("a" "c")

directory-list は指定したディレクトリが含むエントリのリストを返すんだけど、directory-list2 はサブディレクトリのリストと、それ以外のもののリストの二つを返す。 激しく便利くさい。

キーワード :children? を true にしてやると . とか .. とか通常捨てる値を含まないリストを返してくれる。 :add-path? を true にすると、ディレクトリ名を含んだ値になる。 ちなみに glob のようにパターンマッチさせるには、:filter キーワードにそのための関数を与えてやれば良いので、いくらでも柔軟にできるだろう。

Ruby でディレクトリを再帰的に辿っていきたいときって、毎回 . と .. を捨てたりディレクトリかどうか確かめるためのガードを入れなきゃなんない(よね?なんかきれいな方法あるなら教えてください)のが、わりとかったるいんだけど、この directory-list2 ならそこら辺すっきりやれそう。

さらにブロック付きの Dir.glob あるいは Dir.open に相当する(と思う) directory-fold というのもあって、デフォルトでは directory-list がリスト取得用関数 :lister として使われるが、この関数は自分で好きに指定できるので、directory-list2 を使う形にだってできる。

いやあ、よく考えられてるなあ。 なるほど、

日常業務の中でのちょっとした処理を行う スクリプトを気軽にSchemeで書きたいなあ、

というのを目標に作られてるだけのことはある。 調べれば調べるほど、Gauche に乗り換えたくなってくるわしがいるぞ。 でも慣れるまではやっぱり Ruby でさくっと書いちゃうんだけどさ。 さすがに Ruby なら三分で書けるところを、Gauche で十五分かけて書くのはどうかというのがあるんで。 せめてそこを六分くらいで書けるようになれば、実用に供しても良いかも。 ともあれ、修行が必要ですなあ。

% [OCaml] ocamlc -pack(soutaroにっき)

そういう効果があったのか。 てっきり単に一つにまとめるだけ(要するにモジュール名も統合しちゃうような感じ)のアーカイバなんだと思ってた。

たしかによくよく考えれば、元のオブジェクトのモジュール名は変えずにネストさせていくような形じゃないと色々矛盾が出てくるもんなあ。

ちょろっと試してみたけど、pack 後の cmo と cmi さえあれば良いみたいだから、非常にすっきりするね。 いつか役に立つかもしれないから憶えておこう。 ちなみに、まとめるファイルの指定はオブジェクトファイルじゃなくてソースでも良いみたい。

% ocamlc -pack -o c.cmo b.ml a.ml

みたいな。

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

% Kiyoshi [>アメフトの試合を見るといつも思うんだけど、やっぱりバスケとアメフトって体裁きというかそんな感じのところで結構共通点..]

% jijixi [わ、変換ミスですね。ご指摘感謝。 でもめんどくさいから直しませんので、みなさん適宜脳内変換してください(ぉぃ]

% 詩乃 [ぁぁ〜、よく私もそのくせあります〜〜〜。 相手によく背中をムヶルせいでしょうヵ…?? だヵら、よく色々とミンナヵラ..]


2006-02-11 [長年日記]

% [雑談] 雪割り

月曜日に始末しきれなかった分の後始末。 硬くて重くて最悪。 ようやく腰の方も良くなりかけてたのに、またダメだこりゃ。

今年の異常なまでの雪の多さに、いたるところで怨嗟の声が上がっているそうな。 わしも誰かを呪ってみたい気分だが、大雪の責任なんて誰に対して追求すりゃ良いんだか。


2006-02-12 [長年日記]

% [まんが] おお振りの話

たださんがハマったって話に触発されて、わしまで単行本読み返し始めてしまった。 あくびが伝染るかのように、わけもなく伝染するのはなぜだろう。

ちなみにわしは単行本未収録の分のアフタヌーンは保管しておくようにしてる。 んで、今数えてみたら、なんと九ヶ月分も溜まってるよ。 単行本で追いかけてる人には申し訳ないがネタバレしましょう。 桐青戦に決着つくまでには、あと単行本二冊くらいかかりますよ。 ふはははは、じりじりしながら待つが良い。


2006-02-14 [長年日記]

% [PC][Ruby][OCaml] 数値リテラルにカンマ区切りが使える言語

話の本筋とは全然関係無いんだが。 lethevert さんとこのコメントを読んで、「あれ?そういう言語って何か覚えがあるな」と思ったんだけど、それが何だったか思い出せない。

あれこれ考えてようやく思い出した。Ruby だ。

% irb
irb(main):001:0> i = 1_000_000
=> 1000000

カンマではないけど、見やすくなれば良いんだからこれでオッケーだよね。

(追記)

OCaml もだなあ。

% ocaml
        Objective Caml version 3.08.4

# 1_000_000;;
- : int = 1000000

% [独り言] 例の話は無かったことに

なんかわけのわかんない条件とか出されてモナー。 わりとピンポイントに、わしのむかつくツボを狙ってきてたり。 まあ、元々まったくあてにしてなかった話だから、すっぱりお断りをば。

それより今はパパン方面の仕事も入ってきてて、いろいろ忙しいんだよ。 もうずいぶん長く触ってないから、全然憶えてねえし。やばいよ、助けてアンパンマン。

% [独り言] なんかだんだんむかついてきた

そもそも何であんな話になるのかイマイチピンと来てなかったんで、その場ではプチムカくらいだったんだけど、後から冷静に考えたらかなりなめた事言われてたと気付いてゲロムカくらいにパワーアップ。 なんつーか、直接言われた訳じゃなくて間に一人入ってるんで、細かいニュアンスの違いなんかはあるんだろうけど。 まあ、四月以降もう会う事は無いだろうから良いや。

% [独り言] 飲み会は欠席だなあ

上記の件と直接は関係無いけど。 週末は家の方の仕事に力を入れないとまずいし。

つーか、よくよく考えるとこの前出張行ったせいで懐が寂しいっす。 出張ってどうして貧乏になって帰ってくるはめになるんだろうね。 やっぱ飲みになんて行ってる場合じゃないな。 来週は裏方面で出費もあるし(そこを節約しろというツッコミは却下)。

% [雑談] なんか知らんが雨降ってるよ

まだ二月なんすけど……

まあ、最近は不思議と雪祭りの時期に暖気がやってくることが多いんで、例年どおりと言えば例年どおりなのか? ちなみに、本来雪祭りの時期ってのは一年で一番冷え込む時期だからってことで設定されてるらしいすよ。

% [Haskell] 指数表記の数値リテラル

Ruby や OCaml の数値リテラルネタに触発されて、ちょっと Hugs で遊んでたら軽く驚いたんで書いとく。くだらない話だけど。

Prelude> 3e3
ERROR - Undefined variable "e3"

一瞬「な、なんだって〜!!」と思った。 指数表記ができないなんてあり得ない。

Prelude> 3.0e3
3000.0

こうすれば良かった。ほっ。

% [雑談][Mac] なかなかうまく行かんもんだ

トラックポイント付きキーボードを iMac G5 で使うようになって、わーい、って感じだったんだが、その後……というお話。

どうもこのキーボード(ぷらっとホームの Mini Keyboard III 英語版)ってトラックポイントの制御にキーボード部分からの信号も使ってるっぽくて(なぜかトラックポイント側だけ繋いでも動かないのだ。電源の問題って可能性もあるが)、そのせいなのか何なのか、とにかく何かの拍子にマウスポインタがすっ飛んで歩く。 んで、そのすっ飛んで歩く状態の時にキーボードを触ってるとわけのわからん入力がされるらしくて、運悪くそのときに kinput2.macim で入力中だと、こいつが落ちる。 kinput2.macim が落ちるとこいつと通信中だったアプリ(大抵は mlterm)も巻き込まれて落ちる。 なんちゅーか、わりと泣ける状況。

結局、kinput2.macim が落ちるのはせつないので、トラックポイントは泣く泣く諦めることにした。 ただ、このキーボードって、ストロークが浅くて底板がしっかりしてる『がっしりしたノートパソコン』みたいな感じでわりと好みだから、しばらくこのまま(トラックポイントを殺した状態で)使うつもり。 たまに無意識にトラックポイントで操作しようとして orz ってなるのがたまにきずだけど(苦笑

元々使ってた FKB8579/USB(販売終了してしまった模様)に戻そうかとも思ったけど、今となってはレアものっぽいから、いざってときのために取っておこう…などとセコイこと考えつつ。

% [雑談] むはんまど?

この関係のニュース見聞きしててハテ?と思ってたんだが、そうか最近はマホメットって言わないのか。 ……え、これって歳がバレるネタ?


2006-02-15 [長年日記]

% [雑談] 世の中、何がウケるかわからんな

どうも最近、朝イチでおもしろ検索ワードを探すために本日のリンク元をチェックするクセがついてるんだが、今朝は久々にすごい数のリファラが付いててびっくりした。 どうやらこの前のバスケネタが当たったらしい。

まあ、他ではあんまり見ないような、わりとめずらしいネタではあったのかな。 だからこそ書いたんだし。

% [雑談] shit or die(ひげぽん OSとか作っちゃうかMona-)

笑った。 「くそっ!!……って言うか死ね!!」って意味ですか?

% [雑談] 中毒

このところ、ほぼ毎日のように炭酸ボンベを 2 本/日ペースで飲んでしまっている身体に悪いわし。 よーし、パパ成人病目指しちゃうぞ。 ……目指さないでください。

% [PC] 教育用の言語について考える (32nd diary)

そこで Haskell ですよ!!……とかツッコミ入れようかと思ったけど、手続き型を教えるって話みたいなんで、Python で納得するしかないなあ。 誰が書いても同じコードになる(誇張はあるけども)っていう Python の特徴は、右も左もわからない初心者にとっては良い事な気はする。

Ruby も良いとは思うけど、わりと初心者殺しの落とし穴が結構あるしね。 破壊的メソッドの問題だとかさ。 初心者には、文字列が mutable な言語なんて使わせない方が、きっと教える側も楽でしょ。

% [Mac] ソフトウェアアップデートの罠

10.4.5 が出ていたのでさくっとアップデート開始したわけだ。 んで、ダウンロード&インストールが終わるまでの間、日記書いてたのね。

わしは英語キーボードしか使わない人間なので、当然日本語変換はスペースキーで行なうわけ。 でね、快調に文章を入力しながら変換のためにスペースキーをバシバシ叩いてたその瞬間。 ……アップデートが終わって『再起動しますか?』のダイアログが出た。 ……問答無用で再起動処理に移行された。死ねる。 (注:Mac OS X ではダイアログのデフォルトボタンはスペースキーでも決定できるのである)

不幸中の幸いは、日記を書いてたのが X11 のアプリでだったということ。 X11.app は終了前にほんとに終了して良いか問い合わせてくれるのだ。 そこでキャンセルすれば、なんとか再起動を途中で止める事ができる。 さもなきゃ、せっかく書いた日記まで消えるところだったよ。

でも、X11 以外のアプリは問答無用で終了させられてたり。 たくさん開いてあった Safari のタブとかはパーだよ。 まだ読んでなかったのに(泣

つーかさ、いくらアップデート後に再起動が必要だからって、再起動するのをデフォルトにしておくのはやめてくれまいか。 本気で罠すぎる。 まあ、日本語入力しない人たちにとっては、別に罠でもないんだろうな。 文章入力でスペースキーを使わないってことは無いと思うけど、さすがに連打はしないだろうから、そこにタイミング良く(悪く?)ダイアログが飛び込んでくる事なんてまず無さそうだ。

みなさんもスペースキーの連打にはお気を付けを。


2006-02-16 [長年日記]

% [雑談][PC] キーリピート間隔を短くしたらプログラミングが快適に (ひげぽん OSとか作っちゃうかMona-)

わしは大物プログラマじゃないので、どうしてそれで快適になるのか本気でわからないんだが。

% [Python] どうして Python はメソッド定義にいちいち self が必要なん?

実は Python の好きになれない部分の一つだったりするが。

class hoge:
    def func(self):
        # do something...

こういうの。 func というメソッドは実際使うときには引数の数はゼロなわけだ。 定義時の見た目と、使用時の見た目が違うのがすごく気持ち悪い。

しばらく前に誰かのブックマーク(otsune さんのだったかな)で『Python のクラスシステム』っていうページを知った。 ここには…

この文書の目的は、 Python で自前の class を作るとき、メソッドの第一引数がそのクラスのインスタンスそれ自身(一般に self と書かれる)であることの理由を説明することです。

などと書いてあって、「おお、これは」と期待したんだが……全然説明された気になれなかった。 残念。

要するにこのページの主張は、ざっくり言うと、

これらのことから、関数型言語にクラスシステムを導入する場合、 メソッドとして定義される関数はインスタンスを引数にとるのが自然であるといえます。 class のなかで定義される手続きは、 def を使って、通常の関数とまったく同様に定義されていることから、 スコープがそのクラスに限定されたものの、通常の関数と同等であるということができます。 つまり、メソッド定義の第一引数が self であるのは当然の成り行きであるということです。そうしないと、インスタンスに含まれる変数を参照することができません。

という部分が全てのようだ。 だから self が必要なんだと。 ……うーん、それは違うんじゃないの?という感じ。

言ってることが間違ってるってことじゃなく、これが理由で self を自分で書く必要があるんだ、ってのがね。 だって、上の引用部で言ってることって、オブジェクト指向言語なら普通の話じゃん。 C++ だって Ruby だって内部的にはそうなってるよ。

わしが疑問に思ってるのは、メソッド呼び出しのときに暗黙に自身のインスタンスを関数に渡すことは隠蔽してるのに、メソッド定義にインスタンスを受けるための仮引数を指定してやる必要があることは隠蔽していないのはなぜか、ってことなんだよね。 メソッド定義の場合は暗黙に仮引数を追加するようにするんじゃダメなのかということ。

例えば…

class hoge:
   def f(self):
      print "hoge"

   def g(self):
      return f

obj1 = hoge()
obj2 = hoge()
func = obj1.g()
func(obj2)

こんなコードが許されるのであれば納得いかないこともないんだけどね。 要するに、メソッドとして定義された関数も、通常の関数オブジェクトと同じように使えるならってことだけど、実際にはこんなエラーが出てダメ。

Traceback (most recent call last):
  File "./test.py", line 10, in ?
    func = obj1.g()
  File "./test.py", line 6, in g
    return f
NameError: global name 'f' is not defined

やっぱどうにも納得いかない。 誰かすっきりさせてください。

% [Python] self の話、続き

やっぱり頭の中で漠然と考えてるよりも、一旦文章にして出してしまった方がいろいろ思いつくな。 とりあえず一つ理由を思いついた。あくまでも想像だけど。

要するに実装の複雑さとのトレードオフなのかなと。 Python ってわりと組み込み用途にも力を入れてるふしがあるけど、その場合…

  • 基本部分はなるべく小さく軽くしたい

という要求があるだろう。 んで、オブジェクト指向システムを導入するにあたって、

  1. メソッド呼び出し時に暗黙にインスタンスを渡す
  2. メソッド定義時に暗黙に仮引数を追加する

という二つには、実装段階で結構違いがある感じではある。 1 は単純に、

obj.func(arg)

…を、

func(obj, arg)

…に置き換えてしまえば良いだけだが、2 の場合は def が使われている文脈が class 定義内なのかそうでないのかによって動作を変えなきゃいけないので、構文解析が複雑になると思われる。 まあ、def の代わりにメソッド定義用の予約語を一つ追加してしまえば良いのかも知れないが、それはそれで複雑さを増すし、やりたくないってのはわからなくはない。 ただ、結局は同じ def で定義しておきながらも使い方が違うわけで、追加してやっても良かったんじゃないの?と思わなくもないけど。 OCaml なんかはそういう感じだね。 メソッド定義はそのための予約語がある。

そんな感じで、好きになれるか…はともかく、なんとなく理解してあげられる気分にはなった気がしないでもないかな。(すごく微妙な言い回しだ)

% [雑談][PC] キーリピートの話その2

もしかして、カーソル移動が速くなるとかそういう話なのかな。 もしそうなら、vi 派の人間には関係無いね。

vi でキーリピート使ったカーソル移動するなんてダサすぎる。 カーソルジャンプの方法はそれこそ山ほどあるので、いかに少ないストローク数で目的の場所に移動するかを探求するのが vi 派のつとめである。 精進、精進。


2006-02-17 [長年日記]

% [雑談][Haskell] 『入門Haskell』ってあの向井さんが書いてるのか

こういう本が出るってのは 2ch の Haskell スレ見てて知ってたんだけど、著者名までチェックしてなかったよ。 うーん、『ふつうの Haskell プログラミング』とどっち買おうか迷うけど、向こうは五月に延びたみたいだし、とりあえず買うか。 あっちゃこっちゃにアカウント作るのはイヤなので、Amazon で買えるようになったらってことで。 もしくは直接本屋で見かけたら (可能性は低いけど)。

ところで OCaml の本は出ないんすかね。

% [Ruby] 後ろから最大n個 (mput の日記。)

ええー? O(1) なんてどうやるの? 気になりすぎる。

とりあえずツッコミで挙げられてる

ary[ary.size - n, n] || ary

とか、

ary.last(n)

とかは O(n) だよね、多分。Ruby のソース読まないとはっきりはわかんないけど。

% [Ruby] くそぅ、気になりすぎるから Ruby のソース読んじゃったよ

忙しいつってんのにもう。 ちなみに読んだのは 1.8.4 の array.c。

どうやら配列のスライスを取得する操作のオーダーは、取得するサイズに影響されないっぽい。 rb_ary_subseq ってのがそれをやる関数みたいだが、新しい配列オブジェクトを作って古い配列のポインタを渡してるだけみたい。 要するにスライスを作っても、元の配列の実体を共有するようだ。 てっきりスライス作った時点で、メモリコピーが起きてると思ってたよ。 ただし、(まあ、当たり前だけど) 共有されてるどれかの配列に破壊的操作をするときにはメモリコピーが発生する。

ってことで、上の話の一つ目の例は一応 O(1) なのかなあ。 last メソッドの場合は、新しい配列作って rb_ary_push で n 個分詰め込んでいくみたいだから、こっちはやっぱり O(n) か。

% [Ruby] 正解発表はいつになるんだろう

クイズっていうくらいだから、おそらくもっとひねった答えがあるんだよね?

『整列済み』ってのが肝なのかなとも思うんだけど、わしの頭じゃ思いつかんなあ。 O(n) なのはいくつか浮かばなくもないけど、O(1) はムリ。

って言うかわしは富豪的プログラミングをこよなく愛してるので、こんなシチュエーションは普通に O(n) でやっちゃうよ!!……と言い訳してみる(ダメダメ

% [独り言] 帰るのタルい

今日は暖気が去って路面がツルツルテカテカなので車運転するのがかったるいわい。 こんな路面状態を 2ch 的に書くと『trtk』だな。(これが書きたかっただけらしい)

% [Haskell] Java仮想マシンで動作するHaskell風スクリプト - Jaskell 0.7 (MYCOM PC WEB)

ソースコード例を見ても全然 Haskell 風に見えないんですが、わしの目がおかしいんでしょうか?

% [PC] 日進月歩

しばらく遠ざかってるうちに WinAVR がえらいことになってるなあ。 IDE (Programmers Notepad) に Makefile エディタ (MFile) にデバッガ (AVR Insight. gdb のフロントエンドのようだ) まで付いてるとは。 もうほとんどこれだけで完結できるじゃないの。

でも IDE は外部エディタを使う方法がわからんから、わしには向かないな(苦笑)。 vim じゃないとコード書けないのよ。 まあ、MFile は便利に使わせてもらおう。 デバッガは使ってみてから考える。

% [雑談] おまえらYAHOO翻訳で「ぬるぽ」を日→英に翻訳してみ (大佐blog in ニュー速)

via ただのメモ

Yahoo に惚れた(笑


2006-02-18 [長年日記]

% [PC][独り言] AVR Insight

うーん、単なる gdb のフロントエンドみたいだったからそんな感じはしてたけど、やっぱりリモートデバッグができるだけか。 チップの設計持ってる Atmel じゃないとシミュレータ作るのは無理なのかな。

結局 AVR Studio も必要か。 つーか焼くときに必要だからそれで良いんだけど。

% [PC][独り言] AVR Studio 4

なんだよ、ものすごく WinAVR と連携してんじゃんか。 何この恵まれっぷり。 以前のあの苦労は何だったんだ……

ここまで来てれば、最初っから AVR Studio でプロジェクト作っても良い感じだな。 相変わらず外部エディタの使い方はわからんけど、直接 vim でいじれば良いや。

% [雑談] 『独り言』カテゴリの意味

基本的に、この日記は自分が後で読み返すのを目的にしているわけですが、一応インターネットで公開している以上、自分以外の読者もある程度は想定しながら書いてるのです。 でもやっぱり自分のためなのが第一義なんで、わりと自分以外を置いてきぼりにすることも書きます。 んで、その中でも全力で周りを置いてけぼりにしてるなあ、とか、細かい事説明すんのがめんどいなあ、と感じるネタについては『独り言』ってカテゴリを使うことにした次第。

『独り言』ネタを読んで「何言ってんのかさっぱりわからん」と思っても、それは仕様なのでがまんしてください。 あるいは適当にググったりして想像してみるのも良いでしょう。……暇なら。


2006-02-19 [長年日記]

% [雑談] まったりと過ごす休日

このところ日曜と言うとなぜか『何も実になる事をできていないのにも関わらず、不思議なほど時間が速く過ぎてしまう』ことが多かったんだが、今日は久しぶりにゆったりとした時間を感じられた気がする。 実質的な成果だとかは同じようなものなのに、この時間の感じ方の違いってどっから来るもんなのかなあ。

いつもこんな感じなら良いんだけど。


2006-02-20 [長年日記]

% [独り言] 愚痴

いちいち全部文字列にして送受信するって、どういう了見なんだろなあ。 バイナリのまんま送れよ、かったるい。 無駄にデータ長くなってくれた方がエラーチェックの精度が増すとか、そういうことか? ほんとかそれ。

はあ……どっち側も結局はバイナリでデータ使うんだから、無駄なオーバーヘッド挟んでるとしか思えん。

% [独り言] 愚痴2

まああれか、パソコン使ってログ記録するときは楽なのか。 つーかそんな富豪環境のこと考えてプロトコル作るなよ。 1byte の無駄が命取りの世界の事も考えてくれよ、まったく……


2006-02-21 [長年日記]

% [独り言] よく考えると

7 bit + 1 parity なんだから文字列にしちゃうのは仕方ないんだった...orz

それでも、じゃあ何で 8 + 1 にしないんだっていう不満はあるが。 今時 7 bit でしか使えないような機器を探す方が難しいんじゃないのか。 つーか AVR の UART には 8 + 1 のときのための 1 bit がステータスレジスタに用意されてるから、8 bit でやる方がすっきりなんだよなあ。

% [雑談] このところ独り言で愚痴ってばかりだが……

そっち方面の調べものばっかやってるから他にネタが無いんすよぅ。

% [C] 関数マクロ vs inline

C99 の inline 指示子ってどれくらいあてになるのかなあ。 速度の問題とかスタック領域の問題とかあって、なるべくインライン展開したいシチュエーションではあるんだけど、関数マクロはイヤなんだよ。 inline 指定したからといって、必ずしもインライン展開されるわけじゃないみたいな情報もあるんで微妙なんだけど……

% [雑談] 糖尿病へまっしぐら?

いかん。 いくら何でも飲みすぎだからってことで炭酸ボンベは控えようと心に決めたはずなのに、気付けば無意識のうちに買っている。 ダメすぎ。

健康ブームの昨今、表示義務が無くたって成分表やせめてカロリー数くらいは表示するのが世の流れなのに、こいつにはそれらの表示がまったく無い。 それだけでも、いかにこいつが健康に悪いのかわかろうってもんだ。 きっと見せられないようなアレなんだよ。見せたら売れないんだよ。怖ッ!!

健康が気になるお年頃でも安心して飲めるシュガーフリーなガラナ飲料とか出してくれないか。 たぶんわしは不味くても飲むから。 もうね、わしカフェイン中毒だからコーヒーごときのカフェイン含有量じゃ何杯飲んでも足りないんだよね。 それに炭酸中毒だしね。

・・・まあ、無糖の炭酸飲料が激しく不味いのは確定的だから (これとか)、せいぜい微糖くらいは許さないといけないかも知れないけど。


2006-02-22 [長年日記]

% [雑談] マツダとトヨタのエンブレムがどっちがどっちかわからなくなる病気

具体的に言うと……

「これはマツ……トヨタ。」
「これはマツダですよ〜」
「わかってるねん。わかってるねんで?」

こういう感じ。(具体的?)

トヨタをマツダに間違えることはないんだけど、なぜかマツダを見てもマツダだったかトヨタだったか確信を持てないんだよな。 結局「あれ、どっちだっけ?」と思いながらトヨタの車を探す。 (確かめるためにね)

他の会社のは間違えないんだけどね。 なぜかマツダだけは自信が無い。 いっつも確かめた後は「なんだ、全然似てないじゃん」って思うんだけど、しばらくするとやっぱり迷う。

ちなみに今わしが乗ってる車はスバルのプレオっていうのだが、こいつにはなぜか六連星じゃなく『P』の文字をあしらったエンブレムが付いている。 でも変にデフォルメしたせいで縦棒が短いからぶっちゃけ『D』にしか見えない。 うちの母親を含め、近所のおばちゃんはみんなダイハツの車だと思ってたらしい。

街でプレオを見かけて「お、良いな」と思った人がどれだけいたかはわからないが、それなりに商機を逃してたんじゃないのかなあ、スバルは……などと思ったりもする。

% [雑談][Ruby] do .. end 記法にも慣れてきた

……のは良いんだが、ついでに半分洒落で練習してたカッコ無し記法まで定着してきててヤバス。 なんかこう、深く考えずにスラスラっと書くと、まったくカッコを使わずにメソッド呼び出ししているワナ。

どう見ても OCaml の呪いです。 本当にありがとうございました。

って言うか、C で書くときにすら関数名の次に無意識のうちにカッコじゃなくスペースを置いてしまうのは、かなり病気でしょう。 でもまあ、C だとそれじゃうまく行かないから自然と矯正されるんだけど、Ruby の場合は (特に irb なんかで一発処理して終わりとかだと) 普通に動いてしまってそのまま……ってことが多いんで、矯正される機会もなくますますカッコ無しに慣れていくという循環が。

だいたい、以前はすごく気持ち悪いと思ってたこの記法も、今ではまったく違和感を感じないっつーか、むしろカッコがある方が気持ち悪く感じるほどに調教されてしまっているのはどうなんだろうな。 でもあれだな、C なんかがカッコ使ってても何も変に思わないってことは、実は Ruby にはカッコが似合わないってことなのかも。 もともと制御構造やなんかにブレース使わなかったりするし、そこら辺のバランスで見栄えに関する感じ方が違うのかも知れないなあ。

% [Ruby] 慣れないことはしない方が良い

基本的にわしは破壊的メソッドは使わない性質で、特に非破壊的なのと両方あるようなものについては、よほどのことが無い限り非破壊的な方を使うのを好む。 なんだけど、なぜか今日に限って気まぐれで破壊的メソッドを使ってみたんである。

・・・見事にハマッた...orz

今回使ったのは Array#compact! なんだけど、こんな風に書いてたわけ。

ary.compact!.join

普段は

ary.compact.join

と書くので何ら問題は無いんだが、上の例だと時にはハマる。 要するに compact! で ary の中身が変わらなかったときには self じゃなく nil が返ってくるんで join が NoMethodError になるわけだ。

たしか何かで読んだ話では、値の変更があったかどうか確かめられるように、無変化の場合は nil を返す…とかそんなポリシーだったかしらん。 普段破壊的メソッドなんて使わないから、そんな話は思いっきり忘れ去ってたよ。 10 分くらいエラーになる原因がわからなくて悩んでしまったじゃないか、もう。

こんな微妙な問題にわずらわされない富豪的プログラミング万歳。 やっぱりよほど必要に迫られない限りは、破壊的メソッドなんて使うもんじゃないな。 いや、普段から馴れとかないといざってときに困るだろ、って話も無くはないんだけど……

% [OCaml] godi 初心者日記

そうかー、godi って OCaml のバージョンは自動で上げてくれないんだなあ。 一体いつになったらアップデートされるんだろーとか思いつつ、今日になってふと godi のページ見てみたら 3.09 に対応してるようなこと書いてあってびっくらこいたのであった。

仕方ないのでユーザマニュアルを読む (先に読め)。 ……えーと端的に言って、

<PREFIX>/etc/godi_conf の GODI_SECTION を変更してアップグレード

ってことだと思われる。 パッケージのバージョンがダウンしてたりしてうまくアップグレードしてくれないときは、<PREFIX>build 以下の apps, base, conf, godi っていうディレクトリを消してもっかいやれとも書いてあるようだ。

てなわけで、ようやくわしも遅まきながら 3.09 の世界へ。 つーか、何か大きく変わったことってあったんだっけ? gauche に浮気してたせいで(謎)チェックしてねえ〜

% [WideStudio][Ruby] libws.rb

たまには WideStudio のことでも書く。 もう忘れそうになってるが、一応わしも開発メンバーに入ってるのだ。 興味が全然無くなってしまったわけではないんだが、今はちょっと優先順位が低いんだなあ、これが。 ……ともあれ。

WideStudio の Ruby バインディングは (と言うかネイティブである C++ 以外の言語は…かも知れないが) Rubyist にはあまりウケがよろしくないようである。 基本的に C++ でのお作法と歩調を合わせた作りだからして、あれはあれで良いところもあると思うんだがまあ Ruby 的に気に食わないってのも気持ちはわかる。

気持ちはわかってるんで、もう少し Ruby 的に使いやすくするラッパーの仕様とか考えたりもする。 んで、試しにちょろっと書いてみて、途中でほっぽってたのを思い出してしまったんで、少しだけいじって最低限動くようにしてみた。 ちゃんとした形で配布するにはまだまだだけど、とりあえず遊べるようにはなって来てる感じなんで、なんとなくここで晒してみようかと。

ダウンロード(zip 形式)

WideStudio の情報を目当てにここを見てる人なんて多分いないと思うけど、ご意見ご感想はツッコミかメールでよろしく。

ざっと解説と使い方説明。 根っこのところでは irb で遊ぶのを目的にしてるんで、ややこしい初期化だとかを勝手にやってくれるように作ってある。 今のところ定義されてるクラス・モジュールは以下の四つ。 多分もう増えない。

  • module
    • WsApp
      • アプリケーションの初期化なんかに関するメソッド群。WsObject に include しちゃってるんで、単体で使う事はまず無いはず。
    • WsUtils
      • wsbuilder が吐く win ファイル (GUI の見た目設定) を読み書きするメソッドとかを用意するつもりだけど、めんどくさくてまだ書いてない。簡易パーサ書かなきゃだめっぽいからメンドイの。他にもメソッドのアイデアはあったと思ったけどもう忘れた。
  • class
    • WsObject
      • 基本クラス。って言うかこれだけで全部のクラスをまかなえるコンテナみたいなの。Java で Eclipse のプラグイン書いてた時に (それは結局日の目を見なかったけど) 使ってたパターンを再利用してる。こいつが持ってないメソッドを呼んだときは、method_missing でラップしてるオブジェクトに丸投げ (ほんとは何か細工した方が良いとは思うが)。[] 演算子でプロパティ操作。
    • WsMainWin
      • WsObject のサブクラス。WSCmainWindow だけはちょっと特殊な扱いした方が良いかと思って。EXIT トリガのフックを簡単に書けるようにしたいと思ってるけど未実装。

エラー処理はかなり適当 (って言うかやる気なし)。 WsObject の機能は WSCbase 辺りに特異クラスで突っ込んでやれば良いような気もするけど、なんでラッパークラスに包むようにしたんだっけなあ? なんか WSCbase からのダウンキャストができない制限をなんとかする仕組みを突っ込むためだった気がするけど、詳しいことは忘れちったよ (ダメだ〜)。

細かいところはソース読むか、使ってみて身体で覚えるべし(何

実行例は irb で。

% irb
irb(main):001:0> require 'libws'
./libws.rb:136: warning: don't put space before argument parentheses
./libws.rb:136: warning: parenthesize argument(s) for future version
=> true

なんか警告出てるけど気にすんな。カッコ無しで書き直したせいだから(爆

irb(main):002:0> mwin = WsMainWin.new
Mwt::WSCmainWindow
=> #<WsMainWin:0x47644 @ws_instance=#<Mwt::WSCmainWindow:0x474f0>,
   @child_list={}, @ws_class=Mwt::WSCmainWindow>

とりあえずこれでウィンドウは出る。 アプリケーションの初期化処理とかは内々でやってるんで気にしない。

irb(main):003:0> mwin.activate
=> nil
irb(main):004:0> mwin.update
=> true

出たでしょ。 ボタンとか配置してみる。

irb(main):005:0> mwin['x'] = 400
=> 400
irb(main):006:0> mwin['width'] = 400
=> 400
irb(main):007:0> mwin['height'] = 400
=> 400
irb(main):008:0> btn = mwin.add_child("WSCvbutton", "btn")
#<WsApp::WsException: invalid class name.>
=> #<WsObject:0x6f554>

うげ、クラス名間違えた。

irb(main):009:0> btn = mwin.add_child("WSCvbtn", "btn")
Mwt::WSCvbtn
=> #<WsObject:0x14bd114 @ws_instance=#<Mwt::WSCvbtn:0x14bd0b0>,
   @child_list={}, @ws_class=Mwt::WSCvbtn>
irb(main):010:0> btn['width'] = 100
=> 100
irb(main):011:0> btn['height'] = 30
=> 30
irb(main):012:0> btn['x'] = 20
=> 20
irb(main):013:0> btn['y'] = 20
=> 20
irb(main):014:0> mwin.update
=> true

あれ?表示されないな。 されるはずだけど……どっか間違ってんのか? とりあえず放置して……

irb(main):017:0> def test_proc obj
irb(main):018:1> Mwt.WSGIappMessageDialog.popup
irb(main):019:1> end
=> nil

関数定義して…

irb(main):020:0> mwin.add_proc 'test_proc', Mwt::WSEV_ACTIVATE
=> 5084480

ああ!!じゃなくてこう、

irb(main):021:0> btn.add_proc 'test_proc', Mwt::WSEV_ACTIVATE
=> 5197024

ボタンにプロシージャとして登録。 メソッド名は文字列だけじゃなくシンボルも使えるようにした方が良いな。 あとで直そう。

irb(main):023:0> mwin.start_event_loop

えい。 ぐあ、mwin に間違って登録したプロシージャが動いちゃってダイアログが出てしまった。 キャンセルでそれを消すと……お、ボタンも表示されたな。 うーん、でも update で表示がリフレッシュされないのは何でだ? なんか仕様変わったかな。 ともあれ、ボタンを押したときのイベントプロシージャもちゃんと動くね。よしよし。

こうやって説明してみて思いついた今後の展望とか (どっちにしろモチベーションの問題なんで、いつになるかはわからんが)

  • プロパティ設定をも少し楽にしたい
    • 座標系とかアンカー系なんかは一個一個の要素を設定するより配列かなんかで一発で書けた方が楽だよなあ…とか。
  • イベントプロシージャにブロック渡ししたい
    • 大元の拡張ライブラリの方をいじらんと無理かも。つーか mwt_proc.cpp は前々から何とかしたいと思ってはいるんだが……
  • グローバルインスタンス (WSGIapp* なヤツ) をラップするためのクラスもあった方が良いな
    • まあ WsObject のサブクラス作って initialize で細工すればすぐだな、これは。

% [雑談] コメントスパム業界(謎)も大変だ

たださんのところに変わったコメントスパムが付いていて、いろいろ考えてるなあ…と関心してたんだが実は手動だったらしい(笑

いやほんと、お疲れさんと言うしかない。

% [雑談][Ruby] 今回のるびま

コードレビューはテンションがおかしくておもしろかったなあ。 あのノリでわしも辛口添削されてみたい気もするが、立ち直れないダメージ受けそうな気もするから止めておこう。


2006-02-23 [長年日記]

% [本日のリンク元] google 検索 (萌香 Lisp|Scheme あのね)

何だか言いようのない感覚に包まれる……

% [雑談] 日本語 reddit

各所で話題なんで、ちょっくらわしも登録してみた。 つーか登録がかったるいようなら止めようと思ったんだけど、五秒で済んだし(笑

てなわけで見てみたけど、いまいち何をどうしたら良いのかわからない。 いや、どうするも何も単にポチポチ矢印押してポイント付けてくしかないんだろうけど、なんつーかそれによって何が起きるのかが実感できないんで、ポイントを付ける時にどういう基準でやってけば良いのかがピンと来ないというかね。

とりあえず一生懸命フィルタに学習させないと recommended に何かが出てくることは無さそうなんで、しばらくがんばってみよう。

% [雑談] reddit 用 bookmarklet

とりあえずコレが無いと話にならんな。 もう少し目立つところに置けば良いのに。

Safari 用もちゃんと用意してあるのは好感度高い。

% [雑談] 流出した海自情報はフロッピーディスク約290枚分に相当する膨大なもの

毎日インタラクティブの記事から。 記事の内容そのものはどうでも良い。 (つーか自衛隊の不祥事なんて、もう慣れたよ……とか言うと怒られるか)

なんかこの言い回しって、「ビタミン C はレモン約 50 個分」みたいなインチキくささを感じるんだけど……まあ、テキストなら十分膨大か。

ちなみにレモンに含まれるビタミン C は、あの酸っぱさから想像されるほどには多くない。 と言うかむしろ適度に少ないからこそ目安単位として使われてるんじゃないかと。

% [OCaml] "The Whitespace Thing" for OCaml

reddit より。

OCaml の文法を Python や Haskell のようにインデントが意味をなすようにしてしまうプリプロセッサらしい。 今のところは行指向のプリプロセッサだけど、いずれは camlp4 で書き直したい…とか書いてあるのかな?

コード例の二つ目 (List.map 使ってるやつ) 辺りが真骨頂か。 素のコード例が Lisp みたいだ(苦笑)。 あと関係無いけど、

function Some x -> x

って書き方に感動した。 そうか、fun じゃなく function だとこういう書き方できるんだな。 function を大いに見直した。 よし、憶えておこう。

% [雑談] 弱り目に祟り目

マフラーもげました。 な、なんだって〜〜!!...orz

走ってたら突然ボボボボボっつー凄い音が聞こえてきて、「ったく、どこのヤンキーだ」と思いながら周りを見たがなぜかそれらしき車は見当たらない。 「ハテ?」と思いながら走っていると今度はカラカラカラっていう音が聞こえてきた。 何だろうなあとは思いながらも、その時点ではまさか自分の事だとは気付いていない平和思考。

しばらくして『なぜか自分が止まるとカラカラ音も止まる』ことに気付く。 こ れ は ヤ バ い 。

三車線道路のど真ん中を走ってたので、慌てて左に車線変更。 幸か不幸かしばらく先にコンビニがある。 そこへ避難だ〜〜

……コンビニの駐車場に入り込んだ瞬間、『ドガッ』って音がして車が進まなくなった。 どうも排気管の細い部分がぶった切れて、それを引きずった状態で走っていたようで、コンビニに入るところの段差というか溝のところにそれが引っかかってマフラーごと後にめくれ上がった感じらしい。 バンパーが少しめくれて、排気管が後に突き出た状態でアスファルトに食い込んでいる。 なんですか、この理不尽さは。

JAF を呼ぼうと思って会員証を見たら携帯では使えない短縮番号しか書いてなくて倒れそうになる。 ディーラーに電話して札幌事務所の番号を教えてもらって連絡。 携帯に登録したから次は大丈夫だ。っていうか次なんていらん。

とりあえず近くのディーラー工場にレッカー移動。 レッカー初体験。ゎぁぃ...

時間が遅いせいで明日にならないと作業ができんと言われる。 結局明日の朝一でやってもらうことに。 代車は無いと言うので、乗って帰ってきました。 マフラーの無い車に。

ああ、誰ぞのインテグラを思い出す素敵な(皮肉)爆音だ。 だって直管状態だもん (整備不良です)。 おまわりさんごめんなさい。 明日の朝にはちゃんと直しますから。

って言うかさ、プレオであの音出して走ってるのって、ものすごくイタイ人みたいで恥ずかしくて仕方なかったよ。 そして明日もあの音で走らなきゃいけないと思うと、めちゃめちゃ恥ずかしい。 ああー、みんながわしを笑ってる気がする〜

JAF の兄ちゃんが言ってたけど、今年はマフラーもげ事件が結構多いみたいね。 わしも大雪のせいで何度腹こすったかわからんからなあ。 悔しいけど仕方ない。 でもなー、三万円飛んでくのはツライなー、セツナイなー。

% [game] ガンスターヒーローズ〜トレジャーボックス〜

ガンスタ、ダイナマイトヘッディー、エイリアンソルジャーの三作品が詰まったステキソフト。 普通にばっちりエミュレートされてて安心設計。 ・・・コントローラー以外は。 サターンパッド買った方が良いんじゃないかと思う。

ともあれ、ようやくメガドラをしまえる(何

% [雑談][reddit] カルマは 1 より下がらないのかな?

なんかわしが読みたいような系統は他の人がどんどん追加してくれてるんで、自分で登録するようなネタが無い。 でも、せっかくだからと思って適当にあえて周りの空気を読んでない感じのを submit してみたら、凄い勢いでダメ出し食らってたみたいで -5 ポイントが付いてた(苦笑

登録してるのはこれ一つだけで、しかも -5 とか付いてるんだけど、カルマは初期値の 1 のまま。 これはこれで微妙につまんないな。 カルマは上げるだけじゃなく、下げる楽しみ方があっても良いと思うんだけど。


2006-02-24 [長年日記]

% [OCaml][雑談] 副作用はオブジェクトに閉じ込める、っていうマイルールを設定するのはどうだろう

オブジェクト指向における『オブジェクト』ってぶっちゃけ『副作用の塊』みたいなもんだよね。 なんせ自分の状態を保存していて、同じメソッドを同じシチュエーションで呼んでもその状態に応じて動作を変えるってのがある意味ウリなわけだから。 もう、「参照透明性?なにそれ」って感じ。

OCaml では副作用がある関数も無い関数も普通に混在できるわけだけど、個人的な趣味としてはどうしても仕方ないとき以外はあまり混在したくないなあと思うのだ。 その点、言語仕様的に容易に混在できない Haskell は (めんどくささとかを置いとけば) 美しいんだと思う。 そこで例えば OCaml でも副作用を何かに閉じ込めるようなものが (要するにモナドみたいなもの) があれば良いんじゃないのかなあ…と。 もちろん Haskell みたいに常に強制されると窮屈なんで、オプショナルなもので良いんだけど。

んで、そういうことするのにオブジェクトが使えるんじゃないかなあと思ったわけ。 思っただけで、具体的にどんな実装にするのかとかが頭に浮かんでるわけではないんだけど。

% [雑談] さりげなく言及されてた気がするんでさりげなく返してみる

いやあ、ダイエットコークはわりと好きなんだけど、この辺だとあんまり売ってないんすよね。 レモン風味のやつなんて、かなり通飲してたんだけど最近見かけないなあ。

ただまあ、ダイエットコークを飲んだとしても、炭酸分は補給されるもののカフェイン分が足りないのでそれはそれで別に補給が必要に……


2006-02-27 [長年日記]

% [雑談] じわりとくるシュールな面白画像 (ニャー速。)

>>82 がめちゃくちゃ『じわり』ときた(笑

ヒント:向き

(追記) なんか知らんがカテゴリが [game] になってたんで直した。


2006-02-28 [長年日記]

% [雑談] ペットボトルの炭酸はうまくない説

説っていうか、率直にわしがそう感じてるだけだけど。 中身は同じでも、飲み比べるとどうにもペットより缶の方がうまいと感じる。 んで、さらにあいまいな感覚では普通の缶より最近ちょろちょろ出回ってるボトルタイプの缶が良い。

そんなわけで、中身もさることながら入れ物でもツボをヒットしてる炭酸ボンベを、今日もやめられずに飲んでしまっているわし。 意思よわ。

……いや、頻度はだいぶ減らしたんだけども。


トップ 最新 追記

日記ってのは本来、自分で読み返すためにあるもんだよなあ……
もしくは有名人になったら死後に本になったりとかか?

RSS はこちら

jijixi at azito.com