y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

テスト・デバッグ・テスト・デバッグ・テスト・・・・・

いやぁ。テスト三昧である。某大手ソリューション会社との結合テストで、客先常駐なのである。(T_T;)
連日のテスト・デバッグ・テスト・デバッグ・・・・心身共に疲労のピークなのである。
それにしても、POPやSMTPという世界は魑魅魍魎の住む世界であることを実感。
一見RFCなどの規格として決まってるから、忠実にコーディングされていれば大丈夫と思いがち・・というか、完全に宗教のように信じていたのであるが、そこはオープンな世界の代物。WindowsUnixの違いや、ソフトウェアの実装の違いが結合テストでガンガン出てくるのである。

「はじめに"Web Kanzaki"を良く読んで勉強しておけば良かった」っていう内容かも(汗)

例えば、SMTPでMessage-IDというのがあるが、UnixLinuxで有名なsendmailでは、メールサーバーが親切にも付加してくれる(無ければ自分が付ける)、ところがM$のExchangeというメールサーバーでは、全く付けない。
RFCによれば、Message-IDはオプションであり、クライアントソフト(OutlookExpressなど)が付けるべきであるとのこと。Exchengeの実装は正しい(・・というか手抜き?)。ヘッダー情報としてFROMさえ付けないってのはいかがなものか?
また、POPの方では、qpopperなどUnix系のシステムとExchengeでは、の扱いが異なり、POP3コマンドが通らないという自体が発生したり、エスケープシーケンスが異なるため、この違いを吸収しないと見事に文字化けする。これまた規格を見ると、4種類のエスケープシーケンスが定義されているらしい。ビット長が異なったり、割り当てるコードが異なったり、やりたい放題である。(汗)
JISコードとエスケープシーケンス
日本語訳RFC1939(POP3)
ついでに調子に乗ってしまうと・・・
同じDB(今回の場合PowergreSQL)も全く同じセットアップをしても、日付時刻がイギリス時間で入っちゃったりするわけである。こっちはTimestamp型にして、DB任せのコーディングにしているところ、わざわざSQL文でJSTなどとオプションを設定してInsertしてやらないと、日本時間が入らないってのもいかがなものか?(これって当たり前のことなのかいな)

・・という具合に、実装任せの部分が意外と多く、ある環境では正常に動作するが、別の環境では未知の振る舞いをする・・というわけの分からなさ。

はぁ・・・納品後に何が出てくるか分からん(T_T;)