Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

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

  • もう 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
    poppen
    poppen 2010/01/26
  • 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
  • CPAN 最速検索の劣化コピー作ってみた - daily dayflower

    mala さんの CPAN 最速検索を便利に使わせてもらってるんですが,操作上ちょっと不満なところがいくつかありまして。 カーソルキーのオートリピートがきかない ホイールがきかない 候補の同時表示数が固定 Firefox だからかもしれないですけど。 んで改造しようと思ったんですがわたしにはちと難しそうだったのでいっそ自分なりに書いてみようと思いました。もちろんライブラリを使わずに書く技能はないので jQuery を使いました。 jQuery Mouse Wheel Extension 標準機能だとマウスホイールをトラップするのがたいへんそうだったのでプラグインも使いました。 mala さんのコードをチラ見すると http://cpan.ma.la/list からパッケージ一覧を一括取得 http://cpan.ma.la/dist からディストリビューション一覧を一括取得 してる感じでし

    CPAN 最速検索の劣化コピー作ってみた - daily dayflower
    poppen
    poppen 2008/12/28
  • vim でコメントのオートインデントをしたくない - daily dayflower

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

    vim でコメントのオートインデントをしたくない - daily dayflower
    poppen
    poppen 2008/12/12
  • 複数のテストサーバをリバースプロキシで集約 (4) - daily dayflower

    mod_proxy_mapper のコードを詳説します。 mod_proxy に処理を移譲する方法 どこかのフェーズで request_rec *r; r->filename = "proxy:http://example.com/foo/bar"; r->proxyreq = PROXYREQ_REVERSE; r->handler = "proxy-server"; のように設定すると,handler フック(一般的なレスポンスハンドラ)において mod_proxy が呼び出されます。 なお proxyreq は通常のフォワードプロキシの場合 PROXYREQ_PROXY に設定します。また,まだリクエストがプロキシ化されていない場合,PROXYREQ_NONE になっています。 どのフェーズにフックをしかけるべきか mod_rewrite の場合, server context の場

    複数のテストサーバをリバースプロキシで集約 (4) - daily dayflower
  • 複数のテストサーバをリバースプロキシで集約 (3) - daily dayflower

    複数のテストサーバをリバースプロキシで集約 (1) - daily dayflower と 複数のテストサーバをリバースプロキシで集約 (2) - daily dayflower の続きです。 mod_rewrite の RewriteMap を使ってごにょごにょしましたが,なんともまどろっこしかったです。そもそも URI の書き換えに癖のある DSL を使う mod_rewrite を使わなきゃいけないということ自体がアレです。もっと手になじんだプログラミング言語で書ければロジックもすっきりするのに! というわけでモジュールを書いてみました(mod_proxy_mapper.c - daily dayflower)。 プロキシ専用ですが,サブリクエストを使ってプロキシ先を選定するモジュールです。 サブリクエストを使っているので,Apache でサポートしている言語ハンドラ……CGI*1

    複数のテストサーバをリバースプロキシで集約 (3) - daily dayflower
  • screen の見た目を変えた - daily dayflower

    コマンド実行中の場合はコマンド名を表示し,それ以外はカレントディレクトリ名を表示したかったのでいろいろ調べて .zshrc をいじってみました。 .zshrc if [ "$TERM" = "screen" ]; then local -a shorthost echo $TERMCAP | grep -q -i screen if [ $? -eq 0 ]; then shorthost="" else shorthost="${HOST%%.*}:" fi echo -ne "\ek$shorthost\e\\" preexec() { echo -ne "\ek${shorthost}($1)\e\\" echo -ne "\e_`dirs`\e\\" } precmd() { echo -ne "\ek${shorthost}$(basename $(pwd))\e\\" } fi

    screen の見た目を変えた - daily dayflower
  • [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
  • 図解: 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
  • JavaScriptのイベントハンドラ説明

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

    JavaScriptのイベントハンドラ説明
  • 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
  • レポジトリ分割の作業記録 - daily dayflower

    とりあえず新規レポジトリを作るまでもないけど作業履歴をとっておきたい,という場合,わたしは Sandbox というレポジトリに全部つっこんでいます。 /Sandbox /project1 /project2 /foobar 各サブプロジェクトごとに trunk 等を切ることもありますし,そうしないこともあります。こんな感じで Sandbox で作業してて熟してくると,単独プロジェクトとして分割管理したくなります。 /foobar /trunk /tags /branches できれば,いままでの作業履歴も移行したい! 「svnadmin dump」や「svndumpfilter」というキーワードでググると色々でてきますが,今回は下記のサイトを参考にしました。 Subversionの続き履歴を残したままリポジトリ間でファイルを移動 - StepupEngineeringはてな支店 cvsから

    レポジトリ分割の作業記録 - daily dayflower
  • SVNParentPath 設定するなら SVNListParentPath on も指定 - daily dayflower

    以前も書きましたが mod_dav_svn で SVNParentPath を設定すると,レポジトリを作成するごとにいちいち httpd.conf を書き換える必要がなくて楽なのです。唯一困っていたのが,その SVNParentPath 自体にアクセスすると Forbidden となってしまうこと。ログを見ると,「The URI does not contain the name of a repository」と怒られるので,これは mod_dav_svn 自身が出しているみたいですね。 trac の TracEnvParentDir では,親ディレクトリにアクセスすると各子プロジェクトページへのディレクトリリストが出力されて便利なんで,同じようにしたい。 で Google 先生に聞いて, Subversion Users: Browse repos available under SV

    SVNParentPath 設定するなら SVNListParentPath on も指定 - daily dayflower
  • daily dayflower - 2007-05-24 ■[linux][pc] SC420 では物理メモリ 4GB はフルフルに使えない

    最近メモリが安いので,Dell PowerEdge SC420 にメモリ 4GB とおごってみました。ところが OS から見えるメモリは 3GB 強程度。さらっと調べた感じだと, PAE を有効にすればできるよ,たぶん x86_64 な OS だと大丈夫だよ,たぶん という意見がよく出てくるのですが,私の環境では PAE カーネルにしてもだめでした。ということであれこれ探し回って,4GB(以上)のメモリを使うために何が必要なのかを調べてみました。 結論ですが, ハードウェアサイドの要件として IA32 の場合 CPU が PAE(物理アドレス拡張)に対応していること といっても 4GB もメモリを詰めるような環境では当然対応してます チップセットが 8GB 以上のメモリをサポートしていること MCH(昔でいう North Bridge)が 33 bit 以上のアドレス空間を利用できる必要が

    daily dayflower - 2007-05-24 ■[linux][pc] SC420 では物理メモリ 4GB はフルフルに使えない
  • 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
  • mod_rpaf のかわりに mod_extract_forwarded なるものがあるらしい - daily dayflower

    今作っているウェブアプリでは -+(A) Apache 2.2 + mod_proxy (画像等のスタティックコンテンツ向け) +(B) Apache 2.2 + mod_perl (アプリサイド)という環境を同一ホストで動かしています。 ただ,このようにリバースプロキシを導入すると,(B) のログファイルではアクセスもとがすべて 127.0.0.1 になってしまいますし,アクセスされる IP によってアプリ上で制限を掛けたい場合,X-Forwarded-For ヘッダを自分でみて判断しなくてはいけなくなってしまい,面倒です。 このようなときに楽に対処できるのが mod_rpaf です(参考: リバースプロキシを導入する際はmod_rpaf - drk7jp)。このモジュールを使うと,Apache の Connection レコードの内容を改変してくれるので,ログには大元のアドレスが記録さ

    mod_rpaf のかわりに mod_extract_forwarded なるものがあるらしい - daily dayflower
  • Plagger 0.7.15 の中身 - daily dayflower

    わず嫌いで Plagger を敬遠していたんですが,ついにインストールしました。しかし自分がやりたいことをやるには既存のプラグインだけでは無理そう。で,とりあえず既存のプラグインのコードを読んでいたらどんどんわからなくなってしまいました。 資料をあさっていたら,Shibuya.Plaggers に Plaggerの中身 - file-glob こと k.daibaの日記 という記事が紹介されているのを発見。そうそうこういう構造説明書がほしかったんですよ。 しかし既存のプラグインのソースを見ているとどうも勝手が違うみたいなので Plagger::run() の中身を読むことにしました。0.7.15 での内部構造を id:kdaiba さん記法で書き下してみます。 autoload_plugin('Bundle::Defaults') plugin.init subscription.loa

    Plagger 0.7.15 の中身 - 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