タグ

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

  • 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
    markup
    markup 2008/12/10
  • [http://search.cpan.org/perldoc?Web::Scraper:title=Web::Scraper] をつかってみた - daily dayflower

    ドキュメントねー,と思ったら Redirecting… みたいな素敵なチュートリアルがあったのでいまさらながら使えるようになりました。サンプル群も参考になりました。 はてブのホッテントリから,タイトル,URL,キーワード,タグを抜き出すのを書いてみました。わりと素直に書くとこんな感じ? use strict; use warnings; use Web::Scraper; use Encode (); #binmode \*STDOUT, ':utf8'; my $utf8 = Encode::find_encoding('utf8'); my $target = do { if (@ARGV && ! -f $ARGV[0]) { use URI; URI->new($ARGV[0]); } else { local $_ = do { local $/; <> }; $utf8->de

    [http://search.cpan.org/perldoc?Web::Scraper:title=Web::Scraper] をつかってみた - daily dayflower
    markup
    markup 2008/06/29
  • ファイルハンドルをめぐる冒険(ただしマニア向け) - 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
    markup
    markup 2008/06/07
  • Perl プログラマをしていて知らないと恥ずかしいモジュール 1000 - daily dayflower

    ⇒MFPM ごめんなさいネタです。誰も書かないんで*1書いてみました。 なにげに元ネタ*2(YappoLogs: ウェブエンジニアをしていて知らないと恥ずかしい日人プログラマ300)の id:yappo さん作というのを今日知った。 個人的には使ってませんすいません。「登録数が多いモジュール」のトップが Data::Dumper とか趣き深い。 追記 ネタだけ書いてうしろめたいのでやや自分でマジレス。 知らないと恥ずかしいものはないかも。知ってると便利というのはありますが。すでに CPAN にあるのに明確な意図なしに車輪の再発明をするほうが恥ずかしいかなぁ。 で,しいて挙げると cpan strict Carp base Test::Simple, Test::More Scalar::Util libwww-perl, URI Encode 次点として warnings overloa

    Perl プログラマをしていて知らないと恥ずかしいモジュール 1000 - daily dayflower
    markup
    markup 2008/04/22
  • Perl の文字列の内側の記事の補足 - daily dayflower

    前回の記事が期せずしてホッテントリ入りしたので,ちょっとマズいと思い。 前回の記事が難しいと思ったとしても,それは恥ずべきことではありません。 あくまで Perl の内部構造の話ですから*1。 ただ,Perl で文字列を扱う/文字コードを扱うのは難しい,と思われるのは位ではないです。 というのは,当は,難しく考えなくでも動くように作られてますから。 拙い表現なもので上から目線に感じられたらごめんなさい。 もうちょっと詳しく書きます。 Perl の文字列の扱いは,なるべく後方互換性を確保しながら,進化してきました。 そのため,いろいろな思想,組み方でも動くようにできています。たとえば 文字コード,何それ,気にしない すべてバイナリ列だとみなす(上とほぼ同じ意味ですが) 内部コーディングを EUC-JP octet stream にする 内部コーディングを UTF-8 octet stre

    Perl の文字列の内側の記事の補足 - daily dayflower
    markup
    markup 2008/02/23
  • 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
  • svk の shell が欲しい - daily dayflower

    と思って探したら,ありました。 svk使ってると「svk st」→「svk di」→「svk ci ファイル名 -m ほげほげ」とかよくやるんですが、「svk」の部分がDRYじゃないと思ったので超簡易SVKシェルを作ってみましたよ。 いちいち「svk なんちゃら」って打つのが面倒な人のためのSVKシェル - Greenbear Diary Ruby 使って readline と system を利用してます。のでびっくりするほどシンプル。 2008/01/25 追記: yhara さんがさらに発展させた Reposh というシェルをリリースなさってます。 んで,svk はせっかく Perl で書かれていますし,モジュールもあるので,Perl で書いてみました。まるでシンプルじゃなくなってしまった罠。 Term::ShellUI は神! でも,このスクリプトのままだとファイル名補完とか使えな

    svk の shell が欲しい - daily dayflower
    markup
    markup 2008/01/25
  • もう CPANPLUS は使わなくてもいいのかも - daily dayflower

    今まで CPANPLUS を使っていた理由は root 以外のユーザが使った場合,インストール時に sudo してくれる インストール済みのモジュールで cpan にさらにあたらしいものがあるかどうか調べることができる モジュールのアンインストールできる モジュールの古いバージョンを検索してインストールしたりできる だったんですが,最近の CPAN.pm って 1, 2 あたりはできるようになってるんですね(がんばれば 3 もできます⇒cpan で古いバージョンのモジュールをインストールする方法 - daily dayflower)。あと force だけじゃなくて fforce や notest とかコマンド指定できるようになってます。 なので, root で最新の CPAN(Bundle::CPAN じゃなくて)をインストール 一般ユーザでインストール時に sudo を使うように設定

    もう CPANPLUS は使わなくてもいいのかも - daily dayflower
    markup
    markup 2007/08/18
  • 1