«前の日(06-03) 最新 次の日(06-05)» 追記

ぱぱネット(仮)


2009-06-04 別にそこまで車好きでもないんだが

_ [時事] なぜ日本人は”GMはトヨタに負けた”と言わないのか?

また釣りブログか・・・。C|Netは最近本当にどうしようもないな。

別にトヨタに負けたわけじゃないから、が答え

だろう。80年代からこっち日本メーカは 如何にアメリカ議会に睨まれないか という戦略で動いていたんだから。環境対応車の話とかは 後付けの要因 に過ぎない。むしろ日本メーカは米3大メーカと被らない領域で商売しようとしていた。にらまれないように現地工場を立ち上げた。それこそ涙ぐましい努力をしていたわけよ。

今回のGM破綻の一件でも、日本から見ると、全米自動車労組(UAW)がやたら傲慢にうつってたと思うけど、これも彼らが議会に対して絶大な影響力を誇るから、なのねん。

で、元々 「企業VS企業」というフェアな戦いではない のであるから、企業の勝ち負けを論ずるのは 前提がおかしい のである。

_ ちなみに・・・・

その点、DRAMのマイクロンとサムスンとエルピーダは、誰もが認める 真のチキンレース であり・・・これでエルピーダが生き残ったら「アメリカと韓国を倒した」と公言してもよかろう。言い換えると、アメリカのITをはじめとする新興勢力のロビー活動は、自動車軍需産業の比じゃないほど弱いってことだな。

まあDRAMの場合はサムスンが残る可能性が一番高いがな(国策企業のため)・・・逆にエルピーダの台湾勢との統合はうまくいかないに1票。


2010-06-04 TokyoTyrantのPerl API

_ [Linux][開発] 副作用ないとか書いたmgetが...

PerlからTokyoTyrantを使っているのですが、ときおり

Odd number of elements in hash assignment
 at /usr/share/perl5/TokyoTyrant.pm line 1397.

というワーニングが出ることに気づいた。 出ているところは昨日使い始めたばかりのmget関数。 使い方が間違ってるのかなーと思っていろいろやっていたのですが.... 以下サンプル。

#!/usr/bin/perl

# 別窓でttserver -port 10100 test.tctで起動しておく

use strict;
use TokyoTyrant;
use Data::Dumper;

my $pm = TokyoTyrant::RDBTBL->new();
$pm->open("localhost", 10100);
# 値に空値を含んだハッシュを作成
my $cols = {
    '1'=>'hoge',
    '2'=>'',
    '3'=>'piyo',
};
# 登録
$pm->put("123", $cols);
# getで取得,これはワーニングでない
my $rcols = $pm->get("123");
print "(1)" . Dumper($rcols);
# mgetで取得
my %rtable = ( "123"=>undef );
# ここでOdd number of elements in hash assignment
my $rcount = $pm->mget(\%rtable);
# データ自体は正しいように見える
print "(2)" . Dumper($rcols);
$pm->close();

mgetだけ空値が入れられない?

まさかこんな仕様ではなかろう。Perl module側のバグな気がする。 そこでTokyoTyrant.pmのsub mgetを読んでみると...

while(my ($pkey, $value) = each(%$recs)){
  $$recs{$pkey} = split(/\0/ , $value);

となっている。これはゼロ値を終端子としたバイナリプロトコルの一部なのかな....。 とりあえず改悪してみたけど、これでいいとは思えない。

while(my ($pkey, $value) = each(%$recs)){
  my @coll = split(/\0/ , $value);
  push(@coll, '') if (scalar @coll % 2 == 1);
  my %cols = @coll;
  $$recs{$pkey} = \%cols;

これ末尾だけ帳尻合わせしてるだけなんだけど、 データの途中でインデックスとバリューのアラインが狂うことはないのか というのがすごい気にかかる。

一応最新バージョンを使ってるつもりなんですが。

  • tokyocabinet-1.4.45.tar.gz
  • tokyocabinet-perl-1.33.tar.gz
  • tokyotyrant-1.1.40.tar.gz
  • tokyotyrant-perl-1.16.tar.gz

OSはLinux-2.6.32(Debian squeeze)です。

なんせ2000レコード読み出すと 2000行エラー出る ので ログがものすごい勢いで流れるのです。参った参った。

_ [Linux][開発] あれ?これやばくね?

TokyoTyrant.pmのmisc関数の配列プッシュしてる部分の直前にprintf。

printf STDERR "esiz:%d eref:%s\n", $esiz, $$eref;
push(@res, $$eref);

これで先ほどのテストスクリプトを実行すると...

esiz:1 eref:1
esiz:4 eref:hoge
esiz:1 eref:3
esiz:4 eref:piyo
esiz:1 eref:2
esiz:0 eref:  # ちゃんと送られている
(1)$VAR1 = {
    '1' => 'hoge',
    '3' => 'piyo',
    '2' => ''
};

しかしmget関数(規定クラスの方)をダンプしてみると....

printf STDERR "SIZ:%d VREF:[%s]%s\n", $vsiz, $$vref, unpack("H*", $$vref);
$recs->{$$kref} = $$vref;
SIZ:16 VREF:[1hoge3piyo2]3100686f67650033007069796f003200
Odd number of elements in hash assignment at
/usr/local/share/perl/5.10.0/TokyoTyrant.pm line 1382.
(2)$VAR1 = {
  '1' => 'hoge',
  '3' => 'piyo',
  '2' => ''
};

何が起きているのか整理すると....

  • '31'はインデックス'1'
  • 次の'00'はインデックス'1'の終端子
  • '686f6765'は値'hoge'
  • 次の'00'は値'hoge'の終端子
  • '33'はインデックス'3'
  • 次の'00'はインデックス'3'の終端子
  • '7069796f'は値'piyo'
  • 次の'00'は値'piyo'の終端子
  • '32'はインデックス'2'
  • 次の'00'はインデックス'2'の終端子
  • ないじゃん!!!

送られてNEEEEEEEEEE!!!

サーバ側じゃないのかこれ...と思って辿っていったらttserver.cのtcadbget()で既に16バイトで TCのtctdb.cのtctdbget()まで追うハメになっているでござる.... もしかしてTC/TTのテーブルデータベースってほとんどテストされてなくね? 仕様書に「空値は一切許さない」という記述も見つけられないし.....


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]
2007年
6月
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

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

訪問者数:(+2560143)