Thursday 31 May 2007

iTMS DRM free



「日本ではどうなるんだ〜」みたいな話があって、期待してなかったんですが... なんと、世界同時発売だそうです。

iTMS の200円は、ちょっと高いと思う。でも、ツタヤでうろうろするよりは、スマートであることは確かだよな... DRM付きだと、200円はあり得ないと思うけど、DRM free なら、まぁ、我慢できなくはないかな。

御祝儀で、自分の持っているもののupgrade (確かに、その言葉は正しい....) と、いくつか買ってみました。が... さすがに混んでいるらしい。全然、down load できません。

Wednesday 30 May 2007

失敗の続き...



なんか、もう一つの仕事はお流れになりました。

じゃぁ、ご飯食べて帰るか.... と思ったら、大学にMac Book Pro の電源を置いて来たらしい。また、取りに帰るのかぁ。

実は、そんなこともあろうかと、電源は注文してあったりするんですが、事務に無視されているらしい.... そろそろ ping するか。

失敗...




スカパーの録画で、チューナーの方の設定が「音声左」になってました。どうりで、音声切替えが使えないはずだよ... 問題は「いったい、いつから?」ってことだが、確認する気もないです。酔っ払ってリモコンのボタン押したんだろうな〜 スカパーはいいんだけど字幕が出ないのがな〜 前は「字幕付き放送」とかあったんだが... CS のスカパーの方に移るという手もあるんだけど、レート変換が必要なのは、ちょっと困る。その理由だけでBlu-rayに移るというには、まだ、高すぎるし。というか、第一世代には手は出せないです。



バスの中にツタヤのCDを置いて来てしまいました。琉球バスに電話。「52番? うちじゃありません」。沖縄バスに電話。「いま、来ましたが、ありません」。「あ、そう言えば110番だったような。」「110番はうちじゃありません」。琉球バスに電話。「110番? もうすぐ来ます」。で、見付かったそうです。かばんに押し込んでおけばば問題ないんだが... ケースが割れやすいんだよな。ツタヤはケース割れても文句はいいませんが。ちなみに、普段乗っているこの路線は、27,52,110とあるらしい。最近、微妙に違う22なんてのも出来たらしい。バス停の路線図に載せて欲しい。



学生につき合って「悠楽」へ。二回目です。が、「ご飯半分」と言うのを忘れました。デフォルトで三杯飯ぐらいある。質より量の店です。鳥唐揚が有名。チンジャオロースを頼みましたが、牛肉ピーマン。明らかに80%はピーマンだ。僕的には3年に一回で十分です。



一人暮らしすると食いダメ出来るようになるなんていう話を学生がしている。確かに、少しぐらい多めに作っても、残すよりは無理に食うってのを「15年前」やってたような気がする。



食べすぎたので、寝ちゃいました。ごめん > 待っている人達。間に合うのか〜? 5月は一応、31日あるけどさ。

Tuesday 29 May 2007

Unicode



なんか「Unicode なんてボロボロの規格は使えません」とか言っている人をfjで見掛けましたが... もはや、事実上の標準になっている規格に唾はいてもなぁ。

ボロボロな理由の一つは、JIS X 0208 を全部含んでいるからなので、ある意味でどうしようもないです。

もう一つの「アルファベットには国識別があるのに、CJKには国識別がない」ってのは、僕は「諦める」のが簡単だと思う。ja_UTF-8.jp みたいな手もあるけどね。一つの文章内で混在させるのは面倒だが...

前の、\と¥の問題とかは、JIS X 0208 でもある問題なので、Unicode のせいじゃないし。

つうか、Unicode だめっていう人って、ちょっと頭悪い気がする。規格ってのは、妥協の産物なので完全なんてあり得ない。完成度としては、ISO-2022-JP だって同じくらいだめだめ。でも、UTF-8 で、文字の先頭を見付けやすくなったのはうれしいはず。Shift JIS あるいは、ISO-2022-JP では、それは、非常に困難な問題なので。

自分的には、ほとんど Unicode に移行してしまったので、nkf なんちゃらする機会は、ほんどなくなったし。

携帯の EasyWeb の「Shift JISしか受け付けません」という大馬鹿さえなければ、WWWもUTF-8 base にしていたと思う。Docomo の方は対応しているのにね。

Monday 28 May 2007

バスの回数券



バスは回数券使ってます。バスは大平から乗っているんだが、一つ手前の浅野浦までの料金しか払ってくれないらしいです。もっとも、最安は中部商業から歩く(登り15分)コースなので、そっちにされないだけましです。

どうせ、タクシーも使っているので赤字なので、そのあたりは、ある程度出してくれれば、どうでもいいんですが... 文科省から送り込まれて来る事務官が代がわりしたらしく、学科事務経由で「何回、回数券買いますか」とか聞いて来る。さらに「浅野浦までいくらですか?」とか聞いて来る。回数って言ったって、どうせ決まってるし、この交通費の書類も毎年出しているんだから、去年のがあるはずだが...

たぶん、10年選手の学科事務のおばさん達が、出向ほやほやの事務官をいじめているってな感じなんだろうなぁ。「こうなってます」って教える替わりに、僕に質問を回すのか... 女の人達って、そういうの好きみたいね。でも、「事務の人が変わったので判りません」というのは、さすがに10年いる人が言うセリフじゃないだろとは思う。自分の仕事に誇りを持って仕事して欲しいです。(ま、単に僕がいじめられているだけかも知れないが)

そう言えば、こちらに来たときに「バスの回数券の表紙を提出して下さい」とか言われて、生協に買いに言ったら「98番(工学部前から出るバス)の回数券はありません」って言われて、ぶち切れたっけ。「那覇まで買いにいけっていうのか?!」みたいな話になって、結局、バス会社に問い合わせて、大謝名に券売所があるというのがわかりました。街の化粧品屋さんが回数券売っているパターンですね。大謝名は(登り15分コースの)途中なのでぎりぎり許せます。ちなみに、そこでは、ゴールデンウィークなどの特別なフリー乗車券等は買えません。「那覇まで買いにいけ」ってさ。今回は運転手さんが売っているのを目撃しました。

もっとも那覇バスターミナルで買った時には、いきなり50枚券を渡されたので「那覇まで買いにいけ」をやられている人は結構いるらしい。那覇の公共バスは、軒並、倒産を経験していて、退職金も滞っているようですが同情する気になれませんね。乗り換えを考慮した料金体系にするとか、時間より早く来るのを無くすとか、少しは、まともな商売をして欲しいよ...

Sunday 27 May 2007

Open/GL OSMesa [3]



「琉大では gdb 教えないんですか?」なんていうたこな質問もあったが。OSでも使っているし、ソフトウェア工学でも使っているけど、無視しているのは君達じゃん...

 http://tinyurl.com/ywvawo

とか..



