タグ

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

  • [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
  • 4096 バイトセクタの HDD と Linux - daily dayflower

    先日 1TB クラスのハードディスクを買いに秋葉原へいってきました。ずいぶん安くなったものだなぁと感激しながら物色してたんですが、なぜかキャッシュ 64MB のほうが 32MB のものより安かったのでこりゃお得だろうと思いそちらを考えなしに買いました。 帰ってきて調べてみたら、買ったやつは 4096 バイトセクタのものでした。なんか Windows XP だとそのまま使うとパフォーマンスがでないとか聞いていた気はしていたんですが、まさかそれを買ってしまうとは。どうりでバッファ容量が大きいほう(つまり 4K セクタ)がどの店でも安いわけだ。 たしか Linux の場合だと大丈夫だよねと思いながら検索してみると、Linux でもパフォーマンスが落ちるという話が。うわーどうしようと思い、4096 バイトセクタ HDD と Linux についていろいろ調べてみました。 ただ、机上の調査であり実地検

    4096 バイトセクタの HDD と Linux - daily dayflower
  • もう 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
  • 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
  • mod_speedycgi2 on Apache 2.2 - daily dayflower

    SpeedyCGI を使ってみようと思って cpan install CGI::SpeedyCGI したら,怒られました。のであれこれ調べてなんとか動くパッチを作ってみました。 原因は Apache 2.2 (APR-1.2) になって, APR_BRIGADE_FOREACH() というマクロが deprecated になった(参考) apr_filename_of_pathname という関数が apr_filepath_name_get になった(CHANGES-APR-1.2) という非互換性があるためでした。 でも CGI::SpeedyCGI は Perl 5.8.6 以降ではメモリリークする(RT#13521)罠。がーん。speedycgi with Perl 5.8.6 のメモリリークをなおした - daily dayflower 参照 以下,パッチです。 --- mod_

    mod_speedycgi2 on Apache 2.2 - daily dayflower
  • speedycgi with Perl 5.8.6 のメモリリークをなおした - daily dayflower

    いや直して RT に投げたのはだいぶ昔なんですが,以前の日記で でも CGI::SpeedyCGI は Perl 5.8.6 以降ではメモリリークする(RT#13521)罠。がーん。 mod_speedycgi2 on Apache 2.2 - daily dayflower と書いてほおりっぱなしだったんでネガティブイメージが定着するとまずいかなと思い,一応アピール。上記のRT#13521にパッチを投げてあります。その他いろいろ RT に投げてるんで,手前みそながら CGI::SpeedyCGI を使いたい人はそちらにあげてるパッチをあてるのが吉。というか必須です。

    speedycgi with Perl 5.8.6 のメモリリークをなおした - daily dayflower
  • こんなテンプレートエンジンほしい - daily dayflower

    なぜ、いちいちエスケープを手動で指定しなければいけないのか 文脈によって、自動的にエスケープ手法は決定できるはず と思ってます。 テンプレートエンジン作りたい - kazuhoのメモ置き場 ですよねー。 で,そのへんを自然に取り込んでいるのが,おもに Python 方面で人気のある XML ベースのテンプレートシステムだと思います。 実際,Genshi のドキュメントにも The main feature is a template language that is smart about markup: unlike conventional template languages that only deal with bytes and (if you're lucky) characters, Genshi knows the difference between tags, att

    こんなテンプレートエンジンほしい - 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
    pmakino
    pmakino 2008/06/22
    良いまとめ
  • ファイルハンドルをめぐる冒険(ただしマニア向け) - 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
    pmakino
    pmakino 2008/06/07
  • JavaScriptのイベントハンドラ説明

    気でやるならonclick属性は避けてライブラリを活用すべき - 帰ってきたHolyGrailとHoryGrailの区別がつかない日記 を読んで,思うところあって書いてみました(決してカウンターアーティクルではない)。 むかしむかし JavaScript を触っていた むかしむかしに書かれた JavaScriptで勉強している/した 人向けに。大元記事(そろそろ気で学びませんか? | Think IT(シンクイット))の想定読者に近いかなと思います。よって以下は JavaScript の初学者にはまったくおすすめできない(余計な知識がついてしまう)です。 Step 1: はじめのいっぽ ボタンを押したらメッセージボックスが出現する HTML を書いてみます。 <html><body> <script type="text/javascript"> function ShowMes

    JavaScriptのイベントハンドラ説明
  • Ubuntu 8.04 を LVM 有効にしてインストールする - daily dayflower

    Ubuntu の Desktop 版インストーラではデフォルトで LVM を使ってインストールすることができません。 Alternate 版を使えば LVM を使ってインストールできるんですが,テキストモードでインストールするのは嫌だとか,日語ローカライズド版でインストールしたい,ということであれば下記の手順でやることになります。 Live CD として立ち上げる Live CD 環境に lvm2 をインストールする Live CD 環境で LVM を切る Live CD 環境で LVM 上にファイルシステムを作成する Live CD 環境からインストーラを立ち上げてインストールする インストールされた環境に chroot して lvm2 をインストールする 結果的に http://www.debuntu.org/how-to-install-ubuntu-over-lvm-filesy

    Ubuntu 8.04 を LVM 有効にしてインストールする - 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
  • winbind で Linux の認証を ActiveDirectory にまかせる - daily dayflower

    一行まとめ 複数ドメインの信頼関係を構築していない場合,winbind の idmap backend として rid を使うと便利 前フリ サーバを立てるたびにユーザアカウントをメンテナンスするのが面倒だ,ということでようやく腰を据えて winbind について勉強しました。ネット上に有用な文書が多くて助かりました。 CentOS 5.0 samba-3.0.23c-2.el5.2.0.2 という環境で,以下のような名称を例として使います。 ドメイン名: HOGE ActiveDirectory のレルム: hoge.example.com ActiveDirectory の DC: dc.hoge.example.com UNIX サーバの NETBIOS 名: PENGUIN ActiveDirectory のユーザ: dayflower 基礎知識 ユーザが *nix を利用しようと

    winbind で Linux の認証を ActiveDirectory にまかせる - daily dayflower
  • Perl と YAML - daily dayflower

    そもそも,YAML::Syck 自体の将来性が微妙なんですが, http://digit.que.ne.jp/work/index.cgi?Perl%e3%83%a1%e3%83%a2%2fYAML%2fPyYAML%e3%81%aePerl%e7%a7%bb%e6%a4%8d%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%ef%bc%882006%2e08%ef%bc%89 http://digit.que.ne.jp/visit/index.cgi?2006%c7%af9%b7%ee#pYAML%282%29 の内容を軽くまとめると, YAML.pm (by Ingy) は古い。バグがありサブセットである。 YAML::Syck (by Audrey) は速いが,バグがありかなりサブセットである。 Python には PyY

    Perl と YAML - daily dayflower
    pmakino
    pmakino 2007/02/05
  • SpeedyCGI のプロセスの癖 - daily dayflower

    以前作ったモジュール(SpeedyCGI と module reload - daily dayflower)でたまにモジュールファイルの変更を検知できないことがあったんですが,理由がわかりました。 SpeedyCGI の挙動をおさらいすると, frontend が backend を探す。いればよし backend がいない場合 backend(0) を生成 backend(0) がスクリプトをコンパイル backend(0) が fork して backend(1) を生成 frontend が backend(1) と通信 backend(1) が実行フェーズに入る だいたいこんな感じ。 以前のモジュールだと backend(1) で各モジュールファイルの mtime を保持していて,変更があれば「リロードしてね」というメッセージを出力していました。 問題は backend(1) の

    SpeedyCGI のプロセスの癖 - daily dayflower
  • SQL::Abstract かしこす - daily dayflower

    以前「DBICで当に困ったら SCALAR REFERNCE を使え - daily dayflower」にて, DBIC で WHERE field1 IS NOT NULL な検索をしようと思って, …… $resultset->search({ field1 => \'IS NOT NULL' }); とか書いていたんですが, $resultset->search({ field1 => { '!=', undef } });でよかったのでした。 $resultset->search({ field1 => undef });が WHERE field1 IS NULLというのは知っていたんですが,'!=' をつけるときちんと「IS NOT NULL」に変換してくれるとは(SQL::Abstract の 714 行目あたりのロジックとしてちゃんとありました)。これでスカラーリファレ

    SQL::Abstract かしこす - 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
  • daily dayflower - 半角←→全角変換,Unicode::Japanese に未公開機能が…

    2008-10-21 追記 いまだに(ありがたいことですが)検索で飛んできたりブクマされたりというのがちょいちょいあるので,最新動向を書いておきます。 id:tokuhirom さんが Lingua::JA::Regular::Unicode という Pure Perl Module をリリースなさいました(→ http://d.hatena.ne.jp/tokuhirom/20081018/1224300947)。 あなたが作っているアプリで文字列まわりを Unicode::Japanese インスタンスですべて持ちたいわけでなければ(そして,たいていのばあい,持つ必要はないのですが),この Lingua::JA::Regular::Unicode を使うのがベターです。依存性もなく,とても軽量ですので。 2008-10-21 追記おわり ウェブアプリを作っていると,ユーザが入力した半角

    daily dayflower - 半角←→全角変換,Unicode::Japanese に未公開機能が…
  • 1