トップ «前の日記(2004-10-30) 最新 次の日記(2004-11-01)» 編集

日々の破片

著作一覧

2004-10-31

_ 必見! 最高のユーザーインターフェイス

うがー、さっきまで町山智浩アメリカ日記にリンクがあったはずなのに消えちゃった(書き直された)よ。

ヒストリーをゴソゴソ(しなくても、今はクリック一発で出てくるからいいね)。

電子投票システム

大爆笑でした。(一応、文脈を紹介しておくと、米国で採用されている電子投票システムはブッシュの息がかかった企業が開発したシステムで、かつ仕様その他は企業秘密で、しかも40%くらいの州が採用かな――というとこがあまりにうろ覚えなんでもう一度読もうとしたら無くなってたわけだが――ってことは、こんなことも可能だよねというジョークなわけだが、おもしろい)

追記:2004-10-30として再掲されている。40%じゃなくて1/3。導入を進めたのがブッシュ政権。受注した会社は共和党に多大な献金をしている(直接的にブッシュの息がかかっているというわけではないらしい)。管理も集計もこの会社。っていうか、読んだ方が早い

こういうふうに作っておけばシステム開発者の意図通りに操作されることになるわけで、やっぱりHTML(シンクライアント)じゃ無理があるよな。

_ kshじゃなくruby

単に僕がkshの書き方(というよりコマンドかも)を大して知らないからかもしれない。が、こんなのはRubyじゃなきゃ書けなかった(比較対象はksh。Cで書けるのは当たり前)。

ユースケース:

RMIのサーバープロセスをデーモンとして起動/停止する

コマンドライン:(実際はちょっと違うが)

起動:

sudo /etc/init.d/foo_rmisvr START

停止:

sudo /etc/init.d/foo_rmisvr STOP

問題点:

javaは実行後、LD_LIBRARY_PATHにjvm.soを含めた環境を用意し、fork/execする(rjbで問題となった動作そのものだ)。

このため、foo_rmisvr内で起動したjavaのpidを/var/tmp/foo/svr.pidに格納しSTOPで9を送っても実際に停止したいプロセスに影響を与えられない。したがって明示的にプロセスグループをjavaを実行するプロセスで設定したい。

解決方法:

if ARGV[0] == 'START'
  pid = fork
  if pid.nil?
    Process.setpgrp()  #ここがミソ
    exec("#{ENV['JAVA_HOME']}/bin/java .... ")
  else
    File.open('/var/tmp/foo/svr.pid', 'w') do |f|
      f.write(pid.to_s)
    end
  end
elsif ARGV[0] == 'STOP'
  if File.exist?('/var/tmp/foo/svr.pid')
    File.open('/var/tmp/foo/svr.pid', 'r') do |f|
      pid = f.read
    end
    begin
      Process.kill(-9, pid.to_i)
    rescue
    end
    File.delete('/var/tmp/foo/svr.pid')
  end
end

_ 制御の逆転

Officeさんが技術者かどうかはとりあえずおいておいて。

僕の乏しい知見では、技術者であればあるほど、例え話に苛立つような気がする。一言で言えば、正確ではないからだ。

例え話を理解するには、高度に抽象的な思考様式が求められる。直截な表現と異なり、類推と対比から相似性を発見し表面的に理解する方法だからだ(追記:風姿花伝のように、カタから入るって世界と共通してるような気がするな。WHYではなくHOWだ)。当然、表面的な理解がそのまま深奥まで同一とは限らないからどうしようもなく曖昧さが残る。が、自分の身近な事象に一度舞台を変えることで(擬似的な)経験に基づいて考えることができるようになるから、理解はうまくいけば瞬時にできる。

(追記:したがって、人間がしでかすことの考察には類推的な方法にそれなりの効果があり、非人間的なことの考察には類推的な方法は大抵間違えることになるのかも知れないな。人間は人間だが、自然は人間ではない。大体、自然は単純さを好むかも知れないが、人間は人それぞれだ)

突然思いついたが、ビジネスアプリケーションと組み込みアプリケーションと2種類に分けると、前者は例え話が当然の世界で(何しろ、XPじゃメタファーだし、いやおうなくモデルと付き合う必要もある)、後者は例え話禁止の世界(シグナルが相手で、ハイならハイ、ロウならロウだ)とかあるかも、したがって、技術者どうしたっていう分類はそれ自体が理系がどうしたのようなヨタ話ではある。

で、おもしろかったのが検察官を翻弄しまくったoffice氏の奮闘だ。ここでは(技術者とされる)Officeさんが例え話を駆使して検察官を黙らせてしまう様子が生き生きと描写されている。検察官がどこまで技術を理解しているかはわからない。しかし、例え話は確実に理解できるようだ。

<


2003|06|07|08|09|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|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|

ジェズイットを見習え