トップ 最新 追記   RSS 1.0 FEED  

Journal InTime


2004-04-01 (Thu) [長年日記]

_ [仕事] 新入社員入社

10:20頃に何気なく出社してメールチェックしていると、社長からこんな メールが。

松江本社の大部屋で10時から新入社員の紹介をしますので、みなさんよろしくお願いします。

がーん、ごめんなさい…。

_ [babel] version 0.0.0 リリース

とりあえず、リリースしてみた。 バージョン番号に相応しい品質を達成しています。


2004-04-02 (Fri) [長年日記]

_ [babel] Microsoft .NET Framework対応

画像の説明

Microsoft .NET Frameworkではやっぱり動かなかったので修正。 とりあえず、hello worldくらいはコンパイルできるようになった。

どうも、Microsoft .NET Frameworkの方がmonoより制約が多いようだ。 (というか、ドキュメントにない例外が発生するんですけど。) ほんとはこっちをメインの開発環境にした方がいいんだろうなあ。

_ [会社] 新入社員歓迎会

行きましたよ、ボーリング。

1ゲーム目は100も行かなかったけど、3ゲーム目にたまたま130超えたの で個人的には満足。 しかし、やっぱり筋肉痛が…。


2004-04-04 (Sun) [長年日記]

_ [その他] 花見

木次まで花見に。

多少葉っぱが出てたものの桜はきれいだったけど、寒いやら子供が重い やらであまり桜を見る余裕はなかった。

毎年焼サバを売ってるらしくて、奥さんのおばさんにもらったのを食べ たらおいしかったけど、よく考えたら木次って海に面してないよな。 何でサバなんだろう。


2004-04-05 (Mon) [長年日記]

_ [mod_ruby] mod_ruby-1.1.3

MLで「開発止ってるのか?」と言われてリリース。

一応メンテナンスは続けているものの、機能拡張などは停滞しているの で、1.2.0出した後は誰か引き取ってくれないかなあと思っていたりする。 会社の後輩が引き取ってくれると一番いいんだけどなあ…。

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

_ Kouji [「会社の後輩」、それはあの人しか…。]

_ shugo [Y君のことですね:)]


2004-04-06 (Tue) [長年日記]

_ [ソフトウェア] nvi-m17n for sid

nvi-m17nの新しいバージョンが出ていたので、sid用にパッケージをビル ドしてみた。

deb http://shugo.net/debian ./
deb-src http://shugo.net/debian ./

バージョン番号がアレだけど、何か仕掛けられてるんだろうか。

_ [babel] babel-0.0.1

Windows XPのMicrosoft .NET Framework上でmake checkが通るようになっ た。


2004-04-07 (Wed) [長年日記]

_ [ソフトウェア] tags-searchの検索文字列のデフォルト値

会社で「Emacs上である関数が使われている箇所を探す時どうするか」と いう話になった。 以前は、同じファイル内だけ探す時はisearch、複数のファイルを探す grepだったのだが、最近tags-searchを使うようになった。

後輩は検索のたびに関数名をコピーしてからミニバッファでペーストし て検索しているらしい。曰く、「長い関数名いちいちタイプするの面倒 臭くないですか?」 そういえば、そうだよな。でもコピー&ペーストもけっこう面倒だぞ。

tags-searchの検索文字列のデフォルト値に現在位置の識別子を渡す (find-tagみたいに)のがラクそうだなと思って、defadviceで拡張してみ た。

