堕天使の煉獄

Gallery
Comic
Story
Production
Work
Link

2024-05

26

07:02:32

今月中におわるかな

あの後、結局明示的にshift-jis変換出来たほうがいいよなーってことで、windows.hをincludeする羽目に。
うーん、windows.hは大量のマクロで名前空間汚すからしたくないんだけどねぇ。
とはいえ、自前でshift-jisするのも昔作ったけど、速度的にも微妙(というかMultiByteToWideChar系が異様に速い)なのと安全性(へんなunicodeとか)も考えると、自前のはどうもなぁと言う感じで。

C++20のmoduleでどうにかならんものかなーとちょっと調べてみたんだけども。
moduleはマクロの名前空間汚染も閉じ込められるんですよね。
そしてwindows.hつかうものMultiByteToWideCharとか使いたいだけなので。

うーん。
できそうな、できないような??
まだまだmoduleあんまよくわかってないのと、調べてみた結果、windows.hはいろんな副作用が多くて、単純にmodule化出来ないらしいというのがわかったぐらい(ぉ

あとは細々とした部分作ったりして、とりあえずソースコード覗くだけのツールは完成ぽ。

そのあとに、ハイライタの指定とかで、正規表現のテストするwidgetとかほしいかなーとおもって、さらにそこだけ抜き出してツール化したものも作ったりもしたんだけども……。

結局、web上である「正規表現チェッカー」のがさっと使えるので、あんまつかわないかも……となった(ぉ
まあ、正規表現でも内部のライブラリがおんなじQtのものでテストできるという利点はあるのだけども……そこまでそれが必要かというと??

まあ、この手のは作ってるときは「これは捗るでぇ!」と思いながら作るんだけど、作った後では一度も起動したこと無い……なんてことはよくある話なので(ぉ


で、その次にちょっとした小物ツールを作り始めてて。

o_016.jpg

見る人が見たら、「ああ、あのツールのパク……代替品ね」と分かるものですがw

もうね、古いランタイムとか入れたくないでござる。
ていうとの、結構作りは簡単そうだったので作ってみたんだけども。

とりあえず設定読み込んで表示、各種コントロール(スピンボックス、コンボボックス)で値変更までは出来。
あとバイナリダンプなんかも追加してみたり。


あとはアンドゥ・リドゥとコピペまわり。
そして最後にアプリ設定まわり整えたら完成なんだけども。

アンドゥ・リドゥは作り的に1~4バイトのデータを読み書きするだけのコマンドしか無いので簡単なんだけども。(後述の3バイトの扱いでちょっとペンディング中)

コピペどうするべきかなーとちょっとプチ悩み中。

こういうテーブルのcolumn毎にデータ形式が違うものって、どうやるのがセオリーなんだろうなと。

とくに複数column選択コピー→貼り付けなんてとき。

column毎にデータタイプみたいなの設定して、それ同士が同じならペースト可能。
ていうのはぱっと浮かぶものの。
実際にはそんな単純なもんではなくて。

例えば1bitフラグ。
特定のbitが立ってるかのフラグデータなんだけども。
別の1bitフラグcolumnでは違うbitが条件になっているわけで。
そうなると、単純にコピー元のcellの値を保持するのでは駄目で「オン・オフ」の情報(bool)で持って、ペーストの際にはどのbitをオンにするのか参照して~みたいな処理いるのねーとか。

リスト形式の場合、リスト形式で4バイトの値を設定するみたいなフィールドの場合、4バイトのデータならデータタイプおんなじだからコピペできるよなーてと、リストは4バイト分のリストがみっちり詰まってるわけでもないので、リストの範囲外の値をペーストする可能性もあるわけで。

そのへん、どこまで許容して、どこまで規制するのかとか、そのへんのルールとかいうかセオリーがまったく定まってないぽ。
普通どうやってんだろ?

単純に経験不足w


経験不足エピーソドとしては。
今まではせいぜい数十件=数百件程度で完結するような小物ツールばっかつくってきたのでQxxxWidget系で十分だったんだけども。

今回のようなときには数万件(左側のバイナリダンプのとことか)のデータをテーブルで扱うとなると、QxxxView系、model/viewな方を使わなきゃいけないわけで。

そっち系あんま使う機会なかったからこれも経験不足なんだよなぁと。

んでも、バイナリエディタでよく見るバイナリダンプ。
いざ作ってみたら、めっさ簡単。
というかQTableViewが便利なんだなと言う感じで。
むしろテーブルの表示のstyle設定周りの方に苦労したぽ。


んで右側のほうはせいぜい数百件~数千件しかデータ無いはずなのに、異様に重い。
テーブル開くのに数秒かかる。
デバッグビルドだからか? と一旦リリースに切り替えてみるも、ちょびっと早くなっただけで、やっぱりくっそ重い。
モデルビューなのになんでこんな重いんだ??

原因は「QHeaderView::ResizeToContents」でしたw

cellの中身のサイズに合わせてヘッダのサイズを調整するオプションなんですけど、これ全テーブル走査するので数百件超えるようなのだと、爆遅になるぽ。
これ外したら普通にサクサク動くように。
数十件程度なら全然問題にならないんですけどね。
普通に地雷オプションじゃねーか……。
でも代わりに自分で幅の調整しなくちゃならなく……メンドイ。

とか、cellに表示するコンボボックスの横幅をセルのサイズに合わせつつ、内容がはみ出るときは内容に合わせて幅を拡張させる……とか。

いろんなノウハウが足りてない=経験不足が色々露呈したなぁ。
ここ数日、ほとんどそういう部分の調べ物に時間食われてた感じ……。


他には、なにげに元の仕様的には3バイトのデータも扱うんだけども。
3バイト型というものは存在しないわけで。
なので4バイトの型で代用するのですが。

テンプレートで
template<typename T>
setData(const T& value, quint32 bitMask){...}

なんかやろうとしたらば……3バイトの型ないからテンプレートで分けれないじゃん……とかなったりw

仕様的には3バイトはあるけど、「実際にはほとんどつかわない」と解説サイトでもかかれてたんだけども。
調べてみたら一個だけ3バイト使ってるところあったよ……。

んでもこれって4バイトデータのところにビットマスクで0x00FFFFFFすれば4バイトとしてあつかえるのでわ? となったり。
3バイトとか型で切り分けられないのとか不便でしょうがねぇ。
なので、3バイトは仕様的には廃止しようかなと。
現行3バイト指定のはビットマスク設定したのに置き換えるかんじで。

そいえば昔、共用体使って3バイト型作るみたいなのなんかで見たな。結局つくってはみたものの、実用性なくね? で結論付けられてたけどw


それから、元のアプリのりどみの「今後の予定」のところに

「設定の仕様変更(主にビット関連)」

てのがあって。
まあ2006年で更新止まってはいるんだけどw

確かに今回つくてみて、ビット関連周りの仕様はもうちょっとなんとかスッキリ出来ないものか……って印象あるですね。
でも作り直してる手前まあ、じゃあどうすんだと言われても困るところではあるのですが(ぉ
確かに設定フォーマット的にも扱いメンドイ部分だなぁと。
無きゃ困る部分でもあるし。


最後の更新履歴にのところに「「ステップ」でビットを指定できるように変更」てのあるんですが。

正直めんどくせぇぇぇぇぇl!!
っていう仕様だったので、ステップでbit指定は「未対応形式」として弾くことに。

なんかbitの並びが、bit指定のほうでやれば横列並びになるのが、ステップにすると縦列並びになるのと、1バイト範囲跨ぐケースもあるので、なんか色々と面倒だぞこれ、となったので。
そして今のところ「ステップでbit指定」のケースまだ見たことないし、弾いても問題ないかなと。

あとは仕様書にない仕様とかどうするべきなのかなとかも。
.iniの中で.idnファイル指定あるけど、.idnファイルが存在しないケースとか。


んでもまあ、zip書庫なんやかんやするツールつくてたときもそうだけど、他人様が考えたフォーマットにしたがって作られたデータを仕様どうりに読み取ってそれが表示されるとなんかワクワクするよね。
お、ちゃんと読めてる読めてるって感じで。

そんな感じで今月中に終わるかな。
終わったらこれで久々にデータいじって、プレイしようかな。

元のアプリがランタイム無いでーって使えなかったのを鑑みるに、このPCになってからプレイしてないんだなーってなった。
結構間空いたなー。
定期てきにやりたくなるんですよね。
やっぱろまさが3は名作だなぁ(とおい目

なにげにいま、おやつ氏がサガエメのプレイ動画上げてるけど、サガスカ同様、同じ路線のサガエメ全く食指が動かなくて、一番最初のちょっと見ただけで興味なくしちゃったなぁ。

やっぱやりたいのはロマサガ3~サガフロ1~ミンサガ1路線なんだよなぁ……。

サガフロ2リマスタとかもなんか話出てきてるらしいけど。
サガフロ2は雰囲気ゲーって感じで雰囲気は良かったんだけどねぇ。
キャラが世代交代やらほぼ固定やらで、育成の楽しみとキャラ選択の自由が低すぎてハマらなかったんですよね。

はふ~

2024-05

15

02:04:38

やたらと時間かかった

はー。
やっとソースコード見るだけのツールとりあえず出来た。
時間かかったなぁ……。

o_014.jpg

実作業時間だとべつに大した事無いはずなんですけどね。

Qt Creator立ち上げっぱなのに1行もコード書かない日のが多かったりするし(ぉ
モチベーションの問題なんだよな。
そもそも元々昔に作ったツールのリコンストラクトなので。

とはいえ、最初はQt4時代に作ったツールで、Qt5になったときにちょこっと修正&ビルド通るようにプチ修正って感じで、ほとんどが古いコードのままだったので。
Qt4てと、まだc++11も……今ググってみたら2005年にQt4.0リリースか。
やっぱまだc++11以前の頃だよなぁ。

c++はc++11以降、かなり大きく変わったので、それ以前のコードだと書き換えないとしょうがないしなーと。

なので、ほとんど全面リライトすることになったんですよね。

あとQt5→Qt6でQTextCodec系が全廃止、文字コードshiht-jisがQtでは非対応になったという、結構面倒な破壊的変更あったのも大きいかな。

影響のある部分では、zip書庫をいじるツール。
世に出回ってるzipファイルって、まだまだ大多数、中身の文字コードがshift-jisなんですよね。
背景には世の中で使われてる解凍ツールが枯れてるせいか古いものが使われ続けて刷新されず、unicodeなzipファイル使うと古いツールだと開けない(マンガミーヤとか)のが現状で。

なので、zip書庫をなんかするツールだとshift-jis対応要るんだよなぁ……。
現状、日本語windows上で動かす場合、QTextCodec系の代わりに追加されたQStringConverterで、「system encoding」ていうのを選ぶとshift-jisになるんだけども。
これは環境依存なのでどの環境でもshift-jisになるわけではないので。
うちで自分が使うだけのツールならそれでもいいんだけどね。

でもosの内部コードもwin11以降になるとutf8に以降してるみたいな話もあるしで。
でもでも、いまだにレガシーなwindows周りのライブラリやツールってshift-jis依存べったりなんだよなぁ。

一応「Qt 5 Core Compatibility APIs」と、Qt6でもQt5時代のいくつかの古いAPIもサポートしてますよっていう追加オプションあるんですけども。
Qt7になったらどうなるの? て感じだし。

shift-jisまわりはwinapi直叩きで自前で処理する部分作っとたほうがいいのかなぁ明示的にshift-jis使えるようにしたほうが、今後も安心なんだよな。

でもQtのプロジェクトにwinapiのライブラリのリンクとか追加するのなんか汚された感あって、なんかやなんだよなぁ……気分の問題か(ぉ

んで、さらに今回めんどくさかったのが、設定周り。
以前のは設定はコードに直書きの手抜き仕様だったのを、ちゃんと外部ファイルでせっていできるようにしたんだけども……。

o_015.jpg

設定画面のuiと機能作るのめんどくせぇぇぇぇぇぇってなったりで(ぉ

んでもまあいろいろと勉強にはなったかも。

この手のエディタの設定って、色やフォントの設定って、だーっと単一のリストで並んでる感じになってるんだけども。
んで、例えば正規表現でハイライタ設定なんかするときには、そこでプルダウンメニューがあってそこからカラー設定を選択するかんじで。

でも、そういう形式だと、プルダウンで選ぶときにどんなカラー設定になってるのとか見えないやん?

ってことで、上のような、設定毎にカラー設定widget設置する感じにしたんだけども……。
管理めんどい……コードも増える……。
あーカラー設定まわり単一のリストで管理すると、確かに管理面では楽なんだな。
そしてカラー設定の設定画面もそのリストのところに一個あれば済むわけだし。

でも単一リストで、ユニークID割り当てる感じだと、例えばサクラエディタなんかだと、「正規表現キーワード」が1~10まである感じで。

……まあ正直、そんな正規表現キーワード大量につくってもハイライタ重くなるし、実際にはせいぜい使っても3つとか多くても5つぐらいしか使わないんだろうけども……。

でも、ユニークID割当方式だと10を超える場合に困ったことになるというのはデメリットではある。

でもまあ、それを見越して10こで足りるって判断でそうなっていて、実際の使用感として足りてるわけでw

んでもやっぱ、正規表現の設定などのところで、カラー設定が見れないってのは不満な所ではあったので。

こういう感じにしてみたんだけども、もうちょっとなんかいい方法なかったのかなぁ……っていう結果に。

なんかデータ構造がいろいろとネストしたり設定画面とコードがいっぱい増えてめんどくさくなっただけのような……。

ユーザビリティは向上したとは思うんだけどね……。

でもこれが自分しか使わないツールなので、そこまで凝る必要あったのかと(ぉ

まあ、いい勉強になったという言い訳で自分を納得されている俺ガイル。


あとは、なんかQt6.7に上げたところで色々とスタイル周りなんかバグってる感じあって。
なんかデフォルトのパレットが初期状態で反映してないっぽい??

で、Qt6.7.1で治ってるかなーと期待しているのですが。

当初の予定では22.05.2024リリース予定で。

したら5/3に繰り上がってて、やっぱバグってるから早めにfix出すために繰り上げたのかな? とか想像してたのですが。

予定日が5/8になり、5/14になり……昨日アップデートきたかなーと覗いたら5/20予定に……元の5/22と変わんねーじゃねーか。

なんで繰り上げた??
Qt Creator 13.0.1のリリース日5/8に合わせようとして、間に合いませんでしたって感じなんだろうか……。

繰り上げといて結局元の日とあんま変わんないって、なんかすんごいヤキモキさせられただけでとってもファッキン。


んースタイル周りなおってるのかなぁ。
そんな感じでまだデバッグビルドのみで、リリースビルドはまだいいかなと保留中ぽ。


という感じで、一応このツールは完成。
他のプロジェクトのソースを見ながら移植したり参照したりする用途で使うツールなので、これから捗る……筈。

次は一個小物ツール作って、そのあとzip書庫なんやかんやするツールの7-zip使用版(rarとかにも対応)バージョンアップつくって……。

どうせならほぼ内容的にはマンガミーヤのようなビューワ系とおんなじ動作(書庫ファイルの中身列挙して表示)なので、マンガミーヤの代替作るのもいいなーともおもってるのですが。

他の使っても結局マンガミーヤが使いやすいともどってきてしまうんだけども、unicode対応してないのが厳しいんですよね……。
なので作ったらこれも捗るなぁと思ってたりするんですけどもね。

でもはやく3DダンジョンRPGも作り始めたかったりもするし。

とにかく、少しずつでも進めていこう……作業してさえいれば前進しているわけだしね……。

はふ~。


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:2080160 t:2530 y:180
■記事タイトル■

■年度別リスト■
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)

■レス履歴■

2023-09-26 14:59:38 - 久慈光樹

2023-09-26 14:29:10 - 織田霧さくら

2023-09-26 13:10:45 - 久慈光樹

2023-03-20 05:30:16 - 織田霧さくら

2023-03-15 20:42:58 - まうる

2022-12-26 19:14:57 - 織田霧さくら

2022-12-25 02:28:36 - まうる@まるるん

2022-09-30 04:29:01 - 織田霧さくら

2022-09-23 19:01:29 - まるるん

2022-06-16 21:06:34 - 山本


■ファイル抽出■

■ワード検索■

堕天使の煉獄

https://rengoku.sakura.ne.jp
管理人

織田霧さくら(oda-x)

E-mail (■を@に)

oda-x■rengoku.sakura.ne.jp

堕天使の煉獄バナー 堕天使の煉獄バナー