なんか、#define で展開しまくり、構造体のindirect で間接呼び出しまくりの、読みづらいソースでした。でも、gdb は使えるし、gcc -E で、ソースの展開は出来るので、まぁ、なんとか読めました。





   * Smooth-shaded, z-less triangle, RGBA color.

   */

  #define NAME smooth_rgba_z_triangle

  #define INTERP_Z 1

    ....

  #define SETUP_CODE \

    const OSMesaContext osmesa = OSMESA_CONTEXT(ctx);

  #define RENDER_SPAN( span ) {         \

    GLuint i;                  \

    GLchan *img = PIXELADDR4(span.x, span.y); \

    for (i = 0; i < span.end; i++, img += 4) {   \

     const GLuint z = FixedToDepth(span.z); \

     if (z < zRow[i]) {             \

       PACK_RGBA(img, FixedToChan(span.red), \

        FixedToChan(span.green), FixedToChan(span.blue),  \

        FixedToChan(span.alpha)); \

       zRow[i] = z;      \

     }            \

     span.red += span.redStep;         \

     span.green += span.greenStep;     \

     span.blue += span.blueStep;     \

     span.alpha += span.alphaStep;   \

     span.z += span.zStep;    \

    }               \

  }

  #include "swrast/s_tritemp.h"



こんな感じ。ここ部分で、zバッファを見ながら、img にcolorをセットしてるらしい。1ドットずつ。



% wc swrast/s_tritemp.h

   1377  6175  52324 swrast/s_tritemp.h

1400行もあるものを#define を変えて、何回もinclude しているわけ。



static void smooth_rgba_z_triangle(GLcontext *ctx, const SWvertex *v0,

                 const SWvertex *v1,

                 const SWvertex *v2 )

とかいう巨大な関数に展開されるわけ。こうなると、gdb でも、

         {

           RENDER_SPAN( span );

         }

とかを延々動くみたいな感じなるので無力。結局、-E で展開して -g で再コンパイルして、trace するなていう(いつもの)技を使いました。





これだったら、C++ で generic programming すれば? と思わなくもない。全体的には、オブジェクト指向的に出来ているわけだし。まぁ、C++ 向きなライブラリだと思うし。でも、もし C++ でやられていたら、-E で展開するなんていう技は使えなかったが。



Mesa も古いソースだからな。直しようもあると思うが、思ったより巨大だったので、誰も手をつけられないというところか...

Saturday 26 May 2007

Open/GL OSMesa [2]



わかりました。



Breakpoint 3, _swsetup_RenderStart (ctx=0x1797000) at swrast_setup/ss_context.c

:103

103    SScontext *swsetup = SWSETUP_CONTEXT(ctx);

(gdb) where

#0 _swsetup_RenderStart (ctx=0x1797000) at swrast_setup/ss_context.c:103

#1 0x0011ae99 in run_render (ctx=0x1797000, stage=0x20fc598) at tnl/t_vb_rend

er.c:275

#2 0x0010267d in _tnl_run_pipeline (ctx=0x1797000) at tnl/t_pipeline.c:159

#3 0x0014ed96 in _tnl_flush_vtx (ctx=0x1797000) at tnl/t_vtx_exec.c:286

#4 0x00147b0c in _tnl_wrap_filled_vertex (ctx=0x1797000) at tnl/t_vtx_api.c:8

4

#5 0x0014c211 in _tnl_Vertex3f (x=-0.962127864, y=-0.312614053, z=0.222479686

) at tnl/t_vtx_generic.c:235

#6 0x00002c83 in main (argc=2, argv=0xbffff1b8) at osdemo.c:84



ほとんどのRedering は、

  swrast_setup

  swrast

で、行われているらしい。



起動されるタイミングは、tnl_wrap_filled_vertex だったみたいだね。



つまり、glFlush() とかではなくて、 glVertex3f()とかのド真中から、redering ルーチンが呼ばれるのか。





(gdb) p tnl->Driver

$6 = {

 RunPipeline = 0x10220b <_tnl_run_pipeline>,

 NotifyMaterialChange = 0xa43fc <_mesa_validate_all_lighting_tables>,

 NotifyInputChanges = 0,

 NotifyBegin = 0,

 Render = {

  Start = 0x1c1bc3 <_swsetup_RenderStart>,

  Finish = 0x1c2261 <_swsetup_RenderFinish>,

  PrimitiveNotify = 0x1c1ba5 <_swsetup_RenderPrimitive>,

  Interp = 0x13f16f <_tnl_interp>,

  CopyPV = 0x13f18b <_tnl_copy_pv>,

  ClippedPolygon = 0x11ae0f <_tnl_RenderClippedPolygon>,

  ClippedLine = 0x11ae59 <_tnl_RenderClippedLine>,

  Points = 0,

  Line = 0,

  Triangle = 0,

  Quad = 0,

  PrimTabVerts = 0x32f3c0,

  PrimTabElts = 0x32f380,

  ResetLineStipple = 0x16d0fe <_swrast_ResetLineStipple>,

  BuildVertices = 0x140233 <_tnl_build_vertices>,

  Multipass = 0

 }

}



なので、このあたりに break point をつければ楽勝だった。

Open/GL OSMesa



PS3 上の読んでいるんだけど、ようやっと library をstatic linkしてくれたので、gdb でそのまま読める。なんだが「 hardware watch point がない」のかぁ。それは、困るんですけど。

ランダムに止めると double buffer のコピーの bitblit ルーチンのどまんなかで止まる。PowerPC なので、AltiVec 命令の嵐です。キャッシュのprefetch や streaming の命令があって、ややこしい。このあたり、はっきり「間違った方向の進化」をしてきたと感じる。データ並列ってのは、極めてやさしい並列処理なんだから、やさしくやれよ〜 難しくするな。

でも、読みたいのはここではない。そもそも、PS3のframe bufferだったら、コピーする必要ないんじゃないの? 変なの。

後半は、もう少し別なルーチンを読む予定ですが....

Friday 25 May 2007

お客さん達



CCNA2 の試験で去年のCCNA1を落した人達が結構いる。シラバスには「CCNA1を合格していることってのが条件」って書いてあるわけだけど。前の先生に泣き付いてファイナルを受けさせてもらったらしい。このあたり、甘くすると、その分さぼるだけなので、だめだ。

で、CCNA2追加して下さいみたいなメールがいまさら来る。つっぱねても全然問題ないのだが... なんかしかも、「○○の方もお願いします」とか書いてある。なんだそれ? 「本人からのメールでないと受け付けません」と返事したら....

「彼はつい最近ノートが壊れて修理に出したばかりで、まだ、代わりのノートを借りていなく、メールを出せない状態なので、代わりに、一緒にメールしたのですが、受け付けてはもらえないでし
ょうか?」

だってさ。そんなことだろうと思ったよ。どうも、大学のメールを読めないまま放置する学生が結構いるらしい。だから、「本人からのメールでないと受け付けません」なんだよ。共通アカウントで使える iMac が学科内にあるのに「メール読めません」なんてあり得ません。

もちろん、学生はお客様でさ、金払ってるのは君達であって、サービスを提供するのが僕達の役目だ。でも、そこで、お客さんをやっている学生が、大学で得られるものは学位だけです。もちろん、それで、満足ならそれでいいだろう。入学しても、その学位さえ取れないのが結構いるわけだし。1年、2年、余計に学費払ってくれるお大尽なお客様もいらしゃることだし。出来ない学生とか授業に出て来ない学生は、お得意様であることは間違いない。

でも、一方で、学生は大学という組織の一員であって、研究と教育という目的を共有する仲間であると思う。自分が、大学の一員であると自覚しているなら、お客さんではいられないはずだ。

「僕に聞くより、まず、先輩達に聞け」と言っているのは、下級生に教える事自体が、教育になるからでもあるし、2年も3年も勉強している学生は、大学の教育システムの一部であるべきだと思っているからです。

もっとも、自分のこと以外、あるいは学科全体、大学全体に目を向ける余裕が出るのは、もう少し年取らないとだめなのかも知れないが...

