Oct - 29th

恫喝的マネジメント

Posted at 12:20 pm | Filed Under Work, life

昼休みに、トム・デマルコの本(”デッドライン“)に出てくる人物のことを考えた。今いる会社のマネジメントをジョエル・スポルスキの分類に無理矢理にでも当てはめるなら、この指揮統制マネジメントが一番近いだろう。そして、ご多分に漏れず、自分自身がここに書かれているソフトウェア開発者の典型だ:

うぬぼれの強いソフトウェア開発者は特にそうで、彼らは非常に頭が良く、他の人より知識があると思っていて、そう思うのには十分な理由があり、実際その通りなのだが、そのことによって何かをやるように命令されるのをすごく嫌うのだ。

マイクロマネジメント、とはよくいったもので、これはようするにしごきのことだ。開発部門だけでなく営業や企画運用を含めると、うちの会社では定期的に誰かがこれをやられている。つまり、目をつけられたが最後、自分の人事評価について決定権を持つ人物に大勢の目の前で詰め寄られ、激しく詰問され、難癖をつけられ、自尊心の欠片もないやり方でしごかれている。

それも世渡りのひとつ、と割り切れる人は残っている。そうでない人は、次の仕事が見つかればそちらに移動する。理由は簡単、外的要因が仕事の動機の中心なら、取り替え可能なのでいざ取り替える段となったら躊躇する必要さえないからだ。

幸いにも、開発部門でこれをやられる人はそんなに多くはない。多くはない、というのだから皆無というわけではなく、実はかくいう自分も、入社三年目だがその間に一年くらい口をきくことがなくなった上役がいる。最近、ようやく普通に用件があれば会話くらいはするようになったが、今日の午前中でそれも終わった。急に呼ばれた会議室で、いま開発中の案件についてああだこうだと質問されるので、ああだこうだと答えていると、てめえこの野郎、でけえ口叩きやがって、といった具合に罵られてしまった。まだ不具合も出していない(これからのお楽しみ)案件でこうなのだから、何かあったらどんなにひどいことになるのだろう。

それでいろいろ考えてみたのだが、この人物と一年くらい口をきかなくなったのには原因があって、そういえばそのとき、いざこざの原因になったこの案件が片付いたら、もうこの会社は辞めよう、現状の責任はあるわけだから最後まで見届けて、そしたらここにいるのはやめだ、と思いながら、結局片付いたら片付いたで毎日本当に休む間もなく過ごしているうちに、いつの間にか今に至ってしまったのだった。その最中に母親が亡くなったけれど、そういえば取締役で葬儀に来てくれなかったのはその人だけだったな。今の今まで考えたこともなかったけど。

そのときの教訓は、いくら売り上げを積めば幸せになれるといわれても、無理な開発案件はいくらやっても結局誰も幸せにはなれないよ、ということだ。もし何か奇跡が起きてうまくいったとしても、自分の人事について決定権を握っている人物が、自分の家族のことまで持ち出してさんざん馬鹿にしてくる職場で、次もうまくいく可能性はあまり期待できない。ついでにいえば、人事や給料にだって期待できない。なんで我慢したのかというと、もちろんその案件をなんとかしたいというのもあったし、たまには大嫌いで全員まとめてブロック塀で頭をかち割ってやりたいときもあるが、それでも社内には好きな人間たちもいるのと、それからそこまでこちらを馬鹿にするなら、じゃあそこにいて給料をもらう方がかえって嫌がらせになるかな、と思ったからでもある。

今日の会議についてもう一度考えると、まあそこまでカッカしてもらえているのだから、ある一定のレベルの嫌がらせにはなったのかな、といえなくもない。

去年はずっと、そんな中でも自分の価値を高めないといけない、己の価値のコアになるのはやっぱり技術だ、というわけでいろんなことをこっそり押し進めてきた。結構勉強できたし、実装してみたら使っている人に喜ばれる技術もあって、自分はひょっとしたら人事評価ほど無価値な人間ではないのかもしれないと思えるようになった。今となってみれば、まあこれも塞翁が馬というやつだったのかもしれない。とはいえ、それが評価に繋がっているわけではないので、居心地が悪いことには変わりなかった。いくら塞翁でも、心頭滅却したら燃えちゃった、では困る。
恫喝的マネジメントで最悪なのは、それが軍隊でしかうまくいかないことで、軍隊の生活は基本的にキャッチ22なのだ。本来はコードを読んだり書いたりするはずの時間に、こうして糞の役にも立たない日記を書いているのもその副作用だ。

それにしても、三年も同じ職場にいると、他のところがどうだったのかちっとも思い出せない。ひょっとしてどこも状況は似たようなものなのだろうか。だとしたら、ソフトウェア開発なんてさっさとやめてもっとやりがいのある目標を見つけた方がましなのだろうか。

Read More>

Oct - 29th

Leopardにしてもこれだけはどうしようもない

Posted at 10:17 am | Filed Under Apple

気づいたらビールがこぼれていて、こぼれた先にMacBookがあって、朝目が覚めたら起動してくれない。

翌日、起動はするようになってくれたが、キーボードがおかしいままだ。ほとんどのキーが認識されない。

現在、天命を待っている

Read More>

Oct - 27th

