コンピュータ

WAMP初挑戦

Windows+Apache+MySQL+PHPで作られているという社内(?)のシステムのUNIX系OSへの移行作業とその後のメンテを押し付けられ命じられたので中を覗いてみる。
PHPは使ったことがないんだがなー。
DBを軽く見てみると

  • テーブル数個のうち半分くらいしか使ってない
  • 何もかもコード化されていなくて,ユーザやグループをはじめとする名称がそのままキーになっている。
  • 一人のユーザに対応するグループが10個分用意されている。正規化されてない。
  • コンテンツを保持するひとつの項目にplain textとhtmlが混在していて判別のための項目はない。
  • たまに情報がDB内ではなく公開ディレクトリに無造作に置かれたテキストファイルに入ってる。
  • フィールド名の綴りがいろいろ間違っている。

PHPの方を見てみると

  • オブジェクト指向ではなく,別ファイルになっている関数群をまとめたものを require する形式。
  • 関数群をまとめたファイルというのが,ディレクトリ毎に同じ名前の別ファイルとして存在していて,同じ関数が定義してあるが中身が少しずつ違う。
  • 同じような手続きがあちこちにある。
  • 組み込み関数の呼び出し方がいろいろ間違っている。
  • ほとんどのデータを登録・修正・削除するインタフェースがない。
  • 入力値に対するチェックがない。
  • 単純に文字列連結でSQL文を作っている。
  • HTMLのエスケープはほとんどやってない。SQLに追加される文字列のエスケープはまったくやってない。
  • 使ってない(作りかけ)のファイルが多数。

など。
さて,どうやって捨てさせるか…。

POSTされる文字列のencoding問題

掲示板などをはじめ,フォームから日本語を入力してsubmitしてサーバ側で処理をさせるような処理を行う場合,大昔のWebブラウザは日本語化が無理矢理だったりした関係で,ブラウザによってPOSTされる文字列のencodingがまちまちだった。このため,多くのブラウザに対応するとなると,受け取る側は自動判定をはじめ小技がいろいろ必要だった。
例えば任意の文字列のEUC-JP/Shift_JISの自動判別を完全に行うことは不可能である。ここでhiddenで適当な文字列を埋め込んで,その文字列を使ってencodingを調べるといった方法もあったが,hiddenと通常の入力フォームでそれぞれ違うencodingで送るブラウザもあったり。User-Agentを見て判定の優先順位を変えるとか涙ぐましい努力をしているものもあったが,新しいブラウザがまた違うパターンだったりしてぶち壊しだったり。
最近のWebブラウザだとだいたいフォームのHTMLのcharsetと同じものを用いるので,下手に自動判定等はしない方がいいようである。
ところで,最近のWebブラウザは英語や日本語以外の多言語を取り扱うことができる。EUC-JPで書かれたHTMLのフォームにEUC-JPにはない(ASCIIにもJISX0208にもない)文字を書くとどうなるか。

それPla

某大学情報系学部・卒業研究発表会想定ツッコミ
「~~という背景で~~を目的とした~~システムを構築しました」
「それPlaggerでできるよ」

disklabelの罠

NetBSD/amd64 3.0.1 (でなくても起こるけど) をいじってたときの話。

# disklabel sd1
disklabel: Can't read master boot record 0: Undefined error: 0
disklabel: ioctl DIOCGDINFO: Inappropriate ioctl for device

というエラーが出まくって,あれこれやっても直らない。
まあ元々初期化したいディスクだったので大胆にddで先頭をまっさらにしてfdiskして…というのもうまくいかない。
ふと,sd1 でなくて /dev/rsd1d を指定したら動いたり。
変だなあと思って ktrace で調べると,たまたまそこに sd1 というファイル(ゴミ)があって,それを開いて使おうとしていたらしい。
どうやら,fdisk も disklabel もディスク名を “sd1″ と指定したら,”sd1”, “sd1d”, ”/dev/rsd1″, “/dev/rsd1d” の順に探すようなのだが,マニュアルとかに書いてないよなあ…。