Thursday 24 May 2007

Mofgmona



何故か、山田さんと一緒に Mofgmona へ。この前きた時には、なんかSweet 関連の集りをやっていて、入れませんでした。

山田さんは気に入ったようですが、大学からここに来るのはちょっと遠いんだよな。今日は軟弱にもタクシー。歩けよと思わないでもないが、この間は、歩いて入れなかったので、ちょっとショック。

なんかおつまみメニューを充実させたらしい。チキトマとか、アボガドとルッコラとか。なんとなく、黒生頼んでみました。サントリーの黒生って、こんなにまずかったのか... 思い出したよ... モルツにすれば良かったと後悔中...

Wednesday 23 May 2007

APL




プログラミング言語シリーズ



A Programming Language の略。専用の特別記号でプログラミングする言語。大学の計算機センタには「APL端末」がありました。4.1 BSD Unix あたりにはインタプリタが付属していたはず。X11 には、APLフォントがあったし。今は、Unicode にも入っているらしい。



 http://tinyurl.com/27ttcy



トンデモ言語の一つと評されることが多いが、Fortranを作ったバッカスが、Turing awardの講演で説明した fp は、実は、APLの焼直しだった。さきがけでの研究の一つは、APLみたいな言語をPCクラスタにマップする話だったし。プログラミング言語屋さんにとっては、わりと魅力的な言語です。



言語的には、関数型言語ということになると思う。配列が基本データ構造で、それに対する演算子が豊富にあって、それを右から作用させていくだけ。「APLはポルノと同じだ。t左から右に読めばわかるんだ」とか言った人もいる。



もう、とんでもなく短く書ける言語で、逆行列の計算を5行で書いてあるのを見たことがあります。



そんな言語誰が使うんだ? ってことなんだけど、多次元配列を自由自在に取り扱えるので、IBMの事務員さん達ががんがん使っていたらしい。つまり、今のExcelのような使い方だったわけ。



IBMの事務員さんに関する伝説はいろいろあって、メインフレーム上の電子メールシステムを50年代に使いこなしていたとか、TeXみたいな整形言語を使えたとか... まぁ、今の、MS Office に毒された事務員さんとは全然違う世界だったらしい。どうも、かなは、それに触ったことあるらしいのだが...



というわけで、今でも、APLから抜け出れない(御年配の)人達が結構いるらしい。



このIBMの事務員さん伝説で思うのは、事務員だからプログラム言語はダメで、GUIでなければダメだってわけではないってこと。少し事務員を甘く見てないか? 事務員さんを募集するときに「APLを使えること」ってのを条件にしてやると、少しは...



もっとも、今だったら多次元配列をオブジェクトにして、それに演算子を定義していけば、ほとんど同じことはできるわけなので、それほど重要な言語ってわけでもないです。

Tuesday 22 May 2007

お休み? HTML の改ページ



なんか学生が来ないなと、思ったら、「開学記念日」らしい。明日は体育祭?!

HTMLで資料書くのは良いんだが、改ページがなぁ。
  <STYLE type="text/css">
  TABLE {page-break-inside: avoid}
  DIV.pagebreak {page-break-before: always}
  </STYLE>
  <div class="pagebreak">
という技があるらしい。

Safari では、
  DIV.pagebreak {page-break-after: always}
は動かない。なんでだ?!

CSSはSafari が印刷するときのheaderとかfooterは制御できないの?

Monday 21 May 2007

どうせ〆切にならないとやらないんだから...



でも、なんとか間に合いそうな予感。ということは、まだ、出来てません... ごめん > 関係者

論文とか予算申請とかって、少しハイにならないと書けないところがある。なんてことを学生には言えないが :-p 少しずつでも書いていれば、終るので、そうすれば良いだけなんだけどさ。

珍しく、Excel 使うんだが、罫線が面倒なので、まず、HTMLのtableで書いて、それを読み込む。おぉ、ばっちりだ。で、三つcut&pasteして、何か書き込もうとすると「リストに出来ますが、しますか?」とか聞いてくる。うっかり、リストにすると、なんか余計な枠が出ちゃう。ごめん、今、それ勉強している暇はないです。読み込みからやりなおし。

暇はないですが、プログラミング言語シリーズという現実逃避する暇はあるのは何故だ...

で、逆にExcelからHTMLを書き出そうとすると、相変わらずゴミがたくさんのHTMLを出す。Simple なtable吐いてくれればいいだけなんですけど。CSV/TSVで出力して、なんとかするscript を書きそうになっていたが、我慢しました。昔、書いたような記憶もあるが...

Sunday 20 May 2007

Perl



プログラミング言語シリーズ。

最初に見たのは、USENETに投稿されたPerl 2.0だったと思います。88年あたり。Lally Wall の名前は、patch とか rn とかで既に良く知られてました。さっそく、展開して使ってみて違和感ありませんでした。awk/shell script に慣れてたのと、awk/shell script に違和感があったので、Perlを作る動機も理解できたし。

発想的には、BASIC だと思う。世代的にもBASICになじんだ世代だし。Unix APIを、全て使えるBASICが欲しいってことだよね。

最初に作ったのは、domain の定義から、named の定義ファイルを生成するプログラムだと思う。Emacs のoutline mode のファイルから、LaTeXを生成するscript は、D論を書くに使ってました。元は、awk で、a2p で変換したものが元です。

なんだが〜 Perl 5.0 で、$a->{-count} = 3 みたいなのが導入されて、連想配列ベースのオブジェクト指向プログラムが導入されます。これは、嫌いな人が多いんじゃなかろうか?僕は、実は、こういうインスタンス変数の実装が連想配列として見えてしまうってのは、嫌いじゃないです。bless で、連想配列と module を接続して、実行時にオブジェクトを構成するってのは、面白い。

実装が見えるのが嫌いなら、$a->set_count(3); みたいな感じで、accessor を作れば良い。どんなオブジェクト指向言語でも、メソッド呼び出しはハッシュ探索になるので、実は同じだし。Perl は連想配列の高速実行に命を賭けている言語なので、それに頼るのは script 言語として正しいと思う。

このあたりが嫌いで、Python/Ruby に逃げる人は多いでしょう。

Perl reference は、あんまり複雑なアクセスは書かないが、
  $album{$album}->{tracklist}->
   {sprintf("%04d,%04d",$disk,$track)} = \%song;
ぐらいは、普通に書いちゃう。

あるいは、
  my(%arg) = @_;
