2006年1月30日月曜日

はてなダイアリーブック

今日、一番がっかりさせられたもの。

ブログがきれいに製本されるなんて、自分の書いたものに愛着のある人もいるだろうし、いいアイデアだと思って、サンプルのPDFを見ました。しかし、驚くくらい何の素っ気もないデザイン。

こんなものを作って平気で売り出す感覚はいただけない。
男ばかりの暗い職場なのかと、勘ぐってしまいます。

一方、最近、素敵だと思ったのは、今井タオルのCHOCOLAT。チョコレートの甘美さを、タオルのデザインに持ってくるセンスの良さがいいです。

売れるものとデザインの良さは密接に結びついています。
けれど、そういうものを生み出すおしゃれな感覚は、部屋や職場にこもっていると、どんどん衰えていくと思います。

その意味で、今の大学はあまり好きではありません。
感覚が鍛えられていない人ばかり目にするので…。

学生さんはいいのです。服装などにお金をかけられなくても若さがあるから。
けれど、研究者になるとお金はあっても、身だしなみに気を使わない人のなんと多いことか。
嘆かわしいです。

2006年1月28日土曜日

NoMachine NX

ウィンドウのビットマップを送り続けるRealVNCより、FreeNXと、NX Client for Windowsの組み合わせの方が動作が速いと聞いたので、早速挑戦。が、はまりどころ多し。

Fedoraを使っている人は、
http://fedoranews.org/contributors/rick_stout/freenx/
ここの記事通りに設定すると大抵うまく行きます。

ただし、NX Clientをインストールする側のwindowsにcygwinが入っている人で、cygwin1.dllを環境変数PATHから参照できる位置に含めていると、NX Clientに含まれているcygwin1.dllと衝突して、NX Clientが見た目は動いているのにSSH接続できない状態になったり、cygwin環境を使えなくなったりします。

対策は、(Install folder of NX Client)/bin/cygwin1.dll を renameして、NX Clientにこのdllを使わせないようにするだけです。

次のはまりどころは、接続先でemacsを使うとフォントが正常に表示できなくなる問題。
フォントが見つからなくて、□□□ 表示になってしまいます。

remote側のfont serverに接続するのが一番妥当なのですが、NX Clientでforwadingの設定ができないので、別口で
sshをする必要があって、これは面倒。

その他の解決策は、↓にあるように、
NoMachine NX - Support: Article
サーバー側の/usr/X11R6/lib/X11/fonts の内容をすべて、
ローカルの、(Install folder of NX Client)\usr\X11R6\lib\X11\fonts\
にコピーすること。

これでemacsも普通に使えます。

動作は確かにVNCより速い。けれど、sessionに再接続できなくなったりするなど、難もあり。

2006年1月26日木曜日

RealVNCは使える

cygwinでXを動かすなんて面倒なことをしなくても、RealVNCで十分だということが判明。

サーバー側で、vncserverを実行して、5901番をローカルマシンにport forwardingした後、VNC Viewerで、localhost:1などに接続。 簡単。

Fedora Core4をGUI環境で使ってみると、
ターミナルは最初からタブ付きだし、screenなんて必要ないことに気付く。

世の中便利になったねぇ。

2006年1月25日水曜日

ホリエモン衆院選出馬前に「国民はバカ」

ホリエモンを批判する岡田氏だって「国民はバカ」でないと思っているわけではないでしょう。

郵政民営化という言葉に惑わされて、個々の選挙区では、
普段は勝ち得ない人まで自民党候補という理由で当選して、民主党は大敗したのだから。

大半の人はテレビや新聞の情報を鵜呑みにし、国はどうあるべきかという信念を持たないために、情報に踊らされやすいのです。「バカ」という言葉が行き過ぎなら、「真っ白」を使いましょう。真っ白な心ほど、怖いものはありません。人の言葉によって簡単に染まってしまうのだから。

2006年1月24日火曜日

@IT:真ゼロ円でできるXサーバ[Windows XP編]

普段はリモートで作業するときはrxvt(on cygwin)のコンソールで事足りていたけれど、Ruby on Railsを使った開発をリモートで行うには、やはりGUI環境も欲しいので。

cygwinでRuby on Railsの開発をやめようと思った矢先に、cygwinのXを使うあたりがなんとも。

IBM opens up analysis software

IBMがUnstructured Information Management Architecture (UIMA) technologyのオープンソースソフトウェアを公開。

これって、UIMAって、構造化されているけれど、構造にそれほど意味のないXMLと似たものを感じるけどどうなんだろう?

http://sourceforge.net/projects/uima-framework

時に挑発 ホリエモン語録

朝のワイドショーをみても、それに対する人々のコメントもそう。逮捕されたから悪い人、真似しちゃいけないという話になるのがつまらない。非建設的。

