TOPに戻る
鬱るんです
躁鬱病のITエンジニア「はまー」が心と体の模様を記した雑記帳。 大手IT企業で心身ともにぼろぼろになり退職した後、ほそぼそと働いたり事業を立ち上げようとして頓挫したり、作業所に通ったり障害者雇用で働いたりと紆余曲折したが、今は無職な毎日。

カテゴリー:IT関連

今朝もつらかった。

起きるのがとてつもなくつらかった。

しんどい。しんどい。しんどい。体が動かない。動かない。動かない。

四つん這いになって、渾身の力を振り絞ってようやく起き上がることができた。頑張って支度をして会社へ行った。今日は行ったらなんとかなった。

昨日捕まえたしっぽはなかなか手強い。えっと、Webアプリを作っているのだが、ある特定の条件で不具合を起こす。そしてその原因を昨日突き止めたのだが、その解決方法がわからない。ブラウザに依存するのだ。サーバ側のプログラムでコントロールできるのだろうか。

ある特定の条件ではその機能は使えないことに関しては、仕様ということで逃げるとして、それならそれでアプリケーションレベルでエラー画面を出したいのに、IEではIEのエラーページが表示されるしFireFoxではボタンを押しても何も反応がなくなるし、Operaではブラウザがフリーズしてしまったりして、サーバ側ではコントロールできん。ポリシーとしてJavsScriptをいっさい使わずに作っているのだが、やはりブラウザ側でのコントロールが必要か。もう少し悩むことにしよう。

その他に今日はユーザのサーバが外部から不正アクセスを受けたり、ネットワーク機器をリプレースするためのアナウンスの文章を英語で考えたりして、なんだか疲れた。いつもより早く帰ってきたが、なんか疲労困憊。今週はあと2日。今週を乗り切ったら来週には祝日がある。なんとか頑張ろう。それにしても、この寒さは早くなんとかしてほしい。寒いよ~。

いかん。文字化けだけでなく、画面が真っ白になってしてしまった。

今日も帰りが遅くなってしまった理由の一つなのだが、最新のサーバ環境でアプリが動かないのである。Catalystのアプリが動かない。どうやら Catalystのバージョンだけでなく、Perl自体のバージョンが関係しているらしい。どうにもこうにも、UTF-8の扱いがうまくいかない。いや、これは開発機のバージョンが古かったというわけでなく、先日「これは便利」と思って使ったモジュールが悪さをしているような感じがする。

そのモジュールとは、Catalyst::Plugin::FillInForm::ForceUTF8というものである。HTML::FillInForm という便利なモジュールをCatalystのPluginにしたCatalyst::Plugin::FillInFormを、更にUTF-8対応させたモジュールである。こいつは、FormValidatorとセットで使うのだが、その機能とは、まずこいつをuseしておき、CatalystのRootコントローラのEndアクションの中でViewをレンダリングした後に、おまじないを書いておく、という使い方をする。(レンダリングした後に、というのが少し不思議)

そしてその機能とは、フォームから受け取った値をFormValidatorでバリデーションすると、エラーがあってもう一度入力フォームを表示させたときに、inputタグの中に明示的にvalueをセットしなくても、前の画面の値を自動的にセットしてくれる、という便利なものである。これを使う前はTT(Template Toolkit)の機能を利用して、動的に一つずつ埋め込んでいたのだ。

本番機と同じ環境でアプリを動かしたら文字化けしまくって、調べたらPerlの5.8からはUTF-8を内部的に使うようになっていて、その関係でいろいろ調べているうちに偶然見つけて、こりゃ便利と思って使ったのがこのモジュールである。しかし、こいつを使い出したら文字化けするのではなく、画面が真白で表示されなくなった。サーバがエラーを吐いている。「Wide character が云々」と、Catalyst::Engine の中で落ちているのだ。レンダリングに失敗している。”ForceUTF8″という名前なのに、なぜだ?

まあ、元のやり方に戻せば解決するとは思っているのだが、なんか悔しい。なんかいい方法ないかな。こいつを更に継承したクラスでも作るか。とかなんとか今また調べていたら、新たな情報を発見。どうやらこのForceUTF8版は古いようだ。今はPerl自体がUTF-8対応しているので、Catalyst::Plugin::Unicodeをuseして、Catalyst::Plugin::FillInFormを使えばいいらしい。う~ん、今ただちに試してみたいけど、続きはまた明日。

ようやく機能的にはほぼ完成して、あとはエラー時のログをファイルに出力するコーディングを入れようとしていた矢先。

開発は FreeBSD7.2 で行っていた。しばらく portupgrade もしていない共用マシンであった。私のローカルな環境はは Ubuntu 仕様になっていて、裏には FreeBSD6.4 という古いものがデュアルで入っていた。OS のバージョンを上げるのがめんどくさくて、FreeBSD で開発するときは共用サーバを使っていた。

それはそれとして、本番環境ではこのアプリ専用のサーバが用意される。それには FreeBSD8.0 を入れる予定なので、えいやっと自分のローカル環境を FreeBSD8.0 にあげて、最新版のモジュールをがしがしと ports やら CPAN で入れて、アプリを起動しようとすると、

動かん。

私が開発しているプラットフォームである Catalyst(MVCモデルの Perl のフレームワーク)のエンジンが昨年に全面的に修正され、MOOSEベースとなって、その影響があちこちにあるらしい。今後は Plugin をできるだけ使わない方向で Catalyst の開発は進めて行くべきである、とメインのデベロッパーの著書にも書いてある。安易に Plugin を作ると、名前空間が同一なのでメソッド名がコンフリクトを起こしたりするからだそうだ。

