nDiki : URL
URL - Uniform Resource Locator
URI escape (Perl)
によると
$str =~ s/(\W)/'%' . unpack('H2', $1)/eg;
と
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
がはやいそうです。
application/x-www-form-urlencoded でのエンコード (Perl)
同じく
によれば、
$str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;
$str =~ tr/ /+/;
$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
がはやいそうです。
スポンサード リンク
Related term
2006年12月12日 (火)
■ PAR::Repository でビルド済み Perl モジュールをネットワーク配信

@ 実行可能ファイル作成としての PAR
PAR といえば Perl スクリプトを実行可能ファイル(Windows なら EXE 形式ファイル)に変換するモジュールとして有名である。
ちなみに実行可能ファイルを作成する部分はは PAR 0.97 より PAR-Packer パッケージに分けられ、PAR 自体はインストールしやすい pure Perl なパッケージになっている。
@ PAR モジュールアーカイブからのローダとしての PAR
PAR が提供するもう一つの(こちらが本来はメイン?)機能は、プログラムの実行時に必要な Perl モジュールを PAR ファイルと呼ばれる Perl モジュールアーカイブファイルからロードする機能である。 XS モジュールなどもコンパイルすることができるどこかの環境で1度ビルドして PAR ファイルにしておけば、同じアーキテクチャのホスト上でそのまま利用することができる。
@ PAR リポジトリ
ロードしたい PAR ファイルはファイルパスだけではなく URL でも指定することができ、必要な時にオンデマンドでフェッチさせることができる。 これを使えば Perl プログラムの集中管理可能だ。
PAR 0.951 からは PAR リポジトリというコンセプトが追加され、パッケージ毎に作った PAR ファイルをサーバ上(あるいはローカル)のリポジトリに蓄積してオンデマンドでロードできるようになった。
個別に PAR ファイルを指定する従来の方式に比べてかなり便利そうである。 ということで試用してみた。
まずは
- PAR
- PAR::Repository
- PAR::Repository::Client
- PAR::Repository::Query
- PAR::Dist
- PAR::Packker
あたりをインストールし準備 OK。
@ 1. PAR リポジトリを作成する
最初に PAR-Repository に含まれている parrepo で。
parrepo create -r /tmp/PAR
PAR リポジトリファイルの中にはデータベースファイルが作成されるが、これは DBM::Deep というアーキテクチャ非依存のものを使っているので、Linux でも Windows でもどちらからでもアクセス可能である (つまり Linux 上でリポジトリをメンテできるということだ)。
@ 2. Perl パッケージを PAR ファイル化する
次に必要な PAR ファイルを作成する。 作成したいパッケージを展開してビルドし、blib ができている状態で PAR::Dist を使ってパッケージ化する。
perl Makefile.PL make make test perl -MPAR::Dist -e blib_to_par
例えば ActivePerl*1 上で WWW-Mechanize-1.20 を PAR ファイル化すると
WWW-Mechanize-1.20-MSWin32-x86-multi-thread-5.8.8.par
というファイルが作成される。
普段から ActivePerl で必要なライブラリは基本的に自前で PPM パッケージ化して、動作確認した上で PPM リポジトリに蓄積するようにしているので、合わせて次の手順でパッケージを作ることになる。
perl Makefile.PL nmake nmake test perl -MPAR::Dist -e blib_to_par make_ppm
@ 3. PAR リポジトリに PAR ファイルを登録する
PAR ファイルができたら parrepo でリポジトリに登録する。
parrepo inject -r /tmp/PAR -f xxx.par
@ 4. PAR リポジトリ上のライブラリを使用してみる
例えば先ほどの WWW::Mechanize がリポジトリに登録されている状態で
#!/usr/bin/perl
use PAR { repository => 'file:///tmp/PAR/' };
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get('http://www.example.com');
print $mech->content;
というスクリプトを書いて実行すると、PAR リポジトリから WWW::Mechanize がロードされて正しく実行される。
ここでリポジトリを Web サーバへアップロードして、repository のところに URL を指定するようにすることもできる。 例えばリポジトリを http://www.example.com/PAR/ に配置したとすると
#!/usr/bin/perl
use PAR { repository => 'http://www.example.com/PAR/' };
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get('http://www.example.com');
print $mech->content;
と書き換えることで、インストールしていない WWW::Mechanize を使用できるようになる。
@ Perl プログラムを実行形式化する
先ほどの Perl スクリプトを get_top_page.pl という名前で保存して pp で実行可能ファイル化する。
pp -o get_top_page.exe -M PAR::Repository::Client get_top_page.pl
とすれば get_top_page.exe という実行可能ファイルが作成される。 WWW::Mechanize はオンデマンドで http://www.example.com/PAR/ からフェッチされるので、アップデートが必要な場合は新しい PAR ファイルを作成してリポジトリを更新するだけでよい。 EXE ファイルを作成しなおして利用者に配付しなすといった作業も不要だ。
@ スクリプトもリポジトリにおく
さらには実行するスクリプトをも PAR リポジトリに置いておくことが可能だ。
例えば WWW-Mechanize に含まれている mech-dump をオンデマンドにフェッチして実行する実行形式ファイルは以下のコマンドで作成できる。
pp -o mech-dump.exe -M PAR::Repository::Client \
-e "use PAR { repository => 'http://www.example.com/PAR/', \
run => 'mech-dump' }"
@ まとめ
ActivePerl では PPM があるとはいえ、普通のユーザにちょっとしたプログラムを使ってもらうのに「ActivePerl をインストールして、PPM パッケージをインストールして、……」というのは手間すぎる。
pp で プログラムに必要なものを全てバンドルした実行形式化ファイルにするという方法ももちろんあるのだが、頻繁にアップデートするようなスクリプトの場合には、起動のための部分だけ pp で作成しておいてあとは PAR リポジトリで集中管理するというのもちょっと魅力的である。
- 自前 PPM リポジトリの管理 (2006-07-03)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- ActivePerl で Ming (2005-02-23)
- ActivePerl 5.8.8.820 の PPM では ppd/tar... (2007-02-05)
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
2007年1月12日 (金)
■ KDE BasKet、ランチャとしての使い勝手は?

