Jan - 25th
Internet Explorer 7への自動更新
Posted at 5:20 pm | Filed Under Work
Twitter経由で知ったのだが、InternetExplorer6のユーザがWindows Updateを自動更新、自動承認に設定している場合、InternetExplorer7に自動的にアップグレードされてしまうと報道されていた。
超難解な構成のMicrosoftのサイトをあちこち見て回ったが、なかなかそれらしい情報が見つからない。以前は正規品かどうかのチェックが完了しないとインストールできなかったInternetExplorer7がそのチェックが不要になったとか、2008年にはWindows Updateで更新できるようになるとか、そんな程度のことしか書かれていない。
で、上のニュース記事の原文を読む限りでは、微妙なのでわかりにくいが、「WSUS経由で」IE7への更新がリリースされる、となっている。
そこであちこち探し回ってみると、このWSUS(Windows Server Update Services)とやらの開発者ブログが見つかった。WSUSというのは、規模の大きな企業などで社内のクライアントのソフトウェアパッケージの更新を一括管理するためのシステムのようで、いわく
I wanted to bring to your attention that on February 12, Microsoft will release the IE7 Installation and Availability update to WSUS marked as an Update Rollup package. What this means is that this update will automatically flow only to clients of WSUS severs that have been configured to auto-approve update rollups, which as you know, is not the default or commonly used WSUS configuration.
WSUSのクライアントで更新の自動承認をオンにしているユーザのみ影響があるとのこと。
Webアプリケーションの開発者としては非常に驚かされた報道だったが、ふたを開けてみると、まあこんなものかという程度で、ちょっと肩透かしを食らった感じだ。どっちにしろ、IE7対応はそろそろ終わらせてIE8を調べておかないといけないんだけど。
Jan - 23rd
Unfathomable!
Posted at 11:08 am | Filed Under PHP, Work
「RSSをC++でパースする? 退屈だね。インメモリのサーチインデックスをPHPで構築する? 理解を超える!」
Parsing RSS in C++? Sounds tedious. Building an in-memory search index in PHP? Unfathomable!
今日PHPでインメモリのデータを扱うようにしてI/O負荷を軽減できないか(開発期間は一日)と、一時間ほどあれこれどやされたとき、上の文章を思い出した。
せめて共有メモリなら、とも思ったが、いまどきmemcachedも入れないシステム構成が悪いということで、相手がやけくそになるまで待って、断った。いちおう、マニュアルくらいは読んだけど。
Jan - 16th
PEAR: Crypt_GPG
Posted at 11:30 pm | Filed Under PHP
PEARにCrypt_GPGが追加されている。
でもまだ動かない…
動いた!
$ gpg --list-keys yagi@selfkleptomaniac.org
pub 1024D/DB656EDE 2008-01-16
uid 八木の野郎 (yagi) <yagi@selfkleptomaniac.org>
sub 2048g/FF673BA1 2008-01-16
$ cat gpg.php
<?php
require_once 'Crypt/GPG.php';
$options['homedir'] = $_SERVER['HOME'] . '/.gnupg';
$gpg =& Crypt_GPG::factory('php', $options);
try{
$obj = $gpg->getKeys();
print($gpg->getFingerprint('yagi') . "\n");
}catch(Exception $e){
print("ERROR:\n");
var_dump($e);
}
try{
print($gpg->exportPublicKey('yagi') . "\n");
}catch(Exception $e){
var_dump($e);
}
?>
$ php -q gpg.php
A0E977A2F1C9B803C42E7CDF8C8D56BADB656EDE
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.2.6 (GNU/Linux)
mQGiBEeOEL8RBACye3Xg0mRI+wolkrL2oS17p1j/lAyZIXiX1bsB7EpDPzR2XntW
89k3hNeerJGE3iBi5VNgiIWeNJxOoVCzokeBvRE2yxzRgVxmTwLgLCN/UXJpf2Q1
rjQ5UWvpbBE8nb2I3e4b/sAuLLO51FmP3r0V2FZ7EZH5NtLGhtjbTI6x7wCguP2s
TozncldqdGua6heq8eKHfDsD+wUWkqJ7IDAOoznI5h6JldFy3N7KaJE8L4voaU1y
8Cq/u8toJyz8LbXmQaCf1IAnnvsezZgfaUR+6WP/UBmozQl1sUV486eroPLveWBd
AphBJBvL4s8l0FZor0vMvgc9Ouc8doRoSO55hM8/TmcOfvPqo8agw6RPVBWwft0z
gJyeBACIIDzWqDIV8v5FzucQ1xTgCHTRPjMmwZOv/SbtKrhHU5TcrUvtruhvTgZF
/cmwGTWfu90C93+Sx6+wnUfu4JWzMXsAe6rTIGgdYU6ftqbJIo18LUTw41JjQ8oy
jWk5OXF5w70QQv70HqxhKbZPQL62LY4nE3jOzf9AQ5aeujGt1bQy5YWr5pyo44Gu
6YeO6YOOICh5YWdpKSA8eWFnaUBzZWxma2xlcHRvbWFuaWFjLm9yZz6IXgQTEQIA
HgUCR44QvwIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRCMjVa622Vu3sruAKCy
X5vYH6+I6uTxRKglI/2WDtMTVACeOqgkDGk2bXqCcua+3ucMavIMIvS5Ag0ER44Q
xRAIALvebXwo3pDcOfpnWjiYl7BCJaL8VAToquQLluu1pg24zo5nAaPDxyqLcTgZ
Cqw1odGydP/6gEy8sW/a5b7AmyMZPnvsbhMkM3+FNA0CE7LWeTrvvq9FhhViHBAF
ofRI1SF8k9MlsgBIakms7Ju3OKJC829e5c7Mk+gsoR+YFuenBrTamUe0F2O+fFve
YWHjLJ3T5AK2T2LECxHIQvuineZ549iyJ1kPVgprOuwdoK1thdXPVrfki0ZVzZcx
m/YppaQ3I5e8O8XEcpTeqB7lqV2+krA86Hb95sx/vXy3HprXTVx9dI1QQ14QuWqU
B7rVlrwyfxhbHP4gEiB8JCHjYHsAAwUH/j/gghCcQLFI0w7R1L4PH6DO7eYsv2Ih
7insKDQS7MjoCi2uuIIwI4adrCOW5Vgf/hOwE/b1nK0CRLHtdWNaW86N6+pTXU0S
B8UyJJ0uQ1kZM+6FELZ6wmc8WANIL5MdLbJ7Kcv7ADD+7S9vehYOpv6DRpVDIyUh
0qIyVawdAkPz8jo492/moJlFg9Qxc7T9c+pVM1Ud6uT6ncrtY4hlucj6oVI02pga
pfGhYivDsHcQW09kI2hse506lhZGEHqaA3ZpkGhM0Ys9DdpY5CNMCJwk9Ivk81HH
geLEwT1y0dK181P9ELEwMiCeqtfAdrcbU2iuTBdDJpPPWsFTzlWJF7CISQQYEQIA
CQUCR44QxQIbDAAKCRCMjVa622Vu3v/ZAJ9/8ZrId/uy+g5Q6EHniTzE0MMh0gCg
qSIRP/P3+vgttI9+XzJzIvxy2gM=
=+uLv
-----END PGP PUBLIC KEY BLOCK-----
ちなみにDriverにgnupgを指定できるとあるけど、指定したらエラーになる。うーむ。
Jan - 16th
Air
Posted at 9:18 am | Filed Under Apple
MacBook Air、HDDじゃないと388,400円もするのか。意味ないじゃないか。
Jordanじゃない、としかいいようがない。
Jan - 14th
Inemuri nezumi diary(2008-01-03)
Posted at 4:55 am | Filed Under life
こっちも肝に銘じておこう。
Inemuri nezumi diary(2008-01-03):
一方で、Web application はプログラミングスキルがあまり要らないんだよね。誰かが作った API やライブラリ、何とかスクリプト、SWFなどを使えば目に見えるサービスができる。皆がスゲーと言ってくれる。アルゴリズムとか計算量とかそういう、いわゆる正規の計算機工学の勉強はほとんど必要ない。むしろ DB とかの経験やデザインのセンスが重要だ。入口は広いですよ。皆が入ってもまだ余地はある。ところで、ネズミ講でうまくやる秘訣は知ってるよね?(注:ネズミ講はillegalな行為です。逮捕されちゃうぞ)計算機工学を活用した Web application は存在します。金を稼いでいるサービスもあれば、そうでないサービスもあります。
Web はそのうちぶっ壊れちゃうでしょう。僕の極論ですが。gopher もキャプテンもファミコントレードもみーんな消えたじゃない?白黒テレビがいつのまにかカラーテレビになったかと思ってたら、地デジなんとかじゃないと見れないんだって!とかいうことはあるのでござる。そんな感じで。もちろん、工学の進歩はゆっくりと寛容に進むので、Web が無くなる前の過渡期はあると思うけどね。今、Web アプリケーションを書いて仕事をしているひとが、気がついたら現在の Ada プログラマみたいなことになってた!なんてことはありうるんじゃないかな。それでも飯は食っていけるよ。ボーイング777 とか Ada で動いているらしいから(Wikipedia調べ)。プログラマは二種類に分けられる:正規の計算機工学をこれからも学び続けるプログラマとそうでないプログラマ。勉強に費した投資に見合う収入は必ずしも得られるとは限らない。それが現状。僕の助言としては、くれぐれも、「声のでかい馬鹿」に騙されるなということ。Zed もそう書いてるよね。
Jan - 14th
Zed Shaw Puts The Smack Down On The Rails Community
Posted at 12:44 am | Filed Under PHP, Ruby
ちょっと前に話題になったRails界隈のもめ事からの引用。
Zed Shaw Puts The Smack Down On The Rails Community:
Most entertaining quote: “This is exactly what makes Rails a ghetto. A bunch of half-trained former PHP morons who never bother to sit down and really learn the computer science they were too good to study in college.”
さて、自分はここには当てはまらないと安心していいものかどうか。
Jan - 14th
実況パワフルメジャーリーグ2
Posted at 12:43 am | Filed Under Baseball
息子と一緒に「実況パワフルメジャーリーグ2Wii」で遊んでいる。息子がどうしてもというのでシーズンを戦うチームにはボストンを選んだ。息子が打撃を担当し、こちらはピッチングと守備、それからトレードやチーム編成を受け持っている。休みの日にはわざわざ早起きして息子が誘いに来るのでこちらも朝っぱらからわいわい楽しんでいる。子供にDSを与えるべきか悩んでいた頃が嘘のようだ。
以降、野球なんかどうでもいい人はスルー推奨。
最初の一ヶ月をプレーして気付いたのは、まず中継ぎ投手が弱いのと、先発ローテーションの谷間を埋めるピッチャーの力不足で、トレードで戦力補強した。ゲームのシステムとして、こちらの希望を伝えると数試合後に相手方の返事が届くようになっていて、都合よくチームを自由に編成するわけにはいかないところが面白い。スナイダーやタバレス、デルカーメン、ロペス、ロメロ、ハンサック、ギャバード、クレメントといった年俸の割にはゲームの中では使い難い連中に絞って(といってもティムリン以外のほとんどの中継ぎを放出したことになるが)トレード要員として、主に中継ぎに人材がいなくて苦労していそうなところから選手を次々と獲得した。相手の年俸が高い場合はこちらは二人放出する、といった具合にとにかく年俸を抑える。ちなみに高校時代に学校のパソコンを何十台も盗んだことがある上に新人ながらノーヒットノーランを達成したバックホルツはロースターに入っていなかった。
ゲームのシステムのせいでカーブと落ちる球が異様に有効だと判明したので、ピッチャーの補強は三振の取れる球種があるかカーブがあることを優先した。L.A.ドジャーズからは73年生まれ仲間のデレク・ロー、シンシナティからは元ボストンのブロンソン・アローヨ(音がするので注意)、オークランドからは怪我の多いカート・シリングを放出して1対3のトレードで先発のジョー・ブラントンを穫った。ローといえば150キロの落ちる球という不気味な持ち味があるのに、ゲームでは再現されていないのが残念。先発は他に先日シアトルが黒田の獲得競争を断念してトレードで獲得していたミネソタのシルヴァを穫ってみたが、今年の成績と同様にあまりずば抜けたところはないので7月末のトレード期限までに外野の控えを穫る際の駒にしようと考えている。給料も高いし。これで先発はベケット、松坂、ウェイクフィールドに加えてローとアローヨが揃い、谷間にブラントンが入ることになった。すごいメンツだが、特にウェイクフィールドはもはやナックルを投げる以外は何もしなくても誰も打てない状態で、オールスターまでに1安打完封を二度も記録して防御率も1点台なのでこれはもうゲームのシステムがおかしいとしか言いようがない。オークランドから穫った他の二人は左のワンポイントのジェイ・マーシャル(去年ウェーバー公示されたら本当にボストンに移籍した)と実績があってコントロールのいいジャスティン・デュシェラーだが、休ませながら使えば結構戦力になっている。ついでに体力が足りない岡島の補強にピッツバーグから桑田を穫ったらゲームのシステム上カーブがとても依怙贔屓されているので大成功だった。それにしてもみんな給料が安い。ゲームの最低賃金はどうやら380万ドルらしいが、血液癌を克服したジョン・レスターが同じく最低賃金ながらブラントンと並んで先発の一角に食い込んで防御率1点台という大活躍。
打撃陣はラミレスとオルティーズが強力すぎるので、主に控えの充実を目指した。アレックス・コーラ、今年の新人王チビッ子ダスティン・ペドロイア、球場の駐車場で妻と殴り合いをして逮捕されたフリオ・ルーゴの三人で回している二遊間の補強として、打撃ではオークランドからトッド・ウォーカーを、守備ではコロラドのオマール・キンタニーラを獲得。ウォーカーはファーストとサードも出来るので、かつて中村紀洋をメジャー契約の力で突き落としたとしてよく知られているドジャーズから獲得したオルメド・サインツ(今どこいったんだろ*update 2/12にメッツとマイナー契約した)とも併用して睾丸癌の経験者ローウェルや四球の神ユーキリスのバックアップもできる。あとはウィリー・モー・ペーニャしかいない外野の控えが欲しいのだが、目星をつけたオークランドのトラヴィス・バックやドジャーズのアンドレ・イーザーといった若くて安くて今年活躍した選手はみんな断られてしまっているので、今はカンザスシティのマーク・ティーエンを狙っている。
もうね、夢中ですよ。気分は完全にGM。ビリー・ビーンになりきって戦ってる感じ。6回を投げるのが難しいシリングを放出してオークランドのピッチャー3人と交換したときは胸がスカッとした。これが終わったら是非、今度こそオークランドでやってみたい。
Jan - 11th
致命的なミスをしたとき
Posted at 2:45 pm | Filed Under life
$ svn delete files:///var/svn/repos/trunk
.
.
.
.
.
$ wall
My name is Ozymandias, king of kings:
Look on my works, ye mighty, and despair!
^D
Jan - 9th
CentOS 5にはfshが入っていなかった
Posted at 10:43 pm | Filed Under Linux, Security, Tuit
CentOS 4に入っていたfshがCentOS 5のyumでは見付からないのでどうしたのかと調べていたら、fshはPython2.4ではちゃんと動かないという問題があるのがわかった。いちおう、探すとパッチは見付かった。いまのところ問題なく動作している。
でも、製品レベルのものに使うのは無理だなあ。fshの更新はそもそも2001年から止まっている状態だし。
誰かPythonの人がいたら、ちょっくらメンテナンスしてほしいなあ。
Jan - 2nd
Rails2.0.2のヘルプ、中身拝見(4)
Posted at 2:09 am | Filed Under Ruby
備忘録というかRails2になってからドキュメントが改訂されているケースが少ないことへの腹いせに始めたものの、コードを全然書かないし成果が何もないので飽きてきたヘルプ拝見だが、乗りかけた船ということで続けてみる。
今度はgenerateでmailerを指定してみよう。
mailer
実際の例:
$ ruby script/generate mailer Notification signup forgot_password invoice
exists app/models/
create app/views/notification
exists test/unit/
create test/fixtures/notification
create app/models/notification.rb
create test/unit/notification_test.rb
create app/views/notification/signup.erb
create test/fixtures/notification/signup
create app/views/notification/forgot_password.erb
create test/fixtures/notification/forgot_password
create app/views/notification/invoice.erb
create test/fixtures/notification/invoice
Notificationという名前のmailerを指定すると、新規にmailerとそのビューのスタブを作成してくれる。といっても、コントローラには特に何も追加されず、modelとviewのみ何かが作成されているので、ブラウザですぐに変更を確認できるわけではない。
ここで作成されたモデルには、ちょっと不気味なルールが適用される。先ほど作成したlistというコントローラを下のように変更して、Notificationモデルを実装してみよう。
model以下に作成されたnotification.rbのsignupというメソッドのみ変更してみた。
$ cat app/models/notification.rb
class Notification < ActionMailer::Base
def signup(sent_at = Time.now)
@subject = 'Notification#signup'
@body = {}
@recipients = 'root@localhost'
@from = 'user@localhost'
@sent_on = sent_at
@headers = {}
end
def forgot_password(sent_at = Time.now)
@subject = 'Notification#forgot_password'
@body = {}
@recipients = ''
@from = ''
@sent_on = sent_at
@headers = {}
end
def invoice(sent_at = Time.now)
@subject = 'Notification#invoice'
@body = {}
@recipients = ''
@from = ''
@sent_on = sent_at
@headers = {}
end
end
signupというメソッドが呼び出されたら標題や本文、Fromや宛先が指定されたものになるように変更している。ご覧の通り、generate mailerで作成されたmodelはActionMailerクラスを継承している。続いてこちらをコントローラから呼び出してみる。以前作成したコントローラを利用する。
$ cat app/controllers/list_controller.rb
class ListController < ApplicationController
def index
Notification.deliver_signup()
end
def create
end
def edit
end
def delete
end
end
奇妙なことに、実装した覚えのない「deliver_signup」というメソッドが無造作に呼び出されている。また、Notificationクラスもいきなり呼び出してしまっているわけだが、model上のクラスはこうして呼び出すことが出来るのがRailsの規則のようだ。
この「deliver_signup」というメソッドは、正直ちょっと面食らってしまったのだが、動作としてはsignupメソッドのことを指している。その証拠に、これを実行するとログにはメールが配信されたと出力される。ようするに、ActionMailerを利用したメール送信では、deliver_付きのメソッドが呼び出されると、deliver_以下の名前のメソッドが実行され、メール送信に必要な情報はそちらで定義されたものが利用されることになっているということのようだ。
メール送信機能を実装する際のヘルパー、generate mailerの使い方はざっとこんな感じ。
keep looking »