ThinkPad X60s バッテリ回収 その後

新しいバッテリが届いた。
差出人がIBMでもLenovoでもなくて,最初は一体何が届いたのかと思った。
中身はバッテリと説明と返送用の配達票。
古いバッテリは一ヶ月以内に返さないと部品代請求されるらしい。:]

MS Office

ざっくり文章書くだけなら便利だが,いろいろ細かい作業をしてると困ったことになりがちな MS Office (2003)。
今困ってること:

  • 再描画しまくって止まらなくなる。(Visioで描いた図をWordやPowerPointに貼ってるとなる?)
  • 何かの拍子に表の中の文字の太字と太字にしてない部分が逆転する。(Word)
  • 他のアプリケーションでコピーとかペーストができなくなることがある。(Office関係終了すると治る)
  • コピーとかペーストが一発でできない。Ctrl-Cとかを連打するとコピーできる。
  • 行末を編集すると行全体の書式が勝手に変わる。(Word, 仕様?)
  • 別のPCで開くと改ページの位置が変わってる。(Word)
  • 削除したもの(挿入した改ページなど)が編集している間に勝手に復活する。(Word)

ThinkPad X60s バッテリ回収 (2)

サポートに電話した。
自動案内で,対象かどうかはWebで確認できるとかURLは~とかいう案内をきかされたあと,別の番号に電話するように言われる。
別の番号に電話すると,自動案内で,対象かどうかはWebで確認できるとかURLは~とかいう案内をきかされたあと,やっと人が応対に出る。
本体のシリアル番号やバッテリのバーコードの番号,送り先等を聴かれる。
こんなのこそWebでやりゃいいんじゃないかと思いつつも普通に答える。
結局,
・ワールドワイドで在庫がないので4週間待ち
・安全のためACで使ってください
だそうな。
ちなみにうちのはX60sの大容量バッテリ。

ThinkPad X60s バッテリ回収

http://www-06.ibm.com/jp/domino04/pc/support/Sylphd01.nsf/jtechinfo/ESUP-NEWS060818

レノボのバッテリー・パックはリコール対象となっている他社製品とは設計が異なり、また充放電の方式も異なります。ソニー社から提供された情報も含め、リコールされているバッテリーの障害はレノボ製ノートブック PC には該当しない要因によるものと判断しております。これはバッテリーパックの電気・機構設計、および充放電方式が異なるからです。

とかいってたのが、
http://download.boulder.ibm.com/ibmdl/pub/pc/pccbbs/mobiles/batteryrecall_ja.html

レノボと IBM は、米国の消費者製品安全委員会(Consumer Product Safety Commission)と協力して、ソニー製リチウムイオン・バッテリーの自主回収を行い、バッテリーの無償交換を行います。該当のソニー製バッテリーは、稀に過熱することがあります。レノボは、お客様がお持ちの自主回収対象の全バッテリーを無償交換いたします。

…ってことになったらしい。
確かうちのもソニー製だったよなあ,と思いながらフォームに番号入力すると,
lenovo_bat1.png
なんか変だねーと思ってよく見ると,一部の数字が全角だった。
というかエラーにしてくれよ。
直して入力すると,
lenovo_bat2.png
一安心?
でも,何か嫌な予感がするので,念のため「自動ソリューション」の方も試してみると,
lenovo_bat3.png
予感的中。
lenovo_bat4.jpg
右から3文字目,O(オー)じゃなくて0(零)らしい…。
で,電話ですか。
めんどくさいのう。
つづく

ThinkPad X22 その後の後

酷使すると熱問題があることが判明 orz
piixide か wd がエラー吐きまくって何もできなくなる。
冷やすと治る。
廃熱ファンがヘタってきてるのかな。
一応熱風吹き出てきてはいるんだけど。