堕天使の煉獄
2016-08
28
00:30:10
ようやく一段落
なんだか意外に時間がかかってしまった、書庫編集ツール。
とりあえず一区切りついたかなと。
一時ファイルに解凍とかしないで、直接画像をリサイズやフォーマット変更等の加工(非圧縮書庫限定)
zip書庫の再圧縮なしのファイル一括リネーム(正規表現置換、連番、桁合わせ)、ファイルの個別削除。
リネームと削除は圧縮書庫でもそのまま可能かつ、再圧縮しないので一瞬で終わる。
あとは画像のフォーマットやサイズの一覧表示とかできる、書庫内のそこそこ高速な閲覧。
てな感じなのようやく出来。
やっぱいちいち書庫とか解凍してから、画像編集とかタルイので、このツールでいろいろ一本化できそう。実際には人様の作ったツール(UnifyZip)のサポートありきなかんじですが。
フォルダ回りの走査が超めんどいので……。
ファイルの一覧&編集結果表示とかしたかったのでテーブルリスト表示にしたのだけども、フォルダ構造表示するのにはふつうツリービューですよね。
でもツリービューだと編集結果とか一度に表示出来なかったりとか、一括で編集とかやるの考えると、一本のリストで完結したい。そこで再帰的な走査が必要になるフォルダ構造とか超邪魔w
ってことで、非圧縮書庫化の他にも、余計なフォルダの除去とかでもUnifyZipのお世話に。データ構造の相性的にフォルダの除去機能とかつけるのめんどい感じになっちゃったので。
しかし、一番の感想は……。
zipフォーマットは酷いフォーマットだなと。
歴史的経緯というのもおおきいのだろうけど、とにかく統一性が無いというところがうっとうしいですね。唯一の救いは、フォーマットの情報がネットでいくらでも出てくると言うところか(古い情報に惑わされる事もあるけど)
なにげに日本語混じりのファイル名かフォルダか含むと? winrarで作ったzipでは、Info-Zipとやらが提唱した、unicode文字をファイル名に使う拡張が埋め込まれるっぽい。けどぐぐってみると、提唱もと自体がもう使ってないとか。なんだそりゃw
そんでもって、この拡張がある場合は、zipファイルのヘッダのなかにあるオプションフラグにも、unicodeフラグというものがあるのだけど、このInfo-Zip拡張の場合はこのフラグはoffのままだったり、はたまた基本的にzipのなかのファイル名などの文字コードは、作成環境のローカルの文字セットが使われるという仕様らしく、unix系osで作成したzipはunicodeフラグ有る無しにutf-8が使用されるとか。(win系では暗黙でshift-jisがつかわれる)
なので、ヘッダの中の作成OSの種類の値をみて、unicodeか判定するソフトもあるそうな。
個人的には、もうみんなutf-8で統一してほしい感じなのだけども、まだまだwin系のアーカイバでは、古いソフトになるとunicodeには対応して無かったりするし。未だにぼちぼち使ってる画像ビューワのmangameeya(いまだにコレを越えるのがない……)も開発停止してから長く、unicode文字だと化ける~。
て感じなので、unicodeフラグon、Info-Zipのunicode拡張、作成osがunixの時はうにこーどとして読み込みまではまあ簡単。そこから、書庫を保存するときにどうするか……結局現時点のwin上では、保存時は常に文字列はshift-jisで保存するというのが一番トラブル少ないぽか。
いまだにshift-jisの呪縛から逃れ慣れないのか…開発環境まわりはもうすべてutf-8で統一してるんですけどね……。
てか、保存するときは自分でどのオプションとか、拡張機能使うかとか選択肢あるのですが、そのへんみんなばっさりカットで、書き出し部分は非常にシンプルにしてみたり。(というかいろんな他のアーカイバで読める用にするには結局最小構成にするのが一番ぽ)
逆に読み込み部分は、いろいろなフォーマットでも読める用にと、いろいろとちまちま組むハメになってそこいらへんで、zipフォーマットのくそっぷりが身にしみるぅ。
あとは……手前味噌ながら普通に速い。
QTのQDataStreamとからへんが優秀なのか、その辺の書庫系ソフトにくらべて、書庫の読み書きがすんごく速くてびくり。
……てかこれって、unzip32とかの統合アーカイバ系のハンドル取得して検索して回すAPIあたりが腐ってるんじゃないのかな。文字通り。
この辺って、それこそMS-DOSとか、win95とか、メモリが640KBとか8MBとかそんな時代からあるフォーマットやアーカイバのライブラリだし。読み込みも一括でメモリに展開とか贅沢な事も出来なかった頃の仕様が、いまだにそのまま残ってるんじゃなかろうか。
なので、普通に今風の組み方で直接バイナリから読んでると、明らかに速度差が出てるんじゃなかろうか。
そんでもって、あまりにもzipのフォーマットって無駄が多いし、雑多な拡張の所為でカオスだし。
基本的には、胆の部分はファイルの圧縮アルゴリズムの部分で、それ以外の部分はいかようにも組める感じなのに、そこがひたすらあほらしいフォーマットになってるのはなんだかなぁと。
でもこういうのって、結局何が流行るかわかんないし、そして流行った物勝ちで、内部構造がどうだとか、圧縮率がどうだとか、性能部分が秀でてるものが天下とるとは限らないんですよね。
そんなかんじで、漠然と最初は書庫を読むってと統合アーカイバ系のDLLを使うものらしいという先入観あったせいでその方法から入ったのですが、そもそのDLLの内部実装自体が前時代的に古すぎて、結局使わないという結果に。
それで一週間ぐらい時間無駄にしたなぁ……。
アーカイバのDLL関係って、基本的には、一括全解凍、全圧縮と、かなりおおざっぱな機能しかないんですよね。
なので細かいことをやろうと思うと結局自前でバイナリからフォーマット解析して読むしかなく、結局アーカイバDLL関係の仕様は全部破棄して、1からzipのフォーマットの解析作業に。
……当初はほんと、DLL読み込んだらもう書庫回りのことは大抵のことは出来ちゃうもんだとおもってたですよ(遠い目…・・)
ああ、そういえば、jpegのExifまわりも余計な回り道だったなぁ……。結局調べたことはほとんどなんにも使わなかったものなw
とにかくなんか無駄が多い感じだったな今回。
かるーく一週間ぐらいで作る予定だったのに……。
そんな感じで、最後はやっぱり愚痴っぽく。……いかんな。
とりあえず、ここ数日実際にいろんな書庫にたいして使ってみて、運用テストしてるのですが、意外に良い感じに使えているぽ。
読めないものごくたまにあるんですが、そのファイルはUnifyZipでもエラーになったりして、これは邪魔くさい。
そのファイルのフォーマットどうなってるのか調べるかーってところでモチベーションが切れたぽ。
とりあえず、根詰めて組むのはもう終わりにして、あとはちょいちょい運用しながらバグフィックスしていく感じにしていこうかと。
やはり、実戦こそが最高のテストdeathね。
ついでにちょっとまえに計測してみたので、一段落ついた今の状態でも計測してみたり。
先週の段階で4000ステップぐらいで、今回は7000ステップ。
3000しか増えてないやん。まあ、今週はコード書くよりもテストの方が時間食ってたので、こんな物か。
はーちかれた。
とりあえず一区切りついたかなと。
一時ファイルに解凍とかしないで、直接画像をリサイズやフォーマット変更等の加工(非圧縮書庫限定)
zip書庫の再圧縮なしのファイル一括リネーム(正規表現置換、連番、桁合わせ)、ファイルの個別削除。
リネームと削除は圧縮書庫でもそのまま可能かつ、再圧縮しないので一瞬で終わる。
あとは画像のフォーマットやサイズの一覧表示とかできる、書庫内のそこそこ高速な閲覧。
てな感じなのようやく出来。
やっぱいちいち書庫とか解凍してから、画像編集とかタルイので、このツールでいろいろ一本化できそう。実際には人様の作ったツール(UnifyZip)のサポートありきなかんじですが。
フォルダ回りの走査が超めんどいので……。
ファイルの一覧&編集結果表示とかしたかったのでテーブルリスト表示にしたのだけども、フォルダ構造表示するのにはふつうツリービューですよね。
でもツリービューだと編集結果とか一度に表示出来なかったりとか、一括で編集とかやるの考えると、一本のリストで完結したい。そこで再帰的な走査が必要になるフォルダ構造とか超邪魔w
ってことで、非圧縮書庫化の他にも、余計なフォルダの除去とかでもUnifyZipのお世話に。データ構造の相性的にフォルダの除去機能とかつけるのめんどい感じになっちゃったので。
しかし、一番の感想は……。
zipフォーマットは酷いフォーマットだなと。
歴史的経緯というのもおおきいのだろうけど、とにかく統一性が無いというところがうっとうしいですね。唯一の救いは、フォーマットの情報がネットでいくらでも出てくると言うところか(古い情報に惑わされる事もあるけど)
なにげに日本語混じりのファイル名かフォルダか含むと? winrarで作ったzipでは、Info-Zipとやらが提唱した、unicode文字をファイル名に使う拡張が埋め込まれるっぽい。けどぐぐってみると、提唱もと自体がもう使ってないとか。なんだそりゃw
そんでもって、この拡張がある場合は、zipファイルのヘッダのなかにあるオプションフラグにも、unicodeフラグというものがあるのだけど、このInfo-Zip拡張の場合はこのフラグはoffのままだったり、はたまた基本的にzipのなかのファイル名などの文字コードは、作成環境のローカルの文字セットが使われるという仕様らしく、unix系osで作成したzipはunicodeフラグ有る無しにutf-8が使用されるとか。(win系では暗黙でshift-jisがつかわれる)
なので、ヘッダの中の作成OSの種類の値をみて、unicodeか判定するソフトもあるそうな。
個人的には、もうみんなutf-8で統一してほしい感じなのだけども、まだまだwin系のアーカイバでは、古いソフトになるとunicodeには対応して無かったりするし。未だにぼちぼち使ってる画像ビューワのmangameeya(いまだにコレを越えるのがない……)も開発停止してから長く、unicode文字だと化ける~。
て感じなので、unicodeフラグon、Info-Zipのunicode拡張、作成osがunixの時はうにこーどとして読み込みまではまあ簡単。そこから、書庫を保存するときにどうするか……結局現時点のwin上では、保存時は常に文字列はshift-jisで保存するというのが一番トラブル少ないぽか。
いまだにshift-jisの呪縛から逃れ慣れないのか…開発環境まわりはもうすべてutf-8で統一してるんですけどね……。
てか、保存するときは自分でどのオプションとか、拡張機能使うかとか選択肢あるのですが、そのへんみんなばっさりカットで、書き出し部分は非常にシンプルにしてみたり。(というかいろんな他のアーカイバで読める用にするには結局最小構成にするのが一番ぽ)
逆に読み込み部分は、いろいろなフォーマットでも読める用にと、いろいろとちまちま組むハメになってそこいらへんで、zipフォーマットのくそっぷりが身にしみるぅ。
あとは……手前味噌ながら普通に速い。
QTのQDataStreamとからへんが優秀なのか、その辺の書庫系ソフトにくらべて、書庫の読み書きがすんごく速くてびくり。
……てかこれって、unzip32とかの統合アーカイバ系のハンドル取得して検索して回すAPIあたりが腐ってるんじゃないのかな。文字通り。
この辺って、それこそMS-DOSとか、win95とか、メモリが640KBとか8MBとかそんな時代からあるフォーマットやアーカイバのライブラリだし。読み込みも一括でメモリに展開とか贅沢な事も出来なかった頃の仕様が、いまだにそのまま残ってるんじゃなかろうか。
なので、普通に今風の組み方で直接バイナリから読んでると、明らかに速度差が出てるんじゃなかろうか。
そんでもって、あまりにもzipのフォーマットって無駄が多いし、雑多な拡張の所為でカオスだし。
基本的には、胆の部分はファイルの圧縮アルゴリズムの部分で、それ以外の部分はいかようにも組める感じなのに、そこがひたすらあほらしいフォーマットになってるのはなんだかなぁと。
でもこういうのって、結局何が流行るかわかんないし、そして流行った物勝ちで、内部構造がどうだとか、圧縮率がどうだとか、性能部分が秀でてるものが天下とるとは限らないんですよね。
そんなかんじで、漠然と最初は書庫を読むってと統合アーカイバ系のDLLを使うものらしいという先入観あったせいでその方法から入ったのですが、そもそのDLLの内部実装自体が前時代的に古すぎて、結局使わないという結果に。
それで一週間ぐらい時間無駄にしたなぁ……。
アーカイバのDLL関係って、基本的には、一括全解凍、全圧縮と、かなりおおざっぱな機能しかないんですよね。
なので細かいことをやろうと思うと結局自前でバイナリからフォーマット解析して読むしかなく、結局アーカイバDLL関係の仕様は全部破棄して、1からzipのフォーマットの解析作業に。
……当初はほんと、DLL読み込んだらもう書庫回りのことは大抵のことは出来ちゃうもんだとおもってたですよ(遠い目…・・)
ああ、そういえば、jpegのExifまわりも余計な回り道だったなぁ……。結局調べたことはほとんどなんにも使わなかったものなw
とにかくなんか無駄が多い感じだったな今回。
かるーく一週間ぐらいで作る予定だったのに……。
そんな感じで、最後はやっぱり愚痴っぽく。……いかんな。
とりあえず、ここ数日実際にいろんな書庫にたいして使ってみて、運用テストしてるのですが、意外に良い感じに使えているぽ。
読めないものごくたまにあるんですが、そのファイルはUnifyZipでもエラーになったりして、これは邪魔くさい。
そのファイルのフォーマットどうなってるのか調べるかーってところでモチベーションが切れたぽ。
とりあえず、根詰めて組むのはもう終わりにして、あとはちょいちょい運用しながらバグフィックスしていく感じにしていこうかと。
やはり、実戦こそが最高のテストdeathね。
ついでにちょっとまえに計測してみたので、一段落ついた今の状態でも計測してみたり。
先週の段階で4000ステップぐらいで、今回は7000ステップ。
3000しか増えてないやん。まあ、今週はコード書くよりもテストの方が時間食ってたので、こんな物か。
はーちかれた。
Sun
Mon
Tue
Wed
Thu
Fri
Sat
01
02
03
04
05
06
07
08
09
■
■
突撃したら道を間違えたてたでゴザル。
10
■
■
四川式回鍋肉うまい
11
[山の日]
12
13
14
■
■
もうちょっとで終わりそうだけど・・・
15
16
17
■
■
見間違え……
18
19
■
■
一難去ってまた一難……
20
21
22
23
■
■
ずるずる
24
25
26
27
28
■
■
ようやく一段落
29
■
■
まだまだ知らないことばかり
30
31
total:2076942 t:454 y:396
■記事タイトル■
■年度別リスト■
2024年
2024年12月(0)2024年11月(0)
2024年10月(1)
2024年09月(2)
2024年08月(1)
2024年07月(1)
2024年06月(5)
2024年05月(2)
2024年04月(1)
2024年03月(6)
2024年02月(4)
2024年01月(3)
2023年
2023年12月(3)2023年11月(1)
2023年10月(2)
2023年09月(3)
2023年08月(3)
2023年07月(3)
2023年06月(7)
2023年05月(8)
2023年04月(2)
2023年03月(1)
2023年02月(2)
2023年01月(3)
2022年
2022年12月(4)2022年11月(3)
2022年10月(1)
2022年09月(3)
2022年08月(3)
2022年07月(2)
2022年06月(1)
2022年05月(3)
2022年04月(2)
2022年03月(2)
2022年02月(1)
2022年01月(6)
2021年
2021年12月(8)2021年11月(3)
2021年10月(4)
2021年09月(6)
2021年08月(2)
2021年07月(1)
2021年06月(3)
2021年05月(2)
2021年04月(2)
2021年03月(3)
2021年02月(1)
2021年01月(4)
2020年
2020年12月(3)2020年11月(7)
2020年10月(2)
2020年09月(3)
2020年08月(1)
2020年07月(3)
2020年06月(7)
2020年05月(5)
2020年04月(8)
2020年03月(4)
2020年02月(2)
2020年01月(4)
2019年
2019年12月(1)2019年11月(1)
2019年10月(2)
2019年09月(1)
2019年08月(3)
2019年07月(2)
2019年06月(2)
2019年05月(2)
2019年04月(4)
2019年03月(1)
2019年02月(7)
2019年01月(1)
2018年
2018年12月(1)2018年11月(1)
2018年10月(5)
2018年09月(1)
2018年08月(5)
2018年07月(1)
2018年06月(1)
2018年05月(1)
2018年04月(2)
2018年03月(2)
2018年02月(1)
2018年01月(1)
2017年
2017年12月(2)2017年11月(1)
2017年10月(2)
2017年09月(5)
2017年08月(8)
2017年07月(2)
2017年06月(1)
2017年05月(1)
2017年04月(3)
2017年03月(5)
2017年02月(7)
2017年01月(8)
2016年
2016年12月(7)2016年11月(2)
2016年10月(3)
2016年09月(7)
2016年08月(8)
2016年07月(10)
2016年06月(17)
2016年05月(6)
2016年04月(8)
2016年03月(10)
2016年02月(5)
2016年01月(10)
2015年
2015年12月(7)2015年11月(7)
2015年10月(13)
2015年09月(7)
2015年08月(7)
2015年07月(5)
2015年06月(4)
2015年05月(5)
2015年04月(2)
2015年03月(4)
2015年02月(1)
2015年01月(7)
2014年
2014年12月(12)2014年11月(8)
2014年10月(4)
2014年09月(6)
2014年08月(7)
2014年07月(4)
2014年06月(2)
2014年05月(5)
2014年04月(4)
2014年03月(8)
2014年02月(4)
2014年01月(8)
2013年
2013年12月(15)2013年11月(8)
2013年10月(3)
2013年09月(3)
2013年08月(8)
2013年07月(0)
2013年06月(0)
2013年05月(0)
2013年04月(0)
2013年03月(0)
2013年02月(0)
2013年01月(0)
■レス履歴■
■ファイル抽出■
■ワード検索■
堕天使の煉獄
https://rengoku.sakura.ne.jp
管理人
織田霧さくら(oda-x)
E-mail (■を@に)
oda-x■rengoku.sakura.ne.jp