Ubuntu 10.10 で perl の CPAN モジュール XML::LibXML を cpanm でインストールしようとすると失敗

Ubuntu 10.10 で perlCPAN モジュール XML::LibXML を cpanm でインストールしようとすると失敗する。

パッケージ libxml2-dev が必要

Ubuntu 最小設定だとインストールされていないので、インストールすればおk

  $ sudo aptitude install libxml2-dev

追記 (2011-02-04)

実は、これだけではダメだった。
zlib1g-dev も必要

  $ sudo aptitude install zlib1g-dev

でOK.

DBIx::Skinny の on_connect_do

perlDBI で utf8 な文字列を扱う場合には、
接続時に、

$dbh->do('set names utf8');

と指定するが、

DBIx::Skinny でこれ相当のことをやるには、Model で次のように定義すればそさそう。

package MyApp::Model;
use strict;
use warnings;

use DBIx::Skinny connect_info => +{
    dsn => 'dbi:xxx',
    username => 'xxxx',
    password => 'xxxx',
    connect_options => {
        mysql_enable_utf8 => 1
    }
    on_connect_do => [
        'SET NAMES utf8',
    ]
};

on_connect_do で指定するのは、ドキュメントにも書いておらず、
ソースを見ないとわからなかった。

と、ここまで書いたが、
そもそも set name utf8 を使うのはお勧めできないらしい

libmysqlclientを使うプログラムはset namesをutf8であっても使ってはいけない | へぼい日記
http://blog.everqueue.com/chiba/2009/02/05/129/

set character set utf8 を指定しても、utf8 として扱うことができたけれど、よいのかな。

    on_connect_do => [
        'set charcter set utf8',
    ]

Mac キーボードの修飾キー

どの記号がどのキーに対応しているのかわからなくなるので、覚え書き

Mac OS X 10.5 Help: 特殊キーのシンボル
http://docs.info.apple.com/jarticle.html?path=Mac/10.5/jp/cdb_symbs.html

PowerBook で「Forward Delete」キーを使う場合には、「fn」(ファンクション)キーと「Delete」キーを同時に押す

iBookPowerBook で Forward Delete を使用する方法
http://support.apple.com/kb/TA27204?viewlocale=ja_JP

Thunderbird でメッセージ単位でファイルにインポート / エクスポートできるようにするアドオン ImportExportTools

これは便利。
Mozilla のアドオンサイトにないので、
開発者の Web サイトからダウンロードしてインストールする。

http://nic-nac-project.de/~kaosmos/mboximport-en.html
.de ドメインってことは、ドイツ人なのかな。

MTOS 5.01 の mt-check.cgi でチェックすると、インストールされているはずの Crypt::DSA がインストールされていないとなってしまう

MTOS 5.01 のインストール時に、
mt-check.cgi へアクセスすると、
オプションモジュールの1つである Crypt::DSA について、

サーバーに Crypt::DSAか、Crypt::DSAの動作に必要な他のモジュールがインストールされていません。

と表示され、インストールされていないことになってしまう。

コマンドラインで確認すると、

$ perl -MCrypt::DSA -e 'print Crypt::DSA->VERSION, "\n"'
1.16

とのように、インストールされている。

おかしいな〜ということで、
mt-check.cgi の中を見ると、23行目で、ライブラリパスに mt ディレクトリの extlib を追加しており、
これが優先的に参照されるようになっている

unshift @INC, File::Spec->catdir($dir, 'extlib');

Crypt::DSA は、Math::BigInt に依存しており、
cpan でインストールした Math::BigInt 1.89 ではなく、
mt の extlib ディレクトリにある古いバージョンの Math::BigInt 1.63 の方をロードしてしまっていたため、
NG となってしまう。


2006年5月8日リリースの Crypt::DSA 0.14 が依存している
Math::BigInt のバージョンは1.60であり、
MTOS の extlib に含まれている Math::BigInt 1.63でも問題ない。


一方、2009年9月11日にリリースされた Crypt::DSA 1.16 では、
Math::BigInt 1.78 以上に依存している。

Crypt::DSA 1.16を CPAN でインストールしていた場合、
これにひっかかってしまい、mt-check.cgi で「インストールされていない」ことになってしまう。

これを回避するには、extlib の Math::BigInt モジュールを取り除いてやればよい。

MTOS パッケージの extlib に新しいバージョンの Math::BigInt が入っていればいいんだけれど、そうすると何か別の問題が起こってしまったりするのかなぁ。

Spreadsheet::ParseExcel で 時刻を文字列で抽出する方法

エクセルシートを perl の Spreadsheet::ParseExcel で文字列を抽出しようとしたら、
少しはまったのでメモ。


セルに 10:00 と入力したつもりのエクセルシート

my $cell = $sheet->{Cells}[$row][$col];

と取り出した Cell オブジェクトに対して、何も考えずに

$cell->{Val}

とすると

0.41666666666667

と期待していない数字が取り出されてしまう。

これは、24時間を1とした、10:00 のようだ。

これを、「10:00:00」として取り出すには、

$cell->Value

フォームのボタン内の文字がIE で上に偏よらないようにする

フォーム内のsubmit するボタンを

<input type="submit" value="送信">

のように何も考えずに書くと、Firefox では
ボタンの中央に文字が配置されるのだが、
IEだと、上に偏って表示されてしまう。

input要素に対し、CSS で、

font-family: "MS UI Gothic";

を指定すると、うまい具合に表示されるようになる。