Ubuntu 10.10 で perl の CPAN モジュール XML::LibXML を cpanm でインストールしようとすると失敗
Ubuntu 10.10 で perl の CPAN モジュール XML::LibXML を cpanm でインストールしようとすると失敗する。
パッケージ libxml2-dev が必要
Ubuntu 最小設定だとインストールされていないので、インストールすればおk
$ sudo aptitude install libxml2-dev
追記 (2011-02-04)
実は、これだけではダメだった。
zlib1g-dev も必要
$ sudo aptitude install zlib1g-dev
でOK.
参考
http://www.simplicidade.org/notes/archives/2007/04/tip_xmllibxml_a.html
Ubuntu 10.10 に XML::LibXMLをインストールする - とほほのN88-BASIC日記
をみて
apt-get install zlib1g zlib1g-dev
したら通った。
DBIx::Skinny の on_connect_do
perl の DBI で 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」キーを同時に押す
iBook や PowerBook で 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