結局、こういう局面になるとメディアが何を伝えたいのか、本当にわからなくなります。ホリエモンは法を犯したから、過去の報道やセリフにさかのぼって、事件と結びつくところを恣意的に切り貼りして報道するばかり。殺人事件などと同様、なぜ犯罪に結びついたかを究明するというスタンスをとっているつもりなのだろうけど、証券取引法の背後にある思想も説明しない(できない)し、グループ内の偽装工作といっても、グループと見なし得る範囲も明確でないまま、報道して、素人的な感情や印象だけで意見を述べる。

さんざん異端児やら寵児として扱ってきて、信条もない素人の感情に訴えるだけの報道で終わってしまうあたりが、ばかばかしい。

世の中のほとんどの人が、ライブドアの事件について、問題となっている部分の違法性を見抜くことができなかった(今でもまだわからない)のに、堀江氏を公認しようとした自民党の責任を追及してどうする。盲目的だったとはいえ、圧倒的な支持を受けた政治基盤を不安定にしたいの? それって、国益に結びつく? 人目を引きそうな報道をして、自分たちが利益を出したいだけとしか思えない。

前回の選挙で、他にも重要なことはたくさんあったのに、郵政民営化が焦点になるように、メディアが利用されてしまったから、うさ晴らししてるの?

プロ野球に参入させなくて良かったと喜んでどうする。既得権益をくずせない、ファン軽視、長すぎるFA権取得までの時間、選手の人生設計も考えない、自分のチームさえ良ければいいという考えがプロ野球全体のレベルダウンにつながっていることが問題ではなかったの?

「お金があれば人の心は買える」という彼の言葉に道徳的に反感を感じる人もいるでしょう。でも、「お金で避けられる不幸はかなりある」ことを踏まえて意見を述べて欲しいものです。

「楽して儲けちゃいけない。まじめに働かなきゃいけない」という意見。 ライブドアの首脳陣がまじめに働いてなかったとでもいうのでしょうか。経済の仕組みや法律も学んでそれを駆使する彼ら。まじめって何? 与えられた仕事をきちっとこなすこと? でも、それでは、半数が赤字の日本の企業を立て直すことはできないって気づいてないの? 仕事を作る経営者の側にも問題があるから、経済的な活気が伸び悩み、国民の負担が重くなっていく。頭を使って、市場のニーズにあうもの、価値を生み出すものを作り出す仕事を作って働くというのが常に大事なこと。

僕は世間一般で言う「まじめ」という言葉は「まわりが見えない」という意味だと感じています。未成年者の事件がおこると「まじめな子だったのにどうして?」というよく聞く言葉。「まわりが見えない」と置き換えると、すんなり納得できます。

昨今の報道で、一体何を生み出せたのか。
建設の事件でも、詐欺疑惑の究明ばかりで、問題の本質はそこではないでしょう?
当の社長が事実を話したところで、問題は終わらないのだから。

Subversion-Ruby Binding on cygwin

rubyからsubversionのrepositoryを操作できたらとても幸せなのです。
Ruby on Railsで作っている自分用のプロジェクト管理システムが作れてしまうので。

cygwin上で、subversion-1.3.0のソースから
make swig-rb を試してみるも、undefined_referenceではまる…。

失敗したけれど、そこに行き着くまでかなり紆余曲折があったので、
インストールメモを残します。

cygwin, setup.exeで、libdb42と、apr, apr-util, libtool, neonをインストール。
> ./configure --with-apr=/usr --with-apr-util=/usr --with-neon=/usr
> make swig-rb

