タグ

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

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

    テストが膨大になっていくと,あるテストでは時間がかかったりして「そのテストはもう成功することがわかっとるっちゅうねん;失敗するテストだけ再テストしたいっちゅうねん」ってことになったりします。そんなときに使えるのが prove コマンドの --state オプションです。 --state オプションに failed という引数をわたすと,「テストの対象は前回 fail したテストスクリプトのみ対象」という意味になります。ステートを保存する save と併用して指定してみます。 % prove --state failed,save No saved state, selection will be empty Files=0, Tests=0, 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU) Result: NOTESTS「No save

    prove (Test::Harness) コマンドの --state オプション - daily dayflower
    shag
    shag 2009/01/20
  • vim でコメントのオートインデントをしたくない - daily dayflower

    インデントは自分でするのに慣れてるので,.vimrc に set noautoindent と書いているんですが,なぜかコメントを書くと次行もコメント行になってしまうのです(Ubuntu 8.10)。 // 適当にコメントを書いて,エンターキーを押すと // ←勝手にコメント行になってしまう とくに他所からコードをペーストするとほとんどコメント行になって困ったものでした((おかげさまで :set paste なる呪文を知ることができましたが。))。 んで,noautoindent なのにオートインデントになるのでなんでだろうと思っていろいろ調べたら,コメントの整形機能 のせいでした*1。 つまり,(Ubuntu の vim-full に含まれている)filetype plugin がコメント整形のためのオプションを設定していたみたいです。対象となるダミーファイルを拡張子つきで指定して vi

    vim でコメントのオートインデントをしたくない - daily dayflower
    shag
    shag 2008/12/09
    :set paste なる呪文
  • シェル機能をインプリメントしたいなら Term::ShellUI を使うと便利 - daily dayflower

    Web::Scraperのshellをhistoryから補完できるようにしてみました。 shell系は使わないと忘れてしまうので、historyがあったほうがいいかなと思って作ってみました。 ~/.scraperhistoryを作っておくと、historyが使えるようになります。 Web::Scraperのshellでhistory補完 - dann's blog - # おお,たしかに history があると便利。Term::ReadLine ってちょろっと設定するだけでヒストリ保存とかしてくれなかったっけ?と思ったら,別のモジュールでした。 以前*1も使いましたが,Term::ShellUI という CPAN モジュールを使うと高度なシェル機能を簡単にインプリメントすることができます。 特色は, 各コマンドへのサブルーチンリファレンスを指定するだけ エイリアスも指定できる desc

    シェル機能をインプリメントしたいなら Term::ShellUI を使うと便利 - daily dayflower
    shag
    shag 2008/07/08
  • Scalar::Util の weaken() - daily dayflower

    Shibuya.pm #9 での id:lestrrat さんの発表 での質疑応答において id:dankogai 氏 weak references の実装はどのようになっていますか? id:lestrrat 氏 あー準備してくるの忘れました。Scalar::Util の Util.xs を見てください :) というやりとりがありました。その時*1は weak reference の参照先の REFCNT を decrement している「だけ」じゃないの? と(あさはかにも)思ったんですが,実装を調べてみました。実際には「それだけ」ではありませんでした,と。 以下 REFCNT とか MAGIC とかでてくるんで,前提条件として Shibuya.pm #9 での :lestrrat さんの発表(Perl 5 internals の世界にようこそ - daisuke maki)必聴です。

    Scalar::Util の weaken() - daily dayflower
  • perluniadvice - daily dayflower

    perluniadvice の前半部分を訳してみました。かなり意訳。 アドバイスと銘うってますが,中級者〜上級者向きです*1。 抄訳 perluniadvice Perl 付属のドキュメント perlunitut はもう読んだ?もしまだなら,そこから読み始めること :) perlunitut - perldoc.perl.org perlunifaq - perldoc.perl.org 以下にわたし(http://juerd.nl/)からのアドバイスの要約を挙げる。perlunitut には記述しなかった内容も含んでいる。 もしあなたが古い Perl を使っているのなら,最新版にアップグレードしよう もしあなたが古い CPAN モジュールを使っているのなら,最新版にアップグレードしよう 「外界」からやってくるデータはすべて decode() しよう 「外界」へ出力するデータはすべて en

    perluniadvice - daily dayflower
  • 図解: Perl と Unicode 文字列 - daily dayflower

    id:tomi-ru さんが [http://e8y.net/mag/015-encode/:title] というとてもプラクティカルな [http://search.cpan.org/perldoc?Encode:title=Encode] 入門をお書きになったので,わたしも違う切り口で書いてみたくなりました。 いちおうの基礎(読み飛ばし可) 文字セット, キャラクタセット, 文字集合, 文字集合 - Wikipedia エンコーディング, 符号化方式, 文字符号化方式 - Wikipedia この2つは異なります。とくに知らなくても下記の文書を読むことはできますが,理解しているとためになります。くわしく知りたい人は自習してください。 文字セットの例 Unicode JIS X 0208 ひらがなとかカタカナとか漢字とか ASCII 文字 エンコーディングの例 UTF-8 ISO-202

    図解: Perl と Unicode 文字列 - 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
    shag
    shag 2008/06/06
  • libsmbclient を使って SMB Storage にアクセス - daily dayflower

    libsmbclient を使ってみる Samba ソースツリーには libsmbclient という SMB File System にアクセスするためのライブラリが付属しています((たいがいの Linux Distribution ではライブラリは別パッケージになっています。ライブラリ体のパッケージ名称はたいてい libsmbclient で,開発用ライブラリのパッケージ名は Ubuntu の場合 libsmbclient-dev,RedHat 系の場合 libsmbclient-devel です))。 使い方に関するドキュメントがほとんど存在しないのですが,libsmbclient - 揮発性のメモ2にある通り doxygen 形式コメントや Samba に付属の example/libsmbclient 以下が参考になります。 一番わかりやすい http://www.google

    libsmbclient を使って SMB Storage にアクセス - daily dayflower
    shag
    shag 2008/05/09
    僕の Hardy も nautilus 経由の samba storage アクセスは病的に重いので mount -t cifs でマウントしちゃってます
  • UTF8 フラグあれこれ - daily dayflower

    UTF8 フラグについてわかってるつもりだったんですが,utf8::is_utf8 considered harmful - Bulknews::Subtech - subtech を読んで混乱したので,自分なりにまとめてみました。間違いがありましたらご指摘よろしく。 まとめ スカラー変数の内部表象の状態を示すものとして UTF8 フラグというものがある スカラー変数は(リファレンス等は別として)下記のものを格納できる (A) 文字列(内部表象: UTF-8) (B) 文字列(内部表象: ISO-8859-1) (C) バイナリ列 純粋なバイナリストリーム(画像ファイル等)かもしれないし, UTF-8 octet stream かもしれないし, CP932 octet stream かもしれないし,etc, etc ... Perl は(後方互換性確保などの理由から)ISO-8859-1

    UTF8 フラグあれこれ - daily dayflower
    shag
    shag 2008/02/20
  • テキストの文字種分割の補足 - daily dayflower

    Perl で日語テキストを簡単に字種かたまりに分割できないかな、 と思い、perlunicode を読みながらサンプルプログラムを書いてみました。 対象テキストは UTF-8Perl で日語テキストを字種分割 たつをさんは,m// でマッチングさせて分割させてますけど,これだと正規表現で網羅されてないトークンが失われてしまうと思います。 #!/usr/bin/perl use strict; use warnings; use utf8; binmode \*STDOUT, ':utf8'; my $src = <<"END_DATA"; zーあyxルーラでう、う9 10AB.DE「"GH'」★で漢字をカ・ナったー!?MJD39\x{2466}。 END_DATA print $src, "\n"; my @cs = ( $src =~ m/ ( \p{M}+ | \p{N}+

    テキストの文字種分割の補足 - daily dayflower
    shag
    shag 2008/02/07
  • beryl で Super キーが効かない件 on FC6 - daily dayflower

    compiz だと Super キー(Windows キー)が効くのに,beryl だと Super が効かなくて困ってました。 システム→設定→キーボード,でキーボードの設定を開き,「Alt/Win key behavior」を,「デフォルト」から「Super is mapped on the Win-keys (default)」に変えたら効くようになりました。 Ubuntu の掲示板に助けられました。やっぱこの辺は Ubuntu が強いですね。 でもやっぱり beryl は重いっす。compiz と雲泥の差があるので,人様に見せびらかすときしか使いません。beryl が快適に使える環境ってどんなのでしょう。設定でマシになったりするのかな。 2007/05/25 追記 2007年05月25日 shag shag beryl 僕は lets note cf-r3 でも beryl は快適

    beryl で Super キーが効かない件 on FC6 - daily dayflower
    shag
    shag 2007/05/25
    僕は lets note cf-r3 でも beryl は快適に動く。Ubuntu Feisty だけど
  • POE おぼえがき - daily dayflower

    TIMTOWTDI なことがいっぱいで POE のことがよくわからなかったのですが,Cookbook とリファレンスを読んでなんとなくわかってきました。 POE::Kernel が POE システムのコアで唯一神 POE::Kernel->run()*1 を実行するとイベントループが回り出す イベントループでやることがなくなると POE::Kernel->run() から戻る(戻ることを期待してはいけない) POE::Session が POE システムにおける,タスク/ステートマシン/プロセス/スレッド的なものの単位 複数生成してよい セッションの最初に _start イベントが発生する セッションの最後に _end イベントが発生する イベントハンドラとして,サブルーチンリファレンス(inline_states),パッケージ関数(package_states),オブジェクトメソッド(o

    POE おぼえがき - daily dayflower
    shag
    shag 2006/11/15
  • POE をとりあえず触ってみた - daily dayflower

    以前Net::Server でサーバを作ってみたりしましたが,ええーいと思ってついに POE に手を出してみました。 日語の紹介だと, Blog Developer's Cookbook : Weblogs.com Ping Gateway to はてなアンテナ (POE版) POE - Perl Object Environment に触れる : NDO::Weblog Shibuya.pm でデモした POE による pingbot のソース : NDO::Weblog って 2003 年かよ,といった感じであまり現在にいたるフォロワーも見あたりませんでした。海外では周辺ツールがいまでも CPAN にあがったりしています。 日でも Comet のおかげでまた注目が集まるといいですね。 まだ Cookbook の JobServer を UNIX ドメインで動くようにしたくらいですが

    POE をとりあえず触ってみた - daily dayflower
    shag
    shag 2006/10/04
  • qw() - daily dayflower

    自分のコード読み返してみたら qw/.../ と qw(...) が統一されてNEEEEE! ベスプラだと qw() だった気がするので最近書いているのは qw() にしてるんですが,DBIC あたりを読んでいたときは影響されて qw// にしてました。もっかいベスプラ読み返してみよう。 2006/09/22 追記 おうちかえってベスプラ斜め読みしてみましたが,明示的に qw() に関する記述はありませんでした(見逃しただけかも)。しいていうなら, qw が使われているところは全部 qw() だった感じ qw( x y z ) みたく括弧の前後に空白をいれてた 文字列のクォーテーションは '' or "" or q{} or q[] 正規表現は m// か m{} スタイルのどちらかを使え single line なら m// でよい multiple lines なら m{} を使え

    qw() - daily dayflower
    shag
    shag 2006/09/21
  • Net::Server で UNIX ドメインのサーバを書いてみる - daily dayflower

    Perl で UNIX ドメインのサーバを書くことになりました。でもSocket(or IO::Socket)をそのまま使うのは面倒くさい*1。ということで CPAN をあさってたら Net::Server というものがありました。POE というのもあって最終目標からすると勉強する価値ありそうだったんですが,さすがに牛刀ぽかったので Net::Server で書いてみることにしました。 接続すると単純に /bin/date コマンドの内容を返す(そして close する)サーバを書いてみます。DateServer.pm という名前で下記のとおり。 package DateServer; use strict; use base qw( Net::Server::Fork ); use IPC::Run; sub new { my ($class) = @_; return $class->

    Net::Server で UNIX ドメインのサーバを書いてみる - daily dayflower
    shag
    shag 2006/09/08
  • DBICで本当に困ったら SCALAR REFERNCE を使え - daily dayflower

    追記 2006/12/06 下記で IS NOT NULL を実現するのにスカラーリファレンスを使用していますが,IS NULL / IS NOT NULL を出すためには必ずしもスカラーリファレンスを利用する必要はありません。ということで訂正を入れようと思ったんですがちょっと長いので「フォローアップ記事」を書きました。 題 typester さんに以前教えて頂いたんですが,似たようなことに今日遭遇したのでメモ。 WHERE field1 IS NOT NULL な検索をしようと思って, $resultset->search({ field1 => 'IS NOT NULL' });と書くと,内部的には SELECT ... WHERE field1 = ?と展開されて,プレースホルダに「IS NOT NULL」が渡されるので,バツ。 $resultset->search({ field

    DBICで本当に困ったら SCALAR REFERNCE を使え - daily dayflower
    shag
    shag 2006/07/18
  • POD をブラウザで閲覧する(Pod::HtmlEasy で) - daily dayflower

    pod を端末から perldoc コマンドで読んでいると,関連するモジュールへハイパーリンクで飛べたらなぁという気持ちによくなります。そんなときは開発サーバでウェブサーバが立ち上がっているのなら pod2htmlHTML を生成し,ブラウザで閲覧するのがおすすめです。 pod2html コマンドで使用されている Pod::Html を使うと CGI が簡単に書けます…といいたいところですが,このモジュールでは STDOUT に直接出力するわ,なんかよくわからないファイルを2つ勝手に生成するわでいまひとつ使い勝手がよろしくないです。 これまでは Pod::Html をコピーして内容を大幅に書き換えて使っていたんですが,ふと CPAN を探索してみると,使えそうなモジュール Pod::HtmlEasy が目にとまりました。Pod::Html と違って,関数の戻り値に HTML の内容を

    POD をブラウザで閲覧する(Pod::HtmlEasy で) - daily dayflower
    shag
    shag 2006/05/30
  • ハッシュを deep merge してくれる Hash::Merge - daily dayflower

    2 つのハッシュをマージしたいとき,単純には下記のような方法で動きます。 my %a = ( key1 => 'value_a1', key2 => 'value_a2', ); my %b = ( key1 => 'value_b1', key3 => 'value_b3', ); my %c = (%a, %b); # %c is: # key1 => 'value_b1' # override # key2 => 'value_a2' # key3 => 'value_b3' # mergeというのも,そもそも, my %a = ( key1 => 'value1', key1 => 'value2', key1 => 'value3', ); # %a is ( key1 => 'value3' )代入もとの配列に同じキーがあっても上書きしてくれるからです。 でも, my %a =

    ハッシュを deep merge してくれる Hash::Merge - daily dayflower
    shag
    shag 2006/05/26
  • 1