タグ

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

  • 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
    antipop
    antipop 2009/05/12
  • コールトレースを追うデバッグ用モジュール - daily dayflower

    Perl スクリプトをトレースするには Perl デバッガを使ってもいいですが,全体的な実行フローを追いたい場合 Devel::Trace が使えます。 たとえば #!/usr/bin/perl use strict; use warnings; my $i = 0; sub foo { bar(); baz(); } sub bar { baz(); } sub baz { $i ++; } foo(); みたいなスクリプトがあるときに,Devel::Trace でトレースするには下記のようにスクリプトを実行します。 $ perl -d:Trace test.pl実行結果は, >> test.pl:6: my $i = 0; >> test.pl:21: foo(); >> test.pl:9: bar(); >> test.pl:14: baz(); >> test.pl:18: $i

    コールトレースを追うデバッグ用モジュール - daily dayflower
  • 複数ファイルを使った中規模 XS の開発 - daily dayflower

    複数ファイルをビルド対象とした XS の開発について,あまり手間をかけないシンプルで効果的な方法を書いていきます。自分の経験をもとに書きますのでベストプラクティスではありませんが。 余談(SV*() マクロの sideeffect にやられた話) state_stack という配列に state を整数値でスタックとして格納していて,スタックから過去の state を取り出そうとしたんです。 んで(わりと素直に) state = SvIV(av_pop(state_stack)); と書いたら,2つずつスタックから pop されてしまいました*1。 XS hacker なら当たり前な話ですけど,SV*() というのは一見関数然としてますがマクロなんです。 #define SvIV(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) こんな形で,いずれのケースに

    複数ファイルを使った中規模 XS の開発 - daily dayflower
  • Perl XS メモ - typemap と MAGIC をからめて - daily dayflower

    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.co.jp/people/m-kasahr/eb/ の Perl binding を開発するとしましょう。 http://www.sra.co.jp/people/m-kasahr/eb/ の使い方は,たとえば次のような感じです。 EB_Book *book_pointer; book_pointer = (EB_Book *) malloc(sizeof(EB_Book)); eb_initialize_book(bo

    Perl XS メモ - typemap と MAGIC をからめて - daily dayflower
  • シェル機能をインプリメントしたいなら 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
    antipop
    antipop 2008/07/08
  • chumby と日本語 - daily dayflower

    未整理なメモメモ。Flash の知識は貧弱なので間違ってるかも。 フォントについて Flash には下記の2種類のフォントがある。 デバイスフォント システム(OS 等)の持っているフォントを使う クロスプラットフォームで使えるように,いくつか predefined な名前がある(_sans, _serif, _typewriter, _ゴシック, _明朝, _等幅) 指定されたフォントがない場合,適当なシステムのフォントに fallback する chumby にどのようなシステムフォントが存在するのかは未調査 chumby に今後マルチリンガルなフォントを入れる予定,らしい 埋め込みフォント SWF ファイルに埋め込まれたフォント 埋め込むグリフ(文字)は限定できる たとえば「Hello World」という(スタティック)テキストを表示したいのなら「HWdelor」という7文字分のフォ

    chumby と日本語 - 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
  • Perl (5.8) での文字列の内部表象について返信 - daily dayflower

    UTF8 フラグあれこれ - daily dayflower について nobuoka さんよりツッコミをいただきました。 nobuoka 2008/03/11 21:15 こんにちは。”[Perl] Perl の Unicode 対応について” のエントリでトラックバックさせて頂きました nobuoka です。 内部表象 (内部形式: internal format) について気になる点があったのでいろいろ調べていたのですが、「内部形式は UTF-8 ではなく Unicode コードポイントをバイナリ化したものである」という結論に達しました。たとえば「é」という文字は内部形式では ¥xE9 というバイナリデータとして保持されているという結論に達しました。それは utf8 フラグが付いていても付いていなくても同様です。 つまり、このエントリで述べられている (A) 文字列(内部表象: UT

    Perl (5.8) での文字列の内部表象について返信 - daily dayflower
  • 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
  • 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
  • PoCo::HTTP で Comet チャットサーバを作る - daily dayflower

    せっかくのイベントドリブンフレームワークな POE ですから Comet でチャットをやってみようかと。ありきたりですが。 POE::Component::* でウェブサーバを立ち上げられるのは現在のところ, POE::Component::Server::HTTPServer POE::Component::Server::SimpleHTTP POE::Component::Server::HTTP の3つがあります。1番目は最近 inactive なのでパス。2番目は「イベントフレームワーク」への馴染みはいいんですが「Simple」じゃなくなってます。3番目はコールバック関数を登録するというお気楽スタイルなんですがちょっと雑な感じ。 今回は楽をするために3番目の PoCo::HTTP を使ってみたいと思います。id:naoya 氏も最近紹介してましたし。 URI の設計指針は, チャ

    PoCo::HTTP で Comet チャットサーバを作る - daily dayflower
  • 1