WordPress2.3.1に更新

Posted at 11:23 pm | Filed Under WordPress

このサーバでホストしているWordPressを2.3.1に更新。

Read More>

Oct - 26th

Yahoo! JapanでJavaScriptのエラ_

Posted at 1:21 am | Filed Under Javascript

Yahoo! Japanのトップページにアクセスすると、デバッグモードにしてLog JavaScript ExceptionsをオンしたSafariではコンソールに

http://www.yahoo.co.jp/:TypeError - Value undefined (result of expression hm.isHomePage) is not object.

というエラーが出てくる。なんだろう。たぶんここに書かれているのと同じだから、Operaでも再現するらしい。というわけでFirefoxで開いてみたのだが、

Yahoo

これじゃねえの?

Read More>

Oct - 26th

何かが違う

Posted at 12:54 am | Filed Under Apple

Appleのサイトより。

Apple Download
名前と説明文が合っていない。何の間違いなんだ?

Read More>

Oct - 25th

OzzyもすなるPodcast

Posted at 9:36 pm | Filed Under Music

ここ

Read More>

Oct - 25th

PHPをビルドしたときのmake test

Posted at 9:23 pm | Filed Under PHP

PHPをソースコードからビルドしたとき、make testも実行しているだろうか。

している人ならご存知の通り、終わると結果をPHPのQAチームに送ってもかまわないか質問される。そこで、何かの役に立つならとメールを送信している人ってどれくらいいるのだろうか。

ちなみに、私はしておりました。

ところが今日、その結果がPHPのQAのニューズグループに多分自動的に投稿されているのを知って、これからはどうしようか考えるようになった。少なくともメールアドレスはgmailにして、hostnameもどこのサーバかわからないようにしておこう。

Read More>

Oct - 25th

PHPをCLIで実行するとphp.iniによるセキュリティ制限は無意味なんだね

Posted at 8:07 pm | Filed Under PHP, Security

PHPをCLIモードで実行するとき、オプションに「-d」を指定するとphp.iniなどで設定された値を実行時に上書きできる。ふとヘルプを見たら、そんなオプションがあるのに気付いた。

<?php

print(ini_get('include_path') . "\n");

?>

これを実行すると

$ php -q test.php
./:/usr/lib/php/

こうなるとする。そこで-dオプションを付けると

$ php -q -d include_path=./:/usr/sbin test.php
./:/usr/sbin

こうなる。ふーん、と思ったが、ふと思い立って

<?php

print(ini_get('safe_mode_gid') . "\n");

?>

このディレクティブはPHP_INI_SYSTEMなのでphp.iniかhttpd.confでしか設定できないものだ。ところが

$ php -q test.php

$

手元の環境ではOffなので何も返されないが、

$ php -q -d safe_mode_gid=On test.php
1
$

こうするとちゃんとOnになった。つまり、ディレクティブの制限はCLIで実行すれば一般ユーザでも簡単に変更出来てしまうというわけだ。

もうとっくに知られていることなのかもしれないが、これはいくらなんでもちょっとマズいと思われる。CLI用のiniファイルを指定していても、

$ touch ./dummy.ini
$ php -c ./dummy.ini -d safe_mode_gid=On ./test.php
1

実行時にiniファイルなんて自分で指定できるので意味がない。まあ、もっともこうやって指定できる時点でiniファイルによるセキュリティ制限など存在しないわけだが。

というわけで、php.iniによるセキュリティ制限はCLIの実行時には全く無意味であることがわかった。めでたしめでたし。

Read More>

Oct - 24th

Blowfishメモ

Posted at 11:14 pm | Filed Under PHP

忘れないようにPEARのCrypt_Blowfishの使い方メモ。1.0.1をベースにしているので、factoryから呼び出すようになっているはずのインスタンスの生成は最新版とはちょっと違うかも。

<?php

require_once 'Crypt/Blowfish.php';

$key = 'secret key';
$bf = new Crypt_Blowfish($key);

//
暗号化しよう
$enc = $bf->encrypt('this is my secret');

//16進数にして持ち運び可能にしよう
$hex = bin2hex($enc);

//復号化しよう
$hex2bin = pack("H*", $hex);
$plain = $bf->decrypt($hex2bin);

if(PEAR::isError($plain)){
echo $plain->getMessage();
exit;
}

echo trim($plain) . "\n";

?>

これはなにかというと、Blowfishで暗号化されたテキストデータはバイナリ形式になるようなのでXML化したりDBに格納したりするときに面倒だから、bin2he関数でいちど16進数に変換して、復号化するときにその逆をやっている例。可逆暗号化方式なので、SSLが使えない環境で通信したりなんかするときに便利かも。もっとも、オーバーヘッドがあるので使うならそのあたりを考慮しないといけないけれど。

Read More>

Oct - 24th

file_exists

Posted at 8:25 pm | Filed Under PHP

file_existsは結果をキャッシュする。ある環境でこれが原因のエラーが発生したのだが、全然再現できない。

if(!file_eixsts($dir)){
    mkdir($dir);
}

みたいな単純な分岐でmkdirがエラーになったのだが、確実に再現できるコードはどうやって書いたらいいのか未だにわからない。PHPのソース読むか…

Read More>

keep looking »