2007-07-01
λ 5インチおよび3.5インチベイ内蔵型 超高速RAMディスク
i-RAMの次がなかなか出てこないと思ったら、GIGABYTEではなく ACARD から。 超期待できる。
3.5インチベイ内蔵型 のみ発売予定があるという噂。
2007-07-02
λ 絶対に失敗が許されない時
うまくいくように準備するのはもちろんだが、「失敗してしまった場合の対応策」の方が重要という話。
まあこの世界、100%に近づけるためのコストも時間もかけられないことが往々にしてあるわけで、 そのかけられなかったコストに対してどうリスク管理するかは、重要だろうなあ。
まあ俺は現在のところ開発者サイドなので100%を目指して頑張るだけだけど。
2007-07-03
λ Inside SQL Server 2005 を読んでのチューニングネタ
- ネットワーク接続のプロパティ - Microsoft ネットワーク用ファイルとプリンタ共有のプロパティ でダイアログを出し、「ネットワークアプリケーションのデータ スループットを最大にする」
- 停止するのを検討すべきサービス DHCP, Alerter, ClipBook, ComputerBrowser, Messanger, Network DDE, Task Scheduler
- SQL Server 実行の優先度を高める Priority Boost
インデックス付ビューがStandard Edition どころか Express Edition でも使える! (オプティマイザが、テーブルに対するクエリの時に、勝手にインデックス付ビューを使うかどうかが Enterprise Edition との違い)
VARCHAR(MAX) をTEXT型の代わりに使えるのは知ってたけど、通常のVARCHAR(3000)とかを4つ持って 8060バイトの壁を超えることもできる、 ってのは知らなかった。その辺の制限解除も含めてファイルシステムちっくになってるなあ。
2007-07-04
λ Dynamically Created Controls in ASP.NET
カスタムコントロールのどのイベントで何をやるべきか、 という指針についてまとまった資料がなかなかないのだが、 「動的ローディングされる」という枕でありながらもカスタムコントロールを作る際の指針として役にたつまとめが最後に書いてある。
基本は CreateChildControls に子コントロールの作成を実装、というのが間違ってないというのが確信できたのが嬉しい。 ここしばらくかかわったプロジェクトで作成したカスタムコントロールでは、 CreateChildControls のところにばりばり実装していたので。
2007-07-05
λ [.NET] aspnet_compiler.exe 別マシンへの配置する時の罠
aspnet_compiler.exe を含めて CruiseControl.NET を実行しているマシンと、 aspnet_compiler.exe の実行結果を配置するマシンが違う環境で、Cドライブがあふれる事件が起きた。 今日の2回目。
というか1回目は ディスククリーンアップウィザードでお茶を濁しただけだったのだが、 まじめに原因追求したところ C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files の下に 大量のフォルダが…
一応 C:\WINDOWS の容量を調べたつもりだったのだが、集計があまりに遅くて「1GBぐらいしか使ってないのにどこに巨大ファイルが??」という状態だった。 ファイル数が多くて削除するのも一苦労。DEL コマンドでいけるような気もしたが。
もしかすると、CruiseControl.NET が .NET Framework 1.1 ベース、作成しているのが .NET Framework 2.0 ベースだったのが原因かも。 CruiseControl.NET 1.3 にしたら自動的に掃除してくれるようになるかもしれない。 (今まで ASP.NET 2.0 のWebアプリが全く動いていなかったので)
λ [.NET] CruiseControl.NET 1.3 へのアップグレード作業
CruiseControl.NET 1.3をインストールしてみましたに、 「アップグレードしたときにccnet.configを上書きしなくなった」とあったので、気楽に CruiseControlNET-1.3-Setup.exe をたたく俺。 そして動かない。確かに ccnet.config はそのままだったけど
- ccservice.exe.config は ccservice.exe.config.old に保存された上で上書きされていた
- こちらの環境では、ccservice.exe.config が、俺設定をした ccnet.config を見るように設定してあった
という状況。なので ccservice.exe.config に俺設定(1行だけだけど) を入れてサービス再起動。 これで自動ビルドのアップグレードは完了。
で、次に http://localhost/ccnet/ が動かない。インストールの時に「virtualhost の設定を作るか→チェック外す」をしたせいかもしんないけど、 インターネットインフォメーションマネージャを使って、http://localhost/ccnet/ に割り当てられた ASP.NET のバージョンを ASP.NET 2.0 に変更して完了。
…Subversionの日本語ログが文字化けした。ぐわゎ。
svn.exe の出力文字コードの変換をバッチファイルで無理矢理かけてたのを止めたらよくなった。素直に使えるようになって非常にありがたい。
MSBuild の出力を見ようとしたらエラー発生。ググったら MSBuild.xsl Error - Unable to transform … Release 1.3 に含まれている奴はダメらしい。なんということだ。
メール内にあった解決策をやってみた。( 結果の msbuild.xsl ) これで動くようになった。 解決策に書いてあったのは以下の内容
- 最上部の DOCTYPE で、 を   に変換するよう指示している奴を削除
- をすべて   に置換
- <xsl:choose></xsl:choose> を <xsl:choose><xsl:when test="false"/></xsl:choose> に置換
2007-07-06
λ 大富豪と大貧民を両方楽しむ
本題とはあんまり関係ないんだけど。
カードゲームの 大富豪-大貧民 は、カード交換枚数が多いが故に 大富豪が勝ちつつも大貧民も2位を取るという結託がやりやすい、 ってところがナイスなゲーム性だと思うのだな。
…これを本当に単純に、相互評価の 大富豪-大貧民 をペアリングして、 次のターンをすごしてみるとかのルールにしたらどうなるんだろ。
2007-07-07
λ ササノハ オトノハ
ここしばらくグレ気味だったのが、一気に癒された。音楽の力って素晴らしい。
今堀さんが久々に参加している、っていうだけで momoism のことを思い出してたんだけど、 僕の森をやってくれた!
2007-07-08
λ [FreeBSD] ports/graphics/jasper
今回の更新により libglut 経由で X11 を要求する状態になっていた。
そもそも ImageMagick だけが使うライブラリなのに、WITHOUT_X11 の設定が役に立たないじゃん! と怒って ImageMagick 側に WITHOUT_IMAGEMAGICK_JPEG2000 を設定して、jasper を削除した。 さっぱり流行る気配ないから JPEG2000 のことは忘れることにする。
λ SQL Server 2008 CTP 3
Katmai の What's New を眺めてみた
- Bitmap Filtering 特定の種類のデータに対して高速検索してくれる
- P2P Transactional Replication データベースミラーリングに近いけど、読み出しに関しては両方アクティブになれる
- SSIS スクリプト環境で C# 使える!
つい最近も ん十万件のレコードを転送するのをプログラムで書いたら、Command Timeout くらう事件とかあって、 データの転送関係のコードは SSIS にやらせた方がよさそうだな思ったところ。 Basic 強制されるのが今までネックだったのが、C# 使えるようになるのはかなり嬉しい。
一方で Reportinng Services の方にはそういう記述ないなあ。残念。
2007-07-09
λ Trac TimingAndEstimationPlugin + Scrum Burndown
trac + TracBurndownプラグインでスクラム開発のすすめ を参考にしつつ、 最新の Scrum Burndown は cron での設定が不要なので、基本的には以下の作業をそれぞれのプラグインに対して行った。
- Subversion で最新ソースを取得
- sudo python setup.py install でインストール
- [components] に hogehoge.* = enabled と書く
- tracadmin . upgrade
- apache 再起動
tracadmin . upgrade したところで、ラベルの文字列が trac.ini に含まれるようになっていた。そこのところを日本語化する。hoge.label 以外のところの数値とかはそのままで。
[ticket-custom] ... billable.label = 集計対象? ... estimatedhours.label = 作業時間見積(hour) ... hours.label = 今回の実作業時間 ... totalhours.label = 合計実作業時間
Scrum 向けなので、運用は以下のような流れになるはず。
- チケット登録時に 「作業時間見積」 を入れる。いつやるかはこの時点では決めなくてもいい。決めてもいい。(決めたものはマイルストーンの設定をする)
- スプリントの開始時に、どれをやるか決めてマイルストーンを設定。「Start Milestone」を押して作業開始!
- チケットをやっつけたら、「今回の実作業時間」 に時間を入れる。「合計実作業時間」の方は勝手に加算される。
- 状況が変わったら、「作業時間見積」を適宜変更する。
時間の入力には、小数が含まれていても良い。「今回の実作業時間」にはマイナスの値を入れて入力間違いの修正をすることもできる。
しかしやろうと思ってから、ほぼ1ヶ月経過してしまったなあ。
λ Trac 重要度の設定 改
重要度 (severity) ... 技術面の指標 をより明確に表現してみるテスト
- 常にシステム停止
- 稀にシステム停止
- 不整合が拡大中
- 不整合が常に表面化
- 不整合が稀に表面化
- 不整合は存在しない
システム停止の件は Bug Triage Meeting - Severity & Priority にあるのを もってきた。 その続きについては、プログラムは動き続けられるという状況だとしても、 バックエンドにデータベースが存在するシステムの場合「データの不整合をどう修正するか」がコードの修正と密接に連携する、 ということで主にデータの不整合に注目してみた。
不整合が拡大中…てのは状況としてはシステム停止よりも悪いことの方が多いのだが、そこは優先度 緊急、ということで。
2007-07-10
λ 四谷三丁目で迷子
四谷三丁目の交差点から曙橋方面に行くはずだったのだが、 いつまで経っても目的地に到着しないと思っていたら、信濃町駅に着いてしまった。 全く正反対に移動していた。
…後で確認してみたら、四谷三丁目新宿方面改札外にある地図が、上が南になっている地図だった! それは間違うさ。
2007-07-11
λ taRgrey - S25R + tarpitting + greylisting (tarpit + greylist policy server)
FreeBSD では ports/mail/postgrey にパッチをあてればいけそう。 …と思ってやってみたら、元の postgrey のバージョンが 0.28 に上がっていてそのままではパッチが当たらなかった。
2007-07-12
λ [.NET] Lost session variables and appdomain recycles
application domain の unload が起こる状況について説明している。
(13日追記) binフォルダーの中のファイルが1つでも更新されると、リサイクルが走って、アセンブリDLLをすべて再読み込みしようとする。 が、その途中で読もうとしているDLLファイルを上書きすると不幸な事態が発生するということのようだ。
Web.Config の httpRuntime 要素 waitChangeNotification 属性を利用することにより、 ファイル更新にかかる時間を指定して再読み込みを開始するタイミングを遅らせることができる。
ASP.NET チュートリアル : XCOPY を使用した ASP.NET Web アプリケーションの配置 が参考になる。
λ Want to learn how to build and test solutions that scale to 260 million customers?
Windows Live Hotmail のサイト構築するにあたって、 Visual Studio Team Edition for Software Testers をつかって負荷テストをした話。
Goal Based Pattern に設定すると、例えば CPU 利用率 70〜90% の間でどれだけの同時接続数をさばけるか、みたいなテストができる。 CPU 利用率でなくても、パフォーマンスカウンタでとれるものだったら何でもいいようだ。
2007-07-13
λ TechED 2007 Yokohama
MCP上位資格者向け無料招待に当たった! わーい。
λ AQUOS LC-32D1 購入
自宅用モニター兼TVとして。 24インチのWUXGA モニター(チューナーなし)に比べて+2万円なんで自宅用ならこっちのがいいかなあと。
消費電力が少ないのもポイント。
次は自宅用ワイヤレスキーボードか。
オフィス用の野望としては、WUXGA 24インチを縦長、横並びで2台かな。縦1920px 萌える。
λ masuidrive的プロジェクトの方針
プレゼンスライドとしては非常に素晴らしい。 ポリシーというか、全体の方針というか、全体の雰囲気みたいなものを「最初に伝えておく」ってのは重要だよなあ。
ほぼ開発としては終息に向かっている今回のプロジェクト、一通り全体が出来上がった中盤以降のTracチケット駆動開発は非常にうまくいった感があって満足している。 なんかあったらとにかく「不具合」と「機能追加」チケットを作って、やると決めたらやっつける。 チケットによっては仕様の決定までに紆余曲折があったりするんだけど、それが検索できてあとから作業記録が参照できるってのは、 運用が開始してからトラブル発生した時に非常に心強かった。
一方で
- 実体が何もなくスクラッチビルドのフェーズだとチケット駆動しずらい。
- 客先とのやりとりで待ちが多く発生した
という部分には まだ改善が必要。
決定権が客先にあるんだけど、決定してくれない、という状況にどう対応すべきかというのは非常に難しいんだけど。
2007-07-14
λ BI
子育て支援もしたい、低所得者層の所得も保証したい、老後の生活の保障もしたい。 だったらベーシックインカムでいいじゃんとか思う。
社民党が ベーシックインカム を経済政策の軸として主張してくれるようになると論点がすっきりしてよいのだが。 (実際に支持するかどうかは別として)
λ さくらの専用サーバはそんな無防備というほどでもない
古い話題ですが。今年の4月末から借りたさくらの専用サーバは以下のような状態だった。
- FreeBSD 6.2 で、最新パッチが当たった状態。freebsd-update をかけてから引き渡してくれる
- ssh , telnet, apache, webmin, sendmail, qpopper, dracd が上がっている。packageで入れたようで /usr/ports はない。
- 最初の案内では「telnetで入れ」と言われる
- さくら側が管理する用のアカウントが仕込まれている。引き渡し前にはこのアカウントで入って freebsd-update をかけた形跡がある
- さくら側が管理する用のアカウントについては、消していいとも消すなとも言われていない、と思う
- 引き渡し時点で、ssh に対してかなりの bruteforce attack をくらっていた。telnet にはそういう形跡はない。
- ssh はパスワード認証が有効な状態
- パケットフィルタの設定はない
- /etc/hosts.allow でリモートからの rpcbind は無効にしてあった
願わくば、telnetなしsshを公開鍵認証のみにして、初回は契約者に ssh 秘密鍵をメールで送りつけるぐらいがよいのだが、 (秘密鍵をメールで送るのは最善ではないが、パスワードをメールで送るよりはずっとまし) まああの値段なのでサポートコストを考えると、仕方ないかなというラインではある。 /etc/hosts.allow の設定をしているところはポイント高い。
ssh が上がっていたので、実際には最初から telnet は使わなかった。 FreeBSD間で利用する分には、telnet を使ったとてちゃんと暗号化されるので問題ないんだけど。
ちなみに当時調達が2週間程度遅れたお詫びなのか、サービス仕様に書いてあるよりもちょっと早いCPUと かなりでかいHDDがやってきた。CPUはともかくHDDは40GBだとちょっと心細いと思ってたので、とてもありがたい。 現在のHDD市場の状況からすると 80GB が最低ラインになりそうではある。
CPUも低消費電力の方がデータセンタートータルではコスト低いかもしんないし、 次回契約するような時は AMD PowerNow!なCPUのっけて powerd 有効状態で引き渡してくれたりしないかなあ。
2007-07-15
λ [FreeBSD] dump & restore 戦略
最近のFreeBSDの dump コマンドには -L オプションがある。snapshot を利用して運用中でも安全にダンプを取ることが出来る。
ダンプの仕方については解説が簡単に見つかるのだが、複数のlevelを利用した場合の説明がなかなか見つからない。 バックアップファイルだけ取って安心しているのかもしれないし、リストアするような状態の時にはそれどころではないのかもしれないし。
ハノイの塔シーケンスというのが man dump にも載っているんだけど、これの最大の問題は直感的ではないところ。 特に軽くパニック状態のリストア状態になった時に「どのダンプファイルをどの順番で適用すればいいのか」がすぐに分らない。 折角途中までリストアしたのに失敗してしまったら(そういう状況では大概スピードを求められているはずなので)最悪だ。
0 -> 3 -> 2 -> 5 -> 4 -> 7 -> 6 -> 9 -> 8 -> 1(a) -> 3 -> 2 -> 5 -> 4 -> 7 -> 6 -> 9 -> 8 -> 1(b) -> 3 -> 2 -> 5 -> 4 -> 7 -> 6 -> 9 -> 8 -> 0 に戻る
なので毎月同じ日には同じlevelのバックアップファイルを取ることにする。
dump する時のダンプレベル早見表 1日 : 0 (毎回新tape。年月を記録する) 2日 : 3 3日 : 2 4日 : 5 5日 : 4 6日 : 7 7日 : 6 8日 : 9 9日 : 8 10日 : 1 (tape A) 11日 : 3 12日 : 2 13日 : 5 14日 : 4 15日 : 7 16日 : 6 17日 : 9 18日 : 8 19日 : 1 (tape B) 20日 : 3 21日 : 2 22日 : 5 23日 : 4 24日 : 7 25日 : 6 26日 : 9 27日 : 8 28日 : 1 (tape C) 29日 : 3 30日 : 2 31日 : 5
で、何かあって「その日の状態まで戻す」には、どの日のバックアップを使うべきかが次の表
restore する時の対象ダンプファイル早見表(カッコ内はダンプレベル) 1日 : 1日 (0) 2日 : 1日+2日 (0,3) 3日 : 1日+3日 (0,2) 4日 : 1日+3日+4日 (0,2,5) 5日 : 1日+3日+5日 (0,2,4) 6日 : 1日+3日+5日+6日 (0,2,4,7) 7日 : 1日+3日+5日+7日 (0,2,4,6) 8日 : 1日+3日+5日+7日+8日 (0,2,4,6,9) 9日 : 1日+3日+5日+7日+9日 (0,2,4,6,8) 10日 : 1日+10日 (0,1) 11日 : 1日+10日+11日 (0,1,3) 12日 : 1日+10日+12日 (0,1,2) 13日 : 1日+10日+12日+13日 (0,1,2,5) 14日 : 1日+10日+12日+14日 (0,1,2,4) 15日 : 1日+10日+12日+14日+15日 (0,1,2,4,7) 16日 : 1日+10日+12日+14日+16日 (0,1,2,4,6) 17日 : 1日+10日+12日+14日+16日+17日 (0,1,2,4,6,9) 18日 : 1日+10日+12日+14日+16日+18日 (0,1,2,4,6,8) 19日 : 1日+19日 (0,1) 20日 : 1日+19日+20日 (0,1,3) 21日 : 1日+19日+21日 (0,1,2) 22日 : 1日+19日+21日+22日 (0,1,2,5) 23日 : 1日+19日+21日+23日 (0,1,2,4) 24日 : 1日+19日+21日+23日+24日 (0,1,2,4,7) 25日 : 1日+19日+21日+23日+25日 (0,1,2,4,6) 26日 : 1日+19日+21日+23日+25日+26日 (0,1,2,4,6,9) 27日 : 1日+19日+21日+23日+25日+27日 (0,1,2,4,6,8) 28日 : 1日+28日 (0,1) 29日 : 1日+28日+29日 (0,1,3) 30日 : 1日+28日+30日 (0,1,2) 31日 : 1日+28日+30日+31日 (0,1,5)
dumpHanoiByDate コマンド(第一引数にファイルシステムを指定する):
#!/bin/sh
setdumplevel () {
local d -
d=`date +%e | tr -d ' '`
set 0 3 2 5 4 7 6 9 8 1 3 2 5 4 7 6 9 8 1 3 2 5 4 7 6 9 8 1 3 2 5 4 7 6 9 8
eval "dumplevel=\${$d}"
}
setdumplevel
/sbin/dump -$dumplevel -uaL -h0 -f - $1 | nice bzip2
これをバックアップしたい方のマシンに仕込んで置いて、ssh でダンプを抽出する予定。 (8/1追記) 日付を取得するところを date +%d にしていると、1日の場合 '01' が返って来て $01 を評価しようとして失敗してしまった。date +%e で ' 1'(1文字目スペース) を返すようにしてスペース除去、というように変更した。
(追記) バックアップファイルをハードディスクに1年分保存しときゃいいか、な受け側のスクリプト。(バックアップファイルのファイル名が 月日 ベースなので。年に1回さらに別メディアにコピーしとけば更に長期間の保存ができることになる。)
#!/bin/sh
d=`date +%m%d`
ssh -i ~/.ssh/id_rsa_dumpHanoiByDateroot -l root tobebackuped.example.com /root/dumpHanoiByDate / > /BigDrive/tobebackuped.example.com/root.${d}.bz2
ssh -i ~/.ssh/id_rsa_dumpHanoiByDatevar -l root tobebackuped.example.com /root/dumpHanoiByDate /var > /BigDrive/tobebackuped.example.com/var.${d}.bz2
ssh -i ~/.ssh/id_rsa_dumpHanoiByDateusr -l root tobebackuped.example.com /root/dumpHanoiByDate /usr > /BigDrive/tobebackuped.example.com/usr.${d}.bz2
ssh -i ~/.ssh/id_rsa_dumpHanoiByDatehome -l root tobebackuped.example.com /root/dumpHanoiByDate /home > /BigDrive/tobebackuped.example.com/home.${d}.bz2
バックアップする側(tobebackuped.example.com)の /root/.ssh/autholized_keys には以下のように書いておく。実行されるコマンドは、この /root/.ssh/autholized_keys と鍵の組み合わせで決まっており、受け側のスクリプトに書いてあるコマンドは無視される。(man sshd 参照)
command="/root/dumpHanoiByDate /",no-pty,no-port-forwarding ssh-rsa AAAA... command="/root/dumpHanoiByDate /var",no-pty,no-port-forwarding ssh-rsa AAAA... command="/root/dumpHanoiByDate /usr",no-pty,no-port-forwarding ssh-rsa AAAA... command="/root/dumpHanoiByDate /home",no-pty,no-port-forwarding ssh-rsa AAAA...
(2008/1/3 追記) dump でファイルを除外する を有効にするために、dump 時に -h0 オプションを追加。 /usr/obj 等に chflags nodump をかけて容量を節約する。
λ [FreeBSD] nullfs でマウントしている時の dump
以下のような /etc/fstab で、nullfs によるマウントをしていると、
dump -0uaL -f - /usr コマンド等の実行で dump コマンドが対象とするファイルシステムをどうすればよいか混乱してdumpできない。
このような場合デバイス名を利用して dump -0uaL -f - /dev/ufs/usr とすればよい。
# Device Mountpoint FStype Options Dump Pass# /dev/label/swap1 none swap sw 0 0 /dev/ad0s1a / ufs rw 1 1 /dev/ufs/home /home ufs rw 2 2 /dev/ufs/usr /usr ufs rw 2 2 /dev/ufs/var /var ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 # for jail /usr /var/jail/mimori.org/usr nullfs ro 0 0 /home /var/jail/mimori.org/home nullfs rw 0 0
2007-07-16
λ さくらのレンタルサーバ 検討
この mimori.org をやってるマシンがハードウェア的にやばそうな状況なので移転を考えているわけだが、 どうせmail,webしかホストしないんだったら 専用サーバ じゃなくてもいけるんじゃ? と検討してみた。
…プロ(月額4500円)じゃないとSSL証明書を仕込めない。SSLは生命線です。それだったら 専用サーバ(月額6800円) にしますよ〜
…と思ったのだが、tDiaryでspamの相手するのはもう面倒なんすよ。 例えば blogs.mimori.org には公開情報しか載せないというポリシーでいくならSSLなしもありかなあ。
λ Modern C++ Design
テンプレートで指定したクラスを基底クラスとして指定する。もうそこだけで目から鱗。
それを起点として、「クラスの挙動をポリシーとしてテンプレートのとこに指定する」という展開は素晴らしい。 C++コンパイラの挙動を利用した Generative Programming じゃんと思ったら、Generative Programming の方がどうやらネタ元らしい。 まあC++コンパイラがテンプレートに対してどのようにマッチングするかを理解し、コンパイル時(実行前) に解決をさせるための ライブラリ作成は自分でやるもんではなさそうだ。
基本的には C# 生活なんだが、画像を二値化する奴だけはどうにも遅いのでそこだけC++にしよかなと思っているところ。
しっかし途中で出てくる、テンプレートシステムを使ってコンパイル中に再帰計算させるところなんかは、かなり狂っている。 業務システムでこんなコード書いたらプロジェクトから追い出されるだろう。
λ Visual Studio 2005 C++ で IntelliSense
<URL:http://pc11.2ch.net/test/read.cgi/tech/1175663346/371> より
Visual Studio 2005 で IntelliSense がきかねぇよ・・・ しかも特定のライブラリ使ったときに顕著。 っていってたやつですが、using 使うと結構回避できるんですね。 boost::filesystem::path とか boost::spirit::file_iterator とか がそれなんですが、 using boost::filesystem::path するとか using filesystem=boost::filesystem すると IntelliSense が 効くみたい。
λ <URL:http://cpplover.blogspot.com/search/label/C++>
VC8 (VisualStudio2005 の C++ コンパイラは、末尾再帰をループに最適化してくれるそうだ。
λ 分解と手順 あるいは 連続的な設計とコーディング
「結合するものがデカくなればなるほどリスクもデカくなる」、というより 「結合を遅らせるほどリスクもデカくなる」な気がする。主題は時間軸だし。
俺がDataSetを愛しているのは、紙芝居とモデルの進化が並行しているとして、 とりあえず紙芝居に必要そうなデータを DataSet に定義して『名前をつけておけば』双方がある程度勝手に開発が進むところ。 (Webアプリで 紙芝居=プレゼンテーションレイヤ、モデル=ビジネスロジック+データアクセスレイヤ をほぼ想定)
daily build してりゃー、ちょっとした不整合だったらその日のうちに片付くものだ。 不整合はたまると身動きがとりにくくなる。
2007-07-17
λ コードだけ書いている人が最強 か
俺自身はひたすら物作りをする道にいるけど、それでもプロデューサー重要という意識を持つようになっている。
映画作りに例えるのがうまい例えなのかどうかは分からんが、ディレクター(物作り)とプロデューサー(マネジメント) は両輪であって、 どっちが欠けてもいいものはできん。規模がでかくなった場合は特に。
ただ日本のIT業界の不幸なところは、プロジェクトマネージャー PM という職業が、責任ある割にリソースを使う権限がなさげなところ。 説得する先が スポンサーなのか、会社の上層部なのか、はたまた顧客なのかは別として、 端的に言えば金をぶんどってきてスタッフとインフラに配分する「プロジェクトプロデューサー」があるべき姿なんじゃないかと思う。
いまの日本だと、それは ソフトハウスの社長 と呼ばれる職業?なのかもしれんが。
2007-07-18
λ Windows Live Writer
blog 投稿ツールとして使えるらしい。Windows Live Writer Application API というAPIもある。COM だけど。
λ 「緊急地震速報」モデル実験 IPv6マルチキャスト配信
今年春までだったのが、延長運用されている。
しかし今回の地震をキャッチしたという話を聞かない。やはり使われてないのか… ていうか FLETS.Net だったら俺も使うんだけど、OCN IPv6 必須って敷居高すぎだろう。
2007-07-19
λ [tDiary] category に対するクローラアクセス制御
カテゴリー経由で存在しない超未来とか超過去のページに飛ぼうとして無駄アクセスを繰り返して負荷がかかっていたので、 .htaccess に以下のように書いてみた。
RewriteCond %{QUERY_STRING} category
RewriteCond %{HTTP_USER_AGENT} Googlebot [OR]
RewriteCond %{HTTP_USER_AGENT} Slurp [OR]
RewriteCond %{HTTP_USER_AGENT} Twiceler [OR]
RewriteCond %{HTTP_USER_AGENT} Baiduspider [OR]
RewriteCond %{HTTP_USER_AGENT} Gigabot [OR]
RewriteCond %{HTTP_USER_AGENT} msnbot
RewriteRule .* - [L,R=404]
?の後ろの QueryString 部に category が含まれていて、ユーザーエージェントがクローラっぽかったら 404 を返す。
ちなみにアクセスログはこんな具合。確かにこんなペースで来たら死ねる。
65.55.210.57 - - [19/Jul/2007:02:40:26 +0900] "GET /~h/tdiary/?category=ALL;year=2002;month=1Q HTTP/1.0" 404 208 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 65.55.210.57 - - [19/Jul/2007:02:40:26 +0900] "GET /~h/tdiary/?category=SSL;year=1979 HTTP/1.0" 404 208 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 65.55.210.57 - - [19/Jul/2007:02:40:27 +0900] "GET /~h/tdiary/?category=Subversion;year=1977 HTTP/1.0" 404 208 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 65.55.210.57 - - [19/Jul/2007:02:40:27 +0900] "GET /~h/tdiary/?category=IPv6;year=1995;month=1Q HTTP/1.0" 404 208 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 65.55.210.57 - - [19/Jul/2007:02:40:28 +0900] "GET /~h/tdiary/?category=Cygwin;year=2013 HTTP/1.0" 404 208 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 65.55.210.57 - - [19/Jul/2007:02:40:28 +0900] "GET /~h/tdiary/?category=xyzzy;year=2012;month=2H HTTP/1.0" 404 208 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 65.55.210.57 - - [19/Jul/2007:02:40:28 +0900] "GET /~h/tdiary/?category=Mac;year=2007;month=11 HTTP/1.0" 404 208 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 65.55.210.57 - - [19/Jul/2007:02:40:29 +0900] "GET /~h/tdiary/?category=xyzzy;year=1994;month=4Q HTTP/1.0" 404 208 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 65.55.210.57 - - [19/Jul/2007:02:40:29 +0900] "GET /~h/tdiary/?category=tDiary;year=2006;month=03 HTTP/1.0" 404 208 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 65.55.210.57 - - [19/Jul/2007:02:40:29 +0900] "GET /~h/tdiary/?category=xyzzy;year=2005;month=2H HTTP/1.0" 404 208 "-" "msnbot/1.0 (+http://search.msn.com/msnbot.htm)" 64.1.215.163 - - [19/Jul/2007:02:40:32 +0900] "GET /~h/tdiary/././?category=NFL HTTP/1.0" 404 208 "-" "Mozilla/5.0 (Twiceler-0.9 http://www.cuill.com/twiceler/robot.html)"
ついでに tb.rb への無駄アクセスもあったので.htaccess に以下の行も追加
RewriteCond %{HTTP_USER_AGENT} Googlebot [OR]
RewriteCond %{HTTP_USER_AGENT} Slurp [OR]
RewriteCond %{HTTP_USER_AGENT} Twiceler [OR]
RewriteCond %{HTTP_USER_AGENT} Baiduspider [OR]
RewriteCond %{HTTP_USER_AGENT} Gigabot [OR]
RewriteCond %{HTTP_USER_AGENT} msnbot
RewriteRule tb\.rb - [L,R=404]
先週ぐらいから、ここを読めてたのは RSS経由で読んでた人だけなんじゃなかろうか。ほとんどサービス停止状態だった。 気づいたら killall ruby しまくっていた状態。
2007-07-20
λ PASSJ セミナー Windows Server 2008 アプリケーション互換性評価
内部的な仕組みについては、@IT 管理者権限での実行を制限するユーザー・アカウント制御UAC に記載されていることとほぼ同じ解説だったのだが、 今回最も重要な情報は
- 権限昇格のチェックをするタイミングは ShellExecute
- CreateProcess では権限昇格しない (ダイアログが出ない)
である。このネタは今まで全く聞いたことがなかった。
ShellExecute でアプリケーションまるごと権限昇格する以外の方法としては、 CreateElevatedComObject() というキーワードが出てきた。 要はCOMを Out-of-Process Server で起動するので、別プロセスになるよ、という話。
CreateElevatedComObject() で検索したら ソフトをWindows VistaのUACにスマートに対応させる というのが見つかった。 その他ググっているとなんとなく Out-of-Process Server については管理上 COM+ にした方がいいんじゃね? という雰囲気を感じる。
あと Server Core の話。Server Core には .NET Framework は非搭載! マネージドコード動かないよ! 管理用のプロトコルとしては RPC/DCOM 使えと言っている。あと WMI, SNMP あたり。
.NET Framework 3.0 の時代になってもOSの最下層として .NET Framework が居座ることはないのか。 やはり Win95 以来、当面の間 Windows の基盤は COM なんだなあと。
そんなわけで C# マンセーではあるが、まだまだ C++ は捨てられない。
Server Core の当面の利用シナリオは、ドメインコントローラ(DNS,DHCPを含む)・ファイルサーバ・プリントサーバ・WSV(Virtual Server のすごいやつ) ぐらいがメインのようだ。 ドメインコントローラ + WSV だけでも十分ありがたい。
2007-07-21
λ AQUOS LC-32D1 設置
とにかく DVI 接続だけした。アンテナもつないでない。DVDレコーダもつないでない。
画面明るい〜。恐ろしく明るいので手で輝度を下げた。
解像度はDVI経由でのディスプレイプロファイルでは 1360x768 までしか設定できない状態だったが、 設定ツールを使いディスプレイプロファイル無視して(警告をくらいつつ)手で 1920x1080@60Hz に設定し、 AQUOS側もDot by Dot の設定をして 1920x1080 の表示ができた。
少し使ってみて、明らかにこれでも十分でかいと思った。血迷って37インチにしなくてよかった。
ちなみに購入は NTT-X Store 代引。 玄関先で佐川の端末使ってカード払いしつつ物を受け取れるんだから、 大きい物の購入にはかなりいいと思った。
λ 筋トレ 開始
実際には先週の日曜から開始しているんだけど、今回で「10回ぎりぎりの負荷」にほぼ突入ということで効果が出るのは多分これから。
大学生時代もそれなりにトレーニングしていた、はず、なんだけど、本郷でのトレ体に行っていた時の記憶が今ひとつ薄い。 しかしこの「10回ぎりぎりの負荷」かけてやって、1日休んで超回復っていう基本理論は、15年経っても変わらんようだ。 トレーニングマシーンもランニングマシンにTVがついてるぐらいで、あんまり変わってる感じはしなかった。
むしろひんやり感じるスポーツウェアにすごい技術進歩を感じた!
ランニング中、ニュース系の番組やってればTV見るんだけど、 そうじゃないと退屈なので iPod shuffle 系の軽量音楽プレイヤで英語のリスニングでもしようかしら。 ランニングマシンのTVが ABC ニュースシャワー やってくれると最高なのだが。 ABCニュース + ABC ニュースシャワー は平日 16:15 〜 16:40 か。うむむ…
λ ThinkPad T43p 無線LAN 復活
余裕ができたのでひさびさに ソフトウェア導入支援 でドライバ類を一気に更新。 その後 ThinkPad機能設定 で確認してみたら、無線LANがオフになってたのでこれをオンにして、 以前利用していた AccessConnections の無線接続プロファイルに変更したら利用できるようになった。
単純に機能設定がいつの間にかオフになってた…ということはないと思うんだけどなあ。 使えなくなりつつある時は Fn+F5 で表示が出たり出なかったり不安定だったし。 Intel Wireless のドライバを更新したのが復活の鍵だったのかしら。 (そういえば使えなくなりつつあったのは、セキュリティ問題でIntel Wireless のドライバ更新したあたりだったような)
なんにせよ修理に出さずに復活したのはめでたい。TechEdの時点で無線LAN使えないと悲しいしな。
2007-07-22
λ [FreeBSD] taRgrey - S25R + tarpitting + greylisting (tarpit + greylist policy server)
postgrey 0.28 向けのパッチを頂いたので仕込中。
/usr/local/etc/pkgtools.conf でパッチファイルを それっぽい名前で /usr/ports/mail/postgrey/files/ の下にコピーさせる。
BEFOREBUILD = {
'mail/postgrey' => 'cp /local/work/targrey-0.23-postgrey-1.28.patch /usr/ports/mail/postgrey/files/patch-targrey' ,
}
あとは sudo portinstall mail/postgrey でプログラム自体のインストールは完了
daemontools 向け run スクリプト。unixドメインソケットを利用して高速化&一般ユーザには使わせないぞ設定にした。 postgrey の --unix オプションで作られるソケットファイルは、誰でも読み書き可能状態だったので chmod g+rw,o= を利用してpostfix以外からはアクセスできないように。 このソケットファイルのパーミッション設定は clammilter の時の設定をほぼ流用だ。
#!/bin/sh
user=postgrey
socketdir=/var/run/postgrey
sockfile=$socketdir/postgrey.sock
if [ \! -d $socketdir ]; then
mkdir $socketdir >/dev/null 2>&1
fi
chown -R $user $socketdir
chgrp -R $user $socketdir
chmod 755 $socketdir
chownpipe () {
while [ \! -S $sockfile ];
do
sleep 1
done
chgrp postfix $sockfile
chmod g+rw,o= $sockfile
}
case $1 in
--chownpipe) chownpipe; exit 0;;
esac
rm -f $sockfile
daemon $0 --chownpipe
exec 2>&1
exec softlimit -c 0 \
envdir ./env \
/usr/local/sbin/postgrey --unix=$sockfile --group=postfix --tarpit=125 --delay=1800 --retry-count=2
postgrey(targrey)自体のオプションに --targrey がないのは、頂いたパッチが targrey-0.27 相当だったため。 今まで postgrey を使っていた訳ではないので特に問題はない。
/usr/local/etc/postfix/main.cf の該当部分が以下のようにした。
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
reject_unknown_recipient_domain
check_sender_access hash:/usr/local/etc/postfix/sender_access
reject_unknown_sender_domain
check_client_access regexp:/usr/local/etc/postfix/permit_client_nots25r
check_policy_service unix:/var/run/postgrey/postgrey.sock
warn_if_reject reject_unverified_sender
permit
smtpd_data_restrictions =
permit_mynetworks
permit_sasl_authenticated
check_sender_access hash:/usr/local/etc/postfix/sender_access
check_client_access regexp:/usr/local/etc/postfix/permit_client_nots25r
check_policy_service unix:/var/run/postgrey/postgrey.sock
permit
address_verify_map = btree:/var/run/postfix_verify
strict_rfc821_envelopes = yes
/usr/local/etc/postfix/permit_client_nots25r については特にアイデアがなかったのでそのまんまで。
/\.dip\.t-dialin\.net$/ WARN
/\.dyn\.optonline\.net$/ WARN
# ...(other dynamic IP FQDN pattern(not match S25R pattern))
!/(^unknown$)|(^[^\.]*[0-9][^0-9\.]+[0-9])|(^[^\.]*[0-9]{5})|(^([^\.]+\.)?[0-9][^\.]*\.[^\.]+\..+\.[a-z])|(^[^\.]*[0-9]\.[^\.]*[0-9]-[0-9])|(^[^\.]*[0-9]\.[^\.]*[0-9]\.[^\.]+\..+\.)|(^(dhcp|dialup|ppp|adsl)[^\.]*[0-9])/ OK
/./ WARN
まだMXを向けてないので外部からメールはほとんど来てないけど、とりあえず動くところまでいった。
ここ mimori.org にも仕掛けてみたけど、グラフを見てもすぐにはよくわからんな。
λ 自宅PC HDD故障
いきなり起動しなくなった。修理に出すための箱は発見。 Ultimate Boot CD で一応チェックをしてみてから修理に出そう。
今から入れるんだったら Windows Server 2008 β3 か CTPか?と思ったら、 Windows Server Virtualization は入ってないのか。 仮想PC上げられないOSをベースにするのはきついなあ。そこをあえてイバラの道に進むという手はあるが…
イバラの道に進んで Termial Services 生活してみるか。
(追記)Samsung SHDIAG で調査したら、標準で走るチェックの最後の部分 Small Surface Scan Test でアクセスランプがつきっぱなしになって、 先に進まなくなった。少なくとも6時間は待った(寝て起きた)。
そこで、リセットしたら、なぜかWindowsXPが復活。訳わからんすぎ。次は chkdsk だ。
SHDIAGの途中で代替セクター処理でも走ったのかな。
2007-07-23
λ ほげほげラボ
永遠のベータ版ミクシい じゃないけど、正式サービスじゃないよ、と断った上で新しいサービスを がんがん作る形態をラボと呼んでいる、らしい。
しかし、資本持っているところが社内プロジェクトとしてやる分には何の問題もないのだが、 基本的には成果を約束するタイプの契約で外部に頼むのは無理があるんじゃまいか。 せめてあるべき姿についてのビジョンがあれば…とりあえず流行っていることをいろいろやりたいんだよね、と言われても困るのよ。
ところで、実験サイトとはいえ、一度始まってしまってなおかつ「人気が出てしまった場合」は そう簡単に止めるわけにはいかない。 人気が出たらいつでも増強できるぜ、なスケーラブルな設計は絶対に必要。
むしろ人気が出ると分かった時点でいつgoogleが追いつき追い越して行くかわからない、わけで、 しょうがないから最初から作り直していたらユーザーは google に奪われていた、というのでは最悪のシナリオだ。 そういう意味でスケーラビリティもそうだけど、漸進的に進歩できるフレームワークもやっぱり必要。
セキュリティの C.I.A. に照らして言えば、こんな感じか。
- C(機密性) 個人情報保護は重要命題。ただしラボでは個人情報を扱わないという選択はあり
- I(完全性) 正しい情報の提供は必須。正式サービスと同レベルで間違った情報の提供はありえない
- A(可用性) サービスは止まってもいい。個人的気分で言えば 50% 程度の可用性。
可用性を下げる代わりに、新しいサービスの提供を素早く行うのがラボ。人数に対するスケーラビリティの検証もラボ。 可用性を上げようとなった時にサービスはラボを旅立つ。
λ Web標準 ?
W3C原理主義,CSS原理主義 っていうとなんとなく反体制的だけど、Web標準 ていうと「うちらが正しいんでっせ。」というスーツ族ちっくな香り。
ASP.NET に限らずフレームワーク上で何がしかの「部品」を作るんだったら、そこは再利用を深く考えるわけで、 XHTML+CSSの世界にいく方が開発の立場として楽。必然的にそっちの方に進むさ。
でもページを1枚の絵としてデザインするんだったら、そこは表現されたものに意味があるわけで、 コンテンツとデザインの分離なんてありえねえ。
そんなわけで、デザイナーに使えるフレームワークと部品を提供するってな MicroSoft の策略に乗せられている俺ガイル。
λ 国の審議会の情報公開を進めたいのですが
国の審議会の議事内容を自分で打ち込んでblogに掲載するって、報道以外の何者でもないと思うのだがどうか。
一方で配布資料は明らかに著作物なので無断掲載するのはだめだとは思う。
2007-07-24
λ NW-S706F 始動
ポータブルミュージックプレイヤとノイズキャンセラの統合効果は絶大だ! 単4電池を入れる日々は終わりを告げた。 …英語のリスニングするならね。
無駄に眠っていた E5c を引っ張り出してつなげて聞いたら。すごい、すごいよこれ。 NW-S706F 自体も NW-S706F/T Review 音質評価篇 にあるように、 DAT Walkman に匹敵する高音質ということで更に音の解像度がアップしている…気がする。 すいません、まだ AAC 128kbps の音楽しか入れてないもので。
ちと HOPE をATRAC Advanced LossLessでつっこんでみようぞ。
あと SonicStage で、NW-S706F側からPCに音楽転送ができそう。
iTunes+iPod だとこれをやらせてくれなくて、PCのハードディスクが飛んでからげんなりした。 ていうか一応ツールで拾ってみたけど結局完全な復元に至らず面倒なので放置状態である。 ドライブの前にプレイリストぐらいは作りたいと思うのだが、それでもあまりに面倒で放置。 iPod はてけとーに選択した音楽で目覚ましに使う状況にあるのだった。 なんかあったら外付けFirewireHDDとして活用するという道でいいや。
(追記)ATRAC Advanced LossLessで入れて聴いた。ドラムの音がめっさパワフル。 iPod+E5cで聞くと「くしゅん」みたいにすぼんでしまっているスネアが、NW-S706F+E5c だとガツンとくる。 ガツンというよりはもうちょっと粘っこくからみつくような音か。
次回 the wings of time(沼澤尚)を聞きたくなった。あと大村憲司+PONTA のライブ盤のどれか。
λ tDiaryの脆弱性に関する報告(2007-07-23)
tdiary.conf に以下の行を追加。
def base_url 'http://mimori.org/~h/tdiary/' end
ここの中身は @base_url じゃだめ…なんだろうな。たぶん(未検証)。
λ ThinkPad X61 Tablet
hp Compaq 2710p が超低電圧版CPUのくせに1.7kgもあってガッカリしたのとは対照的に、 SXGA+ 液晶と1.6GHzCPUで1.85kgなら許せる。 あと、初期導入OS が Windows Vista Ultimate でTPM搭載なんで、そのまま BitLocker いけるのがイイ!
BlueToothもあるし、俺の求めるちょうどいいバランスのマシンに思えて来た。
航続距離3時間は短すぎなので、大容量バッテリー +250g で2倍強の航続距離にすることになるんじゃないかな。 それと CardBus SDHC アダプタつっこんで ReadyBoost。
λ Core 2 Quad Q6600 が 半額に
SQL Server を含んだ開発やる人とか、Virtual Server に仮想マシン上げまくる人とかには大変ありがたい話だ。
2007-07-25
λ 『チームハックス』序章(1)「仕事の進捗」を共有できるか?
1週間ぐらいなら Trac のチケットで見えるけど、大きいスケジュールが見えないのと、 個人が複数のプロジェクトに関わっている状況を楽に見える化できんかなーというあたりが気になった。
それにしても、ビジョンだよなー。 《「他己紹介」で仲間を深く理解する》というトピックはいいと思った。
λ オカムラ クルーズ&アトラス
自宅の椅子の座面を一部バキっと折ってやばい状態になって数ヶ月。 自宅でアーロンチェアだと若干無骨なので、別の高機能椅子を探してみた。
サイボウズラボ で紹介されてる椅子が、アトラスだだ。 机込みのセットだと37万とかありえない値段だけど、椅子だけだったらありかなあ。 あと机の方のディスプレイアームが22インチまで、ってのがいくない。もし据え付けるなら24インチつけたい。
専用の机は、机の上にキーボードを載せる前提で高さ設計されているんだけど、 アトラス椅子+キネシスひざ上+普通の机 でいけるんじゃないか?
置いてあるショールームのうち、三芳家具 がうちから近い。 関越道 三芳スマートインターチェンジ を使うとすごい近そう。これだ。
2007-07-26
λ SQL Server 2005 tempdb の復旧
一時 tempdb をRAMDisk上に展開しているシステムがあったのだが、RAMDiskの試用期間が切れてしまいtempdbが作れなくて起動に失敗する現象が発生。
システム データベースの移動 の障害復旧の手順に「master のみを復旧するモードで開始」というのが記載されている。
NET START MSSQLSERVER /f /T3608
こうすれば、master のみ利用可能で起動するので、sqlcmd -A -d master -E で接続して、tempdb のファイル移動と同じSQL文を発行する。
あとはSQL Server を普通に再起動。
2007-07-27
λ http://kamiyn.nowa.jp/
nowa はじめました。永遠のβ版のくせに最近さっぱり進化しない ミクシい からは精神的に撤退するかも。 (RSSフィードは続ける)
とりあえず携帯写真投稿用に nowa を活用する予定。
2007-07-28
λ トーストマスターズ
プレゼンテーション 能力を上げるには トーストマスターズ がよいらしい。 スピーチに対する論評(レビュー) がもらえるというのは、日常ではなかなか難しいし、 「忌憚のない意見を言える環境である」という雰囲気がよさそうな感じである。 論評に対する論評がある、というのもよい感じ。
もし行くなら 響トーストマスターズ が一番行きやすそう。
日本の学校生活だと「弁論部」なんだろうけど、弁論部 と言われると科学的トレーニングの香りがしないのはどうしてだろう。
2007-07-29
λ [FreeBSD] taRgrey - S25R + tarpitting + greylisting (tarpit + greylist policy server) on postgrey 0.29
postgrey 本家側で 0.29 が公開されていたので、更新作業を ports の更新に先行してやってみた。
- /usr/ports/mail/postgrey/Makefile の中のバージョン番号を 1.29 に変更
- cd /usr/ports/mail/postgrey; sudo make makesum
- sudo portupgrade mail/postgrey
すでに構築されたデータベースは保存されていた。特に問題はなさそう。
λ オープン・ギートステイト
東浩紀×桜坂洋 の横に声優並べてどうすんねん、と思ってスルーしていたのだが、 ここに shi3z 氏参戦。まさにカオス。
がぜん行く気になったのでチケット買って来た。…なんかあんまり売れてないような整理番号だ。
2007-07-30
λ 採用条件が具体的すぎるとすぐ辞めるの法則
採用条件が具体的すぎる採用って、プロジェクトの計画中か最悪プロジェクトの最中で「人員が足りない」という 状況であるというのが想像されるので、 そんなところに突っ込まれたらその会社に長居しようとはあんまり思わんのじゃないか。
λ トレーニング開始から半月
両手両足に電極つけるだけで色々測定できるという機械による測定。 トレーニング開始当初と比べて微妙に体重が増えたり脂肪が増えたり、筋肉がそのままだったり。まーじーでー。
実感としてはそんなことはないと思うのだが… 少なくとも体がやわらかくなってるのは間違いないので続ける。
λ スターロジック,人月商売の悪弊がはびこるSI業界に成果物価格で挑戦
うちは人月計算のふりをして、全然人月じゃない見積もりを出しつつ、満足してもらえれば おk みたいな感じになってるけど。 まあでも CISCOの設定1回5万円(例えそれが1行でも) みたいな商売のが楽だよなあとは思う。
ただし設定変更1行だとしても、「結果を保証する」SLA に対する値段だということであれば、 システムを停止させないためのコストであって、そのために高い技術力を持って事前に検証するというところをやるならありなんではないかと。
タスクに対していくら、ではなくて、顧客がシステムによって受け取る価値あるいは、被らなかった損害 の何割かをもらうという「スタンスでいたい」。 実際にそれを見積もりに直接書くのは無理なので、結局人月計算のふりなわけだけど。 そういうスタンスなので『分析も設計もそっちでやってよ。』はウェルカムである。
そして単なる下請けではそうはいかない。
2007-07-31
λ Intel、Xeonシリーズを15~54%値下げ
この前のクアッドコアマシンにCPU追加して 8コアマシンにしようかしらん。 WindowsServer 2008 を検証したいという要請もきたし。
λ Microsoft Wireless Entertainment Desktop 7000
いつまで経っても日本で 8000 の方が出る気配がないので買ってしまった。
キー配列を Dvorak+α マッピングに変更したところ、元の配列が106なのに気づいた。 日本モデルなんだからそりゃそうだよな。 101配列に変更すべくドライバの置き換え…じゃなくてレジストリの変更。
と思ってregedit で OverrideKeyboardSubtype を探したのだが、 BlueToothキーボード(というかHIDデバイス)で該当するものが見つからない。 がんばって探した結果 KeyboardSubtypeOverride という名前になっているのが判明。 なんかの嫌がらせですか…
KeyboardSubtypeOverride を 2 から 0 に変更すると106キー配列が101キー配列相当になる。 ただし無変換・変換・ひらカタ キーのスキャンコードは返ってくるのでこいつらにキー割り当てをすることは可能。 あと右シフトキーが狭いので「ろ」キーにも右シフトを割り当ててみた。 さらに「¥」キーにBackspaceを割り当ててみた。
ナビゲーションパッドは、マウスカーソルモードの場合 CASSIOPEIA FIVAのサムパッドそのものだ。 さらにすぐ上にあるスライドスイッチを切り替えると、同じ部分がカーソルキー+Enter(おそらくテンキー相当)になる。 結構面白い。一応マウスまで手を延ばさなくてよいところは評価できる。 とはいえ手がホームポジションから離れてしまうので、 やはりホームポジションのまま操作できるトラックポイントのが好みではあるけれけど。
using plugin: amazon calendar2 category html_anchor makelirs makerss recent_comment3 recent_trackback3 squeeze tb-send tb-show recent_list
Copyright(C) 2003-2007 by KAMIYA Satosi (上美谷 智史) All rights reserved.
λ stealthinu [taRgrey書いてるさとうです。ごぶさたしてます。 実は同じような要望いただいて、0.28用のパッチを作ったところ..]