by @nyarla

o2onを導入した

概要: P2P で 2ch の dat を共有する o2on を導入した。


将来的に 2ch ブラウザを乗り換えるときに、過去ログの移行であれやこれやと悩まないようにするために、 P2P で 2ch の dat を共有する o2on を導入した。

o2on っていうのはプロキシサーバとして動作する 2ch の dat 専用の P2P で、 これを使うと dat 落ちした過去ログとかを P2P ネットワークから引っ張ってきて閲覧可能にする事ができたり、 今まで溜め込んだ 2ch の dat を o2on にインデックスさせて、他の色んな 2ch ブラウザで dat を共有するみたいなことができる。

ちなみに o2on は P2P を動作させなくてもログを溜め込むことができるようなので、 単純に 2ch の dat 保存サーバとしても使うことができたりする。

で、今自分が使ってる 2ch ブラウザは謎氏版の bbs2chreader の α 版を使ってるんだけど、 これの開発が今止まっていて、なんか雲行きが怪しかったので、o2on 使ってログ移行の手間を無くそうとした次第。

んで今まで bbs2chreader で溜め込んだ 2ch の dat を o2on にインデックスさせるために、 以下のようなスクリプトを書いて一気に流し込んだ。

#!perl

use strict;
use warnings;

use Path::Class;
use File::Copy;

# get input dir and output dir
my $input   = shift @ARGV or die "Usage: $0 {b2r log-50 dir} {o2on dat dir}";
my $output  = shift @ARGV or die "Usage: $0 {b2r log-50 dir} {o2on dat dir}";
$input   = dir($input)->absolute->cleanup;
$output  = dir($output)->absolute->cleanup;

# host table
my %hosts  = (
'2ch'       => '2ch.net',
'bbspink'   => 'bbspink.com',
'machi'     => 'machibbs.com',
);

# move
for my $host ( sort keys %hosts ) {
if ( -d ( my $source = $input->subdir($host) ) ) {
for my $board ( $source->children ) {
next if ( ! $board->is_dir );
for my $dat ( $board->children ) {
next if ( $dat !~ m{\.dat$} );
my $prefix  = substr( $dat->basename, 0, 4 );
my $from    = $dat;
my $to      = $output->file( $hosts{$host}, $board->{'dirs'}-> [[-1]] , $prefix, $dat->basename );
$to->parent->mkpath( 0, 0766 );
print "$from\n=> $to\n";
copy( "$from", "$to" );
}
}
}
}

使いかたはスクリプトを保存して、

perl b2r2o2on.pl {bbs2chreaderのlog-50ディレクトリ} {o2onのdatディレクトリ}

で実行。ガーっと一気に o2on のログディレクトリに流し込みます。 で、流し込んだ後に o2on のデータベースを再構築。

ちなみにどうも 2ch の dat に含まれるノートントラップに反応する場合があるので、 その辺りの除外設定は先にしておいた方がよさげです、 自分の所は Avast!使ってたんだけど、なんだかかんだとやってたら駐在が落ちたという。

で、使ってみた感想。

今のところ、2ch の閲覧で特にかわった事はなし。P2P 使ってる時の転送量がちょっと気になるんだけど、 これはまあ NEGiES 使って帯域制限したので特に問題なさそう。 まあ帯域使うって言っても他の P2P よりかは帯域使わないっぽいので、帯域制限しなくても大丈夫そうだけど、 家は OCN なので一応帯域制限。あと必要ないときは P2P を切って使ってる。

まあこれで 2ch ブラウザを乗り換えるときログの移行で悩まなくてすむので、 それに関しては結構よさげ。あとお気に入りをどうするかという問題もあるけど、 これはスクリプトでごにょごにょすればなんとかなりそうな気がする。Perl 万歳!

とりあえず導入してもそう今までと変わらず。まあぼちぼちと溜め込んでいきますか。

#FIXME