(defadvice tags-search (before default-value activate compile)
  "Provide default values."
  (interactive
   (list
    (let ((default (funcall
                    (or find-tag-default-function
                        (get major-mode 'find-tag-default-function)
                        'find-tag-default))))
      (read-string
       (format "Tags search (default %s): " default)
       nil nil default t)))))

ついでにtags-query-replaceも。

(defun tags-query-replace-read-args (string regexp-flag)
  (let ((from nil)
        (to nil)
        (default (funcall
                    (or find-tag-default-function
                        (get major-mode 'find-tag-default-function)
                        'find-tag-default))))
    (if query-replace-interactive
	(setq from (car (if regexp-flag regexp-search-ring search-ring)))
      (setq from (read-string (format "%s (default %s): " string default)
                              nil query-replace-from-history-variable
                              default t)))
    (setq to (read-from-minibuffer (format "%s %s with: " string from)
				   nil nil nil
				   query-replace-to-history-variable from t))
    (if (and transient-mark-mode mark-active)
	(list from to current-prefix-arg (region-beginning) (region-end))
      (list from to current-prefix-arg nil nil))))

(defadvice tags-query-replace (before default-value activate compile)
  "Provide default values."
  (interactive (tags-query-replace-read-args "Tags query replace (regexp)" t)))

ちなみに、自分は以下のキーに割り当てている。

(global-set-key "\M-s" 'tags-search)
(global-set-key "\M-r" 'tags-query-replace)

最近ラクするのを怠けていたので、もっと頑張ってラクをしようと思う。

_ [ソフトウェア] tDiaryのテーマ

ふと思い立って微妙に変えてみた。

_ [その他] グーグル、反ユダヤ論争に巻き込まれる

「Googleは、複数のコンピュータアルゴリズムだけをもとにして、検索結果の順位を決定する。基本的にウェブでの人気度を反映している」とKraneは述べる。「人間はGoogleの検索結果を操作しない。検索結果を手動で変えることはできない」(Krane)

[グーグル、反ユダヤ論争に巻き込まれるより引用]

あれ、そうだったんですか、ふーん。

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

_ kose [関数名上にカーソルを置いて C-u M-x grep ってのも便利ですよ。]

_ shugo [おお、知りませんでした。これは便利ですね。]


2004-04-08 (Thu) [長年日記]

_ [言語] C# Generics

monoのC#コンパイラにgenericsが実装されたようだ。


2004-04-09 (Fri) [長年日記]

_ [その他] 「自衛隊は即時撤退しても日米同盟は壊れません」

リンクはJMMの冷泉彰彦氏の記事だが、 すぐに他の記事に変わってしまうと思う。*1 (前はバックナンバーが公開されてたような気がするんだけど。)

おおまかな論旨としては、

  • もちろん人質の命は大切だが、撤退しない場合のリスクはそれ以外にもある。 日米同盟への影響は、撤退しない場合の方が深刻になる可能性がある。
  • この事件がなくとも、昨今の治安情勢からこれ以上の自衛隊の活動は難しい。 今撤退したとしても、テロに屈したと考える必要はない。

といったように、自衛隊の撤退を主張している。 意見にはおおむね賛成 *2 なんだけど、

これに対しては、日本は堂々と自衛隊を引くべきです。胸を張って引き上げるべきです。アメリカの庶民は、誰も不思議に思わないでしょうし、大した悪感情も持たないでしょう。政治家のメンツは潰れます。ブッシュ=チェイニー=ラムズフェルドのメンツは潰れます。小泉=福田=石破のメンツは潰れるでしょう。ですが、それだけです、日米関係はビクともしないでしょう。

[「自衛隊は即時撤退しても日米同盟は壊れません」from 911/USAより引用]

この政治家のメンツが問題だよな。 皮肉なことに、福田さんは「人命は地球より重い」発言の福田赳夫元首相の息子ときている。

と思ったら、 父の時と「時代が違う」 だそうだ。

*1  すでに変わっていた:(

*2  ちょっと視点が対米問題に傾きすぎな気がするけど「from 911/USA」がテーマだからしかたない。

_ [その他] 3人の誘拐について大急ぎで

こちらは池澤夏樹氏のメールマガジンの記事(あ、Movable Typeなんだ)。 議論の流れはぜんぜん違うけど、結論は同じ。

ただし、3人が誘拐されたから、その生命を救うために撤退するのではない。それでは取引になってしまう。 今後、日本に対して何か強い要求を持つ者に対して、日本の民間人を誘拐すれば目的はかなうという前例を与えることになる。それこそテロに屈することになる。

そうではなくて、自衛隊を復興支援という名目のもとに派遣したことが間違いであったことを公式に認め、今のイラクを平和に導くために必要なのは武力ではないことを認め、その上で撤退を速やかに実行する。言い換えれば、誘拐とは無関係に、政策の転換を内外にはっきり表明する。

[3人の誘拐について大急ぎでより引用]

本当にそうできれば、と思います。

_ [Ruby] selector namespace

[ruby-list:39453]を見て思ったけど、やっぱりRuby2には selector namespaceが欲しいな。

簡単に復習すると、selector namespaceというのは、特定のスコープ においてのみ既存のクラスのインスタンスの振舞いを変えることが出来る仕組みである。

たとえば、

namespace mathematical
  class Fixnum
    def /(other)
      return Rational(self, other)
    end
  end
end

みたいなselector namespace定義(?)があったとして、これを

import mathematical

のように特定のスコープ(たぶんファイルとかクラス・モジュールとか)にインポートすると、 そのスコープでのみ、

p 1 / 2   # => 1/2(Rational)

のようにFixnum#/の挙動が変わるわけだ。

この時、namespaceをimportするスコープが静的であるのがミソで、このスコープから メソッド呼び出しを行った場合、呼び出し先のFixnumの挙動には影響しないのだ。 *1

*1  動的なスコープでよければ、[RAA:scope-in-state]で同じようなことを実現できる。

_ [Ruby] selector namespaceとdouble dispatch

selector namespaceがあればこんなこともできる。たとえば、

class HTMLElement
  ...
  def print_on(output)
    ...
    case output
    when String
      ...
    when IO
      ...
    end
    ...
  end
  ...
end

というコードがあったとしよう。

これはよくないコードだ。 なぜならオブジェクトのクラスを調べて分岐しているから。 こういうコードを書くと、outputにStringやIO以外の新しいクラス(たとえば、 IOと同じようなメソッドを提供するけれどもIOを継承していないようなクラス) のインスタンスを受け取ることができなくなってしまう。

より良いのは、こんなコードだ。

class String
  def print_part_of_html_element(element)
    ...      
  end
end

class IO
  def print_part_of_html_element(element)
    ...      
  end
end

class HTMLElement
  ...
  def print_on(output)
    ...
    output.print_part_of_html_element(self)
    ...
  end
  ...
end

こうしておくと、新しいクラスのインスタンスをHTMLElement#print_onに渡したければ、 そのクラスにprint_part_of_html_elementというメソッドを定義すればよいわけだ (polymorphism万歳)。 *1

ところが、このコードにも問題がある。 それは組み込みクラスの挙動をグローバルに変更してしまっている点だ。 こんなことをするのはあまり気持ちのいいものではないし、何より、 他の人が同じようなことをしていたらメソッド名が衝突してしまうかもしれない。

そこで、selector namespaceの出番だ。

namespace html_element_printing
  class String
    def print_part_of_html_element(element)
      ...      
    end
  end

  class IO
    def print_part_of_html_element(element)
      ...      
    end
  end
end

のようにnamespaceを定義しておいて、

class HTMLElement
  import html_element_printing
  ...
  def print_on(output)
    ...
    output.print_part_of_html_element(self)
    ...
  end
  ...
end

のようにimportしてやればいい。 これなら、HTMLElementの外にはまったく影響がないのだ。 何て素晴らしいんだろう。

*1  こういうのをdouble dispatchという。 print_onとprint_part_of_html_elementの二回method dispatchをするから。 CLOSみたいにmulti methodならこんなことをしなくてもよいのだが、Rubyが そうなることはないだろう。まつもとさんはmulti methodが嫌いらしいから。 selector namespaceにもそういう面があるけど、オブジェクトとメソッドの結び付きが弱く なるんだよね。

_ [Ruby] selector namespaceと継承

もちろん、まったく問題がないわけではない。 一番大きいのは継承との整合性の問題だろう。

たとえば、[ruby-list:39453]を例にあげると、

namespace mathematical
  class Integer
    def /(other)
      return Rational(self, other)
    end
  end
end

import mathematical

p 1 / 2

とした時に、出力は1/2(Rational)になるべきだろうか、それとも0になるべきだろうか。

知っての通り1はFixnumのインスタンスで、FixnumはIntegerのサブクラスだ。 /はIntegerではなくFixnumに定義されているので、普通はIntegerに/を定義しても Fixnumの挙動は変わらない。

問題は、selector namespaceの定義とどちらを優先するかだ。 場合によってはselector namespaceの定義の方を優先してほしい場合が あるかもしれないが、そうした場合、サブクラス化によるpolymorphismの恩恵を 受けることができなくなってしまう。 やっぱりサブクラスの定義を優先するべきなのかもしれない。

_ [Ruby] selector namespaceの実装

もう一つの大きな問題はどうやって効率的に実装するかということ。

これに関しては、selector namespaceをimportしているスコープのメソッド呼び出しの うち、selector namespaceで定義されたメソッドの呼び出しかもしれない部分(メソッド名 を見ればわかる)だけ、メソッド検索のアルゴリズムを変えてしまうのはどうだろう。

たとえば、前にささださんが日記で(メソッド検索全般の話として)書いてたと思うけど、 メソッド名毎にクラス(や特異クラス)をキーにしたテーブルを作っておくとか。 テーブルのメンテナンスが大変そうだとか、特異メソッドを多用してたら大変という のはあるかもしれない *1 けれど、selector namespaceを使わない場合の性能が落ちなければ許容できるような気がする。

*1  selector namespace使ってるところで特異メソッドは使わない気がするけど。

_ [Ruby] selector namespaceって名前でいいのか?

あと、selector namespaceって名前はどうなんだろう。 たぶん、Smalltalkのselectorのことだよね。 Ruby的にはmethod namespaceとかの方がわかりやすい?


2004-04-12 (Mon) [長年日記]

_ [その他] イラク自衛隊問題

解放宣言のニュースが流れた後も、いまだ人質の解放は確認されず、情報は錯綜している。

今回のテロがなかったとして、もともと自衛隊は撤退するべきだと考えていた人(自分も含む)の 中でも、意見が分れているようだ。 それは、今撤退するべきだ、という意見と、今はすべきでない、という意見だ。

後者の意見の人々はテロに屈するべきではないと言う。もちろん、それはその通りだ。 いかなる背景があろうともテロは許されざるべきものだし、一度それに屈すれば新たな テロを生む危険性もある。

しかし、もともと自衛隊は撤退するべきだと考えていたのならば、テロを受けて撤退する べきではないと表明することも、テロに屈していることになりはしないだろうか。

_ [PEG-TH55] 入手

画像の説明

やっと入手できた。

第一印象:

  • やっぱりカッコいい。 とくに、思ったよりアクリルカバーがカッコいい。 (邪魔ではあるけど。)
  • 背面ジョグはやっぱり慣れるまでつらそう。 (慣れるのかなあ...。)
  • やっぱりPalmwareは見た目がショボい。 (Athena widgetかと思ったよ。)

浅い感想ですみません。


2004-04-13 (Tue) [長年日記]

_ [PEG-TH55] カメラ

恵長

カメラが一応付いてる(今時30万画素だけど)ので使ってみた。

カメラ単体で見ると携帯以下なんだけど、 スケジュールや手書きメモにドラッグ&ドロップできるのは面白いと思う。

あと、日記に写真を載せるのに便利そうだ…と思ったけど、NetFrontでの改行の入力の仕方が わからず結局PCから。


2004-04-14 (Wed) [長年日記]

_ [PEG-TH55] LinuxでHotSync

Linuxで無線LAN経由のHotSyncを試みるも、なぜかBCMLib.prcのところでかならずSEGV。 pilot-linkでもjpilotでも同じ。

$ pilot-xfer -p net: -b clie/backup
...
Backing up clie/backup/BCMLib.prc             zsh: segmentation fault  pilot-xfer -p net: -b clie/backup

gdb上で動かしてみるとどうも挙動がおかしい。

試しにpilot-linkを-O0でビルドしたら動いたのであまり深追いしないことにしよう。

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

_ Benjami [Have solved this problem? I have the same issue since the..]

_ shugo [I recompiled pilot-link with the gcc option -O0, then it w..]


2004-04-15 (Thu) [長年日記]

_ [その他] 離婚弁護士

妙齢の女性弁護士がカッカッカッと歩いて早口でまくしたてるところといい、 CGによる特殊効果といい、ビルの屋上で黄昏れるシーンでの音楽の使い方といい、 かなりAlly McBeal を意識している気がする。 あ、変態が出て来ないな。

_ [ソフトウェア] C-u M-x grep

まつもとさんも知らなかったらしいし、周りの人はだれも知らなかった。 知らないのは自分だけだったのかも、と思っていたけど、ちょっと安心。


2004-04-16 (Fri) [長年日記]

_ [仕事] 新人研修

今日は新人研修の当番。でもプログラム書かせてるだけなのでラクチンだ。

他の人は真面目なことをいっぱいしゃべってたけど、こっちはほとんど雑談。

_ [PEG-TH55] PalmVNC

PalmでもVNCが使えるらしい。 MergicVPNを使えば、VPNを使ってsecureな 通信路で利用できるようだ。

ちょうどいいMUAが見つからないからいっそのことこれにしようかなあ…。 ちなみにPalmVNCはfree(GPL!)だけど、MergicVPNの方は商用で$29.99なり。


2004-04-19 (Mon) [長年日記]

_ [仕事] 残業

20日の午前4時までかかってプレゼンの準備。疲れた…。


2004-04-20 (Tue) [長年日記]

_ [PEG-TH55] 落とした…

2時間も寝てなかったせいか、スーツのポケットに突っ込もうとして落としてしまった。 とりあえずちゃんと動いてるようだけど、うーむ。

_ [ハードウェア] 632A

632A

出張の帰りにまつもとさんと秋葉原で購入したUSB2.0対応2.5インチHDD外付けケース。 (1345円なり。)

最初はディスクは認識されているのになぜか読み書きできなかったのだが、ehci-hcdを使ったら 動いた。 でも大量の書き込みをすると刺さるようだ。うーん。


2004-04-22 (Thu) [長年日記]

_ [PEG-TH55] また落した…

今度はジャケットの内ポケットに入れたまま脇にかかえていたらスルッと。 何かそのうちアスファルトの上に落としそうで恐い。


2004-04-24 (Sat) [長年日記]

_ [その他] かぜ

かぜをひいた。 のどの痛みと鼻水がひどい。


2004-04-25 (Sun) [長年日記]

_ [PEG-TH55] NetFrontでの改行入力

NetFrontで改行を入力するには、メニューからキーボードを表示してやればいいらしい。 キーボードを表示しておきさえすれば、decumaの改行ボタンでも入力できるようだ。

これって仕様なのかなぁ。

_ [その他] キャッチャー・イン・ザ・ライ

かぜをひいて動けないので本を読もうと思って、奧さんに買い物のついでに「村上春樹訳の ライ麦畑を買って来て」と頼んだのだが、見つからなかったと言って帰って来た。 きっといっぱい置いてあるだろうにおかしいなあと思ったら、よくよく考えてみると、 村上版のタイトルは「キャッチャー・イン・ザ・ライ」なのですね。見つからないわけだ。

昔はOzzy Osbourneの"Shot In The Dark"が「暗闇にドッキリ」だったりして のけぞったものだけど、みんなカタカナというのもちょっとさみしいですね。


2004-04-26 (Mon) [長年日記]

_ [ハードウェア] PowerMac G4 Cube

PowerMac G4 Cube

OS9しか入ってなくて会社で打ち捨てられていたG4 CubeにLinuxを インストール。

しかし、メモリ64MBはつらいなあ。 だれかMac用の要らないメモリがあったらください。

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

_ かずひこ [DOS/V 系の PC100/133 の SDRAM が使えませんか? うちでは 512MB のは相性なのかトラブル..]

_ shugo [へー、PCと一緒なんですね。]

_ shugo [ちょうどマザーボードがイカれてたマシンがあったので、メモリかっぱらってきて付けてみたらOKでした:-)]


2004-04-27 (Tue) [長年日記]

_ [] 松屋のせき止め飴

いつもそうだけど、のどだけどうも直らないので、ウェルネスで購入。

ちょっと高かったけど、やさしい味。 でも、「厄除」とか書いてあったり、裏に「漢方薬辞典によりますと せき止め飴に配合されております薬草はそれぞれ鎮咳、去痰、咽頭痛、解熱、健胃に 有効とあります。」とか書いてあるのが、そこはかとなくうさんくさい。


2004-04-28 (Wed) [長年日記]

_ [babel] import

とりあえず、名前空間の導入(?)にはimportという予約語を使うことにした。 (usingには何となく抵抗があったので。)

定義する時には、

namespace FOO;

class BAR is
   ...
end;

と、

namespace FOO is
   class BAR is
      ...
   end;
end;

のどちらがいいだろう。

後者の利点はファイルと独立した単位にできること、欠点はインデント幅が増えることかな。

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

_ ま2 [後者だと,namespase 〜 end; がものすごーく長くなって,対応が分からなくなるケースが増えるような気がし..]


2004-04-30 (Fri) [長年日記]

_ [babel] namespace

まつもとさんま2さんのお勧めに従って、

namespace FOO;

class BAR is
  ...
end

というスタイルで行くことに。

namespace FOO is ... endスタイルだと(namespaceの)テスト書くのがラクかな と思ったけど、そういう安易な考えで仕様を決めてはいけませんね。