トップ «前の日記(2005-01-27(Thu)) 最新 次の日記(2005-01-29(Sat))» 編集

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の未リリース修正点は、

  • 半角カナが混じったテキストをUTF-8,UTF-8Nで保存しようとすると、アドレスエラーが出る不具合を修正
  • 上書き禁止状態のファイルを開いている際に別の編集ウィンドウを開くと、そのウィンドウは上書き禁止状態になっていなかった不具合を修正
  • InyouCopy,InyouPasteマクロコマンドに、引用符を渡すことができるパラメータを追加
  • キャレットが最下行付近にある時、↓キーでキャレットを移動すると下スクロールするが、別のキーと連続して↓キーを押したとき、2行分下スクロールしてしまう不具合を修正
  • サブウィンドウを画面分割すると、改行コードがCR+LFに変わってしまう不具合を修正
  • マルチモニタ環境で、新しいエディタが起動されるときは、古いエディタと同じモニタ上に表示するように変更
  • 起動オプションに、-xを追加
  • 外部ファイルとのdiff実行時、外部ファイルを一旦SJISに変換してから比較するオプションを追加

とこのくらいある。そろそろ出さにゃまずいな。今週末か来週くらいにはなんとか。

[K2E]結局あれから...

追加で2時間もやってしまった。まずいんだが... まぁ、ただ働きは人に言えないくらいやっているわけだから、お互い様ということで。 えー、後追加で3つ。

  • 「マクロ用文字列記述基準」に、%CharCode%と%ReturnCode%を追加
  • SaveAs、SaveSelectedToFileマクロにおいて、文字コード、改行コードに-1を指定すれば、現在の文字コード・改行コードを保ったまま実行するように変更。また値を指定しないときは-1がデフォルトになるように変更
  • 選択範囲をファイルに保存で、文字コード指定機能が働かなかった不具合を修正

オープンソース化という話もあるが、コードは汚すぎてオープンソース化はしたくないし、オープンソースにしても、誰も直してくれないでしょ、きっと。TTBaseを見ていたらよくわかる。

結局誰か責任持つ人がいるんだよね。オープンソースを成功させるには、かなり注意深く計画しないとだめだし、そんな時間はありましぇん。

サポート終了と宣言してしまうのも一興かとも思います(笑)。

[JAZZ]Explorations 6日目 - しつこい

現状変わらず。何か耳に変化があったり、別のCDに変えたりしたら報告します。

大量消費社会に...

幻滅した夜。

まぁ、忙しいのが悪いのだなぁ。この国で、物を大切にして工夫をすることにどん欲なのは、エンジニアと主婦くらいなのか。

本日のツッコミ(全1件) [ツッコミを入れる]
(2005-01-28(Fri) 11:44)

不具合修正:こまめにリリースしていただいてありがたく思っていますm(__)m オープンソースなら、「ソース公開しているから勝手に修正して」と言えるかもしれませんけどね。それがオープンソースの長所であり、短所でもあると理解しています。


1965|09|
2002|09|10|11|12|
2003|01|02|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|03|04|05|08|
2014|01|02|03|04|05|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|11|
2017|01|03|05|06|07|08|10|11|12|
2018|01|02|03|04|05|08|09|10|12|
2020|01|07|




2005年
1月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
//
自己紹介
自己紹介
広告
計るだけダイエット
つっこみリスト
TrackBacks
日記仲間
/ / /
最近の日記