Home

SlicehostをHardyにアップデートしてみた

Slicehostでホスティングしているこのブログのサーバ(Xen Guest)をUbuntu 7.10 (Gutsy)からUbuntu 8.04 LTS (Hardy)にアップデートしたみた。

通常のUbuntuマシンと同様にupdate-manager-coreパッケージがインストールされていれば、do-release-upgradeコマンド一発でアップグレードできる。

$ sudo -s
# apt-get install update-manager-core
# do-release-upgrade

sshで接続した状態で実行するのはやや面倒なので、Slicehost Managerから起動できるWeb Consoleで作業した方がいい。実際の作業は結構緊張するが、ローカルな環境でVMware Guestをアップデートするのとさほど変わらない。

再起動後、好みで不要なパッケージを削除してもいい。私の場合はこれくらいのパッケージは削除している。

$ sudo apt-get autoremove gcc-4.1 cpp-4.1 gcc-4.1-base
$ sudo apt-get autoremove libdb4.[2345]
$ sudo apt-get autoremove alsa-base alsa-utils linux-sound-base
$ sudo apt-get autoremove libpam-foreground

Ubuntu HardyでVMware Server Consoleが動かない件

普段使いのThinkPad T42をUbuntu Hardyにアップグレードしたら、VMware Server Consoleが動かなくなった。こんなメッセージを吐く。

