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

カテゴリー:IT関連

あいかわらずコンピュータウィルス「ガンブラー(Gumblar、別名GENOウイルス)」と亜種のウイルスによる被害が絶えないらしい。

とりあえず去年の12月に私が書いた日記で列挙してある「要注意IPアドレス」を、現時点で私が持っている最新の情報に更新しておこう。

67.212.65.97
67.212.81.67
67.215.237.98
67.215.238.194
67.215.246.34
77.92.67.92
83.143.164.18
83.172.139.35
85.117.156.252
85.17.231.80
85.17.90.210
85.17.90.218
90.156.144.109
91.121.21.162
91.213.121.160
91.215.156.74
91.215.156.75
91.215.156.76
91.215.156.77
94.229.65.174
94.23.199.98
94.76.250.73
95.211.99.72
95.211.99.74
115.100.250.112
195.24.76.250
210.51.166.228
212.117.185.18
213.180.79.146
216.45.48.66
217.174.241.205
193.104.12.20

これを読んでいる人は、ただちにこれらのIPアドレスへの通信は遮断するようにルータか何かを設定してほしい。そしてできればブラウザのJavaScriptもAdobe ReaderのJavaScriptもオフにしてほしい。私はブラウザ(最近はPale Moonを使っている)に「No Script」というプラグインを入れて、デフォルトではJavaScriptをオフにしている。どうしても必要そうなときはとりあえずソースを見て判断する。

って言っても、そこまでできないか、普通。でも、やってほしいんだけどなあ。

なんか今日はしんどかった。寒いのも影響があるのか。

妻の体調がよくないので、お昼ごはんは私がコンビニに行って買ってきた。私もあまり調子はよくないが、天気がよいのでコンビニに行くくらいはできた。この病気は天気にもかなり左右される。

とても寒くて寒くて、今日は7枚も服を着込んでいたのだが、コンビニに行って帰ってきたら、暑い暑い。3枚で大丈夫になった。でも体を冷やさないように4枚着ていた。そしてそのまま夜まで寒さを感じることなしに過ごすことができた。どうやら自分で体を動かすことによって自分の体を温めると、その温かさは持続するようだ。

それにしてもこの部屋は寒い。エアコンの吹き出し口のすぐ真下にタンスがあるから、暖房効率が悪いことはわかっているのだが、狭い部屋である故、如何ともしがたい。

夜、録画しておいたドラマ「ブラッディ・マンデイ」を観る。「ハッカー」なる人が出てくるドラマなのだが、短時間のうちにロシアの人工衛星にハッキングしてGPSを誤動作させたり、ガス会社のシステムにハッキングしてガスの圧力をコントロールしたりだとか、「いくらなんでも、んなあほな」みたいな突っ込みどころ満載なところを私は楽しんでいる。そして番組の最後にはかならずこう画面に表示される。

「ハッキングは不正アクセス禁止法によって法律で禁止されています。真似しないでください」

ロシアの人工衛星にハッキング、私には到底真似できません。

ちなみに「ハッカー」ではなく、それは「クラッカー」だと私は主張したい人の一人である。本来、「ハッカー」というのは誉め言葉なんだけどなあ。

今朝もつらかった。

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

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

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

昨日捕まえたしっぽはなかなか手強い。えっと、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 に入れて渡すと正常に表示されるのに。

続きはまた明日。