工房日記(2003/03〜)
工房日記(2003/03〜)
03/04/24
FNCVT
パス長がやたら長いものを変換した際にちょっとした不具合があったので、急遽修正することに。ついでに普通には有り得ないケースにも対応して、更についでにヘルプも見直ししてみたりして、結構苦労した感じもするがやっと作業完了。これでやっと休める・・・かなぁ。
03/04/22
FNCVT
ちょこちょこっとした調整をして、とりあえず3.4aとして完成ということにしてみた。ここのところ開発続きだったので、しばらくお休みしようかなと思う今日この頃。
03/04/21
FNCVT
Exif情報を取得してはいるものの、日時しか使わないのももったいないよなぁ・・・ということで、他の情報も使えるようにすることにした。ID3情報のように変数でのみ使用できるような感じにはなるのだが、あれこれ余計な情報まで使えるようにしてもしょうがないしな、ということで、日時の他にタイトル、メーカー、モデル、ソフトウェア、撮影者の情報だけを使えるようにした。で、いろいろやってるうちにやりたいことがまた出てきて、文字列の挿入関数を作ってみたり、既に付いている連番などの番号の桁を揃えられるようにしてみたり。そういえば一般変換の項目を増やすのも久し振り。
03/04/17
ぷちらんちゃ
もう頑張ってサポートするような機能はとりあえずないのだが、自分でも普段使ってるものだけにつまらない改善レベルのものは細々と入れ込んでいたりする。最近は画面周りしかいじっていなかったこともあって、登録系の改善処理を入れ込もうとすると、自分で作っておきながら何が何やらわからないロジックに悩んでみたり。で、まぁリリースしてもいいかなぁというくらいの修正量になったこともあり、1.4bとしてリリースすることにした。そういえばまだVectorにも登録してない・・・。
03/04/15
FNCVT
しょうがないのでインターネットでV2なMP3ファイルを探して落とし、やっとゲット。それで確認してやっぱり正しく取得できないことを確認できて、とっとと修正。で、いろいろと全体的な調整も行なってようやく3.4として完成。随分と長くかかってしまった気がしないでもない。
03/04/11
FNCVT
家のPCからMP3ファイルを色々探し出してみるが、どれもこれもV1フォーマットであることが判明。確認しようがないなどうすりゃいいんだと思いつつ、やっぱりV1フォーマットでスペース埋めしてるファイルが多いという事実も発見して、文字列の前後のスペースを削除する関数も作り込む。更に、ふとこれも必要だなぁと思いついたディレクトリのみの変換指定をサポートしてみる。で、やることはやって、結局はV2フォーマットのMP3ファイル待ち。誰か持ってる人がいたらテスト用にもらえたりしないかなぁと天に祈ってみたり。
03/04/10
FNCVT
MP3のID3情報取得で何とかV2用の解析ロジックも作ったのだが、知人などから入手したmp3ファイルは悉くV1フォーマットのものだったことが判明。V2のファイルがないんじゃちゃんと動くか確認しようがないんだけど・・・どうしたものか。
それはどうしようもないのでとりあえず置いておくとして、文字列置換の関数も作り込んでみた。実はこれもMP3対策で、V1フォーマットでは30バイト固定で色々な要素のエリアが決まっているのだけれど、mp3ファイルを作るソフトによってはスペースで全部埋めてくれてしまうものもあるようで。この状態で情報を拾うと、余計なスペースがダラダラくっついてくることになってしまうわけで、まぁ置換の関数をかませば何とかなるだろうということで。本当は前後のスペースを削除するようなものがあればそれがベストなんだろうけど、用途がかなり狭く制限されるものを作ってもなぁと。
で、あとは要望のあった、拡張子指定したものを覚えておいてコンボボックスで選択もできるようにするというものも作り込み。思ったより影響範囲が大きかったものの、まぁこれはすぐにできた。
MP3のが完成したら3.4としてリリースしたいんだけど、もうちょっとかかるかなぁ・・・。
03/04/04
FNCVT
全角/半角関数を作り込み、制御文が複雑になってきたので保存も可能にしてみたり。あと、最近MP3ファイルのID3の内容からデータを持ってきて変換することが流行ってる(笑)らしいので、この辺も入れ込もうかと思索中。調べてみるとフォーマット自体は簡単なんだけど、バージョンが幾つかあって判定が面倒・・・。とりあえずID3_V1の部分だけは完成。問題はここからかなぁ。
03/04/01
FNCVT
やはりというか、制御文の構文解析+関数制御追加の処理で気が遠くなりそうになるほどの大改造を強いられている状況。被害が少なく済むように関数化したりしてから作り直してたのだけれども、なんだかもうわけがわからなくなってきてしまっている。関数を使うからにはネストもできるようにしないといけないし、これが一番わけわからん状況に陥らせているわけで。それでもようやく変数と関数の基本部分はできあがったので、とりあえず文字列切り出し操作の変数を関数化して、大文字/小文字変換の関数も作成。あとは全角/半角変換くらいを入れればまぁ使えるかな。制御文で変換するって時点でプロ仕様っぽくなってしまった感じもするけど・・・。GUI使う人も少なくなりそうかな。んなこともないか。
03/03/31
FNCVT
制御文で変換する場合、今までの機能で「大文字/小文字」変換や「全角/半角」変換等ができないという仕様になっているわけだが。やっぱりそれだと不便だし、かと言って変数指定で指定するようなシロモノでもない。こうなると必然的に欲しくなるのが「関数」なわけで、大文字/小文字変換用の関数とかを作ってみるしかないという結論に。もちろん、今まであった変数の「文字列切り出し」だって本来は関数であるべきものだったわけで、この際だからまとめて作ってしまおうと思ったのだが、関数とか変数のネストとかされてしまうようになるので構文解析が大変なのも容易に予測できるわけで、今回も大改造になりそうな予感。
03/03/28
ぷちらんちゃ
FNCVTがとりあえず落ち着いたので、ぷちらんちゃの方の作業を再開。実現方式をふと思いつき、ウィンドウ枠のドラッグによるウィンドウサイズ(ボタン表示数)の変更を作り込み。今までどうやれば良かったのか全然思いつかなかったのだが、こんなあっさりと閃き一つでできてしまうもの。さすがに描画がもともと重いこともあって流動的なサイズ変更をするとそれなりに重く表示されるが、まぁ使える範囲で動いてくれてるようなのでヨシとしておこう。
ここまで作れば1.4aとしてリリースしても大丈夫かな・・・。あと、そろそろVectorにも登録してみようか。
03/03/27
FNCVT
連番の順序性の作り込み。今の作りとしては一旦リストの変換対象の一覧を取得しているのだけれど、連番で順序性を持たせる場合には更に一旦別のリストにディレクトリ内のファイルを取り込み、ソートして、変換対象一覧リストに放り込むという方式を取った。多少性能が落ちてしまうがこれはしょうがないということで。リスト操作はもともと得意でもない上ソートまであるのでちょっと苦戦しつつ、何とかこの連番による名称変換部分は完成。あと他に制御文での連番変数にもこれを適用させて、これもどうにか完成。えーと、あと何の作業が残ってるんだっけ・・・もう最近わけがわからなくなってきた・・・。(@@
ということで、アイコンをちょっとマイナーチェンジしてみたりして、結局これだけ直して3.3aとしてリリースへ。せっかく要望で作ってたのに、あまり余計なことをやってリリースが遅れてもしょうがないし。
03/03/25
ぷちらんちゃ
そういえばカラーリングでデスクトップのデザイン色調でのパターンもあった方がいいよな、と突然思い出し、その作り込みを開始。そのついでに、今までやりたかった非アクティブ状態ではグレー表示することもやってみようと思ってこれも作り込む。その際の色調はやはりデスクトップデザイン色調から持ってきたもので・・・ということで思ったよりもあっさり完成。やたらと画面設定の内容だけが膨らんできたので、色調設定とで2つに分けたりもしてみた。これだけでリリースするのもアレだなぁということもあって、とりあえず作業はここまでで保留。
FNCVT
やはり連番付加の法則は必要だということになりそうな展開になってきて、確かに連番なんてある法則で振られないと意味がないわけだしこりゃ面倒でもやるしかないわなぁということで、連番付加の際にその法則を指定できるようにすることにした。要は取得したファイルを一旦ソートして連番を付加するだけなんだけど、その「一旦」ってのが今の作りからすると大変な作業。でもこれをやることで喜んで使っていただける人がいるのであれば・・・と作業を開始することになった。リスト操作って今まで何度も作ってきたけど、相変わらず慣れない・・・。
03/03/20
FNCVT
リストのソートは完成。しかし要望はリストのソートでは終わらなくて、そのソート順で連番をしたかったとのこと。今のFNCVTは対象ファイルの抽出にFindFirstFileを使ってるだけなので、ファイル名の順番で抽出され、その順番で連番が付加される仕様になっているわけで・・・これを変えるとなると大変な作業になりそうということで、今回は見送ることにさせていただくことにした。更新日時順で連番を付加したい場合は、一旦更新日時で名称変換して、その状態で連番変換機能を使うことで実現はできるので、2度手間にはなるがやれないことはないし、何よりも元のファイル名もデジカメの画像であれば更新日時順に番号が振られたファイル名になっていることが多いはずなので・・・という逃げ口実気味になってしまうのがアレなんだけど、とりあえず今後の課題ということで。(汗
ということで、Version3.3としてリリースすることに。随分間が空いてしまったような。
03/03/18
FNCVT
制御文による変換機能で、最重要課題だった連番機能の作り込みに入る。今までの連番付加ロジックは、それぞれで別ロジックとして作り込んでいたのを今回クラス化して関数で呼び出せるように大改造するハメになった。今苦労しておけば後々楽になるわけだし。で、なんとか関数も完成して組み込んで・・・ちょっと何度か躓いたがやっとこさ動いて完成。今回はいろいろ影響受けそうな部分もいじってるし、テストも十分やっておかないと怖いかなぁ。
それと新たに入ったリストのソートを入れて、あとプレビュー時のエラーチェックももうちょっと強化しておこうかというのが今後の予定。
03/03/14
FNCVT
制御文による変換機能をどんどん作り込み、特定文字列中の部分切り出し処理の確認をしてるときに重大な事実に気付く。上位ディレクトリ名の取得で、なぜか上位ディレクトリまでのフルパスが取得されてしまっていた。これだともちろん名称変換には失敗するし、最悪な不具合。調べてみると3.1bで作り込んでいるようで、よくもまぁ今までこんな不具合の報告も来なかったもんだ、と。(汗
そんなわけで、急遽「3.3β1」としてリリースすることに。まだ制御文関係の処理は連番機能とかを作り込んでいなかったりで機能制限は付いてしまうため、ヘルプへの記述も控えめに。ヘルプにある画面の画像から指定方法を想像していただく、という感じで。とにかく不具合対策だけはしておかないといけないわけで・・・。
03/03/13
FNCVT
Vectorを見ていたら、いつのまにかFNCVTに「人気」のマークが付いていた。更にはファイル名変更のカテゴリで、「人気・注目」順でトップ位置にまで上がっている。Roll Ball for Winでも成し遂げなかった「人気」マークをあっさりと獲得してちょっといい気分・・・。
昨日書いた制御文指定変換機能。大体の仕様を決定させ、とりあえず画面と基本ロジックを作り込んだ。後は変数毎の値の代入処理を入れ込むだけなのだが、いろいろやれるようにしようとしてしまって結構大変。でもこれさえ作ってしまえばかなりの変換要求に対応できるようになるので、焦らずにやっていこう。
03/03/12
FNCVT
「日時による名称変換で、日付と時間の間に"_"などを入れたい」という要望が入る。まぁごもっとも、と思って早速作り込み。連番部分の前の"_"も合わせて、自分で挿入したい文字を指定できるようにしてみた。と、これを作ってる間に、人によっては年とか月とか日の間にも「YYYY年MM月DD日」「YYYY_MM_DD」みたいにしたいと思ってる人もいるだろうなぁ、とか思い始めたが、そこまで凝ってしまうのは簡単でも、指定させるスペースがウィンドウ上になくなってしまっている罠。ということでこれはこの機能においてはやめることにした。
この機能においては、というのは、今取り掛かろうとしてる作業が「ユーザが自由に変換形態を変数による制御文形式で指定できる」という機能のサポート。変数指定で上位ディレクトリだったり日時の一部だったりを取り出して指定できたりして、好きなように指定が可能というもの。作業的には指定文字列チェックしか難しいことはなさそうだし、ゆっくりやってみましょうかね・・・。
03/03/11
ぷちらんちゃ
98/Meでのリソース解放漏れの件の原因が判明。単にDCに対してBITMAPを割り当てた際、それを戻さずにDCを削除していたから、というものだった。なんで削除したのにリソースは残るんだろう、なんでNT系では平気なんだろうとかいろいろ疑問は残るが、そういうものだということで修正。で、作りかけだったユーザ設定色の保存方式も確定させ、保存と読み込み・削除が行なえるまで作り込んだ。ついでにグラデーションの方向も指定できるようにしてみたり。あと、FNCVTで修正した二重起動抑止制御の修正をこっちにも入れて、とりあえずやることはやった状態。今までのが98/Meでまともに動けなかったことを考えると、とりあえずこの段階でリリースするべきかも知れないなぁとも思いつつ、もうちょっと何か入れておきたい気も。そういえば今の状態だと、ウィンドウが重なっていない状態だと最前面なのかそうでないのかが見た目でわからないというのがあって、それをどうにかしようかとも思うのだけれど、どうすればいいのかも悩んでいたり。
結局、そんなに頑張らなきゃならない作業があるわけでもないので、このまま1.4としてリリースすることになった。まぁ、確かにこのままでも1.3aに比べれば全然安定してるし自由度もあるしで悪くはないんだけど。
03/03/06
FNCVT
WindowsMeで動かないという話の続き。ちょっと調べてみたら、今回動かなかったのは単にfncvtというフォルダを開いた状態で実行しようとして、今までのショボい二重起動抑止制御が働いて起動できなかっただけのことが発覚。そうじゃないやり方だとちゃんと起動して動作したので、前にクレームがあったMeで動かない件については原因不明となってしまった。エクスプローラのフォルダオプションの「表示」で「タイトルバーにファイルのパスを表示する」にチェックされていないと、タスクの名前がそのディレクトリになってしまうわけで、初期状態のままだとこの現象に陥りやすいのかなぁと推測。とりあえず今回自分もハマったことだし、同じ条件であったと祈りつつ二重起動抑止制御部分をMutex方式に変更。これで大丈夫かな。今夜こそリリースしなきゃ。(^^;
03/03/05
FNCVT
WindowsMeで動かないという話がちょっと前にあって、Meでは動作確認ができなかったので手の施しようがなかったのだが、今日になって動作確認をする機会にやっと恵まれることになった次第。で、やはり動かなかったことが確認できただけ。とりあえず今回はMeを完全に動作対象外にしてしまうことにして、3.2をリリースすることにした。それにしても・・・98で動いてXPで動いて、なぜMeでは動かない??
03/03/04
FNCVT
Exif関連ということで、リスト表示でもExif情報の日時を出してみた。リストに表示するファイルの数によっては多少重くなるが、便利であることには違いないと思うので。で、昨日書いた正規表現のサポートというのををいろいろ考えてみたのだが、どうもイメージが湧かないのでやめてみた。代わりにというか、正規表現の一種であるワイルドカードでの指定が実はまともに動いてなくて、リスト表示はされるものの実際にその結果で変換を実行できるわけでもなく。ということでここは直しておいた。ヘルプも直してとりあえず3.2として一旦完成。しばらくテストをして、リリースするのはやっぱり明日かな・・・。
03/03/03
FNCVT
Exif情報をいろいろ調べて、とりあえず使える情報は日付くらいにしておこうということで、Exif情報から日付を取得する関数を作ってみた。日付関係の要望として、作成日時も使用できるようにしてほしいという声もあって、「更新日時による名称変換」を「日時による名称変換」とし、Exif情報内の日時を使用するかを選択させ、使用しない場合や取得できなかったものに対しては更新日時と作成日時のどちらを使用するかを指定するようにして対応。テストしてみたら特に問題もなく、珍しく一発で修正完了。
その他、変換対象一覧リスト作成中にキャンセルできるようにもした。これは例えば「c:\」以下の全てに対して操作をしようとしてしまったり、大量のファイルを見に行って帰ってこなくなってキャンセルもできないのはいささかマズかろう、ということで。まぁ、こんな操作をしてしまってもしばらくすればメモリが足りなくなって落ちるんだけど・・・。で、メモリと言えば、そのリスト作成やundo用のデータ保持で無駄にエリアを取っていたのを改善もした。これで今までとは比べ物にならないくらいメモリ消費量は減ったはず。
次は正規表現サポートか・・・。
ぷちらんちゃ
98系ではリソースが解放されずにすぐ食い潰してしまう事件が発生。98系のメモリの使い方云々は割と有名な話だけど、ここまで悲惨な状況を見せ付けられてしまうと・・・。ということで調査をしてみるが、ちゃんとCreatexxxxxの後にはDeleteObjectしてるしなぁ。ということはそもそも毎回丁寧にHPENとかHBRUSHで描画させてること自体がダメだってこと? どうすればいいんだ・・・。