«前の日(08-23) 最新 次の日(08-25)» 追記

ぱぱネット(仮)


2006-08-24 いわゆるアンテナ

_ 更新状況の確認

某ぱぱんだぽーたるが全く更新されないのに業を煮やし、RSSのアンテナRNAをインストールした。しかしこれはこれで壮絶に重いな。ローカルファイルを参照できないのも難点だ。XML::RSSで簡単にサンプルを開発してみたが、テキスト解析だけならこんなに重くはない。rna.cgi一体何やってんだろう。

_ Muvo^2

がーん。クリエイティブの携帯ミュージックプレイヤーMuvo^2が完全に壊れた。充電しても電源すらはいらない。まあもういい加減寿命かねえ。しかし、ここで流行のiPod買うのは何か電機メーカー社員として敗北のような気がするのはナゼダロウ。欲望には忠実にあらねば!(マテ)


2007-08-24 これが逆境か!

_ ただいま発熱38.7度

明日は朝一で店頭応援。そこから12時間立ちんぼ。

これなんて逆境?

本日のツッコミ(全1件) [ツッコミを入れる]

_ 職業。本屋 [『弱り目に祟り目』かな…]


2009-08-24 廉価BDフルスペックプレイヤーきたる

_ もちろん....

これより安いBDプレイヤーもある。しかしPS3のゲーム遊べるのは大きいだろう。

XBox360と違って HDMI端子標準型 (ケーブル添付はされないが) なのは大きい。 あきばおーとか上海問屋とかで安く売ってるものでも十分綺麗に映るだろう。 凝りたい人は高いケーブルを買えば良い。

完璧ではないが FlashPlayerも動くブラウザ。 リモコンでタブのように サーフェイス間を移動する操作感は、メモリが少ないにせよ快適である。

リビングに置くデバイスという意味では、PCより遥かに設置が 楽なことは疑いない。 今ならこれが28481円!

_ まあそれでも

オタクには「できることはPCの方が遥かに多い」とかDisられちゃうわけだ。


2011-08-24 ワンセグ野郎Linuxその4

_ [ワンセグ野郎][Linux] TokyoTyrantとEPGサーバ

TokyoTyrantで開発し終わってしまったものの、 やはりLinuxでしか動かないのはアレだし、 コンシューマでは性能面での有利はほとんどないし、 SQLite3かせめてMySQLで作り直そうか.....とか 考えていたらだいぶ間が空いてしまった。

面倒くさいのでTokyoTyrantで作る方法を公開する....が、 なんと Debian Squeezeは未だにまともなTC/TTをaptでインスコする方法がない ことが判明し、さらにやる気がなくなるのです。

_ [ワンセグ野郎][Linux] ソースから全てインストール

FAL Labsから以下の4つを落としてくる。 バージョン進んでたらごめんね。

  • tokyocabinet-1.4.47.tar.gz
  • tokyocabinet-perl-1.34.tar.gz
  • tokyotyrant-1.1.41.tar.gz
  • tokyotyrant-perl-1.16.tar.gz

インストールは基本的にconfigure; make installでイナフ。

tar xvzf tokyocabinet-1.4.47.tar.gz
cd tokyocabinet-1.4.47
./configure
make install
cd ..

tar xvzf tokyocabinet-perl-1.34.tar.gz
cd tokyocabinet-perl-1.34
perl Makefile.PL
make install
cd ..

tar xvzf tokyotyrant-1.1.41.tar.gz
cd tokyotyrant-1.1.41
./configure
make install
cd ..

tar xvzf tokyotyrant-perl-1.16.tar.gz
cd tokyotyrant-perl-1.16
perl Makefile.PL
make install
cd ..

これで/usr/local/binにttserver, tcrmgr, tctmgrあたりが入っていればとりあえず今後の動作に問題はない、はず。Perlスクリプトの動作確認として、

---------a.pl---------
#!/usr/bin/perl
use TokyoCabinet;
use TokyoTyrant;
-----------------------

こんなファイルをエディタで作ってperl a.plしておいてください。 エラーが出なければモジュールもインストールされています(原始的)。

_ [ワンセグ野郎][Linux] Perlでラッパーを書く

今回はTokyoTyrantで2つのサーバを動かす。

  1. EPG Server(常に新しいEPGデータを蓄積、キャッシュ的)
  2. EPG2 Server(番組のファイルロック機構、永続的)

二つのサーバの性格は異なる。前者は頻繁にEPGデータを更新し続ける (ぶっちゃけ消えても良いし作り直すことも簡単)だが、 後者はある種録画リストのようなものなので消えるととっておきたかった 番組も全て消える。これは困る。うっかり消さないようにしたい。

実はTokyoTyrantはMySQLでいうところのmy.cnfを持たないので、 全部ttserverというコマンドに引数を指定することで動かす。 そしてその パラメータはけっこう多い 上に、Perlからの アクセスも完全に合わせておかなければならない。 さらに認証がないしテーブル名もないし型もないので、うっかり ポート番号を間違えてvanishコマンドを発行したりすると全部消える(笑)

また、MySQLのように同一のINDEXを持ったDBを複製するのにも、 既存のDBからmysqldumpでdumpして編集したものをWebページに 貼ったりできないので困る。

ここは....原始的でもいいから何らかのラッパーが必要である。

