2009-01-01から1年間の記事一覧

ディスクがとんだので md RAID を修復した

作業メモ。以下の2台のハードディスクを md で /dev/md0 として RAID-1 をくんでる。 /dev/sdb 1TB (SAMSUNG HD103UI) /dev/sdc 1TB (WD WD10EADS) ある日 smartd からメールがとどいていた。以下の2通。 Device: /dev/sdc, 1 Currently unreadable (pending…

DBIC のスキーマをモデルクラスとして使ってみる

ドキュメントに書いてないので今後も使えるかわかんないけど、メモメモΦ 普通 DBIC で新しいレコードを挿入するには、 use strict; use warnings; package My::Schema::Artist; use base qw( DBIx::Class ); __PACKAGE__->load_components(qw( Core )); __PA…

Google Go で碁……

go

を作るのはさすがに無理なので五目並べをつくろう……と思ったらわたしには難しかったんで三目並べ(いわゆるマルバツ)を作ってみました。ウォーゲームによると三目並べで核戦争が回避されるらしいのでこれでいいのだ。 ということでコンピュータ対コンピュー…

DataMapper での Associations に Hook をからませる

DataMapper での One-To-Many-Through - daily dayflower の続き。下記はあくまで説明のためのサンプル((まじめにアプリとしてインプリメントするなら,単に User や Mail モデルに削除フラグ(というか available フィールド?)を用意してそこを操作するだ…

DataMapper での One-To-Many-Through

DataMapper 0.10.1 が対象。単純な One-To-Many ではなくて、ひとつ間にテーブルをかます One-To-Many-Through のおはなし。たとえばユーザ・ユーザ間のメールのやりとりをモデルに起こすとして、あるユーザが複数のユーザに同時に同じメッセージを送ること…

Firefox の Pencil 拡張機能をダメ出しに使う

ダメ出しってなんだ。annotation のことだ。 Firefox に Pencil という拡張機能があるんですが,たいてい(GUI アプリの)デザインプロトタイプに使えるなどと紹介されてます。たしかに,シェイプとして Windows や Linux などの GUI ウィジェットが多数登録…

Capistrano で rsync

Capistrano によるファイル転送手段で標準で用意されてる方法は upload や put でファイルをアップロードする(scp / sftp 経由) Git や Subversion などの SCM からファイルをチェックアウトする であり,rsync はない(と思う)。なので,Capistrano で r…

DBIC で後付けの relationship を定義してたらうまく動かなくなった

昔かいた DBIC を使うコードが,DBIC を新しくしたら動かなくなった。 うまくいく例 use strict; use warnings; # artist の定義 package My::Schema::Result::Artist; use base qw( DBIx::Class ); __PACKAGE__->load_components(qw( Core )); __PACKAGE__-…

Microsoft Word 文書からテキストを抽出するモジュールを書いた

CPAN にはなさそげだったので書いてみました。 http://svn.coderepos.org/share/lang/perl/MSWord-ExtractContent/trunk/ 名前空間がどうよって気がするけど Word 文書に該当する名前空間が見当たらず,こんな感じにしてしまいました。まぁ coderepos の段階…

CentOS 5 で認識されないハードウェアを使うとき ELRepo がべんり

CentOS 5 (RHEL5) のサードウェアレポジトリとしては EPEL や RPMForge が有名だと思いますが,ハードウェアドライバ(カーネルモジュール)に特化した ELRepo というのもあります。歴史は浅いんですが,RPMForge のドライバモジュールが DKMS ベースなのに…

PXE ブートで CentOS をインストール

ついで?なので,CentOS のインストールも PXE ブートでやってしまおうと。インストーラ用のカーネルと initrd は,インストール DVD の images/pxeboot/ フォルダ以下に収められているので*1,それを TFTP 用フォルダにコピー。 $ cp DISKIMAGE/images/pxeb…

PXE で SystemRescueCd をブートする

ディスクのブートブロックが壊れたとか,設定がおかしくなってうまく立ち上がらなくなったという時は,復旧用の汎用 Linux を利用すると便利。もちろん LiveCD な Ubuntu や KNOPPIX(あと今は Fedora とかもいけるんだっけ)を立ち上げればいいんだけど,デ…

Proxy DHCP サーバで PXE ブート

ずっと PXE ブートはやってみたかったんだけど,すでに(PXE に対応しない)DHCP サーバがあがっている環境なので半ば諦めていた。もう一台 PXE に対応した DHCP サーバを立てるというのも一つの手*1なんだけど,その新規 DHCP サーバが先に応答するという運…

RHEL 5 と KMP (Kernel Module Package)

カーネルのバージョンが上がる度にカーネルモジュールもビルドしなきゃいけない,というのはめんどくさい。しかも。バイナリパッケージでカーネルモジュールをインストールしているとする。このカーネルモジュールがシステム動作の上で必須だとすると,新し…

USBRH driver for Linux を CentOS 5 で使う

いままで USB-RH を利用してきました*1が,ユーザランドのコマンド(http://www.dd.iij4u.or.jp/~briareos/soft/usbrh.html)をバックエンドとして使ってきました。しかし,定期的に情報収集するのならカーネルモジュールである http://acapulco.dyndns.org/…

USB-RH で温湿度を収集しグラフ化(collectd & rrdtool)

USB-RH で遊ぶ - daily dayflower で USB-RH という USB 接続温湿度計を Linux から使えるようにしましたが,このままだとコマンドラインから温湿度を調べることしかできません。やっぱり見たいのはグラフによる傾向!てことで,普通なら RRDTool と組み合わ…

USB-RH で遊ぶ

USB-RH って何?ストロベリー・リナックスさんが開発・販売している USB 温度・湿度測定モジュールです。スイス製半導体温湿度センサを利用した高精度温湿度計で,ディスプレイの類はまったくついていない代わりに,USB を通じて温度・湿度を読み取ることが…

base (< 2.14) が $SIG{__DIE__} を破壊するのではまった

たとえば, #!/usr/bin/perl use strict; use warnings; local $SIG{__DIE__} = sub { warn "signal handled"; die $_[0]; }; require Foo; die "foo"; こんなスクリプトがあったとして,実行すると, signal handled at test.pl line 7. foo at test.pl lin…

PerlIO の encoding layer の fallback ではまった

PerlIO の encoding layer は,$PerlIO::encoding::fallback という変数に fallback type を指定しておくことができるみたい。ということを PerlIO::encoding - encoding layer - metacpan.org 見て知った。encoding いじるのに PerlIO 使うのはなんとなく敬…

vim 用 Template-Toolkit のシンタックスハイライト

ひさびさに Template Toolkit を触ってて,普通に html のシンタックスハイライトで書いていたんですが,< とか > とかの演算子がでてくると,ハイライトがおかしくなるのが煩わしい!と思ってたら,TT2 用の文法ファイルを書いてくださった方がいらっしゃる…

SQL::Abstract で LIKE の ESCAPE を指定する

正規表現でいう ^a_c.* みたいなのをひっかけようと思って, my ($sql, @binds) = SQL::Abstract->new()->select( # table 'foo', # fields [ '*' ], # where { id => { LIKE => 'a_c%' }, }, ); みたくやると,a_code だけでなく abc もマッチしてしまう罠…

MQ の適用済パッチのログメッセージを一括取得する extension を書いた

たとえば, $ hg qpush applying 248.diff now at: 248.diff $ hg qpush applying 249.diff now at: 249.diff $ hg qseries -s 248.diff: 記事追加機能を仮実装した(うまくいっていない) 249.diff: 記事追加機能を修正した 250.diff: 記事編集機能を実装し…

Mercurial MQ でバイナリファイルを扱う場合はご用心

MQ でなんの気なしにバイナリファイルを扱うと,バイナリファイル自体を lost します。これはこわい。というか実際にはまりました。 現象 まずバイナリファイルを追加。 $ hg init $ perl -e 'print "\x00"' > bin $ ls bin $ hg addremove adding bin $ hg …

単一の changeset を分割する(ファイル単位の場合)

いま working copy がこんな状態だとする。 $ hg status M aaa M bbb M cccとりあえず aaa だけ commit しようと思って…… $ hg ci -m 'modified aaa'あああパス指定するの忘れた。 $ hg statusbbb, ccc も changeset に取り込まれてしまった!やりなおしたい…

Mercurial MQ について

巷では git の大ブームだけど,ひさしぶりに Mercurial について書きます。 Mercurial について言及されたブログとか読んでいるとき,たまに MQ という言葉を目にして気になっていた。ながらく気にはとめつつ全然調べていなかったんだけど,ちょっと利用しよ…

rsync で pdumpfs みたいなことをする

いままで履歴つきのバックアップは pdumpfs*1 でとっていたのですが,rsync のオプション(--link-dest)を使うと同等のことをできるらしいと知りました。 バックアップにrsync --link-destを使うと良い場合もあるよ | rutoの日記 | スラド rsyncで差分バッ…

APR を利用したプログラムの autotools 化

APR を利用したプログラムを書いていて,それを配布したい。 MODULE.JP - Apache Portable Runtimeをあなたのプロジェクトに取り込む という素晴らしいテキストがあるんだけど,これはソースディストリビューションに APR library を同梱する前提でかかれて…

最低だよギャラリー

LDR を使っててフィードの最後に到達したときにたまにでてくる というメッセージを「最低だよ」に空目したので,いくつか集めてみました。 もう呆れ果てて立ち上がる気力すらなくしちゃったんだね。 ほんとにごめん。 これからは心を入れかえるよ。 わざわざ…

そのごの UUID::Object

だらだらと書く。 仕様をフルに満たしている UUID の CPAN モジュールがほとんどない Pure Perl で書かれたまともな UUID モジュールが CPAN にない そのくせ UUID の既存の実装が CPAN にいっぱいあって混乱ぎみ (ここまでは UUID と Perl について - dail…

Exporter を使ったモジュールの継承

おまえは何を言っているんだみたいな話だったらすみません。 たとえば,foo() という関数を export している ModA というモジュールがあるとします。 package ModA; use strict; use warnings; use base qw( Exporter ); our @EXPORT = qw( foo ); sub foo {…