みたいな形で、関数の引数を連想配列で受けるというのも良くやります。こうすると、
  CardPlay::CardPileUndo->new(
   -from=>$prevSplit,
   -to=>$self,
   -at=> - ($#{$cardpile->{'-contents'}}+1));
みたいな形で、引数にキーワードを付けて、順不同にすることが出来ます。割と普通の技術です。=> の前は、quote されるので、'' は必要ありません。-つけているのは、Perl/Tkに合わせたんだと思う。Tcl がそういう仕様なんだよね。

これは、Perlがオリジナルではもちろんなくて、Common LISPとかAdaとかも、そういう機能があります。SmallTalk/Squeak も、似たように hoge from: a to: self at: 7 みたいに書けるけど、順序を変えたいと思ったら、全ての組合せを記述する必要があります。

C で、これをやりたいときは、
 struct arg { int hage, fuga; int aho; };

 void f(struct arg h) {
   printf("%d %d %d\n",h.hage,h.fuga,h.aho);
 }

 int main8() {
   f((struct arg){.fuga = 3,.aho=5});
   printf("%d\n",((struct arg){.aho=120, .hage=55}).aho);
 }
とかすることが可能。でも、そんなことをしているのは見たことがないです。
   f({.fuga = 3,.aho=5});
と、呼べると良いんだが、それは出来ない。

C++ では、型で判断して呼び出す関数を選択する Polymorphism ってのがあります。これが、wxWidget などで、絶望的にものごとを複雑にしてしまっていると思う。Polymorphism では、デフォルト値をうまく与えることが出来ないんだよね。Open/GLとかでも、関数名に引数の型を記号化して含めるハンガリアン記法を導入しているのは、Polymorphismによる弊害を避けるためだと思う。C++ では、Defaults Arguments があるのだが、呼出側で keyword が使えないのは不便。

Saturday 19 May 2007

WS008 ExpressCard



ようやっと、PHSの切替えが出来て、ExpressCard 34 のWS008 を使ってみました。セットアップアプリケーションでは、うまく設定できず。PPPの設定を変えるところでhung upする。ありがち。で、手動設定。(ちなみに、赤耳ではなかったりします)

ExpressCard は実質的に「カード型USB」だと思う。それにしては、この大きさはナンセンス。なんで、こんなに長いんだ? なんか折りそうな感じ。MacBook Pro も、34 ではなくて、54 なら、CFが刺さるのに。この互換性のなさは、なんなんだろう? せめて、普段は、引っ込むとかの技を出せなかったのか? もっとも、AirEdge な ExpressCard 34 があるだけまし。去年のWillcom forum で「ExpressCard は?」と聞いたときは「ノーコメント」だったので。

Apple は、レガシーな規格を積極的に捨てる。毎回、食らっているような気もするが、今回のMacBook ProのPCMCIA廃止は、ちょっと困りました。あの、刺しっぱなしでアンテナ収納出来る本多エレクトロンは素晴らしかったのに... 誰かは、8x が使えないとか言って怒ってたし。

それでも、京ホンをUSBケーブルで繋げるよりはましか。4x が使えるところなら、やっぱり、W-SIMの方がいいです。でも、なんか熱くなるな。この程度で?

Willcom のW-ZERO3 es を使っている人も多いのだけど、音声契約でW-ZERO3 でPCを接続すると高く付きます。なので、ネット25の回線を追加した方が安上がり。二つ持ち歩くのは面倒でしょうけど。

Friday 18 May 2007

Java



というわけで、プログラミング言語シリーズ。

James Gosling と言えば、実は、Gosling Emacs という、Stallman のではないEmacs で有名な人だった。で、「C++ の騒ぎが収まった後に、いまさら、オブジェクト指向言語?」というのが最初の印象です。最初は組込みとかの用途だったらしいのだが、売り込みに失敗して汎用言語/WWW用の言語として売り出したらしい。

最初の印象は極めて悪いです。配列にはキャストして入れるのかよ? で、配列に入っているオブジェクトのクラスがわからなくなるから、new Interger(n) とかするの? 正気ですか? 自分の言語のターゲットして、Java VMが使えるかと思って調べてみたら、Block begin, Block end っていうコードがある。そういうものは仮想マシンコードとは言いません。そういうのは、構文木を表すコードっていうの。処理系も遅かったしね。AWT も出来悪かったし。しかも、ソースコード出さないわけ? おかげで、Kaffe とかいう実装にはまったりしましたが。

IOが使いにくい。Byteとchar/string の扱いが面倒。Multi Thread が、良く考えられてなくって、synchronized ばかりになってしまう。そんなこんなで、一太郎ARKが、Pure Java で出たときは、ちょっと驚きました。「そんなものが書ける言語だったのか?」みたいな感じ。Cで書いたUser level transport layer をJavaで書くってのをやって、すごく苦労したし(学生が...)。その時点で、オブジェクトのリンクを工夫してnew をけちって再利用したりすると、GCの関係で遅くなるなんて話も聞きました。「それじゃReal-timeに使えないだろ」と思った。結局、GCされないメモリ領域とかがReal-time Java では用意されたらしい...

もっとも、JITと、Interface は、良いアイデアだったと思う。どっちも借り物だけどね。Applet が流行らなかったのは残念だったが。流行らなかった理由は、Applet で使えるJavaのエンジンのversionが、ちっとも新しくならなかったから。例のMicrosoft の問題もあったし。

なんだけど、1.5 になってから、ぐっと良くなった。Java のGeneric は、配列のキャストのsyntax suger であって、型にしか付かないので理解しやすい。Iterator もまとも。nio は、ぐっとUnix寄りになっていて使いやすい。Thread と Lock も整理されたし。

Java の仕事をちょっとしたこともあって、OSの課題の大半をJavaでも書きました。Eclipse との相性はいいしね。Eclipse のdebugerは、ちょっと使いにくいけど。Perl/Tk で書いた自分用のソリテアをJavaに書きなおすってのをやりたいのだが、微妙に暇が見付けられず。なんでだろ。もっとも、Java で、それほど大きなアプリケーションを書いたことはありません。

Thursday 17 May 2007

歯医者



ひさしぶりに歯医者さんへ。1年ぶりぐらい。特に痛いわけでもなかったんですが。奥歯の根っ子に穴が開いているのがあって、それを気にしているらしい。そこは、86年ぐらいにやってしまって、東京でかぶせてもらったところです。横向にはえた親不知なんてのもあるらしいが抜こうという話は出ず。

あの赤い色素で「歯磨き指導」。なんと磨き忘れが... 朝、寝惚けていたか。掃除してもらっているうちに、一ヶ所、虫歯を見付けたらしい。なので、もう少し通うことになりそうです。

いきつけの所ですが、確か学科の事務の人に聞いた所です。歯医者に関しては、人の評価は重要。経験的には、

 学校指定の歯医者
 助手さんが若い女の子ばかり
 なかなか終らない
 混んでいる

というのは、危ない歯医者と言うことになってます。手先の器用さとかが出るので人の差は大きい。技術の進歩が激しいところでもあるので、それについていってないところはちょっとね。おばさん達の評価は、結構、面白いので、おばさん達に聞いて見るのが良いです。「近いところ」ってのは、外れの確率から見ると避けるべきだと思う。

「なんだ、歯医者って、こういう早くて的確な治療ができるところがあるのか」とか思ったのが、社会人になってから。もっと早く、まともなところにいけば良かったと思いましたよ。昔と今の技術の差もあるんだろうけど。「これは、だめだ」みたいなこと言われて、いままでかぶせたものは、全部、やり直し。それでも、前歯二本含めて一カ月で終ったのは、驚き。もう20年になりますが、その前歯は問題なしです。ちなみに、高校の同級生だった歯医者さんです。

Wednesday 16 May 2007

C&#043;&#043;



PL/Iの再来とか、C++はソフトウェア工学を10年後退させたとか、まぁ、そんな言われ方をしてますが...

http://tinyurl.com/2e38yw

が有名か...


もともとのCには、モジュールという概念がなく、大域変数をモジュール化出来ないっていう欠点がある。static で、ファイルの中に閉じ込めることは出来るんだけど。なので、そのあたりを改良したものが欲しいってのはある。

C++ の同時期に、Objective C とか Cob とか、いろいろ提案されてました。大学院時代の同僚も同じようなことしてました。AT&T Bell Lab をback ground に、ゴリ押し的に広まった。最初は、C++ からCへ変換する cfront とかいう実装だったはず。

Ojective C がSmalltalkを意識した実装になっているのに比べて、「Cの構造体と、構造体経由の間接呼び出しを使った、簡易実装」という感じになってます。なので、Cの構造体の欠点がそのまま残っている。この程度だったら、自分で、構造体でオブジェクトを作った方がいいと思う。

初期の有名なC++で実装されたアプリというと、InterViews というGUI Toolkit と、それで実装された idraw ですね。このidraw が「C++ のversionがあがるたびに、動かなくなる」という技を出す。いいソフトだったんだけどな。PostScript 自体がidrawのファイルフォーマットになっているという。k2d とかいう名前であるらしいが見つけられませんでした。

でも、C++ が、真のダメさ加減を発揮するのは、Template を採用してからだと思う。制御不可能なほど、ものごとをこじれさせる感じです。それまででも十分に複雑だったのに、さらに、Template を覚えないといけないんですか? タイプ変数を導入できるので、その部分は便利といえば便利なんだが... まぁ、マクロだと思えば、その場で展開されるというだけだとも言えるのだが。

  template<typename _Tp>
  complex<_Tp>&
  complex<_Tp>::operator/=(const _Tp& __t)
  {
   _M_real /= __t;
   _M_imag /= __t;
   return *this;
  }

このoperator overrideも「見た目通りに動かない」C++ と言う感じを良く出してます。この中で bug ったりしたら、debug のやりようがないです。引数の型が異なると、異なる関数を呼び出す polymorphism も C++ の場合は裏目にでていると思う。

Effective C++ は必須なんだけど、それを読んでも、なぁ...

自分で係わることは幸い少なかったんだが、C++ が噛んでいるプロジェクトで幸せにはなれないと思う。Acsis C++ の時は、逃げてしまいました。

継承とか、大域変数のモジュール化とかで使いたいことは使いたいんだけど、

 ゴミで一杯の巨大な仕様

が、すべてをぶち壊しにしていると思う。Objective C が良くできていただけに、C++ が広まったのは残念です。

ま、今は、Java に逃げるという手があるから、まだまし。っていうか、今時、C++を使うのは、Windows な開発者だけだろ?

Tuesday 15 May 2007

ML & HOL



ML は、コンピュータ理論研究者御用達のプログラミング言語です。最初に知ったのは、東大の大形計算機センタで入ったのと、それをゼミで説明した先輩がいたから。

型宣言をプログラムコードから推論する型推論と言うのが売りです。ということは、型がないのと同じ。自分で矛盾しない限りエラーにならない。型推論は実は、Prolog のunification と同じだから、型のないPrologと、型推論のMLとは、実は、ほとんど同じ。

この言語が(理論研究者の間で)有名なのは、HOL という会話型定理証明システムが、かなり早いうちから、この上で実装されていたから。自己矛盾的なんだけど、MLの自由な型付けが、定理証明システムの実装を容易にしているわけ。

-1 :: [2,3,4,5];
> val it = [1, 2, 3, 4, 5] : int list

上が自分で入力したもので、ML (ここではMoscow MLという処理系)が推論した型がint list として表示されている。この言語もポインタがない言語です。ということは、GCがある言語ってことだな。

- fun zip(l1,l2) =
if null l1 orelse null l2 then []
else (hd l1,hd l2) :: zip(tl l1,tl l2);
> val zip = fn : 'a list * 'b list -> ('a * 'b) list

- zip([1,2,3],["a","b","c"]);
> val it = [(1, "a"), (2, "b"), (3, "c")] : (int * string) list

とかになると、ほとんど意味不明だけど、orelse みたな便利な構文が多いのも特徴です。hd が carで、tl が cdr 。:: が cons というと、LISPを知っている人はわかるはず。

ちょっと面白いのは、curry 化が入っている。f(a,b) という複数の引数の関数を、g = f'(a) という関数が返す関数g を使って、(f'(a)) (g) みたいに書ける。つまり、特殊化した関数を返すことが出来ます。どんな風に実装しているかは、あまり考えたくないが...

- fun curried_zip l1 l2 = zip(l1,l2);
> val curried_zip = fn : 'a list -> 'b list -> ('a * 'b) list

- fun zip_num l2 = curried_zip [0,1,2] l2;
> val zip_num = fn : 'a list -> (int * 'a) list

