2008年4月10日木曜日

ドキュメントは印刷して確認しろ

最近まで、現場のエンジニアや取引先の企業から届くドキュメントの品質の悪さに閉口する日々です。特に某社は、自社内のリビジョン管理がムチャクチャになっていて、ドラフトを平気で成果物として送付してくる始末。送られてきた Word 文書には Excel のシートが貼られていましたが、不要なセルまで含めてペーストしていたため、印刷するととても悲惨な状況になっていました。なんともお粗末です。これがまたいい歳したオッサンなので呆れて何もモノ言う気になりません。プロ意識はあるんでしょうかね?


で、タイトルで伝えたいことは書いてしまったのですが、ドキュメントを提出する際は印刷して確認しないとダメです。ドキュメントは大抵Word/Excelなどで作っていると思いますが、印刷すると、例えばこんなことに気づきます。


  • ズームの設定が大きくて、1ページに収めたつもりのページが複数ページにまたがっている(Excel)


  • ズームの設定が小さすぎて、印刷してみると読めないような大きさの文字(Excel)


  • ヘッダ、フッタの更新漏れがある(Excel, Word)


  • スクリーンショットを縮小しすぎて、読めないと困る部分が潰れてしまっている


  • セルの高さ・幅がバラバラ、一部のみフォントや文字サイズが異なっているが、画面上では見分けがつかない


お友達との交換日記などであれば体裁はどうでもいいでしょうが、お客様への納品物としてのドキュメントは、先に示すようなレイアウト崩れはきちんと修正した上で出すべきですよね。これらのミスは画面上では確認できないことが多いですから、紙の無駄遣いとか考えずにきちんと紙面に出して確認しましょう。


どうしても紙面に出して確認できない場合は、PDFに変換した上で確認することをオススメします。PDFであれば実際の印刷に近いイメージを画面上で確認できますからね。


2008年4月3日木曜日

PCのハードウェア構成をラクに特定する

本職にて、コンピュータの環境設定(OSを入れ直したり、ソフトウェアをインストールしたり等々)をよく行っているのですが、コンピュータごとに構成が違うため、適合するデバイスドライバを調べて用意するのは、とても面倒で時間がかかる作業です。


昔はいわゆる「自作機」を相手にすることも非常に多かったのですが、最近はハードウェアの調達元が統一され、随分と楽になりました。とはいえ、構成がわらないコンピュータの環境設定作業を行わなければいけないシチュエーションが無くなったわけではありません。


また、調達元が統一されたとはいえ、某BTOベンダのハードウェアでは、同じモデルでもロットによっては搭載されているデバイス(ビデオ、サウンド、NIC)が違うことはしばしば。このような場合にはあたりをつけてドライバを入れてみるとか、1CD Linuxを起動してハードウェア構成を確認するといった方法をとっていましたが、いかんせん非効率的ですし、スマートとは言えません。


そこで Unknown Device Identifier のようなツールを使うと、そのコンピュータ上に存在する PCI デバイスの一覧を表示できます。システムのプロパティを見ても「不明なデバイス」としか表示されないデバイスでも、このツールの表示を見ればすぐに適合するデバイスドライバがどれか判断でき、自信を持って作業できます。


Unknown Device Identifier はインストーラ形式での配布になっていますが、インストール先ディレクトリのイメージを USB メモリなどに入れておけば、 Windows をセットアップしたばかりのコンピュータでも利用できるようです。


2008年4月1日火曜日

LWP::get()を使うコードにキャッシュ機能を付ける

RSSリーダーなブログパーツが欲しい、けど、既存のサービスを使うのは嫌なのでなんとなくフルスクラッチで書いてみることにした。


とりあえず動くようにはなったんだけど、せめてRSSのキャッシュぐらいは実装しておかないとRSSの取得先サーバにとって迷惑だ。なんかないかなぁとCPANをガサゴソしてみたらHTTP::Cache::Transparentモジュールが使えそうなので、早速試してみる。


使い方は、


  1. use LWP::Simple の後にuse HTTP::Cache::Transparent する


  2. HTTP::Cache::Transparent::init() に設定を渡してモジュールを初期化


  3. いつも通り LWP で get() する


らしい。…簡単だー。とりあえず追加してみたコード。
$DIR_HTTPCACHE = '/home/doggie/data/rss_cache';

HTTP::Cache::Transparent::init( {
        BasePath => $DIR_HTTPCACHE,
        Verbose => 0,
        MaxAge => 12,
        NoUpdate => 30 * 60,
} );
HTTP::Cache::Transparent::init() に渡せるオプションはこれだけ。


  • BasePath
     キャッシュ領域として使用するディレクトリ


  • Verbose
     冗長出力するかしないか(1 or 0)


  • MaxAge
     キャッシュが生き続ける最大時間(単位:hour)


  • NoUpdate
     最後にキャッシュが更新されてから、実際のHTTP問い合わせを抑制する時間(単位:second)


一発スクリプトを走らせた後にキャッシュディレクトリを見てみると
doggie@elena:~$ ls -l /home/doggie/data/rss_cache/
合計 28
-rw-r--r--  1 doggie users 26387 2008-03-31 20:27 6b2b2adb261025db95ada29a0f5dd44d
おー、うまく機能している模様。