2006年 09月 08日

trac

なんとなく CGI 動作で動かしていたけど、FCGI に変えた。あまりに早くでびびった。CGI が遅すぎなだけか

blosxom

Publish::Blosxom して blosxom にまかせるほうがいいのかなぁ。最初の一回だけ (インポートだけ) に Plagger 使う感じだけれど
日付内で番号ふって /2006/01/01/1 みたいな URL に対応させる blosxom プラグインを書けば解決するような気がしてきた。

  • 今の URI を維持する
  • データ移行
  • ウェブ上から書けるインターフェイス (特定のタグがついたはてダセクションを Publish::Blosxom とかでもいいかも)
  • Markdown とか Trac Wiki 記法とか選べる (meta プラグイン併用でそのまま記述したい)

ねr

キーボード

このキーボード、Eが既に消えかけ

$

そうえば JS で $ 書くとき、$X って書いてるときがある。

駅前に高校生のカップルらしきものがいて、男がやたら偉そうでむかついた。女の子は笑っていたから、あれで幸せなんだろうな。
それはともかく電車内のぢょしこうせい濃度は今日も高めでよろしいですね。

りなざう

りなざうのターミナルだと ssh してスクリーンができないなぁ。。

あー電車の中だとネットワークが遅いせいなのかもしれない。
でも vim は重いなぁ。描画がなんかおかしい

2006年 09月 07日

Plagger Diary

途中で Diary って名前がおかしい気がした。Archive とかかな

SmartFeed::Diary

http://svn.lab.lowreal.net/lowreal/mypla/Plagger/Plugin/SmartFeed/Diary.pm

Publish::Diary

http://svn.lab.lowreal.net/lowreal/mypla/Plagger/Plugin/Publish/Diary.pm

Publish::XSLT

http://svn.lab.lowreal.net/lowreal/mypla/Plagger/Plugin/Publish/XSLT.pm

config.yaml

  - module: SmartFeed::Diary

  - module: Publish::XSLT
    rule:
      expression: $args->{feed}->type eq "smartfeed:diary"
    config:
      format: Atom
      dir: /home/cho45/tmp
      xsl: /home/cho45/diary.xsl
      extension: html

  - module: Publish::Diary
    config:
      sourcedir: /home/cho45/tmp
      dir: /home/cho45/public_html/diary

diary.xsl の例
http://svn.lab.lowreal.net/lowreal/mypla/diary.xsl

Atom 渡し

こんなんにして適当に Subscribe すると、いっぱいファイルができる!

出力例: http://lab.lowreal.net/tmp/

TODO:

  • SmartFeed::Diary で作った smartfeed に適切なタイトルをつける
  • ちゃんと .htaccess とかの設定をして使ってみる (ネゴシエーションで拡張子なしに)
  • ソート
  • もしてかして: Planet でできる? か調べてみる
  • /index にする。
  • エントリごとのページ 2006/09/07/1 とかを作る。sort したあとに id つける?

svn にてきとうに入れたのでそっちへリンク

Perl ムズス

syntax error でまくりんぐ。もっといい方法があるんだろうなぁ。

Plugin::*::Diary , Publish::XSLT

それっぽい Subscription か CustomFeed とかを使って、Publish::XSLT で静的 HTML (に限らず) 生成の日記システムを妄想。
コメントとかは別の XML に保存して XSLT 中で document 使えば一応どうにかなるけれどちょっとやっぱキモいなぁ。
アーカイブしたいのは全部読み込まないと、漏れがでてしまうよなぁ。うーん。例えばはてダで書いたあるタグがついたセクションを、アーカイブに突っ込むという場合、最新のフィード何件か、っていう感じで配信されているから、上書きになっちゃうよなぁ。
あー、2006.atom とかを常に読み込むようにして、dedupe すればいけるかなぁ。

MultiViews

08/ 08.html ってあるとディレクトリ優先しちゃうのか。
08.html は 08/index.htm として保存しないとだめか

Catalyst 落ちる件

http://subtech.g.hatena.ne.jp/cho45/comment?date=20060906#c
コメントもらった! ありまとう! なるほど。
-f 付けると落ちることは落ちるけれど、プロセスが分離されて被害が少ないみたいだ。いちいち手動で起動しなくていい。よかたよかた。

vim execute

silent exe "!GET 'http://nina:4321/reload' > /dev/null"

とかやってるのだけど、GET が遅いと入力が返ってこない。非同期で実行できるんだろうか。
と思ったけど

silent exe "!GET 'http://nina:4321/reload' > /dev/null &"

にした。

CSS

ああああ。body (bodfy と type して boofy と空目した) に % 指定がついてるせいだった。全部 px にかえてやる!!!!
これで4時間ぐらいハマった。やっぱ IE &ネットワークが重い環境だとこういう試行錯誤するしかないのはきつい。

c-z