- zip_num ["a","b","c"];
> val it = [(0, "a"), (1, "b"), (2, "c")] : (int * string) list

ってな感じ。

個人的には、あまり好きな言語ではないです。HOLも難しすぎるというのが印象。でも、論理を勉強するなら、やっておけば? ってなところですね。ML使うぐらいなら、僕は、Prolog 使うだろうな。上の例だと、こんな感じ。

SICStus 4.0.0 (i386-darwin-8.8.1): Thu Mar 1 22:07:26 CET 2007
Licensed to SP4ie.u-ryukyu.ac.jp temp
| ?- [user].
% compiling user...
| zip([],_,[]).
| zip(_,[],[]).
| zip([H1|T1],[H2|T2],[(H1,H2)|T3]) :- zip(T1,T2,T3).
|
| zip_num(I,O) :- zip([0,1,2],I,O).
| ^D
% compiled user in module user, 0 msec 632 bytes
yes
| ?- zip([1,2,3],[a,b,c],X).
X = [(1,a),(2,b),(3,c)] ?
yes
| ?- zip_num([a,b,c],X).
X = [(0,a),(1,b),(2,c)] ?
yes
| ?- zip(X,Y,[(1,a),(2,b),(3,c)]).
X = [1,2,3],
Y = [a,b,c|_A] ? ;
X = [1,2,3|_A],
Y = [a,b,c] ? ;
no
| ?-

ソフトウェア工学では、(他で教えないから仕方なく) 論理も教えているんだけど、その一環で使う気だったんだが、install めんどくさすぎ〜 epkg にいれるか。

MLの処理系は、Standard ML, ocaml, NewJersey ML とかあるが、HOLは、Moscow MLがお勧めらしい。OS X でも動くようですが、HOLの muddy.o のDynamic loading で、stat_alloc がないとか言ってくる。install 時に mosml のbinaryからsymbolを落してしまっているらしいが... 一応、動いているみたいな気もするが、もう少し調べないとだめだな。

http://www.dina.kvl.dk/~sestoft/mosml.html

http://sourceforge.net/projects/hol/

Prolog



仕事が進まんなぁ。琉大の学生に Prolog を教えたこともあるんだけど...

 http://bach.istc.kobe-u.ac.jp/prolog/intro/

に入門があるな。



SICStus 4.0.0 (i386-darwin-8.8.1): Thu Mar 1 22:07:26 CET 2007

Licensed to SP4ie.u-ryukyu.ac.jp temp

| ?- compile(user).

% compiling user...

| ap([],X,X).

| ap([H|X],Y,[H|Z]):-ap(X,Y,Z).

| ^D

% compiled user in module user, 0 msec 224 bytes

yes

| ?- ap(X,Y,[a,b,c,d]).

X = [],

Y = [a,b,c,d] ? ;

X = [a],

Y = [b,c,d] ? ;

X = [a,b],

Y = [c,d] ? ;

X = [a,b,c],

Y = [d] ? ;

X = [a,b,c,d],

Y = [] ? ;

no

| ?-



ってな感じで、append プログラムを逆に実行できて、append すると、[a,b,c,d]になる二つのリストをすべて生成できたりします。Erlang の構文は、これから来ているわけだ。