cd subversion/bindings/swig/ruby/libsvn_swig_ruby && /bin/sh /home/leo/local/src/subversion-1.3.0/libtool --tag=CC --silent --mode=link gcc -g -O2 -rpath /usr/local/lib -o libsvn_swig_ruby-1.la -no-undefined swigutil_rb.lo ../../../../../subversion/libsvn_client/libsvn_client-1.la ../../../../../subversion/libsvn_wc/libsvn_wc-1.la ../../../../../subversion/libsvn_subr/libsvn_subr-1.la ../../../../../subversion/libsvn_delta/libsvn_delta-1.la /usr/lib/libaprutil-0.la -lgdbm -ldb-4.2 -lexpat -liconv /usr/lib/libapr-0.la -lresolv -lcrypt
Creating library file: .libs/libsvn_swig_ruby-1.dll.a
.libs/swigutil_rb.o: In function `SWIG_Ruby_NewPointerObj':
/home/leo/local/src/subversion-1.3.0/subversion/bindings/swig/proxy/swig_ruby_external_runtime.swg:582: undefined reference to `_rb_data_object_alloc'
/home/leo/local/src/subversion-1.3.0/subversion/bindings/swig/proxy/swig_ruby_external_runtime.swg:584: undefined reference to `_rb_str_new2'

(その後延々と続く)

subversion - python bindingは簡単にmakeできました。
ためしに、Fedora Core4上で、make swig-rb してみたも、簡単に成功。

新しいものが好きのなのに、cygwinを使っているのは時間的なデメリットが大きいと痛感した1日。
configureスクリプトの動作も遅いし。

VMWareを使うほどでもないので、ローカルでXサーバーを動かして、リモートのlinuxマシン上で作業するのが吉。

2006年1月23日月曜日

Project collaboration, management, and task software: Basecamp

今日見つけた物のメモ。

お仕事管理用にいいかも。

2006年1月20日金曜日

喫煙は治療が必要な“病気”

こう定義すると、分煙を謳っていても敷居もなにも用意していないお店は、
病気でない人よりも、病気になってしまった人を大事に扱うところのようです。

なんてhospitality。まるで病院ですね。




ふんっ ( ̄^ ̄)

水に沈む車から脱出する方法

車って水に沈むと、水が至るところから車内に侵入してくるんですね。映像を見てびっくり。
水中ではドアを開けようとしても、開かないことが多いみたいです。

助かるための手順は、

1.シートベルトを外す。
2.ロックを外す
3.窓を開ける
4.窓から頭を出して屋根によじ登る
5.体を車から突き放す

一瞬の勝負です。覚えておこう。

2006年1月19日木曜日

Labeled Treeの数え上げ

ラベル付き木(labeled tree)の数え上げはいくつになるかを解こうとして解けなくて悩んでいたら、ちゃんと100年以上前に解いている人がいました。

数学者ってすごい。

2006年1月12日木曜日

今日のTypeWell

基本英単語 48.7秒(ランクXF)でした。

自分の頭の中でイメージするタイプと、指の動きにかなりギャップがあるので、ちょっと練習するとまだまだ良くなりそう。

2006年1月11日水曜日

ys: 「 学校給食の改善だけで非行をゼロにした小中学校 教育長が実践した“食育”とは 」

ys: 「 学校給食の改善だけで非行をゼロにした小中学校 教育長が実践した“食育”とは 」

この記事を読んで感動しました。子供って、実際そうなんです。

おなかがすいてくると、だんだん不機嫌になって暴れます。けれど、それがおなかがすいたせいだとは自覚していない。ごはんを食べるとけろっと機嫌が直ってしまいます。これは子供に限らず大人でもそう。

給食がおいしいって、幸せだよ。

おいしくないものを、無理やり、残さず食べなさいと強制するのはよくあったこと。その強制が教育的にいけないから、残してもいい、とするのではなく、もっと根本を直す。そう、給食をおいしくする。 客観的に考えてみれば、おいしくないものを無理に子供に食べさす指導をするより、調理する人の腕前を上げるほうがはるかに簡単なことなのに、なんでできなかったのか。

とにもかくにも、食事は重要。最近朝ごはんは手抜きがおおいので、考えなおさないと。

2006年1月10日火曜日

Webで動くワードプロセッサ Writely

Writelyを使ってみました。ブラウザで動く簡易ワードプロセッサ。日本語も普通に使えるので好印象。

けれど、このような、Ajaxベースのアプリケーション(AjaxはWeb上でページを移動せずにデータのやり取りができるもの)がでてくるたびに思うのは、人様のサーバーにデータをおくのは嫌だということ。ブログならいざしらず、個人用のメモが流出するのは避けたい。

2006年1月8日日曜日

screen-4.0.2 on cygwin

上のリンク先にあるscreen-4.0.2-0test1.tar.bz2 の方が、以前紹介したやり方で作ったものより良いです。以前のものではhistoryがおかしくなって困っていたのです。

screenのプロセスが親(cygwinのSHELL)に従属してしまうものの、
screenを起動したシェルさえ閉じなければ、attachできるし、95点の出来。

rubyで自分の例外クラスを作る方法

C++とかJavaに慣れているひとは、つい

class MyException < Exception

と、Exceptionクラスを継承しがち。けれど、Exceptionクラスの配下には、
fatalとか、NoMemoryErrorなど、致命的なものと、回復可能かもしれないもの(StandardError)が
きちんと分けられているのです。

従って、自分のコード中で処理したい例外は、

class MyException < StandardError

と書くのが良い。その根拠として、rubyのrescue文は、

begin
(例外が発生)
rescue
(StandardError、またはその派生クラスがここで補足される)
end

と、補足する例外クラスを指定しないと、デフォルトでStandardErrorを捕まえるように設計されています。

このせいで、rubyunitで補足できない例外があって長時間苦しみました。
sqlite3-rubyはExceptionから派生したクラスで例外を出すので、もう大変。

rubyでは、rescueで補足されなかった例外があると、

leo@celia:~/../ruby/depot> rake test_units
/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/resultset.rb:76:in `check': cannot rollback - no transaction is active (SQLite3::SQLException)
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/resultset.rb:68:in `commence'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/resultset.rb:61:in `initialize'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/statement.rb:158:in `execute'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/database.rb:211:in `execute'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/database.rb:186:in `prepare'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/database.rb:210:in `execute'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/database.rb:620:in `rollback'
from /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/sqlite_adapter.rb:179:in `rollback_db_transaction'
... 10 levels...
from /usr/local/lib/ruby/1.8/test/unit/autorunner.rb:200:in `run'
from /usr/local/lib/ruby/1.8/test/unit/autorunner.rb:13:in `run'
from /usr/local/lib/ruby/1.8/test/unit.rb:285
from /usr/local/lib/ruby/gems/1.8/gems/rake-0.6.2/lib/rake/rake_test_loader.rb:5


