K2さんの雑記
2005-01-28(Fri) [長年日記]■ [K2E]外部ファイルとのDIFF実行時の文字コード変換掲示板の方で不具合報告があったので、修正。 外部ファイルとのDIFF実行時、文字コードのことは考えず、そのまま内部バッファをSJISでテンポラリファイルに出力し、相手先のファイルと比較実行していた。当然、相手先ファイルの文字コードがSJISでない場合は、期待した結果が得られない。 外部ファイルとの比較はあまり使われないので、今まで見過ごされていたのだと思う。 文字コードの問題は結構ややこしく、K2Editorで例えばJISを読んで、再度JISで保存すると、必ずしももともとのJISのコードと一致したファイルを出力できるわけではない場合がある。そんなことを考えると、相手先をSJIS-CRLFに変換して比較した方が、コンテンツの比較としては有用だと考え、その仕様で修正。 幸い、GREPルーチンに使用していた、文字コード変換機能付きTStringListクラス(TJConvStringList)を作成していたので、それを流用。ここまでは比較的楽ちんだった。 TStringListということでいやーな予感はしていたのだが、試しに最後が改行で終わらないファイルを使って実験してみると、案の定最後の行だけが一致しない。TStringListは、最後の行が改行でも改行じゃなくても、Streamへの出力時に最後に改行コードを付け加えてしまう弱点があるのだ。 仕方がないので、TJConvStringListに最後の改行を判定して出力する機能を追加した。まぁ、原理的には簡単で、LoadFromStreamとGetTextStrをOverrideし、LoadFromStream時に最後に改行コードがあるかどうかを判定し、それを保存しておく。GetTextStrで全体のstringを得るときに、その情報を使って最後に改行をつけないようにできるコードを追加する。 ちっと面倒なのは最後に改行コードがあるかどうかを調べる方法なのだが、これもByteTestを使って最後がmbSingleByteであることを調べれば一発で調べられる。この方法を知らないと、バグを生みやすいので注意。 ■ 不具合なら必ず直さないといけないのか?ソフトを作っていて、ある程度以上の不具合を直したら、それ以上の不具合修正は、もはやあまり意味のないもののような気もする。 間違いだと指摘されたら直してしまうのだが、例えば1万人がK2Editorを使用するとして、5年間の間に今回のバグを経験したのは、たぶん5本の指に数えられるくらいの人間だろう。そんな不具合を本当に直す必要があるのかどうか、ちょっと疑問なんだな〜。本当にそれがその人のために必要なら、たとえ一人のためでも直す覚悟はあるのだが、本当にそれが必要なのか、たまたま気づいたというレベルなのか、不具合報告を読んだだけではわからないのだよ。 私が1時間動けば、まぁ普通は5000円くらいのフィーの価値はある。今回の不具合を修正するのに5000円かかるとしたら、直してくれと要求するのだろうか。 例えば、ちょっとだけでもよいから、「私はこういう不具合で、こうこうこうで困っている。これが直れば、私は幸せになれるよー」と書いてくれれば、やる気はでるんだなー。 しかし、細かい不具合報告はやっぱり欲しい。上記のようなことを考えて、報告を出すのを躊躇されても困る。その辺がオンラインソフトをメンテナンスしていく上での難しいところだ。 ということで、ちょっとぶうたれてみたが、別に好きでやっていることで、ある程度つらいことも我慢する必要があるのはわかっているので、今のままでよい。でも、そーだなー、「面倒だからバグ直しません」と気持ちよく後ろめたくなく言えれば、もっと楽かもなー。 ■ [K2E]修正もかなり貯まってきた現在のところ、K2Editorの未リリース修正点は、
とこのくらいある。そろそろ出さにゃまずいな。今週末か来週くらいにはなんとか。 ■ [K2E]結局あれから...追加で2時間もやってしまった。まずいんだが... まぁ、ただ働きは人に言えないくらいやっているわけだから、お互い様ということで。 えー、後追加で3つ。
オープンソース化という話もあるが、コードは汚すぎてオープンソース化はしたくないし、オープンソースにしても、誰も直してくれないでしょ、きっと。TTBaseを見ていたらよくわかる。 結局誰か責任持つ人がいるんだよね。オープンソースを成功させるには、かなり注意深く計画しないとだめだし、そんな時間はありましぇん。 サポート終了と宣言してしまうのも一興かとも思います(笑)。 1965|09|
|
//
自己紹介
自己紹介
広告
計るだけダイエット
つっこみリスト
TrackBacks
日記仲間
な/
す/
ひ/
最近の日記
|
不具合修正:こまめにリリースしていただいてありがたく思っていますm(__)m オープンソースなら、「ソース公開しているから勝手に修正して」と言えるかもしれませんけどね。それがオープンソースの長所であり、短所でもあると理解しています。