経験的に、Prolog で記述するとプログラムの大きさはCの1/5ぐらいになります。



C で書くと、



typedef struct list { struct list *car, *cdr; } List, *ListPtr;



#define New(x) ((x)*)(malloc(sizeoif(x)))



ListPtr

append(ListPtr x,ListPtr y)

{

  ListPtr z;

  if (x==NULL) return y;

  z = New(List);

  z.car = x.car;

  z.cdr = append(x.cdr,y);

  return z;

}



こんな感じ。逆に実行できるversionは、書く気がしないです。



http://mixi.jp/view_diary.pl?id=29297243&owner_id=2510



に、



Naive Reverse bench mark で、(おそらく1.6GHzなPowerPC)

Sicstus Lips = 10,782,608

SWI-Prolog Lips = 2,240,290

XSB Lips = 3,444,448



とか書いてあるが、システム更新で入れた i386 なSICStus Prolog (4.0.0)を試してみる。2.33GHz Core Duo で、



Lips = 125,888,324



おぉ、凄いです。2年で十倍か。確か、第五世代プロジェクトは、1台1MLips、1000台で1GLipsを目指していたはず。最初に使った C Prolog は、200Lips だった。



これは、i386 なnative compiler かも知れない。と思ったら、

 The internal representation of Prolog terms and code has been

 redesigned, resulting in code that runs up to twice as fast

 as in release 3. Native code compilation has been dropped.

とか書いてあるな。byte code interpreter で、この速度は偉いが、まだ、そんな余地があったのか。



なんだが、自分で書いたアプリケーションが軒並動かないです。Parser が変わったのと、abolish のsemantics が異なるらしい、って、なおす根性ないよ... あぁ、ISO Prolog の関係か。



http://tinyurl.com/2ea9m3



SICStus v3.x の頃も、-iso とかすると ISO Prolog になっていたらしい。で、4.0 になって、昔のモードはなくなったわけか。まぁ、いいけどさ。OS X なppcのSICStus は買わなかった(?!)ので、もう動かさないかも知れない。



昔は、SICStus Prolog はsource code license を持っていたので、どんな(マイナーな)OSでも、それをコンパイルして使っていたのだが... OS X の出始めの頃でも、さくっと動かしていたらしい。今回は、「でるまで待てばいいや」パターンだったようです。



 http://kaminari.scitec.kobe-u.ac.jp/PrologCafe/



とかも面白そうだ。Lips = 18,731 らしい。compile すると、Lips = 5,835,294 か。なかなかです。

Monday 14 May 2007

留学時代の食事



90年ぐらいにイギリスのNewcastle upon Tyne にいました。Tyne 川添いにある、昔の工業都市。珍しく都市計画がうまくいった街らしく、街のド真中に牧場があったりする。地下鉄とかがあるのも珍しい。

当時は1ポンド220円位だったのだが(その後、がんがん下がる... 今は、同じくらいだね)、外食すると夜だと10ポンド越えることが多い。ちゃんとした夕食だと、15ポンドぐらいする。別に給料安かったわけでもないが、それにはつき合えないです。パブにいく方が安い。でも、あの頃は、そんなに酒のみじゃなかったしな。

大学の食堂は、学生用と先生用と分かれていて、僕は先生用を使ってました。おいしいと思ったのは「マッシュルームスープ」だけだ...

なんだが、スーパーか何かにいくと、ぶ厚いベーコン(脂肪抜き)10枚が1.5ポンドだったりする。卵、牛乳、バター、野菜、なんでも、安くておいしい。中華街にいけば、米とか味噌とかも問題なく手にはいるし。長期保存の牛乳とかでも、日本のよりおいしいです。

大学とアパートも近かったし、イギリスの広い部屋は(寒いが)居心地は良かった。ネットワークは9600bpsだったが、今と違って、WWWブラウズとかしないので、それで十分。

ってなわけなんで、基本的に自炊してました。だいたい、1時間で作ると決めていて、それで出来る範囲のものを作るという感じ。味噌汁もご飯も自分で作れば問題ないので、「日本食が恋しい」なんてことにはなりませんでした。日本料理屋さんにも行ったが、まぁ、イギリスなんで、推して知るべしってところだし。ただし、魚料理はほとんどしなかったな。イギリスで買った英語の料理本を使ってました。日本の料理書の内容って、凝りすぎだと思う。めんどくさいって思うものが多い。和食の本を送ってくれた人もいたが、結局、めんどくさいのが多くて、ほとんど作りませんでした。食材も合わないし。作り置きするもの(漬物とかお浸しとか)は苦手だったので、あまり作りませんでした。カレーとかパスタとか野菜炒めとか、ハンバーグとか、そ感じ。

必ずついている、オーブンも使いこなせませんでした。1時間中に使うのは無理だな。ディポーザーがあったのは珍しかった。鳥の骨とかも平気でバリバリ噛んでくれる。おかげで生ゴミの処理がないのは便利だった。あと、キッチンのセットに乾燥器付き洗濯機があるのも、すばらしい。料理しながら洗濯とか、布巾をそのままつっこんだりとか。このあたりは、イギリス人の合理性が良く出ている。

コンロは、ガスではなくてヒーター。なかなか温まらない。そして、冷めない。余熱してとか、早めに止めるとか、鍋を外すとかの技術がいるね。

ただ、キッチンが土間なのにはまいりました。タイル張りなんだが、朝、寒い。隙間風があるし。しかも、大きな穴が開いていて、大きな鼠が出る。(ゴキブリはあまりいない) まぁ、靴で生活する人達には、キッチンが外だろうとあまり関係ないんでしょう。

日本は、逆で、外食が安くて、スーパーの品質が悪く、値段も高い。そんなわけで、外食がほとんどです。

Saturday 12 May 2007

酒が抜けてないな〜



事務が投げて来たPHSの書類を片付ける。携帯電話の申込の書類って、自分で書くのは不可能だよ。前は、Willcomに出向いて書いたような気がする。今回は営業を呼び出してしまいました。でも、それやるなら事務の人でも出来たか? いや、やっぱり複雑すぎるか。

音声端末とカードを組にすると安いとか、W-ZERO3をPCに繋げるよりカードを増設した方が安いとか、PRINの処理とか、まぁ、良くそこまで複雑にするよな... 世の中を複雑にする人達から複雑税ぐらい取ってやれ〜 あるいは、複雑罪ってのを作って、複雑警察が捜査するとか。

そこまでやって、PHSに関しては、以前のドコモのPHSと同じぐらいの値段ですか。この契約でドコモのFOMAのデータ定額にするといくらになるのか、ドコモに計算させてみるか? 自明に差が付かないように複雑な料金体系にするんだろうけど...

東京から来たお客さんと酒飲みにいくのは良いのだが、出がけにメガネが見当たらない。久しぶりに昔の予備を取り出して見ると、「でかい」。こんなでかいメガネかけてたのか。

遊び御庭から、抜け出して一人で飲みにいこうとしたら、社長が呼び止める。あ、まぁ、そうだよな。東京から来た会社の人と沖縄の学生で、竜潭池に放り出されたら、どこにいったら良いかわからないでしょう。ちょっと、学生には持ったいないなと思ったが、Louisana Bar にご案内。三杯飲んだところで、僕は抜けました。Bar だと三杯だな。値段的にも。国際通りだったら、もう一ヶ所いくにも困らないでしょう。