/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib/libcairo.so.2)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib/libcairo.so.2)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_3.4' not found (required by /usr/lib/libcairo.so.2)
/usr/lib/vmware-server-console/bin/vmware-server-console: /usr/lib/vmware-server-console/lib/libgcc_s.so.1/libgcc_s.so.1: version `GCC_4.2.0' not found (required by /usr/lib/libstdc++.so.6)

以前類似の問題の対策をしたはずなのだがどうにも思い出せない。いろいろ試してみたところ、以下のようにすれば良いことが分かった。

# cd /usr/lib/vmware-server-console/lib
# mv libpng12.so.0/libpng12.so.0{,.bak}
# mv libgcc_s.so.1/libgcc_s.so.1{,.bak}

めでたしめでたし。

mvする代わりにwrapper-gtk24.shにパッチを当ててもいいね。

--- /usr/lib/vmware-server-console/lib/wrapper-gtk24.sh.bak     2008-04-30 23:48:50 +0900
+++ /usr/lib/vmware-server-console/lib/wrapper-gtk24.sh 2008-05-01 13:49:13 +0900
@@ -243,8 +243,8 @@
 # Dot releases of g++ keep breaking binary compatibility. Unconditionally use
 # the C++ libraries we compiled with the same compiler.
 #
-vm_append_lib 'libgcc_s.so.1'
-vm_append_lib 'libstdc++.so.5'
+#vm_append_lib 'libgcc_s.so.1'
+#vm_append_lib 'libstdc++.so.5'
 vm_append_lib 'libsigc-2.0.so.0'
 vm_append_lib 'libglibmm-2.4.so.1'
 vm_append_lib 'libglibmm_generate_extra_defs-2.4.so.1'
@@ -260,7 +260,7 @@
 # Redhat-7.3 doesn't have libpng12.so.0.  the executable doesn't link to
 # it directly, so we explicitly include it here
 #
-vm_append_lib 'libpng12.so.0'
+#vm_append_lib 'libpng12.so.0'
 
 #
 # When environment variable VMWARE_USE_SHIPPED_GTK is set to "force", we

シネコンの座席予約システム

シネマコンプレックス「新宿バルト9」の驚嘆すべき大バカ最低システム - 檜山正幸のキマイラ飼育記

ブックマークコメントなどがインタフェースに集中しているようなのでちょっと視点を変えて考えてみようか。「インタフェースの改善によってスループットが向上してデッドラインを守れるようになることに期待するのはいいが、それが期待通りにはいかない可能性と対策も検討した方がいいのではないか。」と。

イライラするインタフェースかデッドラインを守れないインタフェースかどちらかを選べと言われたら誰でも前者を選ぶだろう。発券・座席予約システムの「より優先順位の高い目的」はデッドラインを守ることであって、全員に席を割り当てることや空席率を最小化することはそれより低い優先順位しか持たないのだから*1。本当は開演時間を過ぎたチケットなど無価値なのに、それを正価で売ろうとする発券システムと、さばき切れないチケットをタダでくれるダフ屋のオヤジ、のどちらが道理に適っているかなど問うまでもないだろう。

件の檜山さんご一家のケースを考えると、デッドラインを守ることを優先するならば(そしてもちろんインタフェースの問題を棚上げするならば)、明らかに一家を次の回に回して個人やカップル客を優先的にスケジュールした方が良かった。にも関わらず、First-come, first-served (FCFS)でスケジュールしようとするからデッドラインを守れなくなってしまったのだ。

では実際に、FCFS以外のスケジューリングポリシーを採り得たか。というとそれは怪しい。

そもそも新宿バルト9に限らず、「現在の」座席の空席状況を顧客に見せてその中から選択させるというチケット発券システム全体がFCFSに特化されたものだからである(逆に空席状況が参照できない状況を想定するなら、顧客は発券システムが割り当てた上演回・席に着いて鑑賞するだけになる)。FCFSで割り付けられるものと期待してキューに並んでいる客がカウンターに着いた途端に優先度付きでスケジュールされたら(「おまいらの席ねーがら!次の回な!」)DQN逆ギレ間違いなしである。

つまり、本当に必要なのは、異なるスケジューリングポリシーを許す発券システムと、それを支援する(できれば効率の良い)インタフェースではないかと思えてくる。

優先度ごとにキューを設ける(つまり次回の上演用のキューを設ける)とか、ユーザに低い優先度を選択するインセンティブを与える(例えば、開演15分前〜開演5分後の間だけ次の回の価格を下げる)とかしたらどうだろうか。どちらも一見うまく機能しそうに見える方法だが、ローカルな最適化の困難さは変わらず、一つのキューにリクエストが集中する状況では効果が限定的なものにならざるを得ない。

他にもいろいろ考えたのだが、空席率が一定以下になったら残席数分の自由席しか売らないという方法だとうまく行くのではないか。もちろん自由席と並行して次の回の指定席も売るとして。これならどちらを購入するかで顧客が優先度を選択できるし、連続した席が必要な一家が次の回の指定席を選択する動機付けにもなる。

*1 いつだったかFoxか何かで、困難な状況で航空機に乗ろうとすると何が起こるかを実証する番組をやっていた。その番組内では、(1)家族5〜6人が同時に航空機に乗りたい、かつ(2)明朝の仕事・学校には間に合うように目的地に着きたい、という要望を出したところ、割り当てを先送りし続けられ、結局レンタカーを借りて数時間かけて帰る羽目になっていた。番組の主旨はそういう局面でブチ切れしている親子を見て楽しむというごく露悪的なものだったけれども…。

Re: プログラミング言語はLispに回帰しているんだろう

プログラミング言語はLispに回帰しているんだろう - ’(rubikitch wanna be (a . lisper))

プログラミング言語がLispに回帰しているわけではなくて、むしろ単に現代のプログラミング言語のロールモデルがLispなのである。Javaが登場したとき、Lispのインタプリタ実装くらいはしたことがある連中はみんな「これは現代のLispだ」と思ったはずである。

また一方で、「Lispへの回帰=(ロールモデルとしてのLispを参照したプログラミング言語の設計)」という現代のプログラミング言語の傾向自体を決定付けたのも、Javaだったのだと思う。それ以前もLispをロールモデルとして参照するマイナー言語はたくさん作られてきたけれども、Javaは、「製品品質のプログラミング言語」を設計する場合においても「この合理的精神に基づいた方針」がかなり正しいということを世の中に証明してみせたほとんど最初のインスタンスだったから。

て、そう書いている私はRubyを一行も書いたことがないし、MatzさんがRubyの設計に関して書いた文章を読んだこともないのだが。

Movable Type プロフェッショナル・スタイル

荒木さんよりいただきました。ありがとうございました。

これは盛りだくさんな内容。一気通貫で読む本というよりは、Introductionだけちゃんと読んで、あとは「ブログで有名なあの人は何を書いてんだろ?」と思って適当につまみ食いする本です。

個人的な意見としては、個々の項目ごとに「出口」を用意した方がよかったのではないかと思います。より深く調べるためのポインタを示したり、練習問題を出したりして。つまみ食いした内容が自分の口に合えばさらに調べたいと思うのが読者の道理だと思います。

Re: Movable Type 4.15 公開ベータテストを開始

中日 - ヤクルト 2回戦

俺的プロ野球シーズン開幕!

参照呼び出し・値呼び出しとは

偶然だぞ

えきねっと(JR東日本)もたまには間違える

VMware ServerのVNC backdoor

802.11n Wi-Fi対応AirMac Express (MB321J/A) 購入

MAROON 5の武道館ライブに行ってきた

MTOS、盛り上がってきました