日記(689)

<前 次>

無題

アンパンマンDB3の自動リンクつきリストを充分な速度で処理するためのテーブルを作っていました。
単純なサブクエリやJOINに帰着するのが一番簡単なので、JOINしやすさを第一に考えて。
あと、逆に検索で使わない重複データなんかは関数で算出することにして、省略するようにしました。

無題

TGWSAdmin、もうちょっと基本的なところで改良したいですなぁ。
タスクトレイ常駐型のアプリケーションでウィンドウを閉じると終了というのにはどうにも違和感があるのです。
やっぱり本体は通知領域にいるアイコンですから。

無題

プログラミングコーナーの当たり判定補助クラスにミスがあったので修正しました。
報告してくださったtetさんに感謝します。

アンパンマンDBは、登録するデータの重複を一部省略してデータサイズを削減したり、リンク機能無しのリスト表示など。
自動リンクを入れると結構骨が折れるのですが、それさえなければただの単純なサブクエリなのです。

無題

最大の難関であろうカテゴリ表示は達成したので、気分を変えてタイトルジェネレータを移植中です。
あと、カテゴリ以外の表示も少しずつ作ってはいます。

無題

アンパンマンDB3のアニメDBの登場キャラクターとかに代表される、関連項目のリストを実装しているのですが、なかなか難しいです。
こういったリストには自動的にリンクを作っているのですが、今回はそれをSQLでやろうとしています。
しかしこれ、単にサブクエリやJOINをすればいいというものでもないのです。
というのも、リンク先は一種類のDBに固定されているわけではなく、異なるDBにリンクされていることもあるのです。
例を挙げていえば、音楽の関連項目には、関連性の深い楽曲もリンクしていますが、その曲を題材にした話にもリンクしていることがあるのです。
そのあたりの振り分けをどうするか思案中です。

無題

アンパンマンDB3のカテゴリ表示、うまくいったと昨日いいましたが、キャラDBで表示確認してみたところ、とても実用に堪えない速度であることがわかりました。
というわけで、快適な表示を実現するべく、SQLを見直しました。
カテゴリは読みでソートしたかったのですが、これをSQLだけで行おうとすると集約関数に渡す前にソートしなければならなくて、それを実現するためにはソートするためだけに全件ソートするサブクエリを作らなければいけなくて、ということをやっていると重くなってしまいました。
最新版のSQLiteでは余計なサブクエリを作らなくて良いみたいなのですが、バージョンアップできない環境なので、SQLだけで高速化は無理そうでした。
そこで、SQLではカテゴリのソートは行わず、ソートのヒントまで作っておいて、実際のソートはPHPプログラムで行うことにしました。
これで5秒が0.05秒になりました。

無題

アンパンマンDB3のカテゴリ表示うまくいきました。
サブクエリの中で使っていたパラメータを外に引っ張り出してきて外側で評価することでスコープの問題を回避。
ただ、単純な列挙なのでこれで済みましたが、将来的にはもっと複雑なことをしたいのでもっと研究が必要そうです。

モンハン3G、チャナガブル討伐しました。
これで★★★★にいけます。
★★★★といえばギギネブラが出てきたはず…。

<前 次>