Windows で使い始めた PStart というランチャーソフト、これが結構使いやすい。 当初はポータブルアプリケーション用として考えていたのだが、最近は普通に起動しっぱなしにしている。 アプリケーションの起動を登録しておいたり、フォルダや URL を放り込んだりしておけば、簡単にそれらにアクセスできる。
(ポータブルではなくて良いので)Linux ノート PC 上でも同様なランチャが無いかなと探していたところ KDE 系の BasKet というツールを発見。
PStart 同様 アプリケーション(ランチャ)、ディレクトリ、URL の登録が可能。 さらに画像やテキストなども放り込んでおくことができる。 また各項目にチェックボックスを表示させて、チェックリストとしても使うことができる。 これらはバスケットと呼ばれるまとまりごとに管理でき、タブで切り替えることができる。
うまく使えば手離せないデスクトップツールになりそうだ。
- xDピクチャーカード対応 USBリーダ/ライタ MAUSB-100 (2005-04-23)
- ソフトウェア技術者御用達のプロジェクトマネジメントツール TaskJuggler (2007-04-23)
- Linux で入力して Windows で参照できるパスワード管理ツール ... (2006-12-31)
- 1インチポータブル HDD HDMC-U12 インプレッション (2006-12-28)
- ホームネットワークカメラ BL-C10 買っちゃった (2005-01-18)
2007年1月13日 (土)
■ [ WiKicker ] spam と検索エンジン対応に noindex、nofollow を追加

@ <a rel="nofollow">
相変わらず www.naney.org 上の WikiForum (NaneyOrgWiki) にも毎日のようにリンク spam 書き込みがある。
気がつき次第削除と、その URL や関連キーワードの書き込み禁止文字列ブラックリストへの登録を行っているが、手間でしょうがない。
これらのリンク先に貢献するのは腹立たしいのでリンク (A 要素)へ
rel="follow"
属性をデフォルトで設定するように WiKicker を書き換えた。 ようやく。
@ <meta name="robots" content="noindex,nofollow">
あわせて、検索エンジン対応もしていおくことにした。
編集ページや履歴ページは検索エンジンに登録してもしょうがないので、インデックスから除外されるように HTML の HEAD に
<meta name="robots" content="noindex,nofollow">
を追加するように修正。
クエリ付きの URL のページで noindex した場合、クエリ無しや他のクエリを持つ URL のページまで一緒にインデックスから外されてしまわないかちょっと心配で、今まで保留にしていたのだけれど、Wikipedia などを見ても大丈夫のようだ。
[ SEO ]
- DiKicker の出力する HTML コードを小さく (2006-10-05)
- 最後がピリオド(.)で終わるファイル名をつけられない (2005-04-19)
- DiKicker に grep 検索機能を追加 (2007-02-02)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- WiKicker 0.420 リリース - 変更いろいろ (2007-05-30)
2007年2月5日 (月)
■ ActivePerl 5.8.8.820 の PPM では ppd/tar.gz を置いただけの PPM リポジトリを使えなくなった