Friday 11 May 2007

DNS とか、東京の方の光とか...



かながDNSの設定がとか言って来る。ドメイン名を切替えるのか。確かに、新しい方に一台用意できるなら、その方がいいでしょう。

学科のDNSの方は、postgreSQL ベースになったらしいので、僕が直接アクセスできないので、結構困る。もっとも、学生から見るとかなり便利になったはず。はずだが、使いこなせているのは、どれくらいなんだろう?

180 台の方も、仮想マシンまでIPv4 は割振り切れないので、IPv6 の方が便利なはず。結局、あと数年(1-2年)でIPv6に移行しちゃうような気もして来た。学科的にはそうなんじゃないかな。プロバイダがIPv6 アドレスの方をやすく売り出すってことになれば、結局、そっちにの方にいかないのは、セキュリティ○○にひっかかっているところだけになると思う。

IPv6 アドレスの自動割り当てみたいな阿呆なことやらなければ、もっと早く広まったと思わなくもないです... どうして、OSIで失敗したようなこと(一見便利そうで不必要に複雑で運用が難しい技術)を、また、やるのかなぁ。

東京の自宅の方は、一応光です。ですが、例の西華産業という

 http://www.dcns.ne.jp/

市場最低のところが入っていて困ってます。「プライベートアドレス6個じゃ足りないから、もっとよこせ」と言ったら「できない」と言ったところです。大域じゃなくて、プライベートアドレスだぜ? 頭おかしいプロバイダと言って良いでしょう。当然、ポートフォーワードを設定できるわけもなく、今のところ、沖縄から東京の家のサーバにアクセスすることは出来ず。というか、今まで出来てたのが出来なくなった。

 Q. 部屋にWebサーバーを設置して、公開できますか

 A:できません。
 DCNでは、固定のIPアドレスを発行しておりませんので、
 サーバの設置はできません。又、円滑なサービス環境を
 ご提供する上で、規約上でも制限しております。  

こんなところにつないでいるのが恥ずかしいです。

それで、「うちだけで良いから、B-Flets にしてくれ」って言ったんだが、「光モデムが構内配線ボックスに入らない」という理由で却下されているらしい。B-Flets の担当の人と、「これなら入るだろう」と現場を見て判断してから頼んだのに... もっとも、外付けしたって、VHSケースサイズの箱が外に一個出るだけだが。

まぁ、結局、東京の環境は見捨てて、こっちに全部作っちゃたので、それほど困るわけでもないんだけど。でも、こっちから、東京のRD(HDレコーダ)を制御できなくなったので、奥様はテレビは見なくなったらしい。そうだろう。面白そうなのをリモートで自動的に録画してもらってくれていると言うのは、便利だったはずだ... 沖縄ではテレビ東京は入らないので、結構、見れないものがあるが、最近は、スカパーで一カ月遅れぐらいでやるので、あまり気になりません。気になりませんが、ハルヒは見れませんでした :-p

結局、最初に管理委員会に提案したように、マンション全体で、西華産業は見捨ててB-Flets のファミリーにすりゃ解決することなんだが、そのあたりの話題に突っ込むと、奥様が「理解したくありません状態」に入っちゃうので、もうどうでもいいです。つうか、管理委員会の面子に「なんで、西華産業でダメか」ってのを説明せにゃならんからなぁ。「高い」ってのが理由だったのに、止めますと言ったら、値下げしたらしい。言わなきゃ値下げしないような業者を使い続けるのも御人好しだとは思うけどね。

もっとも、他の人はあまり使ってないようなので、速度だけは快適です。 沖縄のB-Flets は名ばかりで、速度はでないからなぁ。もっとも、大学とはそれなりのスピードでつながるので、僕的にはうれしいんだけど。

とか何とか言う理由で、東京は iChat とかSkype とかIP電話とか、いろいろつながらないらしいです。

Thursday 10 May 2007

公衆ネットワークいろいろ変更中



予算申請書かなきゃいかんのだが、若干逃避中...

@niffty の HotSpot は解約。使えないところがあるんじゃ@niftyから接続する意味ないです。と、思ったらサーバダウンかよ。電話で頼んだら、技術サポートに書けなおせだってさ。それぞれ、10分電話繋げぱなしにするらしい。が、結局、別なページから変更可能だってことがわかりました。そういえば、そういうページあったよな... 解約じゃなくて、従量制への変更か... サーバダウンではなくてリンク切れだったらしい。

NTT-WESTのFelts spot は、そういえば、MBP に変えてから Mac アドレスの変更を忘れてました。それでつながらないのか。もっとも、HotSpot の方が使える範囲は広いと思う。連係しているはずなので、両方使えてもおかしくないのだが... 「お調べして、のちほど御連絡致します」あれ? もっとも、前の「フレッツスポットって何ですか?」みたいな反応よりはましなんですけど。まだ、電話かかってこないな...

PHS の契約変更の書類を事務が僕に投げて来る。契約変更の詳細は若干面倒だが、

  その面倒なことをやってくれるのが事務の仕事

なんじゃないのかなぁ。もっとも、向うはそんな風には思ってないんだろうけど。河野さんの勝手なんだから勝手にやれってことなんでしょう。

契約変更すればPHSの費用は若干やすくつくはず。まぁ、そんなことは事務には関係ないだろうなぁ。一応、説明したけど「理解したくありません」オーラが出てました。まぁ、それはそうだろう。でも、信用できないなら自分でやるしかないよ? 他の先生に問い合わせるのもいいけどさ。

つうか、つなぎに京ホン使っているので、実はとっても高く付いているはず。ごめん。まぁ、それも事務には関係ないことだ... まさか、一カ月使うことになるとは思ってなかったので。やすくなるといっても、年間10万円程度の差と言う予測です。というわけので、月一万円位余計にかかってもいいだろ〜 去年の決算も、だいたい予測の範囲内の値段だったし。(まぁ、趣味でやっているが、電話代の心配なんて大学の先生がやることじゃないよな...)

学科の内線をすべてPHSに変えると、半額ぐらいにはなるんじゃなかろうか? とは思うが、やっぱり、いまだに「会社の携帯は持ちたくない」っていう人が多いみたいですね。一方で、「会社の電話と、個人の電話は使いわけたい」っていう人もいて、いろいろ面白い。

実は大学の中央食堂付近ではWillcom のアンテナがないらしく、Willcom も積極的に売り込みしにくいらしい。学生は、au 好きだからね。

電話もIP電話にしたいのだが、奥様がIP電話に対応しないと、うちでは意味がない...

Wednesday 9 May 2007

バスタブ



奥様が掃除してくれたので、ひさしぶりに風呂に入ってみる。

風呂の水は、抜かないで取っておく方が災害対策的には良いらしい。ライフラインの復旧は、電気、水、ガスの順らしいので。トイレの水に使うとか。

でも、追い炊き出来ないので、翌日は水。沖縄だとそれでも全然Okなんだが、まだ、ちょっと早いか。

なので、そこに金魚を飼うってのがいいかなとか思う。バスタブで金魚を飼う話は、どっっかで読んだことあるかな。

久しぶりの大学院の授業だが、ソースコードを読む準備がぜんぜんダメじゃん... 自分だけで閉じた準備をする奴がいるのは、ちょっと頭に来る。もっとも、前回僕がコンパイルしたソースは一体どこにあるのか見付けられませんでした。あ、そうか、iMac は、Mesa が要らないから、Mesa は作らなかったんだな。

