bird昨日の話, 形容詞, ダメージ(2)

昨日の話

昨日の話ですけど、普通 daemon 化する時ってこちらのページにもあるように標準入出力/標準エラーを閉じた後 /dev/null などで埋めておくのがセオリーのようですから、あんまり問題にはならないのかもしれませんね。

まぁ場合によっては単に標準入出力/標準エラーを閉じるだけで済ましちゃうこともあるだろうし、そういう時はよくよく気を付けましょう、というお話でした。ニンニン<何者?!(笑。

形容詞

ある人のページで、「形容詞(や副詞?)の多すぎる文章は信用できない」というようなことが書いてあって、それ以来ちょっと気を付けるようにしてるんですが、どうも僕はそれらを多用してしまう傾向がありますね。感覚的に微妙なニュアンスを表現したい、という気持ちが強すぎるのかな1。ニュアンスをそういった言葉で説明しようとする方法論が間違ってるのかも。言葉を使う順序とか、文章自体の組み立て、タイミングといった要素で緩急付けられれば良いのだよなぁ。うーん難しい。

ダメージ(2)

やっぱり落下によるダメージはいろいろとあるようで、今度は HDD がちらほらと「Uncorrectable Error」を吐き出し始めました。いわゆる HDD クラッシュ間近、という状況ですね2。今のうちに、ということで新しい 2.5inch HDD を早速注文。ちなみに製品はこちら (ただし 80Gbytes 版)。

birdlibpq を使う際の注意

libpq を使う際の注意

PostgreSQL の C 言語版クライアントインターフェイスライブラリ libpq では、サーバから返されるエラーメッセージは問い合わせ実行関数には返されずに、「警告処理」と呼ばれる過程を経て返されます。これがデフォルトでは単に「stderr に書き出す」という処理となっているのですね。
これが普通のコマンドラインで実行されるようなプログラムならば良いのですが、例えば daemon プログラムなどで stdin/stdout/stderr を閉じていたりする場合には、その時たまたま開いている「2番のファイルディスクリプタ」に対して問答無用でエラーメッセージを出力してしまいます1
「stderr に書き出す」というデフォルトの挙動がふさわしくない場合は、必ず自分で警告処理をカスタマイズするようにしましょう。ニンニン。

bird散髪, 最近読んだ本

散髪

ほぼ2ヶ月ぶり。柊次も一緒に行こうと誘ったのだが、「飴くれる?」「うーん分からん」「じゃ行かない」というつれないお返事。床屋さんにそんな話をしてみたら、「飴あげますよ!ぜひこんど連れてきてくださいよ」とのことなので、次回は一緒に行こう>柊次。

最近読んだ本

最近読んだ本をまとめて記録。

だから片づかない。なのに時間がない。「だらしない自分」を変える7つのステップ 「だから片づかない。なのに時間がない。」

nikkeibp.jp でちょっと前に紹介されていたのを読んで、買ってみました。いわゆる「生活改善 HowTo 本」なのですが、「裏技」的なテクニック、ノウハウではなく、精神的な面にフォーカスしているのがちょっと珍しいかも。僕も以前から同じようなことを思っていたせいか、著者のマリリン・ポールさんのおっしゃることはとても納得出来ました。つまりは良い習慣を身に付ける、ということなんですよね。親がいまさらながら学んでいるような状態だけど、子供達についてもそういうことを教えてあげられると良いなぁ。

ケンブリッジ・クインテット 「ケンブリッジ・クインテット」

ジョン・L・キャスティさんの本。キャスティさんは複雑系で有名なサンタフェ研の研究者なのだそう。友人に貸したついでに再読。

科学者でもあり政治家でもある C.P.スノウの呼びかけで、遺伝学者ホールディン、物理学者シュレーディンガー、数学者チューリング、哲学者ヴィトゲンシュタインがケンブリッジに集まり、「機械は考えることが出来るのか?」というテーマで熱い議論を繰り広げる…と言う架空の物語。

前回読んでから、サイモン・シンの「暗号解読」やニール・スティーブンスンの「クリプトノミコン」、シュレーディンガーさんの「わが世界観」なんかを読んだせいか、著者のキャスティさんが各キャラクターに喋らせていることの「それっぽさ」がより分かるようになっていてまた楽しめました。ヴィトゲンシュタインがサールの「中国語の部屋」とまったく同じ例をあげて反論するのは、そしてチューリングがすかさず「部屋全体の視点で見れば…」という現在主流となっている再反論を持ち出すのはさすがに出来すぎな気がしましたけれども…。

チューリングの、「技術的に困難な点はないのだから実現出来るはずだ」という考え方は、僕はちょっと無邪気すぎるように思いますね。ヴィトゲンシュタインほど悲観的ではないけれども、人間が、何かが「考えている」という判断を下すための条件は複雑なものがあると思う。そしてそれを総体的に満たすものというのは、結局人間社会で生活する人間以外ありえない、というヴィトゲンシュタインの結論もあながち見当外れでもないように思いました。

内側から見た富士通 「成果主義」の崩壊 「内側から見た富士通 「成果主義」の崩壊」

いわゆる「成果主義」をいち早く採用して話題になった富士通のその後の不調とその原因を、
本当の内部の人にしか書けない臨場感で書いてちょっと前に話題になっていた本。城繁幸著。

僕がこの本を読んで感じたのは、「成果主義が世間に受け入れられた過程って、共産主義が受け入れられた過程と似てるんじゃないだろうか」ということ。共産主義も当初その明解な論理でもって知識階級には熱烈に受け入れられたけれども、その実践たるソ連の現実に皆幻滅、という道をたどったと僕は理解していますが1、成果主義の辿っている道筋もとても似ているように思うのですね。謳い文句は素晴らしいし誰もが納得できるしということで一時もてはやされたけれども、実際に実践してみると考えてもいなかった難しい点が山ほど出てきて、だけど大々的に対外的にもアナウンスしちゃった以上いまさら元に戻すわけにもいかず、しょーがないから無理を重ねて組織運営。しかしソ連の最後を見るまでもなく、そういう無理は結局組織自体を弱体化させてしまう。

資本主義が最良だと思っているわけじゃないけど、少なくともその漸進主義的なところと常に変化を許容するところは良い点だと思っています。会社組織の運営にしても同じなんじゃないかなぁ。

bird鳥乃が風邪, ダメージ, 家でおとなしく

鳥乃が風邪

土曜の夜から鳥乃が熱を出して気持ち悪そうにしていたので、あゆみさんが病院へ。先生曰く、「吐く風邪が流行っている」のだそうな。病院で吐いたらしい。
それでも、家に帰ってきてからは急速に回復して、夜には元気になってましたよ。いつも思うけど、スゴい回復力だ…。

ダメージ

カウンターから落っことしたけれども奇跡的に何ともなかった我が家の ThinkPad、さすがにノーダメージとはいかなかったようで、液晶パネルを開けたり閉じたりすると、画面の左から 1/3 くらいのところに時々、常時緑点灯するラインが縦に一列出るようになってしまいました。
今のところまだ出現確率が低いのであんまり気になりませんが、そのうちずっと出るようになっちゃうんだろうなぁ。残念!

家でおとなしく

連休中日ではありましたが、上述した通り鳥乃の具合があまり良くなかったり、他の子も少し調子が悪そうにしていたこともあって、家でおとなしくしていました。ドラクエやらなきゃいけませんしね(笑。

birdハウルの動く城、見ました。, 「サウンド・オブ・ミュージック」, チャボ小屋掃除

ハウルの動く城、見ました。

(週末、ここを更新する機会がなかったのでまとめて更新してます。)
我が家は 5 人家族です。みんなで映画を観に行こうと思うと、大人二人で 3,600 円、小学生一人 1,000 円、幼児二人 1,800 円、合計で 6,400 円もかかります。ですので、僕がときどき一人でレイトショー1を見る他は、普段は DVD になるのを待って観ることが多いのです。今回はたまたま、年末に参加した友人の結婚式の二次会で行われたビンゴゲームで、珍しいことにハウルの前売券 2 枚が当たったこともあって、久しぶりにみんなで観に行きました。幼稚園でもらった割引クーポンと併せて、合計 2,600 円で観られました(って生活感ありすぎだなぁ・笑)。
さて、肝心の映画について。受け付けをしたのが上映間近だったせいもあって、前から 4 列目、という比較的見上げる感じ、動きの激しいシーンでは何をしてるのか見失ってしまう感じの席だったのですが、「ハウル」上映中はそのことをまったく気にせずに綺麗な画面を楽しむことが出来ました。倍賞さんの声はやっぱり「若い」とは言えないなぁ、と思ったり、脚本的に「?」と思うところがないわけではありませんでしたが、僕は面白かったと思う。原作が読みたくなりました。
(以下、ちょっとネタばれあるかも。気になる人は読み飛ばしてください。)
主人公のソフィーは荒地の魔女の呪いにかかって 90 歳の老婆に変えられてしまうわけですけれども、その後劇中ではものすごく細かく、微妙に彼女の見た目の年齢が変化します。その微妙な変化の表現が、単純なしぐさや声以外の、キャラクターの内面を表すサブチャネルとして機能しているように思えて、とても面白いと思った。劇中ものすごく変化する荒地の魔女についても同じです。現実の人間も、時として老け込んで見えたり若く見えたりしますよね。ああいう現象がものすごくデフォルメされているような感じ。
どーでもいいけど、カルシファーの声が「千と千尋」の青蛙(を飲み込んだ後のカオナシ)と同じ声で、どうしてもそのイメージが抜けませんでした。「酒だ、酒を持ってこーい!」とか言い出しそうな感じ(笑。

「サウンド・オブ・ミュージック」

サウンド・オブ・ミュージック 前から子供達と一緒に見たいと思っていて、年始にテレビでやっていたのを録画したのは良いのですが、中身を確認してみたら字幕版で、それならば、と DVD を買ってしまいました。

有名な曲がたくさん入っていて、親も子供も大満足。我が家では僕以外は初見、ということで、とても楽しそうに見ていました2。僕も昔見たことがあるはず (ストーリーの流れは覚えていたので見たのは確かだと思う) なんですが、あんなに綺麗な映画だとは思わなかった。音楽も素晴らしいけど、映像も負けずに素晴らしい。40年以上前の映画とはとても思えませんでした。

チャボ小屋掃除

土曜日は、幼稚園の当番で柊次達が育てているチャボの小屋を掃除しに行きました。
掃除の手順を知っているのは柊次だけだったので、柊次の指示でみんなでお掃除。なかなかの指示ぶりでしたぞ>柊次。
チャボのリンもサチコもとってもおとなしくて、逃げ出してしまうこともなく無事終了。新しく入れてあげた餌をガツガツ食べてましたよ。

birdWindowsXP

WindowsXP

年末に、ずっと使われてきてかなりくたびれた Windows98SE マシンを WindowsXP にアップグレードする、という作業をしました。メーカー製 PC1 なので XP への移行手順も全て情報が提供されており、作業自体は特に問題なく終わったのですが…
実は僕、未だに WindowsXP を自分でちゃんと使ったことがないんですよね。自宅も Debian だし、妻は Windows2000、会社もメインは Debian でどうしても Windows でなければいけないところはこれもやっぱり Windows2000。そんな僕も漠然としたイメージとして、「XP は 2000 と同じ NT 系だし、変な L&F2 がくっついてるけどクラシックテーマを選択すればほとんど変わらないんじゃないかなぁ」と思っていました。
しかししかし。今回の作業でまず驚いたのは、アップグレードインストールに数時間単位で時間がかかること。そもそも Windows をアップグレードインストールしたことなんかない3ので比較になるものがないんですけど、延々「インストールの準備をしています」とか「インストールの完了中です(しかし完了中、という日本語はとても変だと思う)」とかいいつつ猛烈に時間がかかるのには閉口しました。終了予測時間が正確なのに逆に驚いた。最初、インストール完了まで 2 時間、とか出た時は「どうせ適当な時間なんだろーなー」と思ってたんですけどね。いったい何をやっているのだろうか。
さらにびっくりしたのが、標準の「検索」機能を利用すると必ず Explorer が異常終了してしまうこと。「検索」の設定を変えていろいろ試してみたんですが、結局僕には「検索」機能を動作させることは出来ませんでした。インストール直後の状態で OS 標準機能が異常終了し動作しない、って、アリなの?!
インストール直後の状態、とは言っても、昨今 Windows をちゃんと使うためにはウィルススキャナ等のセキュリティツールの導入は必須なため、今回はマカフィーの製品(インターネットセキュリティスイート)を入れています4。このへんとの相性問題なのかもしれないけど、しかし、ねぇ。
ついでにマカフィーをインストールしたままのデフォルト状態では、Windows Update が動作しません。どうもマカフィーに含まれる Privacy Service 機能が Windows Update サイトへの情報送信(Cookie かなぁ)をブロックしているせいらしく、Privacy Service を一時的に無効化すれば動作するようになります。
なんだかなぁ…。

birdおくればせながら, 雪, NDS 圧勝

おくればせながら

2005年年賀状 あけましておめでとうございます。去年は、社会的には大きな事件が頻発し歴史に残るような一年でしたが、我が家的には比較的平穏な一年で、だからこそ平穏な生活のありがたさを強く実感した一年でもありました。今年もしっかり生活して、毎日少しづつでも環境を良くしていけるようがんばりたいです。

今年もよろしくお願いします。

右のイメージが我が家の今年の年賀状でした。ここのところずっと親バカデザインが続いていますが、今年も例に漏れず(笑1。投函したバージョンでは左下に我が家の住所とみんなの名前、電話番号が書かれています。

利用ツールは GIMP 2.0 です。フォントは DynaFont の書体パックを利用しています。

大晦日の雪はすごく積もって、いまだに日陰の道路はアイスバーン状態です。我が家の前の道は「日陰で坂道の公道2」という最悪の条件が重なっていて、知らずにやってくるノーマルタイヤの車が次々餌食になっています。昨日くらいまでは外から「うぃーんうぃーん」とタイヤの空回りする音がよく聞こえていました…。
あんな寒い中、子供達ややっぱり外で雪だるまを作ったりして暗くなるまで遊んでいました。すごいなぁ。

NDS 圧勝

正月休み中の外出時遭遇率では、NDS 5 回、PSP 0 回と Nintendo DS の圧勝でした。中でも小学生くらいの子供が持っているのをよく見かけました3。みんなサンタさんにもらったのかしら?100 万台出荷は伊達じゃないなぁ。

birdそれでは

それでは

良いお年を!

birdスマトラ島沖地震

スマトラ島沖地震

死者は既に7万人を越え、10万人を越えるかも、との見方も。まさに「地球規模」の大災害…。こんなレベルになってくると、もう被災した国だけでどうこう出来る問題を越えてると思うんですが、すでに日本を含めいろいろな国が救助活動に乗り出している反面、国連の援助担当責任者から「経済先進国の出し惜しみを批判」とも取れる発言が出てきたり。
先日あった「これまでにない高確率で地球に衝突する可能性のある小惑星」のニュースや温暖化に伴う海面上昇による難民問題など、これからも地震だけでない、地球規模の災害の可能性はあると思うんですが、そういった場合に国際社会が団結して対応に乗り出せるような仕組みってあるのかな。国連にいちおう援助のための機関はあるようですが、上の発言などを見る限り、イニシアチブをとるまでにはいたっていない感じ。国際赤十字は事後の救援活動がメインで、長期に渡っての事前対応/復興を行える組織ではないですよね…とか考えていたら、「復興支援へ日米豪印で国際協力グループ」という報道が。ぜひ国際社会を巻き込んでうまく運営してほしい。
ふと思ったんですが、「国レベル」でこういった支援活動に乗り出す場合、その費用を全額国庫から得るのではなくて、任意の義援金をつのってある程度当てるわけにはいかないんですかね。民間ではごく普通にやられているわけで、国の制度として「任意徴収で使途の確定しているお金」みたいなものがあってもいいと思うんだけど。既にあったりする?

bird雪, お仕事, ガクガクブルブル, SQL チューニング

天気予報じゃ「積もらない」なんていってたのに、じゃかじゃか降ってるよ…(涙。
都心でこの状況だと八王子に帰るころにはひざ位まで積もってるかもしれないなぁ。

お仕事

今日が仕事納めなのです。といってももうほとんど年内にやることはないんだけれども…(笑。納会でお酒を飲むために出社してるようなものだなぁ。

ガクガクブルブル

ひと月ほど前、とある人がこんなことをおっしゃっておりました。
彼「PSX 格安で入手しちゃったよー。7500 を 4 万円台。」
僕「へーすごく安いですね。どこのお店です?」
彼「ヤフオクだよ、ヤフオク」
実はこの方、ほんのちょっと前にも「Cybershot T3」をやっぱりヤフオクで格安で手に入れた、と喜んでいたのです。僕は「ヤフオクはリスキーだけど、やっぱりそれなりに安く買えることもあるのだなぁ」と普通に感心して聞いていました。
ところが先日、その人が浮かない顔をしています。
彼「落札した PSX なんだけど、納期が急に 2 週間から 8 週間になっちゃったんだよ…。届くのは 2 月だって」
そ、それってモロ「チャリンカー」なのでは…。

SQL チューニング

次のようなテーブルがあったとして、

CREATE TABLE check_list (  
  product_id_start integer,  
  product_id_end   integer  
  CONSTRAINT check_list_check_1 CHECK (  
    product_id_start <= product_id_end  
  )
);  

「ある product_id を含む範囲を持つレコードが上記テーブルに存在するか判定する」というような処理を考えます。つまり、テーブルの内容が下記の通りだとして、

  product_id_start | product_id_end  
 ------------------+----------------  
                 0 |           1000  

product_id = 100 の場合は真、product_id = 1001 の場合は偽であるような判定を行わせたいとします(境界値は含まれるものとします。つまり 0 や 1000 も真)。

まず、ごく素直に書けば次のような SQL になると思います。

SELECT * FROM check_list  
 WHERE '探したい product_id' BETWEEN product_id_start AND product_id_end  
 LIMIT 1;  
結果が 0 行か 1 行かで判定。  

(LIMIT というのは PostgreSQL 特有の書き方で、結果セット行数の上限を指定する句です。Oracle なら rownum に相当。)上記 SQL はシンプルで良いのですが、check_list に大量の行が存在する場合、INDEX をどう作成してもかなりの確率で全表走査、もしくは INDEX 走査が発生してしまい1、性能が急激に悪化してしまいます。特に「該当する行がない」product_id の場合の性能劣化が激しく(最後まで走査しないと分からないため)、処理としてこちらがメインの場合は致命的です。

行数が増えた場合もコストをかけず検索する方法はないものか、と考えた結果、次のような方法を思い付きました。

まず、check_list に挿入される行に、「範囲の重なるレコードは挿入出来ない」という制約を一つ追加します。つまり例えば、上記内容のテーブルに対して、(100, 2000) という行は挿入出来ず、(1001, 2000) とう行ならば挿入出来る、というような制約を追加するわけです2。範囲の重なるレコードが入れられないとしても、テーブルとしての表現力には差は生じません(管理が少し面倒になるだけ)。また、product_id_start に INDEX を張っておきます。

その上で、次のような SQL により判定します。

SELECT * FROM  
 (SELECT * FROM check_list  
   WHERE product_id_start<='探したい product_id'  
   ORDER BY product_id_start DESC LIMIT 1) sub_check_list  
 WHERE product_id_end>='探したい product_id';  
結果が 0 行か 1 行かで判定。  

最初の query と比較するとちょっと複雑ですね。簡単に説明すると、

まず sub query 部で、探したい product_id よりも等しいか小さい product_id_start 値を持つ行の内、もっとも大きな product_id_start 値を持つ行を 1 行選択します。product_id_start 列には INDEX があるため、sub query 部の WHERE 句も ORDER BY 句も全て INDEX により処理され低コストです。

ここで「範囲の重なる行が存在しない」という前提条件を設けてあるため、ある product_id を含む範囲の行が存在するとすれば、sub query 部で得られた 1 行以外はありえないことが保証されます。そこで、その得られた 1 行に対して product_id_end をチェックすれば、該当する行が存在するかどうかが分かるわけです。

こちらの query の場合、check_list の行数がたとえ増えたとしても、sub query 部は INDEX 完全ヒット3、外側の処理も常に 1 行が対象となり、ほぼ一定のコストで検索することが出来ます。

これにて一件 complete です。よかったよかった。

First | Prev | 403 | 404 | 405 | 406 | 407 | Next | Last