トップ «前の日記(2006-03-14) 最新 次の日記(2006-03-20)» 編集

Public Diary

For antenna, use RSS(RDF) or LIRS.


2006-03-15

[プログラミング] アルバムCGI

業務連絡。

写真アルバムcgiのツッコミ部分、tDiaryほどに精緻なデータをとる必要もあるまい、と思うのでよくありがちな簡易CSV形式にすることに。エンコード部分のソースは次のような感じになりました:

# 一つのツッコミを一行にまとめる
$message = join_encode($date, $ip_addr, $name, $email, $body);

# すべてのツッコミをまとめる
#    (投稿済みのツッコミ: @all_com)
$all_comments = join_encode(@all_com, $message);

# ファイル名、撮影者コメント、ツッコミをまとめる。
#    ($seen: 表示された回数, $responses: ツッコミの数)
$file_info = join_encode($filename, $original_comment, $seen, $responses, $all_ comments);

    :

sub join_encode
{
   my @args = @_;
   for (my $i=0; $i<scalar(@args); $i++) {
      $args[$i] =~ s/([,\x0a\x0d\t%])/'%'.unpack('H2',$1)/eg;
   }
   return join(',', @args);
}

sub split_decode
{
   my @args = split(',', $_[0]);
   for (my $i=0; $i<scalar(@args); $i++) {
      $args[$i] =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack('H2',$1)/eg;
   {
   return @args;
}

まぁ、考え方としては、配列の配列の配列をテキスト表現にした、といったところでしょうか。perlであんまりネストした構造を持つのは好きじゃないんですが、まぁこの程度の単純な構造ならまぁありかなと。ただ、いちいちパースするのは面倒なんで、記事の数とかはあらかじめ独立させちゃっています。

あ、そういえば rrdtool なんてものもあったなぁ…。数しか扱えない(?)のはともかく、データはどんな風に保存してるんだっけ。

本日のツッコミ(全2件) [ツッコミを入れる]
fjsg (2006-03-21 02:51)

rrdtoolは,ぶっちゃけていうとリングバッファで保存してるよ.<br># 何保存したいのか,よくわかんないけど...

wassy (2006-03-22 17:10)

んー、とりあえず相当に高速な掲示板エンジンが<br>ほしいので、頻繁なレコードの更新ができる(はずの)<br>rrdtoolってどうしてんのかなぁと思ったり。<br><br>でもまぁ、あれか、データベース系なのか…。<br>バッグエンドにDB使いたくないんですよね…。



1980|03|
1986|04|
1998|04|
2002|01|11|
2003|03|04|05|07|08|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|02|03|04|06|07|08|11|12|
2008|01|02|03|04|06|07|08|09|10|