まぁ、来週にはなんとかなっているだろう。

Tuesday 8 May 2007

9時の飛行機



なんだけど、羽田は霧か... 出発は大丈夫でしょうけど。

Monday 7 May 2007

MindMap / FreeMind / HTML



http://ja.wikipedia.org/wiki/FreeMind

昔も書いたけど、MindMap 結構はまってます。Wordってのは、実は Outline Processor としても使える。使えるのだが.... あれほど、最低なものはないからね。WordMaster, WordStar, 一太郎、vi、Emacs と使ってきたけど、Word だけはどうしてもなじめなかった。つうか、WysiWig だめじゃんってのが、僕的な結論だったりします。ちょっと考えれば、文章書くのに最初からレイアウト考えて書くことのバカバカしさはわかる。

で、vi, Emacs に閉じていてもいいし、自分で勝手に作った outline format とか、hown とか使ってもいいんだけどさ。

Outline processor で最初にはまったのは、Mac (漢字Talkのないころの) 上の More というソフトでした。http://tinyurl.com/2yhj4h これを見て、Emacs のoutline mode にはまったのだと思う。

論文書くときでも、予算申請、あるいは、自分のプロジェクト、他人のプロジェクトでも、そうなんだけど、「いろいろな方向に書かないといけない」。その時に、通常のOutline Processor だと、横方向にあまり広がらない。縦にどんどん長くなる。そこで縦に長い画面を使うと良いとかいう話があったりするが、それは首が疲れる。

MindMap ここでは、FreeMind なんだけど、手書きではないんだが、中心から広がる感じで書けるのが良い。特に「最初に書いた部分が一番上に来る」みたいな通常テキストの呪縛が少ないのが良いです。特に、FreeMind は軽いと思う。MOREに近いUIだし。FreeMind は、Mac OS X 用のキーマップになってるし。

会議とかでも、プロジェクタ上で、FreeMind で、どんどん書いていくなんてことをしたりします。Note taking tool としても良いです。

この話題は何回も書いてるね〜

http://mixi.jp/view_diary.pl?id=150629461&owner_id=2510
http://mixi.jp/view_diary.pl?id=268981053&owner_id=2510
http://mixi.jp/view_diary.pl?id=42504705&owner_id=2510
http://mixi.jp/view_diary.pl?id=80262322&owner_id=2510
http://mixi.jp/view_diary.pl?id=92299717&owner_id=2510

で、最後に出力する時(最近は印刷しなくて良いことが多い...)には、HTMLを使います。特に、「罫線を多用した書類」の場合は、HTMLのtableが最高だと思う。Excel で書く人も多いと思うが... ただ、<table> とか書いていた後、colspan/rowspan を画面でチェックして手直ししないといけない。まぁ、一回、直してしまえば、あとは気にしなくていいんだけどね。いちいちコピーとかしなくても、<tr><td> で始めればいいのが楽。

大学で、先生達に、Excel とかを添付しないで、HTMLの<table>で書くのが良いと言っても、全然、理解してもらえませんでしたが....

Sunday 6 May 2007

ドコモの定額データ通信



http://www.nttdocomo.co.jp/info/news_release/page/070427_01.html

「インフラがだめなので、データ通信定額は、しばらくだめ」とか言われていたのが、2004年ぐらいだったと思う。HSPDA端末限定ってことは、まぁ、その通りだったってことですね。

今冬から 90x シリーズに標準搭載かぁ。90x は、ぶ厚い高いださいというのが僕の印象なんだが...

64kbps 月額4,200円(プロバイダ代別)って、PHSとは競争する気ない、ってことか。HSDPAのHが泣いていると思う。

同僚の先生方はプロバイダに入ってない人も多いらしい。情報処理センタが同等の機能を持っているのだが、PHS/携帯の定額制に対応しているかどうかは、また別なので。

東京に来ると、電車に乗っているときにネットにつながらないのがなぁ。営団のホームでHotSpot が入るのは便利なんだが、3分で電車が来るので、ほとんど使えないです。

Saturday 5 May 2007

コンパイラでめんどくさいのは、



ABI 合わせ。Application Binary Interface ですね... 要するに、

 関数の呼び出され方と、
 関数の呼び出し方

の規約だ。だいたい、歴史的な理由で決まる。ということは、

 その時、その時の事情で適当に決めた腐り切った規約

だってこと。まぁ、Cは、引数のアドレスを取れたり、コンパイラが中身を教えてもらえない可変長引数とかがあrので、ある程度汚いのは仕方がないのだが...

レジスタとそのセーブする場所、局所変数と関数呼び出しの呼び出され側(callee)の引数、呼出側(caller)の引数が、重ならないように配置するわけなんだけど、微妙に合わない。調整する部分が3-4箇所あり相互に依存しているので。


合わないと、まったく動かないわけではない。あたりが最低... このあたりを、線形制約で解くみたいな論文があったような気がするが...

C との互換性を捨ててしまえば、このあたりはさっぱり気にしなくて良くて、実際、自分で作った部分は、マシン依存性はほとんどない。その分、プログラマにしわ寄せがいくだけだがね。

Friday 4 May 2007

エネループ



スタパを見てたら、こんなものが...
 http://impress.tv/host/pj/stv/
充電池かぁ。昔、NiMH をWalkman用に使ってました。

で、ジャパネット限定のセットがあるらしい。
 http://tinyurl.com/2lzwzy

なんだが、
 http://1026blog.blog33.fc2.com/blog-entry-253.html
によると「一見ジャパネットが安そうですがジャパネットは5,980円に送料と消費税が別に必要なので・・・」だそうです。ありがちだ...

でも、三洋電機のページを見ると、
 http://www.sanyo.co.jp/eneloop/lineup/index.html

単3形eneloopの充電時間 NC-TG1 約7時間

え、充電に7時間もかかるの? 昔のNiCdのトリクル充電並じゃん。と思ったら、急速充電器で、
 NC-M58 約220分 (約100分) 約155分
なのかぁ。というわけなので、こいつのセット(N-M58TGS)が良さそうです。

昔と違って、内部放電が少ないので、リモコンとかにも使える感じ。

Thursday 3 May 2007

イアホン見付かりました



お気に入りのSony EX90SL を4/24になくしたらしいんですが..

昨日、バッカスの胃袋で飲んでたら、山田さんが「黒いソニーのイヤホンで、携帯のアダプタがついているのなら321で見たので、教卓の下に置いておいたよ」ということでした。

なので、飛行機に乗る前に大学に取りにいくと、ちゃんとありました。321も探したんだけどなぁ。ありがとう > 山田さん。

ちなみに、その前の週にも、なくしたと思っていたら、鞄の底から出て来たってのがあったんだよな。

ステレオミニと標準プラグ2の変換ケーブルは実は、ミニx2にもなるので、飛行機で使うのには便利だ。普通のステレオミニがついている方が普通だと思うんだが、ミニx2は、変だよね。

というわけで、5/8まで東京です。

Wednesday 2 May 2007

これから出ます...



壊したコンパイラを9割ぐらい直せたか....

Tuesday 1 May 2007

そら豆



ご近所の「そら豆」は、なかなかおいしかった。写真なしです。

 http://tinyurl.com/yuzghq

沖縄って居酒屋はたくさんあるんだが、料理がおいしいところは少ない。ここは、メニューが充実してる。今度、「定食に出来ますか」って聞いてみよう。

うるさく言うと、いろいろあるが...