ActivePerl 5.8.8.819 までは .ppd と .tar.gz ファイルを置いたディレクトリを Web サーバで公開しておけば、そのディレクトリの URL を PPM リポジトリとして指定して使うことができた。
これが build 820 付属の PPM だとスキャンしてくれなくなった。 リポジトリの URL を指定する際、package.xml を指定しないと駄目らしい。
@ PPM リポジトリとして必要なファイル群を生成する
PPM リポジトリとして必要なファイル群は PPM-Make に含まれている rep_summary コマンドで生成することができる。
rep_summary --rep /path/to/ppm/repository
今後はこれで package.xml その他のファイルを生成しておくことにする。
@ 複数の PPM リポジトリ
一方複数の PPM リポジトリの扱いは良くなった。build 819 付属の PPM では、複数のリポジトリにまたがってパッケージの依存解決ができなくなっていて不便だったのだが、build 820 のものでは、以前のバージョンのもののようにまたがれるようになった。
基本的な PPM パッケージ群用と、プロジェクト毎の PPM パッケージ群用の PPM リポジトリを組み合わせて使うときに、依存解決できないと厄介だったのでこれは○。
@ PATH
build 819 のインストーラでは site\bin に PATH を通してくれないので、site にインストールしたパッケージ付属のコマンドが呼び出せず不便であった(もちろん自分で PATH を通せばよいのだが)。
build 820 のインストーラでは site\bin も PATH にいれてくれるようになった。○。
[ ActivePerl ]
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- 自前 PPM リポジトリの管理 (2006-07-03)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- ActivePerl で Ming (2005-02-23)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
2007年4月5日 (木)
■ Referer spam は # がお好き?

Referer spam が相変わらずきている。 今まで個別に .htaccess で拒否している。
ところでログを見ていてしばらく前から気になっていたのだが、なぜだか知らないがうちにくる Referer spam は
http://www.example.com/#
のような最後に # がついた(通常は送られてこない) Referer URL を送ってきている。
サヨウナラ。
SetEnvIf Referer "http://[^/]+/#" denyreferer deny from env=denyreferer
- サーバの負荷が高くなったら DiKicker が 503 を返して沈静化を... (2007-04-05)
- [ DiKicker ] ロック獲得リトライをさらに減らす (2007-03-14)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- Referer spam (2004-10-12)
- [ WiKicker ] spam と検索エンジン対応に noindex、... (2007-01-13)
2007年4月13日 (金)
■ クリッピングに便利な CMS 「Tumblr」を使ってみる

Twitter と一緒に取り上げられることの多い Tumblr の方も試しに使ってみることにした。 一緒に取り上げられているといっても、両者は結構違うサービス。 Tumblr はどちらかというと Web コンテンツをクリッピングしていくのに便利なネットサービスだ。 Tumblr ではメディアミックスな短かめの投稿によって構成される tumblelog と呼ばれる Blog の一種を作ることができる。
Tumblr はページのテンプレート(HTML)を好きなようにいじれるのが魅力的だ。 Google AdSense 等 JavaScript コードなども挿入することができるので、結構好きなようにページにパーツを埋め込むことができる。
早速アカウントを作成して、tumblelog なるものを作ってみた。
まずは設定の方から。「Change settings」から設定ページに移動する。
- Title: tumblelog のタイトルを書く。
- Description (任意): tumblelog の説明を書く。
- URL: tumblr.com のサブドメインの URL をもらえるので、名前を入力する。ドメイン名を持っていればそれを割り当てることもできる。
- Theme: あらかじめ定義されているものを選べる。Custom を選択して、HTML テンプレートをいじることもできる。定義済みのものをカスタマイズしたいなら一旦そのテーマを選んで保存してから、Custom に変更する。
- Import Feeds: RSS フィードや ATOM フィードから自動的に記事をインポートしたい場合、Feed を登録する。例えばFlickr、Twitter、はてなブックマークなどへ投稿したものを自動的に Tumblr の方でインポートさせることができる。
テンプレートをいじって Twitter のバッジを貼ってみたり、テスト投稿をしてみたりしてまずは様子見。
nDiki に書くほどではないけれども、はてなブックマーク以上の言及をちょっとしたい時などのクリッピングに使ってみようかと思う。
ただ検索機能・タグ機能などは今のところ無さそうなので、書きっぱなしになってしまわないかという懸念あり。
- Twitter ステータスを nDiki サイドバーに表示 (2007-11-09)
- Twitter を使い始めて1年 (2008-04-06)
- はてなブックマーク上の最新ブックマークを nDiki に (2005-05-16)
- プロフィール公開サイト iddy のアカウント作成 (2007-03-13)
- はてなブックマーク上の検索結果を nDiki に (2005-10-30)
2007年5月19日 (土)
■ 質問する/答えるに特化したプロフィールサービス「アバウトミーβ」

