イントレ。
Tag for "SAPFx"
なんか日記にしづらい内容なので触れずにいたけど、流石にネタに困ったのでw
最近はもっぱらSAPFxをいじっています。
SAPFxはそのときの気分で機能追加や仕様変更、再作成を繰り返して中途半端で収拾がつかない状態。
仕様がないのが仕様ですと言い張れるw
今日はそんないいわけをする日記。
一応、SAPFxで達成したい目標は曲リストのアクセス性向上が主。
そのためにツリー表示、曲メタデータ表示、検索が最低条件だと思ってます。
その上で利便性やパフォーマンス向上のためにデータベース化やフォルダ変更の自動追随など。
自分が気になる細かい点もいろいろやる…。
元がC++で軽くなるように最小限機能しか持たせてないこともあって、
今のWPF版は死ぬほど重いアプリになってしまったのはかなりネックです。
一時期作成していたWinForms版も当時は重いと思っていたのに、それが軽く感じられる始末…。
ただ、パフォーマンス上げるために試行錯誤したり、
自分がやってみたいという欲求を満たすために機能変更したりするのは楽しい作業。
むしろ完成させるより作業をしていることに喜びを感じている気がします。
…ネトゲみたいなもんか?
まぁ、でも。
そろそろちゃんと動くSAPFxの新しいバージョンが欲しくなってきたので、
適当にでっち上げようかなと思っている次第で。
日記でやる気を見せるとしばらく触らなくなるフラグなんてのがある気がするけど。
何とか出来ればいいかなぁ…と妖精さんにお願いする今日この頃…と。
最近はもっぱらSAPFxをいじっています。
SAPFxはそのときの気分で機能追加や仕様変更、再作成を繰り返して中途半端で収拾がつかない状態。
仕様がないのが仕様ですと言い張れるw
今日はそんないいわけをする日記。
一応、SAPFxで達成したい目標は曲リストのアクセス性向上が主。
そのためにツリー表示、曲メタデータ表示、検索が最低条件だと思ってます。
その上で利便性やパフォーマンス向上のためにデータベース化やフォルダ変更の自動追随など。
自分が気になる細かい点もいろいろやる…。
元がC++で軽くなるように最小限機能しか持たせてないこともあって、
今のWPF版は死ぬほど重いアプリになってしまったのはかなりネックです。
一時期作成していたWinForms版も当時は重いと思っていたのに、それが軽く感じられる始末…。
ただ、パフォーマンス上げるために試行錯誤したり、
自分がやってみたいという欲求を満たすために機能変更したりするのは楽しい作業。
むしろ完成させるより作業をしていることに喜びを感じている気がします。
…ネトゲみたいなもんか?
まぁ、でも。
そろそろちゃんと動くSAPFxの新しいバージョンが欲しくなってきたので、
適当にでっち上げようかなと思っている次第で。
日記でやる気を見せるとしばらく触らなくなるフラグなんてのがある気がするけど。
何とか出来ればいいかなぁ…と妖精さんにお願いする今日この頃…と。
SAPFxのデータベース拡張。
ずーっと四苦八苦してたんだけど、ようやくまともに動くものが出来上がった。
長かったなぁ…。
アプリ起動後の時間短縮とメモリ使用量削減、検索速度向上と良いことづくめです。最終的には。
表示部の対応がまだなので完全じゃないんですが、下地は出来ました。
SQLiteに出会ったのが最大のターニングポイントでしたね。
SQLite最高!
ずーっと四苦八苦してたんだけど、ようやくまともに動くものが出来上がった。
長かったなぁ…。
アプリ起動後の時間短縮とメモリ使用量削減、検索速度向上と良いことづくめです。最終的には。
表示部の対応がまだなので完全じゃないんですが、下地は出来ました。
SQLiteに出会ったのが最大のターニングポイントでしたね。
SQLite最高!
SQLite機能が大体わかったので、それを元に機能実装を構成してみる。
メディアリストのデータは一切持つことなく、
必要な時に必要な分だけ逐次DBから引っ張ってくることが理想。
現在の実装ではフォルダを読み込む時に、
ファイル項目全体を持つプレイリストとツリー表示用のリストを作成し保持しています。
ファイル数やフォルダ階層が深くなるとその分メモリを喰います。
幸い、WPFのバインディング能力を使えば実現出来そうな見通しはあります。
ツリーは子ツリー項目をIEnumerableで返すようにし、IEnumerableはyieldで実装してやります。
そいつをバインディングしてやれば、子ツリーを展開するときに必要な分だけのデータで済みます。
(データ管理は.NET&WPFに丸投げw)
リストの方は仮想アイテムモードを使えば何とかなるかな?
ただ、これはレスポンスが気になるかもしれませんね…。
項目が多いときだけ仮想モードを使うとか?
必要なデータを取得する方法は出来るだけDB内で完結出来るようにしたい。
そうなると、ツリー用にフォルダリストのテーブルも必要になりそう。
…こんな感じ?
メディアリストのデータは一切持つことなく、
必要な時に必要な分だけ逐次DBから引っ張ってくることが理想。
現在の実装ではフォルダを読み込む時に、
ファイル項目全体を持つプレイリストとツリー表示用のリストを作成し保持しています。
ファイル数やフォルダ階層が深くなるとその分メモリを喰います。
幸い、WPFのバインディング能力を使えば実現出来そうな見通しはあります。
ツリーは子ツリー項目をIEnumerableで返すようにし、IEnumerableはyieldで実装してやります。
そいつをバインディングしてやれば、子ツリーを展開するときに必要な分だけのデータで済みます。
(データ管理は.NET&WPFに丸投げw)
リストの方は仮想アイテムモードを使えば何とかなるかな?
ただ、これはレスポンスが気になるかもしれませんね…。
項目が多いときだけ仮想モードを使うとか?
必要なデータを取得する方法は出来るだけDB内で完結出来るようにしたい。
そうなると、ツリー用にフォルダリストのテーブルも必要になりそう。
…こんな感じ?
SQLiteお勉強中。
以前、SAPFx用にデータベースを使おうと思ってSQL Server Compactを触ったんですが、
文字の扱いの制限やデータ挿入の遅さで撃沈した記憶があります。
データ挿入はSQL文を工夫することでいくらか改善出来たんですが、
その後も思うように行かないことが多く、これなら使わずにやった方がマシだ…と。
そう思って投げちゃいました。
…なんですが、SQLiteを触ってみてビックリ。
挿入速度は速いし、文字の扱いも、操作自体にもあんまりクセがありません。
webの世界で結構使われていると言うことで、そっち方面でのTipsが結構あります。
以前紹介したSystem.Data.SQLiteは、別名でADO.NET provider for SQLiteなんて呼ばれてたりするみたい。
前は100%.NET実装とか言ったんだけど、あれはウソで内部でSQLiteのライブラリをリンクしているみたい。
ま。ともあれアセンブリを参照するだけで使えるのは使い勝手が良いです。
クエリによる文字の比較は、ラテン文字なら大文字小文字を気にしなくても良いみたい。
日本語や全角文字は駄目なようですが、それはプログラム側で対処すればいいか。
機能がシンプルな分、下手な考えに悩まされずに済みますw
こっちが要求する必要な機能はそろっていますし、パフォーマンスも申し分ないです。
もっと早く出会いたかったなぁ…。
後はこいつとWPFやロジックとの連携をどうするかなんだけど…。
LINQ to Entitiesはなんだかよくわからないので、LINQ to SQLのクラス定義っぽいことを手動でやろうかな。
うまくいけばいいけど。
以前、SAPFx用にデータベースを使おうと思ってSQL Server Compactを触ったんですが、
文字の扱いの制限やデータ挿入の遅さで撃沈した記憶があります。
データ挿入はSQL文を工夫することでいくらか改善出来たんですが、
その後も思うように行かないことが多く、これなら使わずにやった方がマシだ…と。
そう思って投げちゃいました。
…なんですが、SQLiteを触ってみてビックリ。
挿入速度は速いし、文字の扱いも、操作自体にもあんまりクセがありません。
webの世界で結構使われていると言うことで、そっち方面でのTipsが結構あります。
以前紹介したSystem.Data.SQLiteは、別名でADO.NET provider for SQLiteなんて呼ばれてたりするみたい。
前は100%.NET実装とか言ったんだけど、あれはウソで内部でSQLiteのライブラリをリンクしているみたい。
ま。ともあれアセンブリを参照するだけで使えるのは使い勝手が良いです。
クエリによる文字の比較は、ラテン文字なら大文字小文字を気にしなくても良いみたい。
日本語や全角文字は駄目なようですが、それはプログラム側で対処すればいいか。
機能がシンプルな分、下手な考えに悩まされずに済みますw
こっちが要求する必要な機能はそろっていますし、パフォーマンスも申し分ないです。
もっと早く出会いたかったなぁ…。
後はこいつとWPFやロジックとの連携をどうするかなんだけど…。
LINQ to Entitiesはなんだかよくわからないので、LINQ to SQLのクラス定義っぽいことを手動でやろうかな。
うまくいけばいいけど。
最近になってまたSAPFxをいじくり回してるんですが、
どうもWPFのレンダリング結果がXPとVistaで違う気がするんですよね。
というか、フォントのレンダリングが特に。
WPFでXPデフォルトのMS UI Gothicを使うとフォントが太くなります。
ちょうど太字に指定したような感じですね。
ClearTypeに未対応なのが原因らしい。
メイリオを使うとちょうど良いんですが、
XPで好き好んでメイリオを使う人間は限られると思います。
UIのデザインが完璧に崩れますしね。
XPは動いたらいいや的なレベルで考えてますが、
デザインが崩れる部分は流石に放置したくないのでどうしようか考え中。
こっちが一段落したらSQLiteで遊ぶんだ…。
どうもWPFのレンダリング結果がXPとVistaで違う気がするんですよね。
というか、フォントのレンダリングが特に。
WPFでXPデフォルトのMS UI Gothicを使うとフォントが太くなります。
ちょうど太字に指定したような感じですね。
ClearTypeに未対応なのが原因らしい。
メイリオを使うとちょうど良いんですが、
XPで好き好んでメイリオを使う人間は限られると思います。
UIのデザインが完璧に崩れますしね。
XPは動いたらいいや的なレベルで考えてますが、
デザインが崩れる部分は流石に放置したくないのでどうしようか考え中。
こっちが一段落したらSQLiteで遊ぶんだ…。
Utilities
- タグ
- カレンダー
- 最近の更新
- Adsense