2007/10/30

[リリース]   0行で作るPerl用テンプレートエンジン

at 21:50JST
60行で作るPHP用テンプレートエンジン
http://anond.hatelabo.jp/20071030034313
40行で作るPerl用テンプレートエンジン
http://anond.hatelabo.jp/20071030153111
404 Blog Not Found:perl - 勝手に添削 - 40行で作るPerl用テンプレートエンジン
http://blog.livedoor.jp/dankogai/archives/50940023.html

触発されて表題のPerl用モジュールを作ってみました。

特徴:
・モジュールが小さい。わずか0行
・高機能。
 変数の出力はもちろん、Perlそのままの文字列演算、
 ループや条件分岐に対応します
・拡張が自由
 お好みのサブルーチンを追加して機能を拡張できます

とても便利だと思うので、ぼくのスーパーハッキングテクニックを使ってPerlの配布パッケージに忍び込ませてみました。Perl 5以降をお使いの方なら、すでにこのモジュールを利用可能になっているハズです。CPANとかuseなんたらとかする必要はまったくありません。

使用例:
変数の出力はこんなふうにします。テンプレートタグの開始文字列は「@{[ do {」、終了文字列が「} ]}」です。
my $user_name = 'hirosiki'; 
print <<"_EOF_";
Your name is: @{[ do { $user_name; } ]}
_EOF_


タグの中ではPerlに用意されているあらゆる演算が可能です。出力したいデータを最後に評価するようにしてください。
my $greeting = 'Good morning!'; 
print <<"_EOF_";
Greeting to you:
@{[ do {
"\t" . $greeting;
} ]}
_EOF_


もちろんループも可能です。
my @primes = ( 1, 3 , 5 ); 
print <<"_EOF_";
Prime numbers:
@{[ do {
my $t;
foreach ( @primes ) {
$t .= "\t$_\n";
}
$t;
} ]}
_EOF_