C-z でどーんってやったあと、screen の window 移動して、「どこでやってたっけなぁ」ということが多々ある。window そのつど開けばいいんだろうけど、カレントディレクトリが云々。

モテ form.disable

Form.disable 相当のはないっぽいのかな。

inc(gerry);

寝てたら成城学園前に着く直前ぐらいから急にレベル7で腹痛が発動。しかたないので成城学園前で降りた。トイレが混んでて焦った……
いっかい出て、ホームに下りたところで再びレベル7.5で発動。またトイレへ、しかしまた混んでて(ry
なんか、起きたとき目の前にいた女の子が知り合いだった気がするけど気にしない。

2006年 09月 06日

Publish::XSLT

package Plagger::Plugin::Publish::XSLT;

use strict;
use base qw( Plagger::Plugin::Publish::Feed );

use XML::LibXML;
use XML::LibXSLT;
use File::Spec;

our $stylesheet;

sub register {
	my ($self, $context) = @_;

	$self->SUPER::register($context);

	$context->register_hook(
		$self,
		'publish.feed' => \&publish_feed,
		'plugin.init'  => \&plugin_init,
	);
}

sub plugin_init {
	my ($self, $context, $args) = @_;

	my $xslt   = XML::LibXSLT->new();
	$context->log(debug => "loading " . $self->conf->{xsl} . " as StyleSheet");
	$stylesheet = $xslt->parse_stylesheet_file($self->conf->{xsl});
}

sub publish_feed {
	my ($self, $context, $args) = @_;

	$context->log(info => "XSLT processing Start..");
	my $f = $args->{feed};
	my $filepath = File::Spec->catfile($self->conf->{dir}, $self->gen_filename($f));

	my $parser = XML::LibXML->new();

	$context->log(debug => "loading $filepath as source XML");
	my $source = $parser->parse_file($filepath);

	my $result = $stylesheet->output_string( 
		$stylesheet->transform($source)
	);
	
	my $ext = $self->conf->{extension};
	$filepath =~ s/\..+?$/.$ext/;
	$context->log(info => "save feed for " . $f->link . " to $filepath");

	utf8::decode($result) unless utf8::is_utf8($result);
	open my $output, ">:utf8", $filepath or $context->error("$filepath: $!");
	print $output $result;
	close $output;
}

1;
  - module: Publish::XSLT
    config:
      format: Atom
      dir: /home/cho45/public_html/feeds/
      xsl: /home/cho45/test.xsl
      extension: html

とりあえずコピペと見よう見まねで Publish::XSLT だけ作ってみる。普通に TT で十分だからいらないなぁと思った。


継承でハマった。register_hook でフックを登録しているのだから、register で自分の分を登録して、SUPER で親クラスのを登録させないとだめだ。当たり前だ。

むしろ継承する意味あるんだろうか。load_plugin でいけるような。元の Feed も吐くから継承関係はいいといえばいいのかなぁ。そもそも元のフィードは吐くべきでない気がするけど

Gerry on the Shore

長かった。向ヶ丘遊園で初動・下北沢あたりからひどくなった。

mixi をRSSリーダーとして使う

Plagger でどっかに吐いてそれを自分のフィードに設定する。

CSS IE

a:hover 時にマージンだかなんだかが変わるバグでハマり中。全然わからない。手探りもいいとこだ

一通り margin. padding, border 変えたけどだめだ。

テスト機が重すぎて自動リロードがつかえない。fuck IE

全然関係ない要素がいっしょにズレんだよなぁ。しかも position absolute なのにズレる。どういうフローだ

Use of uninitialized value in subroutine entry at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/Socket.pm line 370.
Bad arg length for Socket::unpack_sockaddr_in, length is 0, should be 16 at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/Socket.pm line 370.
exit 107

Win IE のセキュリティ設定を高にして Fedora で動いてる Catalyst 叩くと50%ぐらいの再現率で落ちる。トライアンドエラーもままならないなぁ。ああああ

CGI 版で起動、と思いきや、CGI 動作の重さをあまく見てました。ぜんぜんレスポンス帰ってこない。

hatena.vim

& が正常がなぜか置換されないため増殖する。なんでだろう。ちゃんと置換してるっぽいのに。

:echo substitute('&', '&', '&', 'g')

が & のままだ。なんか特殊文字入ってるんだろうか

substitute('&', '&', '\&', 'g')

としないとだめらしい
:h sub-replace-special
& 単体だとマッチ文字列になるので、何も変わらないという理屈らしい

Publish::Diary SmartFeed::Diary

どうするのがいいかなぁ。SmartFeed::Diary は書いたけど、Publish をどうすればいいんだろう。ディレクトリ掘って保存するなら、Publish が頑張らないといけないだろうし、でもそこで XSLT もかましたい、とすると……
あー、プラグインで Publish のあとにさらに、Publish::Diary とか作って、保存済みの smartfeed_diary_\d{4}(_\d\d(_\d\d)?)? をリネームするやつを作ればいいのかな。やってみよう。