_ [ワンセグ野郎][Linux] postconf.pl

そこでサーバのパラメータ定義とテーブルの定義を、1つのPerlファイルに書いて、Perlスクリプト側もttserverを起動するためのrunシェルスクリプトとも共用する、というしくみにした。ファイルは全部Perlスクリプトとして開発。

  • postconf.pl (サーバパラメータ、テーブル型、インデックスを張るカラムリスト)
  • post2conf.pl (サポート関数群)
  • param.pl (runスクリプト内で使われるヘルパー)

定義ファイルのpostconf.plのサーバ起動部分のパラメータの例。 後でワンセグ野郎Linuxパッケージとして配布するので保存したりする必要はないです。

$postconf::table = {
    'epg'=>{
        'tabletype'=>'t',
        'coltype'=>'epg',
        'host'=>'localhost',
        'port'=>1993,
        'maxcon'=>128,
        'thnum'=>4,
        'timeout'=>120,
        'opts'=>'#dfunit=4#xmsiz=0m',
        'cleantype'=>'normal',
    },
    'epg2'=>{
        'tabletype'=>'t',
        'coltype'=>'epg',
        'host'=>'localhost',
        'port'=>2012,
(省略)

パラメータ沢山あるけど、これらはttserverの起動に必要なものです。 これをdaemontoolsのrunスクリプト、つまり実際のttserver引数に 渡すのに、param.plというコマンドを作りました。 /mnt/epgserver/runの中身は、

(前略)
port=`perl $DIR/param.pl $tablename port`
timeout=`perl $DIR/param.pl $tablename timeout`
(こんな風にパラメータを取り出しておいて)
     if [ -n "$maxcon" ] ; then
      ulimit -n "$maxcon" >/dev/null 2>&1
    fi
    cmd="$cmd -kl -port $port -pid $pidfile"
    if [ -n "$thnum" ] ; then
      cmd="$cmd -thnum $thnum"
    fi
    (実際のttserverに渡す引数列を作成する)

ようになっている。 これでrunスクリプト自体はtablenameの部分を"epg", "epg2"とか 変えるだけで完全に共用化できるわけ。

_ [ワンセグ野郎][Linux] post2conf.pl

TokyoTyrantはKVSの中では珍しくテーブルデータベースをサポートしている(後継のKyotoTycoonからは消えてしまった)。しかしインデックスを張る部分はけっこうバカ。Perlからはsetindexというメソッドで実行できるのだが 既にインデックスがあっても再構築する という謎な動作をしてしまう。当然動作中に誤って実行すると糞遅い。

マニュアルやソースをみても回避する手段がわからなかったので、 仕方なく実際にttserverが作るインデックスファイルの存在をチェックして、足りないインデックスだけ生成するようなラッパー関数open_tyrant()を開発した。 もちろんテーブル名だけ指定すれば、ポート番号などはpostconf.plから 勝手に引いてくるのでらくちんである。こんな感じ。

my ($pe, $pec, undef, undef) = &post2conf::open_tyrant("epg:");

$peは、raw codeでいうところの「TokyoTyrant::RDBTBL->new(); open();」した後のオブジェクトである。

もう一つ問題が。KVSではカラム名一覧がとれない。そりゃそうだ...どの行にも好きなだけカラム名を足せるのだから(凸凹テーブル)。しかし、SQLライクに使おうとすると大変不便だし 人間は間違える動物 であるから、誤字タイプミスのみならず、テーブルAにはあるカラムがテーブルBにはなかった、なんてミスを減らすために何らかの方法でカラム一覧が欲しいわけです。serviceidとserivceidなんて間違いわからねえよ..........

そこで、postconf.plの定義に、

$postconf::coltable = {
   'epg'=>{
       'phych'=>102, 'ptype'=>102,
       'sectionid'=>103,
       'networkid'=>104,
       'serviceid'=>105,
       'eventid'=>106,
       'starttime'=>107,
   (省略)

というカラムハッシュを作成しておき、open_tyrantの返ってくる リストの2つめ$pecに返ってくるようにした。 検索条件を指定する場合は、

 $qry->addcond($pec->{'stime'}, $qry->QCNUMGT, $stime);

みたいにして使うわけです。わかりやすい。ついでに言うと数値変換しているので(ちょっぴり)空間効率も良くなるはずです。

_ [雑記] この連載長くなる予感

ワンセグ野郎Linuxは、ttserver群を1つのRDBMSライクに 使うためのPerlラッパーを含んでいるよ、というお話でした。

だめだ全然終る気配がないな。

本日のツッコミ(全1件) [ツッコミを入れる]

_ diablo 3 [People are yours alright! . We at the very least should ge..]


2001|04|
2006|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|03|04|05|10|

[BANNER]
このサーバーをもう12年も維持しているかと思うとめまいがしますよ。
ツッコミ機能は、ハンドル名が完全日本語じゃないと登録できません。
また、本文にURLが含まれていても登録できません。
いずれもSPAM対策です。
[Panda Papanda]
2006年
8月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

[Papanda]  [Kuma]  [Tomorin]  [Iron]  [Eiza]  [Dokkin]  [Honya]  [Zyou]  [Tsuyo]  [Bike]  [KoeBBS]  [Chukei]  [portal]  [tvmatome]  [KaoPaku] 

訪問者数:(11777+2560143)