2007年04月17日

重複ファイルの自動回避

 今日は、ファイル名変更君に新たな機能を追加しました。
 これは、以前から要望があり、今回また新たに要望が来たものでした。
 この要望は、少し考えるところがあり、ずっと見送っていた機能なのですが、
 今回の、ユーザー様のメールからヒントを貰い、実現する事が出来ました。
 その機能とは、タイトルにあるように、変更したファイル名が重複した場合、今まではエラーにしてログ出力していたのですが、ソフト側で自動でファイル名を変更し、重複しないようにする、というものです。
 何故今までそうしなかったかというと、折角設定してファイル名を変更するのに、重複するからといってソフト側で勝手に変更するのはどうかと思っていたからです。
 今回は、自動で回避するかどうかを設定出来るようにすることで、この問題を解決する事が出来ました。
 今までずっと悩んでいた機能なのですが、こんな簡単な方法に気付かなかったなんてと思い知らされました。
 やはり、色んな人の意見は貴重だなと改めて思いました。

 で、肝心の公開の方ですが、バージョンアップしたばかりなので、もうしばらく新たな要望やバグなどがないか様子を見てからにしたいと思っています。

ランキングへ  posted by 遠雷 at 01:31 | コメント(0) | パソコン・インターネット

2007年04月16日

解像度変更君バージョンアップ

 今日は解像度変更君をバージョンアップしました。
 今回は結構大幅に変更しました。
 リストコントロールを追加する事により、かなり柔軟に作業が出来るようになりました。
 WEBページもほぼ全面的に変更しました。
 今回は気合いを入れてやったので、結構あっさりと出来てしまいました。
 自分でも「やれば出来るじゃないか」と思ってしまうくらいです。

  いつもならベクターに差し替えメールを送り、更新作業が終わってからWEBで公開するのですが、今回は前バージョンに結構致命的なバグが見つかったので、すぐに公開しました。
 そのバグとは、ビックエンディアン方式でExif情報が書かれているファイルを変更しようとすると、ファイルサイズか2.5Gとか異常に大きくなるというとんでもないバグでした。
 原因は、ビックエンディアン方式で書かれているファィルは、プログラム内部ではリトルエンディアン方式で扱うため、変換しなければならないのですが、その変換部分へ処理がいかなくなっていました。
 Version 1.50 にしたとき間違った記述をしてしまっていたのが原因でした。

 ここで、ビックエンディアンとかリトルエンディアンとか何の事?と思う方が多いと思いますが、これは、変数などのバイト列の並び方のことで、小さい方から並んでいるかどうかです。
 少し難しい話になりますが、例を挙げると、整数を扱う変数は int型 と言って4バイトで構成されています。これが1のときビックエンディアンでは、0x00 0x00 0x00 0x01 と並んでいるのですが、リトルエンディアンでは、0x01 0x00 0x00 0x00 と並んでいます。
 なので、これを変換しないと、1なのに 16777216 というとんでもない数値になってしまうんですねー。
 これは普通の人にとっては何の事やらさっぱり解らないかも知れないですが、プログラムを書いていく上では必要な事なんですよ。

 という事で、今回は少し難しい話になりましたが、少しは勉強になりましたか?
 ついでに書くと、ビックエンディアン・リトルエンディアンとは、「ガリバー旅行記の卵の割り方が違う人」が語源らしいです。

ランキングへ  posted by 遠雷 at 01:37 | コメント(0) | パソコン・インターネット