Perlでサブルーチンを書けば、さまざまな機能を自由に追加できます。このモジュールの真骨頂です。
sub escape { 
my $str = shift or return;
my %escaped = (
'&' => 'amp',
'<' => 'lt',
'>' => 'gt',
'"' => 'quot',
);
$str =~ s{([&<>"])(?!amp;)}{'&' . $escaped{$1} . ';'}msxgeo;
$str;
}
my $input = '(Tom & Jerry)->fight';
print <<"_EOF_";
Hanna Barbera:
@{[ do {
escape( $input );
} ]}
_EOF_


このモジュールはGPLv3、または婚姻届(美女に限る)のデュアルライセンスとします。

2007/05/14

[リリース]   MTで改行の反映とURL自動リンクだけするテキストフィルタープラグイン「hirosikitextfilter」

at 19:31JST
作りますた。

・hirosikitextfilterとは

MovableType 3.2以上用のプラグインです。使用中MTのplugins/ディレクトリに置くと、blogの「環境設定」→「設定」→「新規投稿」画面で
「改行設定」

「改行を変換+URL自動リンク(ひろ式)」
が新たに追加されます。

これを指定して新たに記事を投稿すると、生成されるページのHTMLが下記のようになります。
・改行したところが自動的に<br />に変換される
・http... で始まるアドレスが自動的にリンクに変換される
フリーBLOGサービスの「Seesaa BLOG」の動作に近くなります。

そのほかの特徴:
・下記のタグの中では改行の自動変換が起きません
 pre, script, object, embed, textarea, table, dl, menu, dir
・下記のタグの中ではアドレスの自動リンク変換が起きません
 a, pre, script, object, embed
・自動リンク対象となるのは下記のプロトコルです
 http, https, ftp, mailto, gopher

そのほかのデメリット系の特徴:
・MT標準の自動改行と異なり、pタグを使用しません。MTのこの動作にはやや問題があるので採用しませんでした。あとあとニーズがあれば対応するかもしれません
・動作にperlのHTML::TokeParserモジュールが必要です。MTが動く環境ではほとんど導入されていると思いますが…(本腰を入れればなくても動くように修正できると思います)
・作成したエントリの改行コードがサーバOSの改行コードに統一されます(かなり専門的)

→ダウンロード
 hirosikitextfilter.pl
 2007/05/14 バージョン2

ライセンス:
勝手に使ってください

謝辞:
MTのpluginは初めて作ったので、藤本壱氏の「ModTextFilter」の大枠をそのままパ(検閲)参考にしました_o_




以下は余談。

なぜこんなのを作ったかというと、
・SeesaaからMTに移行したい
・PC/インターネットに詳しくない人でもMTを直感的に使えるようにしたい
という必要からです。

調べてみたら
「単純にURLを自動リンクにする*だけ*」
のプラグインというのがMTには存在しないようなので自分で作りました。そうしたら、見た感じではMTのテキストフィルタープラグインってチェーンにできないのね…。しかたないので改行部分も自分で作りました。

MT向けにはほかにもいくつか優れたプラグインがありますが、

・mt-sukeroku-plus.pl Ver.1.00
http://hsj.jp/works/2004/08/01/movabletypetextformat_mtsukero_17.html

自動リンク以外ははてな、Wiki形式。ちょっとふつうの人に勧めるのは…。

・ModTextFilter
http://www.sixapart.jp/movabletype/plugins/modtextfilter.html

改行にこだわっている優良プラグインなのだけれど、URL自動リンクはできない…。

みたいでした。


で、MTはコメント部分のHTML化については
「自動改行+URL自動リンク」
の機能があります。

こいつのメソッドを流用すれば速攻でプラグインができると思ったら、実はいくつか気になる点が。たとえば、
this is test. 
http://www.yahoo.co.jp/
<a href="http://www.foo.co.jp/">http://www.yahoo.co.jp/ </a>
test.
というテキストを投稿したとします。

これ、Seesaa BLOGでは、HTMLを解析して
this is test.<br /> 
<a href="http://www.yahoo.co.jp/" target="_blank">http://www.yahoo.co.jp/ </a><br />
<a href="http://www.foo.co.jp/">http://www.yahoo.co.jp/ </a><br />
test.<br />

と変換してくれます(正確には改行は削除されます)。Seesaaエロイ。いや、エライ。しかし、MTのコメント部分用のフィルターでは、
<p>this is test.<br /> 
<a href="http://www.yahoo.co.jp/" rel="nofollow">http://www.yahoo.co.jp/</a><br />
<a href="http://www.foo.co.jp/" rel="nofollow"><a href="http://www.yahoo.co.jp/" rel="nofollow">http://www.yahoo.co.jp/</a></a><br />
test.</p>

となってしまいます。つまり、HTMLの要素をあまりきちんとチェックしていないのですね。軽快さを重視しているのでしょう。

で、ぼくは些末なことを気にするタイプなので自分で作りました。その際、Seesaaでは↑のサンプルを見るとわかるように
「pre、scriptなどの中のテキストも
 改行挿入・URL自動リンク化されてしまう」
という問題があったので、こいつも解消して便利にしてしまうことにしました。

もうひとつ。
このフィルターでは、段落をpで囲みません。すべてbrによる強制改行に変換されます。
「なにそれ、論理マークアップになってないじゃんm9(^Д^)プギャー!」
と言われそうですが無視です(ちなみにぼくは無宗教なので「HTMLは論理マークアップ言語である」などという古代バビロニア神話は信じていません)。というのは、MTの
「段落をpで囲む」
標準のアルゴリズムには問題があって、まじめに段落認識させようとするとめんどくさかったからです。

MTでは、たとえば、
aaaa 
<font color="red">
red

not red
</font>
bbbb
と入力すると、
<p>aaaa 
<font color="red">
red</p>

<p>not red
</font>
bbbb</p>

と変換してくれてしまいます。
「fontなんか使うな!」
「そんなの投稿する人がタグに配慮すればいいんだよ!」
という人もいそうですが、それじゃCMSの意味がぜんぜんないですね。ということなので、プラグマティックに「見た目そのままにbrを挿入する」ようにしました。

ただし、TokeParserまで引っ張り出してきているくらいなので、ホントはマジメに書けばこれもpを使ったマークアップに対応できるはずです。めんどうなのでパス。誰か興味をもってくれるかわいい女の子がいたら書き直すかもしれません。

つーことでたいしたことないプラグインですが、後半の諸事情にちょっと不満をもったのでブチまけがてら公開しておきます。

2007/05/01

[リリース]   「はてなブックマーク数表示」機能を追加しました>「カンレン.えんとりーず」

at 07:38JST
カンレン.おとなりブログ」の追加ついでに。

蠍【サソリ】の空間
ブログパーツ「カンレン.えんとりーず」で関連エントリー表示が更に簡単に!
http://sasori-flower.jugem.jp/?eid=858
オプションで、はてなのカウンターが付けれるといいですね


と、奇特にも使ってくださるすばらしい方がいらしたので、ご要望に応えてみました。

http://kanren.hirosiki.jp/entries/
で、
「もうちょっと細かい設定をしたい」
を選んで、
「はてなブックマーク数 ? 表示する」
をチェックすると、タイトル脇にはてなブックマーク数が表示されます。単に画像表示URLを呼び出しているだけです。デフォルトでの動作は変わりませんのでご安心ください。

ああ、こんなちまちましたことやってないでちゃんとしたもの作らねば…。

[リリース]   「カンレン.おとなりブログ」を公開しました

at 03:58JST
縞馬が行く: カンレン.えんとりーず ッ?
http://whatsseesaa.seesaa.net/article/40470458.html
あれ? 自分とこの記事しか表示されません。がーん,なんか私ってば勘違いっ。してますっ。よねっ。ちゃんと上記カンレン.えんとりーずさんに「あなたのblogのほかの記事を読んでもらうきっかけづくりに」…と書いてあるじゃありませんか。


あー…えへへ。すみません。ご所望のサービスは、ロゴまでは作ってあったんですが飽きてそのまま放り出してました。中身を2,3時間ででっちあげて公開してみました↓

カンレン.おとなりブログ - 似たblogの記事を自動表示
http://kanren.hirosiki.jp/otonari/

「カンレン.おとなりブログ」は、「はてなダイアリー」の「おとなり」と似たような機能を自分のblogでも実現できるというblogパーツです。貼り付けると、ほかの人がblogに書いた似たような記事を探し出してリストアップしてくれます。

やっていることは「カンレン.えんとりーず」とほぼ同じです(ということは精度も同じ…)。

こちらはあさましい広告とかは表示されません。お好きにお使いください。というのも、これが飽きて放り出した原因なのですが、
・「おとなりブログ」として類似blogを検索すると、
 SPAM blogがけっこうな割合で引っかかる気がする
・そもそも特徴語で検索しているだけなので、
 「おとなり」どころか「敵」(価値観が真逆)の人が
 ヒットすることがある
ので、ちょっと…^^;

まあ、ご興味のある方はお使いくださいませ。指摘・ご要望などはこの記事へのトラックバックにて。

※追記
縞馬が行く: 感激!カンレン.おとなりブログ
http://whatsseesaa.seesaa.net/article/40542331.html
「カンレン.えんとりーず」と同時に使えたほうがっ。いいと思います!(現状では先に記述された方だけが機能します。)


おっとっと…そうだった。直しました。「1ページで同時に2回以上使えない」ようになっている関係で片方しか使えなくなっていたのでした。

と、同時に「自分自身もヒットしてしまう」というバグを見つけた…。ちょっと考えて直さなくちゃ--;

2007/04/04

[リリース]   「mixiただのり検索」できたー

at 20:03JST
わーい。って、喜ぶほどのものでもないか…。

mixiの自分の日記をキーワード検索できるブックマークレットを作りました。
http://tools.hirosiki.jp/mixisearch/

mixi、mixiプレミアム会員向けに日記検索機能をリリース
http://internet.watch.impress.co.jp/cda/news/2007/04/03/15298.html

というのを読んで、

「なんだー、検索、有料会員にしか開放しないのかー。
 HyperEstraierの中の外の人がシャインなのにーぶーぶー」

と思ったので公開。

つーか、ほんとは半年くらい前にjQueryの練習がてら途中まで作ってたんだけど、そのまんまになってた…。なので、意味もなくjQueryを使っているという。

ブックマークレットだという点でお気づきのように、単にJavaScriptでしらみつぶしにチェックしているだけです。ほかはなんにもしてない…だから
「ただのり」
なの。いちおう、mixi側にあまり負荷がかかりすぎないようにインターバルおいてますが…。おかげで遅い(目で検索したほうが速いくらい)ので、
「こんなんならmixiプレミアム契約するよ!」
と販促になるという思わぬ効果が!

さらにこの程度のブックマークレットに速攻で広告を入れているという、完璧なただのりっぷり。

# つーか、やっぱ日記サービスするなら検索機能くらい無料で
# 提供してくれてもいいと思うんだがなあ>mixi

2007/03/22

[リリース]   関連記事を自動表示する「カンレン.えんとりーず」

at 01:43JST
ホントはもうちょっと熟成させて、サイトも作り込んでイメージキャラとか描いてからのつもりだったんだけど、似た話題が某所に上がっていて焦った(やーい小心者)ので公開してみます…。

カンレン.えんとりーず
http://kanren.hirosiki.jp/entries/

このblogの記事別ページでも下のほうに表示されているように、
「関連した過去エントリを自動検索して、
 出力してくれるblogパーツ」
です。ココで紹介されているジェネレータを全自動化したものだと考えればいいでしょう。

ただし特徴語抽出のエンジンが非力なため、現段階ではあまり精度の高い結果が得られるようにはなっていません。代案として手動でキーワードを指定できる機能をつけています。

ニーズがあれば精度向上や機能追加などをしていきたいと思うので、「ほほう」と思う方はこの記事にトラックバックするかたちでご連絡ください。…ただしぼくは病弱なので反応は恐ろしく悪いです。

なんか広告とかまで入れてますが、個人でこういうblogパーツを公開するのは初めてなのでいろいろ調査するために盛り込んでみました。

てな感じで。
誰か使ってくれるかなあ。

追記(2007/04/14):
すいません^^; 解析対象指定のしかたについて、サイトの説明が間違ってました_o_ ビックリマークが抜けてました。指摘してくださったDigital Life Innovatorさんありがとうございました。
さらに過去の記事
2009/04 (1)   2008/12 (3)   2008/11 (9)   2008/10 (10)   2008/09 (20)   2008/08 (2)   2008/07 (23)   2008/06 (16)   2008/05 (22)   2008/04 (11)   2008/03 (21)   2008/02 (20)   2008/01 (21)   2007/12 (32)   2007/11 (37)   2007/10 (46)   2007/09 (63)   2007/08 (33)   2007/07 (41)   2007/06 (81)   2007/05 (173)   2007/04 (168)   2007/03 (113)   2007/02 (123)   2007/01 (92)   2006/12 (111)   2006/11 (185)   2006/10 (20)  

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。