ささいな愚痴である。
俺がここ2年くらいやってきたテーマがあった。 昔からあるネットワークプロトコルをベースにしている。 しかしここへ来て、ある国際的な業界標準に取り込まれる検討も行われ 始めた進んだ技術でもある。温故知新。
この技術を、弊社の製品にインプリメントして、社内の技術大会で発表した。 対応アプリケーションも試作していっしょに展示した。 プアな組み込みCPUでもこんな速度が出るのかと、他の技術者には好評だった。
そこへ専務がやってきた。専務といっても研究所長であるから、組織的には 数千億円企業の実質ナンバー2である。この人が俺のデモを見た。しかし、 某社が最近出したアプリに外観が似ていたというだけで、ロクに説明する機会も与えられずに、多くの部長クラスの前でめった打ちにされた。 まさに俺サンドバック状態。「こんなことやっていてもしょうがない」 「こんなもの10年たっても普及しない」とも言われたな。
ヲイヲイ。その某社もワーキンググループのボードメンバーなんですけど? あなたがライバルだと思っている会社でさえ、自社のプロプラエタリな技術から、 標準に移行しようとしている。で、その標準が、既にウチの製品に実装されて、 あなたの目の前にあるんですよ?でも、こんなことは説明を許されなければ永遠に伝わることはないのだ......
これが約1ケ月前のできごと。以来仕事をやる気にならずにスイカに水やってるby加持さん。 正直、今すぐにでも転職したいが、俺のスキルと年齢では再就職先はありそうに もない。ので、出社して、窓際に座り、定時に帰っている。
しかしそろそろ座っているだけも飽きたので、これから本を読んでいこうかと。 今回はこれ→ 今すぐ使える!コーチング (PHPビジネス新書)(播摩 早苗)を読んでみた。以下まとめ。
((( ;゜д゜)))が付いている項目は自分がやっちまってる悪いことデス。
Windows+ActivePerlで、CGIがタイムアウトになってしまう らしいので、少し原因を調査して直してみた。
ダウンロード:webapi2_20110830.tar.gz
ついでに改行コードもWindows(CR+LF)にして、 シェルヘッダもC:/Perl/bin/perlに変更しておいた。
さすがに全く動かさないのもアレなので、 WindowsにApache2とActivePerlをインストールして、 sqlite0.plとsqlite2.plは検証してみた。 そしてWindowsのCGIが死ぬほど遅いことに気づいた。 sqlite0.plは、たった400件で30秒以上かかる。テストマシンはSempron1.6GHzだけど...遅すぎる。Linuxサーバだと0.9秒とかそんなもんなのに。
sqlite0.plのEPGデータをとってきて所定のハッシュに登録する ループがある。擬似コードで書くと、
while ($rcols = $sth->fetch()) { (カラムをリストに取り出す) (言語やタグの変換を行う) (検索条件で間引きをする) (ハッシュに入れる) }
こんな感じだが、SQLite3からデータを取り出す部分のsth->fetch()は一瞬で終わってしまい、(言語やタグの変換を行う)の部分がめちゃくちゃ時間を消費している。つまり SQLite3は白だ。
SQLの時刻文字列をPerlのDateTimeオブジェクトにするメソッドで、軽く気軽にカジュアルに、こう書いていた。
sub searchutil::sqlite3rev { my ($str) = @_; my $dt = DateTime->now( time_zone=>'local' ); if ($str =~ m!([\d]+)-([\d]+)-([\d]+)\s([\d]+):([\d]+):([\d]+)!) { $dt->set(year=>$1, month=>$2, day=>$3, hour=>$4, minute=>$5, second=>$6); } return $dt; }
........別におかしくないよなあ?と思ったら
なんぞこれ。ActivePerlのバグじゃないのか。それともWindowsは現在時刻とってくるのにこんなウェイトが必要だというのか!!! 結局最初に1つだけ作成して、clone()で複製を作るようにしました。
人生という冒険は続く(劇違)