タグ

ブックマーク / dayflower.hatenablog.com (56)

  • CentOS で aufs (another unionfs) を使う - daily dayflower

    フラッシュメモリデバイスなディスクに Linux をインストールしたい ⇒ 書き換え限度回数が心配だよ ⇒ CDROM bootable な OS にすればいいよ ⇒ システムの変更やアップデートのときが面倒だよ ⇒ read only filesystem の上にかぶせることができる UnionFS を使えばいいよ ⇒ UnionFS より aufs のほうがおすすめだよ ということで,CentOS 5.2 に aufs をいれてみました。ちなみに「やってみた」レベルのお話です。 aufs とは aufs とは,スタッカブルな「単一化」ファイルシステムです。まぁーつまり,単一ファイルツリーに複数の「ブランチ」を透過的に重ね合わせることができます。 KNOPPIX 5.1 以降で使われています。 ビルドする 残念ながら RPM パッケージは用意されてないので,CVS で最新版をダウンロード

    CentOS で aufs (another unionfs) を使う - daily dayflower
    kamipo
    kamipo 2011/07/21
  • SQL::Abstract で LIKE の ESCAPE を指定する - daily dayflower

    正規表現でいう ^a_c.* みたいなのをひっかけようと思って, my ($sql, @binds) = SQL::Abstract->new()->select( # table 'foo', # fields [ '*' ], # where { id => { LIKE => 'a_c%' }, }, ); みたくやると,a_code だけでなく abc もマッチしてしまう罠。 PostgreSQL だと,デフォルトでエスケープ文字が \ になってるので, # where { id => { LIKE => 'a\\_c%' }, }, のようにエスケープすればいい(MySQL だとどうなんだろ)。 でも,たとえば SQLite はデフォルトでエスケープ文字が設定されてない。だから LIKE などのあとに ESCAPE を指定するのが筋。なんだけど,SQL::Abstract でふ

    SQL::Abstract で LIKE の ESCAPE を指定する - daily dayflower
    kamipo
    kamipo 2010/12/15
  • collectd のフロントエンドとして Cacti を使う - daily dayflower

    リソースデータ収集は collectd がとてもいい だが collectd にはプレゼンテーション層が欠けている いくつかフロントエンドもでていますが気に入ったものはありませんでした。 Cacti のデータ閲覧 UI は(この手のフリーのもののなかでは)かなり良い でも Cacti のデータソース管理 UI をいじるのは相当面倒 端的に言うと「Cacti の UI で collectd のデータを閲覧できたらなぁ」 collectdのデータをKDEデスクトップ上に表示したい場合は、kcollectdの利用を検討するとよい。誕生して間もないプロジェクトだが、すでに有用性が認められている。また、生成されたRRDtoolファイルはCactiでも利用できる。ただし、非常に長々とした設定をグラフ別に行う必要がある。 Webインタフェースでマシンを監視する4つの方法 (2/5) - ITmedia

    collectd のフロントエンドとして Cacti を使う - daily dayflower
  • USB-RH で温湿度を収集しグラフ化(collectd & rrdtool) - daily dayflower

    USB-RH で遊ぶ - daily dayflower で USB-RH という USB 接続温湿度計を Linux から使えるようにしましたが,このままだとコマンドラインから温湿度を調べることしかできません。 やっぱり見たいのはグラフによる傾向! てことで,普通なら RRDTool と組み合わせてグラフ化するのですが,ちょっと一手間加えて collectd で温湿度データを収集してみました。 collectd とは collectd とは,マシンの様々なステータス(ネットワークインタフェースの転送量など)を収集するデーモンです。 似たようなソフトウェアに Nagios, ZABBIX, Munin, Ganglia, Cacti などいろいろありますが,collectd の特徴は, データの収集のみ(通知も対応)に重きをおいており,データのプレゼンテーション機能ははっきりいってない C

    USB-RH で温湿度を収集しグラフ化(collectd & rrdtool) - daily dayflower
  • UUID::Object と UUID::Generator::PurePerl を書いた - daily dayflower

    UUIDPerl について - daily dayflower でうだうだ書いてたのですが,Pure Perl 実装の UUID generator が欲しくなったので書いてみました(各種 UUID モジュールのインタフェースを共通化するモジュールはまだ書いていません)。 CodeRepos に置いてあります。 UUID::Object http://svn.coderepos.org/share/lang/perl/UUID-Object/trunk/ UUID::Generator::PurePerl http://svn.coderepos.org/share/lang/perl/UUID-Generator-PurePerl/trunk/ この記事で反応?をみて,異論がなければ今月中には CPAN にあげようかなと思っています。 SYNOPSIS としては以下のような感じ。

    UUID::Object と UUID::Generator::PurePerl を書いた - daily dayflower
  • automake の check ターゲットの操り方 - daily dayflower

    あんまし日語のドキュメントがみつからなかったので試行錯誤のあとを書いてみます。まぁ,Support for test suites - automake に書いてあるんですが。 Makefile.am に TESTS という変数を定義しておくと,make check したときに実行して結果を教えてくれます(make とかと同じく 0 なら成功,です)。 たとえばシェルスクリプトでテストコードを書いているのであれば, # Makefile.am TESTS = tests.sh #TESTS = test1.sh test2.sh test3.sh のように書いて,スクリプトを実行可能にしておけば OK です。 Perl でテストコードを書いた場合とかは TESTS_ENVIRONMENT という変数も定義して,どのように実行するのかを指定できます(@INC を指定したり,とかね)。今回は

    automake の check ターゲットの操り方 - daily dayflower
  • Capistrano で rsync - daily dayflower

    Capistrano によるファイル転送手段で標準で用意されてる方法は upload や put でファイルをアップロードする(scp / sftp 経由) Git や Subversion などの SCM からファイルをチェックアウトする であり,rsync はない(と思う)。 なので,Capistrano で rsync しようと思った(あ,でも rails とか用の標準 deploy レシピで使う方法とかじゃないです; 単に task に rsync を書くだけ)。 Capfile は実際 ruby のコードなのでなんとでもやりようはある。 task :rsync_task do source_path = "/source/path/" target_path = "target_host:/target/path/" `rsync -avz #{source_path} #{ta

    Capistrano で rsync - daily dayflower
  • DBIC のスキーマをモデルクラスとして使ってみる - daily dayflower

    ドキュメントに書いてないので今後も使えるかわかんないけど、メモメモΦ 普通 DBIC で新しいレコードを挿入するには、 use strict; use warnings; package My::Schema::Artist; use base qw( DBIx::Class ); __PACKAGE__->load_components(qw( Core )); __PACKAGE__->table('artist'); __PACKAGE__->add_columns( id => { data_type => 'INTEGER', is_nullable => 0, is_auto_increment => 1, }, name => { data_type => 'VARCHAR', is_nullable => 0, }, ); __PACKAGE__->set_primary_

    DBIC のスキーマをモデルクラスとして使ってみる - daily dayflower
  • DBIC で後付けの relationship を定義してたらうまく動かなくなった - daily dayflower

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

    DBIC で後付けの relationship を定義してたらうまく動かなくなった - daily dayflower
  • Firefox の Pencil 拡張機能をダメ出しに使う - daily dayflower

    ダメ出しってなんだ。annotation のことだ。 Firefox に Pencil という拡張機能があるんですが,たいてい(GUI アプリの)デザインプロトタイプに使えるなどと紹介されてます。 たしかに,シェイプとして WindowsLinux などの GUI ウィジェットが多数登録されているので,ドラッグアンドドロップで気軽に画面をつくることができます。んでも実際にそれをやってみるとしんどい。 そもそもなんでこいつを Firefox の拡張機能としてリリースしたんだ。そういう用途なら XUL アプリにしとけばよかったじゃないか。 と思っていろいろいじったり調べたりしてたら Firefox の画面キャプチャを Pencil ドキュメントに簡単に貼れることがわかりました。しかも annotation 用のシェイプもいくつか用意されてます*1。 ということは。 デザイナーの方が作った

    Firefox の Pencil 拡張機能をダメ出しに使う - daily dayflower
  • Proxy DHCP サーバで PXE ブート - daily dayflower

    ずっと PXE ブートはやってみたかったんだけど,すでに(PXE に対応しない)DHCP サーバがあがっている環境なので半ば諦めていた。もう一台 PXE に対応した DHCP サーバを立てるというのも一つの手*1なんだけど,その新規 DHCP サーバが先に応答するという運に依存する部分があるのと,リースする IP アドレス空間をわけなきゃいけないので結局旧 DHCP サーバの設定を変える必要があるということで二の足を踏んでいた。 サブネット切って自分用ローカル環境でやるかなぁと思っていたところ,id:viver さんが Proxy DHCP という素敵なしくみを紹介なさっていた。 というわけで、PXEには3種類ある。 普通のDHCPのやりとりだけど、DHCPOFFERにPXEの拡張オプションが入っている(DHCPサーバーの設定の変更が必要) DHCPサーバーを動かしているホストでProxy

    Proxy DHCP サーバで PXE ブート - daily dayflower
  • APR を利用したプログラムの autotools 化 - daily dayflower

    APR を利用したプログラムを書いていて,それを配布したい。 MODULE.JP - Apache Portable Runtimeをあなたのプロジェクトに取り込む という素晴らしいテキストがあるんだけど,これはソースディストリビューションに APR library を同梱する前提でかかれています。さいわいにして,最近の Linux ディストリビューションでは Apache をインストールすると APR library が共有ライブラリとしてインストールされますし,開発者向け APR library パッケージも用意されています。なので,システムにインストールされている APR library を利用する前提でやってみようと思いました。 と思ったら, APR とか CFL とか - odz buffer というリソースがありました。かなり参考にしつつ,一挙手一投足で書いてみます。 なお,こ

    APR を利用したプログラムの autotools 化 - daily dayflower
  • Unicode::Normalize で遊ぶ - daily dayflower

    Unicode の規格では,文字の合字(リガチャ等)等を統一的に扱えるように,「正規化」という処理が仕様として定まっています。この正規化処理のうち「互換性分解」という処理を行うと副作用として半角カナを全角カナに変換できます(逆に全角カナ→半角カナはできません)。 #!/usr/bin/perl use strict; use utf8; use Encode; use Unicode::Normalize; my $src = 'ポンジュース'; my $dst = Unicode::Normalize::NFKC($src); print Encode::encode('utf8', "${src} => ${dst}\n"); # OUTPUT is: ポンジュース => ポンジュースUnicode の正規化についてはperl5.8のUnicodeサポート および http:/

    Unicode::Normalize で遊ぶ - daily dayflower
  • PXE ブートで CentOS をインストール - daily dayflower

    ついで?なので,CentOS のインストールも PXE ブートでやってしまおうと。 インストーラ用のカーネルと initrd は,インストール DVD の images/pxeboot/ フォルダ以下に収められているので*1,それを TFTP 用フォルダにコピー。 $ cp DISKIMAGE/images/pxeboot/vmlinuz /tftpboot/vmlinuz-cent53-inst $ cp DISKIMAGE/images/pxeboot/initrd.img /tftpboot/initrd-cent53-instあとはそれを使うように PXELINUX 用の設定ファイルを書く。 default menu.c32 timeout 50 ontimeout cent53inst label cent53inst menu label CentOS 5.3 Install

    PXE ブートで CentOS をインストール - daily dayflower
  • Microsoft Word 文書からテキストを抽出するモジュールを書いた - daily dayflower

    CPAN にはなさそげだったので書いてみました。 http://svn.coderepos.org/share/lang/perl/MSWord-ExtractContent/trunk/ 名前空間がどうよって気がするけど Word 文書に該当する名前空間が見当たらず,こんな感じにしてしまいました。まぁ coderepos の段階なので。なんかいい名前があったら教えてください。もし CPAN にあげるときにはそれにします。 図をおこしたほうがわかりやすくなるのですが,あんまりに面倒だったので図は描いてません。 Microsoft Word バイナリフォーマット Word バイナリフォーマット*1の仕様は Microsoft が公開しています。下記からダウンロードすることが可能です。 http://www.microsoft.com/interop/docs/officebinaryform

    Microsoft Word 文書からテキストを抽出するモジュールを書いた - daily dayflower
  • RHEL 5 と KMP (Kernel Module Package) - daily dayflower

    カーネルのバージョンが上がる度にカーネルモジュールもビルドしなきゃいけない,というのはめんどくさい。 しかも。 バイナリパッケージでカーネルモジュールをインストールしているとする。 このカーネルモジュールがシステム動作の上で必須だとすると,新しいカーネル(体)がリリースされても,それに対応するバージョンのカーネルモジュールがリリースされない限り新しいカーネルにアップデートすることができない。 これは不便。そして危険。 なので,RHEL 5 から KMP (Kernel Module Package) という新しいカーネルモジュールのパッケージング方式がでてきた。 たとえば,centosplus のバイナリパッケージ(IIJ さんのミラー)で XFS のカーネルモジュールのパッケージを見ると, kmod-xfs-0.4-1.2.6.18_92.1.1.el5.centos.plus.i68

    RHEL 5 と KMP (Kernel Module Package) - daily dayflower
  • ファイルハンドルをめぐる冒険(ただしマニア向け) - daily dayflower

    以下は Perl 5.8.8 のソースを元に記述しました。Perl 5.10 でもそう変わってはいないと思いますが,結構内部が変更されているので違うかもしれません。大まかには同じだと思います。 イントロダクション Perl でのファイルハンドルは内部的には [http://search.cpan.org/perldoc?IO::Handle:title=IO::Handle] オブジェクトとして保持されています。そのような記述は perl5004delta くらいでしか見つかりませんでした。ラクダにもなかったような。 Internal change: FileHandle class based on IO::* classes File handles are now stored internally as type IO::Handle. The FileHandle module

    ファイルハンドルをめぐる冒険(ただしマニア向け) - daily dayflower
  • base (< 2.14) が $SIG{__DIE__} を破壊するのではまった - daily dayflower

    たとえば, #!/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 line 12.みたいになる(それなりの package Foo があったとして)。 ところが,その package Foo の中身が package Foo; use strict; use warnings; use base qw( URI ); # なんでもよい のようになっていた場合。つまり,(パッケージ指定の)use base を使っているときに,実行すると, foo

    base (< 2.14) が $SIG{__DIE__} を破壊するのではまった - daily dayflower
    kamipo
    kamipo 2009/07/27
  • PerlIO の encoding layer の fallback ではまった - daily dayflower

    PerlIO の encoding layer は,$PerlIO::encoding::fallback という変数に fallback type を指定しておくことができるみたい。ということを PerlIO::encoding - encoding layer - metacpan.org 見て知った。encoding いじるのに PerlIO 使うのはなんとなく敬遠してたんだけど,fallback できるんなら使う価値あるんじゃね,と思って,POD にしたがってコードを書いてみた。 #!/usr/bin/perl use strict; use warnings; use Encode; use PerlIO::encoding; local $PerlIO::encoding::fallback = Encode::FB_XMLCREF() ; my $output = q{};

    PerlIO の encoding layer の fallback ではまった - daily dayflower
    kamipo
    kamipo 2009/07/27
  • vim 用 Template-Toolkit のシンタックスハイライト - daily dayflower

    ひさびさに Template Toolkit を触ってて,普通に html のシンタックスハイライトで書いていたんですが,< とか > とかの演算子がでてくると,ハイライトがおかしくなるのが煩わしい! と思ってたら,TT2 用の文法ファイルを書いてくださった方がいらっしゃるんですね。 ということで,以下の先人の知恵をほぼそのままお借りしました。 TT2 syntax - Syntax Highlight for Template-Toolkit 2.x : vim online Template-Toolkit のテンプレートファイルを vim で色付きにする - Craftworks Tech Blog - Branch およびコメント欄 シンタックスファイルのインストール 以下は「個人ユーザ」用のインストール方法です。システムワイドな場合の方法はホームディレクトリのかわりに $VIMR

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