んでもって、最初のエラーはいきなり「画面が真っ白」。簡易サーバのログを見ると、レンダリングのところで wide character がどうたらこうたら、と書いてある。どうやらマルチバイト文字関連で引っかかっているようだ。

ググると出てくる出てくる。MOOSEベースになって、というよりマルチバイト文字の扱いがいろいろ変わってしまっているようだ。UTF-8を使うときには、いろいろと作法が必要になった。メモがわりにここに書いておこう。

・Catalyst::Plugin::Unicode を追加
・Configに ForceUTF8 を設定
・View を Catalyst::View:TT から Catalyst::View::TT::ForceUTF8 に変更

試行錯誤して、いろんなところが文字化けしているのが少しずつ正常に表示されるようになってきた。が、まだ一部文字化けがある。DBから取り出した、あるいはフォームから渡されたファイル名を含む文字列を flash で View に渡してレンダリングすると、ファイル名の部分だけ文字化けする。なんでだ?普通に stash に入れて渡すと正常に表示されるのに。

続きはまた明日。

昨日の夜にPCに向かっているときに、つけっ放しだったテレビでなんだかおもしろそうなことをやっていたので、ちょっとだけ見てみた。ダウンタウンが司会の新番組だった。世の中のさまざまな「これはあかんやろ」というのを見つけてきて、「あかん」か「あかんくない」というのを判定するという番組だった。

それで、私がちょうど見たのがビビる大木がプレゼンしていた「Google検索のキーワード予測機能」。Googleで検索していると、検索するキーワードを入力している途中で、一文字入力するごとに「キーワード候補」が出てくる。そして、あるキーワードを入力してからスペースを入力すると、つまり次のキーワードを入力しようとした時点で、その候補がずらっと出てくる。これはそのキーワードと組み合わせて「よりたくさんの人によって」検索されたキーワードなのである。

それで、その「これはあかんやろ」というのだが、Googleで「妻」と入力してスペースを押すとずらっと次のキーワード候補が出てくる。「妻」で検索しているのは、当然「夫」、つまりその旦那が多いだろう。それで、夫が妻に関する何を調べようとしているのか、だいたい傾向がわかる。

そして今度は逆に妻の方が夫に関する何を調べようとしているのか、つまり「夫」と入力して出てくる次の候補が・・・・・・。

あとは実際に自分で試していただきたい。検索結果は時々刻々と変わっているので、これを読んだ方が検索した時点では状況は変化しているかもしれないが。

ところで、「どうしよう」と入力した時点で「どうしようもない僕に天使が降りてきた」って推測変換候補がいちいち出てくるの、なんとかなんないかな、このGoogle日本語入力。いや、かなり便利ではあるのだが、ときどきなんだこりゃ?という変換候補が出てきて、何ですかこれ?というのを小一時間問い詰めたい。ああ、これも「こいち」で出てきたよ。

GoogleはDNSのサービスも始めたし、いったいどこまで情報を収集すれば気が済むのだろうか。DNSをやるということは、誰(どのIPアドレス)が、どこ(どのサイト)にアクセスしようとしているか、という情報を把握できる、ということである。それがどのように「活用」されるのか。損得抜きではやらないはずだ。何かの目論見があるはずなのだが、なんなんだろう。

Googleは世界中のありとあらゆる情報を収集するつもりなのだろうか。

今日は仕事納め。私が開発しているアプリの最後に残っていた機能の実装が終わった。これでほぼ機能については実装完了。残りはエラー時のログ出力をがしがし入れ込んでいくのみ。あとは身内(情シス内)で実際に使ってもらって評価してもらおう。せっかく内製化したのだ。「かゆいところに手が届く」アプリにしたい。

それにしてもウィルスの被害が絶えない。11月頃から猛威を振るっているGENOウィルス「Gumblar」の勢いが衰えず、次から次へと亜種がでてきて最新のウィルス定義ファイルでも検出できないこともある、というのは昼間に書いた。

とりあえず私の持っている情報を出しておこう。
うちの会社が契約しているセキュリティ監視業者が検知しているGumblarの99%は以下の IPアドレスに対して通信が行われているという。

67.212.81.67
67.215.237.98
67.215.238.194
67.215.246.34
91.215.156.74
91.215.156.75
91.215.156.76
94.76.250.73
94.229.65.174
193.104.12.20
195.24.76.250
210.51.166.228
216.45.48.66

今後も通信先のIPアドレスは変化する可能性があるが、現時点ではこれらのIPアドレス宛の通信をファイアウォールなどで遮断することで、根本対策を講じるまでの間のリスクを軽減することが可能だという。OSやセキュリティソフトのファイアウォール機能、あるいはルータの設定でこれらのIPアドレスとの通信を遮断することを強く推奨する次第である。

ところで、仕事納めは今日だが、今日は休みをとっている人が多いため、先週の金曜日に17時半からミーティングルームで納会をやった。私はサーバチームのM姉さんの向かいに座って、2時間半ほどみんなで盛り上がっていた。

そして今日、M姉さんは出勤予定だったのにお休みだった。そして昼過ぎに電話がかかってきて、事務の女の子がみんなに叫んだ。

「M姉さんインフルエンザだって!!!」

おおおおおおおおおお、ちょちょちょちょっと待ってよーーーー。インフルエンザって、え?何?新型?何?そこまでは聞いてないらしい。え~やばいじゃん。俺、思い切り濃厚接触者じゃない。うわ~ん、年末年始に発症したらどうしよう。あ、なんだ今の。「どうしよう」と入力した時点で「どうしようもない僕に天使が降りてきた」って変換候補が出たぞ。Google日本語入力の推測変換、怖すぎる。

それにしても、オンラインでもオフラインでもウィルスに怯えないといけないなんて。なんて恐ろしい年越しなんだ。