@nifty で開始された新しいプロフィールサービス「アバウトミーβ」が、Twitter で話題になっていたので、昨日の夜登録してみた。
プロフィール関連としては
など一般的なものが設定できる。 ブログパーツもあり自身の Blog に貼ることができる。 RSS フィードの表示・自己紹介での URL のリンク化・ユーザ毎にホスト名の割り当てなど、一通りくすぐられる要素が盛り込まれている。
アバウトミーの特徴は、質問する/答えるを柱とした自己表現にある。 他のユーザの質問に答えていく(自由文回答・選択肢による回答)ことで、「オレってこんな人」というのをアピールすることができる。
さらに自分でも簡単に質問を作成することができる。 基本的にアバウトミーでは「質問を作成するか」「答えるか」しかすることがない。 ランダムに出てくる質問に次から次に答えるようになっているので、自分が作った質問にもぼちぼちと回答が返ってくる。 なかなか楽しい。
気がつくとだらだらと遊び続けてしまう。
サービスとしては今後、質問の質(重複質問・マイナー質問が増えそう)と量のバランスがいい具合のところで維持できるかどうかにかかってきそうだ。
- クリッピングに便利な CMS 「Tumblr」を使ってみる (2007-04-13)
- Flickr の写真を自動的に Twitter アイコンにする (2008-03-13)
- 今日のさえずり - Twitter ステータス中のキーワードを自動リンク化 (2007-11-12)
- 今日のさえずり - 子供がブランコから抜けなくなってる (2008-03-31)
- Twitter にケータイ写真を流すのに twitterfeed を使う (2008-02-22)
2007年6月14日 (木)
■ nDiki とあわせて読みたい