というように、途中が省略されて内容が表示されるのです。さらに、C++やJavaの影響でrescue文ですべての例外が補足できると思いこんでいたために、デバッグが困難を極めました。例外をrescueで捕まえることができれば、Exception.backtraceを実行して完全表示できるのですが。

(思考の過程)
  1. raise 文を、コードの動作を確認しながら、ruby on railsやsqlite3-rubyのソースコードのあちこちに埋め込んで、backtraceを表示させようと試みるが、なぜかうまくいかない。ここで数時間。
  2. どんな状況でこの例外表示が省略されるのかを、テストコードを書いて調べてみた
  3. 普通に例外をrescueしてputs $@とするだけで、full traceが表示される。。。
  4. どうやら、rescueしないで、スクリプトを抜ける場合に省略表示が入る模様。
  5. それでは、この省略表示をやめる方法があると考え、小1時間調べる。
  6. 結局、そんな設定はなく、rubyのソースコードに定数値で書かれていて不変であることが判明
  7. rubyに手をいれるのは怖いので、rubyunitの動作をもう一度確認。raise文もあるし、補足できないような例外があるとは思えない。
  8. rubyのバグかと思い調べるが、そんなことはなさそうだった
  9. 基本に戻って、Programming Ruby 2nd Editionを読んでみる。
  10. rescueはStandardErrorをデフォルトで捕らえると書いてある。。。
  11. 自分で作成する例外クラスは、StandardErrorから派生すること、と書いてある…
  12. sqlite3-rubyのソースコードの例外定義部分を見てみる
  13. sqlite3-rubyはすべての例外クラスをExceptionから派生していた…
  14. この部分を、StandardErrorに変更
  15. RubyUnitが無事に例外を補足。エラーのフルトレースが表示される。
基本は大事。rubyの本、最初に通して読んでおくべきだった。
まだ、ruby歴半月なのです。

2006年1月4日水曜日

ひこうきで泣くこども

コメントが長くなったのでトラックバックにしました。

子連れの旅行ってただでさえ荷物が多いので(おむつとか着替えとか)、おもちゃやお菓子まで気がまわらないことってよくあります。

飛行機や電車などで子供が泣いていると、周りの人は嫌な思いをするかもしれないけど、一番つらいのは泣いている子供をなだめきれない親の方なんです。暖かい目で見守ってあげてください。そういう場面で親は、言われるまでもなく「こんなことなら、おやつやおもちゃを持ってきておけばよかった」と思っているはずです。そういう体験を通して成長します。

最初から完璧に子育てをできる親なんていないと思います。

自分で子供を持つようになって、周りの親のそういう気持ちがわかるようになりました。もしお菓子やジュースを持っていたらその場で子供にあげるのもいいかと。

「子供が泣いているのは親が悪い」という考え方(上のブログはそういうことを言っているように感じました)が、親(あるいは将来の自分自身)を追いつめることになります。

子供は泣いて当たり前。ちっちゃいんだもの。みんながみんなそういう意識をもてるようになると、子供を育てることの不安なんて吹き飛ぶと思うのです。

ソースコードを読むための技術

ゆきのぶくんに教えて貰ったページ。

人の書いたソースコードを読む時、普段はdoxygenを使って色づけするところからはじめますが、他にもいろいろなツールがあるんですね。

ソースコードの読み方の定石としては特に変わったところはないが、データ構造を把握できればソースコードが読めるというのは、まさにそうかも。 逆に言えば、データ構造についてわかりやすくソースを書くということが大切。

License

Creative Commons LicenseLeo's Chronicle by Taro L. Saito is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License.