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 {…

コールトレースを追うデバッグ用モジュール

Perl スクリプトをトレースするには Perl デバッガを使ってもいいですが,全体的な実行フローを追いたい場合 Devel::Trace が使えます。たとえば #!/usr/bin/perl use strict; use warnings; my $i = 0; sub foo { bar(); baz(); } sub bar { baz(); } sub b…

APR-util の DBD API を使ってみる

APR(の一部の APR-util)には,各種データベースを統一インタフェースで使うことのできる DBD API があります。のでちょっと使ってみました。ちなみに普通に C でアプリケーションを書いている人にはあまりおすすめできないと思います。統一インタフェース…

UUID::Object と UUID::Generator::PurePerl を書いた

UUID と Perl について - daily dayflower でうだうだ書いてたのですが,Pure Perl 実装の UUID generator が欲しくなったので書いてみました(各種 UUID モジュールのインタフェースを共通化するモジュールはまだ書いていません)。CodeRepos に置いてあり…

UUID と Perl について

UUID がどういうものであるか,とか UUID の表現形については省略します。 UUID - Wikipedia が参考になるかと。UUID の仕様として RFC 4122 を参照しました*1。なのでより細かいことについては原文を参照してください。策定されるまでにいろいろ経緯がある…

はてブの X-Runtime レスポンスヘッダ

はてブのクライアントサイドでの処理時間を示すことのできる #benchmark ハッシュなんて話もありましたが(→2009-01-21 - 聴く耳を持たない(片方しか)),サーバサイドでどれくらい処理時間がかかったか(を反映していると思われる)示すレスポンスヘッダを…

use utf8 環境下で => オペレータの左辺が UTF8 flag on になってしまう

use strict; use warnings; sub Dump { @_ = map { sprintf "'%s'(%s)", $_, utf8::is_utf8($_) ? 'utf8' : 'bytes' } @_; print {*STDERR} join(q{, }, @_), "\n"; } no utf8; Dump( foo => 'bar' ); #=> 'foo'(bytes), 'bar'(bytes) no utf8; だもんで,両…

prove (Test::Harness) コマンドの --state オプション

テストが膨大になっていくと,あるテストでは時間がかかったりして「そのテストはもう成功することがわかっとるっちゅうねん;失敗するテストだけ再テストしたいっちゅうねん」ってことになったりします。そんなときに使えるのが prove コマンドの --state …

JavaScript でかんたん XUL アプリに挑戦

こんにちは! みなさんガジェットつくってますか! なんだか最近、色々な種類があるみたいですね!(以下略!)そしたら意外と簡単だった…! これならぼくにも作れそう!!ってことで、ちょっとメモしておきますね! どれにしようかな…! おもしろいこと Ubu…

LVM2 on DRBD が一筋縄でいかなかった

DRBD のディスク上に LVM を構築しようとしたらちとはまりました。うーん困った,とおもってググったら,解決してる先達がいらっしゃいました→DRBD-8.0.X + LVM2 - end_of_scriptの日記。元記事では生ディスク /dev/sda3 の上に DRBD を構築して(さらにその…

ESXi 環境私的考察

VMware ESXi で各種ディスクのベンチマークをとってみた - daily dayflower の動機とか思索とかメモメモ。 iSCSI や NFS によってディスクを外在化させれば,DRBD や LVM を活用して堅牢な VM image store とすることができる local disk だとサポートされて…

VMware ESXi で各種ディスクのベンチマークをとってみた

ESXi でネットワーク Disk 上に VM を構築するにはいくつかの手段があるのですが,それらの速度を測定してみました。 おことわり おもに下記の命題を検証するために測定を行いました。 NFS data store でも iSCSI data store / raw disk と比べて遜色ない(…

RHEL 5(.2) の perl-5.8.8-15.el5_2.1 で例のバグが治っていた

例のバグとは,あの overload rebless のバグを解消するために bless にパフォーマンスペナルティが発生していたやつです。 overload の rebless バグについて - daily dayflower CentOS 5.1 の perl をリビルドする - daily dayflower ずいぶん前*1ですが,…

複数ファイルを使った中規模 XS の開発

複数ファイルをビルド対象とした XS の開発について,あまり手間をかけないシンプルで効果的な方法を書いていきます。自分の経験をもとに書きますのでベストプラクティスではありませんが。 余談(SV*() マクロの sideeffect にやられた話) state_stack と…

CPAN 最速検索の劣化コピー作ってみた

mala さんの CPAN 最速検索を便利に使わせてもらってるんですが,操作上ちょっと不満なところがいくつかありまして。 カーソルキーのオートリピートがきかない ホイールがきかない 候補の同時表示数が固定 Firefox だからかもしれないですけど。んで改造しよ…

Perl XS メモ - typemap と MAGIC をからめて

id:tokuhirom さんが http://d.hatena.ne.jp/tokuhirom/20081209/1228829454 で下地をつくってくださったので(perl-users.jp むけまとめも期待してます),ちょっとアドバンスドな話題を。 例題 http://www.sra.co.jp/people/m-kasahr/eb/ http://www.sra.c…