Template Toolkitで正規表現マッチ

セッションのユーザー名と、パスに含まれているユーザー名が同じ場合にeditのリンクを出したいときとか、^/kzfm$みたいなマッチをさせたかったので調べた。

こんな風にmatchというメソッドを使うといいそうだ。

[% name = 'Larry Wall' %]
[% matches = name.match('(\w+) (\w+)') %]
[% matches.1 %], [% matches.0 %]        # Wall, Larry

Template ToolkitのVMethodってほかにも結構いろいろあんのね。

Image::Magickのリサイズ

FC5のyumでいれたImageMagick,ImageMagick-perlはCrop,Resizeしても正方形にならずに3:2のまま縮小されてしまう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/usr/bin/perl

use strict;
use warnings;
use Image::Magick;

my $i = Image::Magick->new;

$i->Read("test0.jpg"); # 640x480

$i->Crop(geometry => '480x480+80+0');
$i->Resize(geometry => '48x48');

$i->Write("test2.jpg");

バグか。FC6だと解消されてるみたいだけど。結局

$i->Resize(width => '48', height => '48');

と書くことで望む結果は得られたが、無駄に手間取った。

マスバーガー

メガマッスとか。

静岡のグルメ情報  GO!GO!グルメドライブ

富士宮やきそばはもちろん、銘柄豚や虹鱒バーガーなど 地元グルメが集合した「お宮横丁」をピックアップ

吟醸バー蔵66

今度の出張帰りに寄る。

富久長の杜氏日記:吟醸バー蔵66 - livedoor Blog(ブログ)

恒例になりつつある吟醸バーが今年も1月18日から開店しています。 場所は昨年同様、東京駅八重洲南口。地下1階のキラピカ通り。

吟醸バー蔵66

HTML::Widgetを使ってみた。

HTML::Widgetで改行の入れ方が分からん。

[% widget_result.as_xml %]

とやると、一行でずらずら出力されてしまふ。

あと、Day 19 - HTML::Widget tricksなどを参考にいじってみたりしているが、イマイチよさが伝わってこない。

というわけで、明日も引き続き調べてみることにする。

WSDLの読み

ウィズドゥール

http://yohei-y.blogspot.com/2004/12/blog-post_18.html

知らんかった。

でもべつにダブリューエスディーエルでもいいのか、、、

publosxom (1)

生物学的な文献に関してもhubmedなどをうまく使ってRSSで処理してやれば処理量は跳ね上がるヨ。

しかし、本質的に知識に響いてくるのは

腰を据えてじっくりと読まねばならぬ、今の自分の力量よりは高いレベルにある論文

をどんだけ読むかであって、必ずしも処理量が多ければいいってモンでもないところが痛いところ。むしろそういったなかなか面白そうであるんだけど小難しい論文に注釈を付け合って効率的に読破したいというのが崩れ落ちそうな未読文献の山を抱えて困ってる僕の希望

じゃぁ、暗黙知を共有する仕組みを作ればええじゃろなんて思うわけだが、これもbiologgingみたいの使えばよかろうなんて軽く考えたんだが、イマイチ盛り上がりにかけてるっぽい。なんでか考えてみたんだが

  • ついて来てない(キャズム)
  • Pubmedの対象が幅広すぎる(スパース)

の2つではないかな?と半ば勝手に仮定してみる。前者に関しては、RSSだヨ!ビジネスブログだヨ!とか煽っても、便利さは訴求できません。マニュアル作ったり、地道に啓蒙したりとかしないと普通のヒトは使うようにはならんじゃろな。

が一方、後者に関しては、研究室単位とかの興味とかチェックする論文が被っているようなとこ(イントラ)だと、ひょっとしたら入れとくだけで(WIKIのように)うまくまわるんじゃなかろうかってことで思いつきで職場にblosxomでイントラブログを構築してみたのが春くらいの出来事。

で結局、今のところは職場のblosxomはなかなかうまくまわりません。もちろん前者も大きいんだけど、それ以上に、論文あんま読まんから処理するのに困らんヒトが多いみたいだ(と再認識) というわけで、最近ちょっとほったらかし気味の職場ブロッサム(職ブロ)だが、自分用に一個持っておくと論文に注釈つけといたりタグでまとめられたりと結構便利なので、こんなの作ってますということでメモ的なものを残しておくヨ。

publosxom

Catalyst::Plugin::Text::Tags

Text::Tags のCatalystプラグイン書いた。

Catalyst::Plugin::Text::Tags

my @parse_tags = $c->texttags \
    ->parse_tags(q{ foo  bar  "baz bap" jenny's 'beep beep'});
my $joined_text = $c->texttags->join_tags(@tags);

こんな感じで。

TTSiteで謎の空白行

相変わらずCatalyst。Adding RSS feedsを参考にTTSiteでRSS出力。

が、なぜかファイルの先頭に謎の空白行が。

XML パースエラー: 外部実体の初めに XML 宣言がありません。
URL: http://localhost:3000/rss/bookmarks/kzfm
行番号: 2, 列番号: 1:<?xml version="1.0" encoding="UTF-8"?>
^

root/lib/config/colが原因だった。

[% site.rgb = {
     black  = '#000000'
     white  = '#ffffff'
...
      error   = site.rgb.red
   };
-%]

とやって解決。

あと、rss用のテンプレート指定したときにヘッダーフッター入らないようにroot/lib/site/wrapperに書いておく。

[% IF template.name.match('\.(css|js|txt|rss)');
     debug("Passing page through as text: $template.name");
     content;
   ELSE;
     debug("Applying HTML page layout wrappers to $template.name\n");
     content WRAPPER site/html + site/layout;
   END;
-%]

pythonで高階関数

Pythonでの関数プログラミングを流し読み。Xoltar使うと関数型言語っぽくかけるらしい。

ふつうのhaskell読んだあとなので、ここらへんの関数プログラミングの話題も楽しい。

第2回はクロージャとbindingの話でclosure()とやるとクロージャができ、Lispチックな書き方もできるらしい。第3回はカリー化の話で、これまたcurry()とかやるだけでいいっぽい。また、最後のほうの関数合成の話も面白かった。

ちなみにperlにもSub::Curryってのがあって、こんな感じで書ける。

sub foo { join "_", @_}
my $f = curry(\&foo, 1, 2);
my $f2 = curry($f, 3, 4);

print $f2->(5);

で、実行すると

$ perl curry.pl 
1_2_3_4_5

サブルーチンのリファレンスを指定すればいいだけのお手軽っぽいので、今度何かに使ってみよう。

あと、any()とかall()はQuantum::Superpositionsが使えるかな。

ProductName ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門
青木 峰郎
ソフトバンククリエイティブ / 2940円 ( 2006-06-01 )


追記

perlで関数型のプログラミングをするモジュールとか