サイドフィード株式会社がまた新しいサービスを始めた。 今回のサービスは、自分の Blog と一緒に読まれている Blog を表示するサービス。
サービスが提供している画像を Blog に貼ると、その画像に関連する Blog のタイトルが表示され、そのリンク先のページに一覧が表示される。
早速昨日貼りつけてみたところ、今日あたりから反映されるようになった。
今日の最初の頃の画像はコレ。
当然非対称なので、「自分の Blog と一緒に読まれている Blog のあわせて読みたい Blog」に自分の Blog が含まれているとは限らない。でも、そうだとちょっと淋しい。
ちなみに「nDiki とあわせて読みたい」最新のリストは以下。
新しい Blog の発見につながるのはいいな。面白そうな Blog を早速巡回対象に追加してみた。
URL の最後に `/' が勝手に追加されてしまうようになっているのはちょっとマズいんじゃないかな(自分ところはあっても無くても同じ振る舞いをするからまだいいんだけれど)。
- WiKicker に Flickr 関連機能追加 (2005-02-11)
- クリッピングに便利な CMS 「Tumblr」を使ってみる (2007-04-13)
- Hyper Estraier で社内 Web コンテンツ検索 (2006-06-01)
- mapperl.pl (2002-01-22)
- 映画のプログラム捨てられますか? (2007-03-11)
2007年11月9日 (金)
■ Twitter ステータスを nDiki サイドバーに表示

公式の Flash 版 Twitter badge をこのページのサイドバーに表示していたが、以下の点でちょっと不満だった。
- 「Flash, Just Me」: 自分のみのステータスを表示できるが、1度に1つのみ。キャッシュの関係で古い情報が表示されがち。
- 「Flash, With Friends」: 自分のみのステータスを表示できない。
- 「HTML/JavaScript」: JavaScript ファイル読み込みなので、Twitter 側が重いとページのその先のレンダリングが止まってしまう。
「自分の過去のステータスを一覧的にサイドバーに表示する」のがしたいことなのだが、ちょっとマッチしない。 ということで Twitter から RSS フィードを取ってきて、サイドバーに表示することにした。
使ったモジュールは URI::Fetch + XML::RSS + Date::Parse。 それとユーティリティとして WiKicker::HTML と WiKicker::URI。
- cron で定期的に Twitter から RSS フィードをとってきて、Perl スクリプトで HTML フラグメントに変換。
- DiKicker が読み込む(サイドバーを含む)フッタファイルに挿入。
と簡単に実装してみた。機能的には概ね満足。
今後は L:~ や URL の自動リンク化、キーワードの自動リンク化を適宜したい。
- はてなブックマーク上の最新ブックマークを nDiki に (2005-05-16)
- はてなブックマーク上の検索結果を nDiki に (2005-10-30)
- クリッピングに便利な CMS 「Tumblr」を使ってみる (2007-04-13)
- Flickr の写真を自動的に Twitter アイコンにする (2008-03-13)
- Plagger のインストールが大変なので XML::RSS で RSS ... (2006-06-10)
2007年11月12日 (月)
■ 今日のさえずり - Twitter ステータス中のキーワードを自動リンク化

- 09:52 週末会社のメールサーバを止めてあったので、今日は朝の inbox 処理が楽。 *Tw*
- 10:46 久しぶりに message/partial なメールがきたので Mew の info をひいた。* して J。 *Tw*
- 16:01 user_timeline RSS フィードは、認証されている/いないで中身が違うのか。認証なしだとちょっと古いのしかとれない。
- 16:10 @yaa 情報ありがとうございます! ?dummy=dummy つけたら認証なしでも最新ステータスが取れました。
- 17:30 ようやく、つくばのロフトでほぼ日手帳2008を買った。オレンジのナイロンカバー。L:つくば[mb]
- 18:07 今日の笑点始まりまで、MovaTwitter で逆から読み。お題を推測しながら。[mb]
- 18:55 @yaa ふむふむ。値変えてトライしてみます。[mb]
- 23:47 サイドバーに表示している Twitter ステータス中のキーワードを自動リンク化した。
- 23:49 URL のリンク化を忘れてた。
- Twitter にケータイ写真を流すのに twitterfeed を使う (2008-02-22)
- Twitter ステータスを nDiki サイドバーに表示 (2007-11-09)
- ケータイ用にプライベート Wiki を設置 (2008-01-07)
- MAILPIA による Twitter チェック (2008-04-04)
- 今日のさえずり - データベース設計していて enraku 登場見落としてた (2007-11-13)
■よく検索されるキーワード
torrent(68) perl(60) windows(51) cvs(42) linux(41) 書き方(39) ganttproject(33) アジェンダ(26) debian(25) 使い方(24) 提案書(20) サンプル(19) java(19) ドラマ(17) tc-1(17) x31(16) 壁紙(16) google(16) ほぼ日手帳(16) subversion(15) バッグインバッグ(14) ヨドバシカメラ(14) 2009(14) 設定(14) firefox(13) 秋葉原(13) ssh(13) 修理(13) バッグ(13) インストール(12) 動画(12) svn(12) usb(12) 影舞(12) ファイル(11) rcs(11) ほぼ日(11) アジェンダとは(11) wiki(11) c#(10) ダイソー(10) thinkpad(10) centos(10) 無印(9) 価格(9) 画像(9) 手帳(9) activeperl(9) apache(9) 市原隼人(9) リフィル(9) ミノルタ(9) 冷蔵庫(9) 作り方(9) tortoisesvn(9) 大井町(9) ほぼ日手帳2009(8) gmail(8) 生年月日(8) truecrypt(8) mailpia(8) so905ics(7) cgi(7) スーベレーン(7) mew(7) spidermonkey(7) emacs(7) ご査収(7) ダウンロード(7) パスワード(7) テンプレート(7) cygwin(7) chrome(7) make(7) suunto(7) gimp(7) 評判(7) gtd(7) 写真(7) 方法(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 方法 設定 サンプル ダウンロード セール 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 最新 MP3 動画 Torrent 解説 意味 用語集 参考文献 お薦め お勧め おすすめ 便利 Blog ブログ mixi 待受画面 修理Process Time: 0.374477s / load averages: 0.37, 0.44, 0.45
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク