深淵回廊 kabojakoとの付き合い方その一方法

自分でも変なタイトルを付けてる気はしてますが、まあ気にしない方向で。
少し前の深淵回廊の記事で書いたように、ここでkabojakoを使ったアイテム増減チェックの方法を公開します。

ことのはじまりは関連コミュでのチャットに参加していたときのこと。
いわゆるジョニー問題がそのコミュでも発生してしまいました。
うちのPCたちには大分先の話ではあるものの、ちょっと気になることもあったんで、混じって検証していたら、それぞれ特徴的なアイテムが拾えることに気付きました。
イベントで拾ったアイテムは、TT途中で間違った見切りで処分されない限りはその更新後に手元にある、すなわちkabojakoで初めて持ったときを調べればなんとかなることに気付きました。
幸いなことにkabojakoの古いデータも手元にありまして。
結果その関連コミュでの調査を引き受けてしまいました。
で、いろいろ試してみた結果、連続2更新分の差分の中から該当アイテムを探す方法を取ることになりました。
この方法には、ジョニー問題以外にも、アイテムの増減がわかりやすくなるという利点もあります。

いきさつが若干長くなりました。本題に移りましょう。

1)下準備

この方法は、kabojakoのサイトで直接できないので、公開されているデータベースファイルを手元で操作することによって実現しています。
その手元で操作するための環境作りをここで行います。
5以外の作業は一度だけ行えば問題ありません。

1.適当なフォルダを作成する

この後の作業はこの適当なフォルダ内で行います。
日本語フォルダ名はトラブルが起きる可能性もあるのでおすすめしません。

2.tkSQLiteをダウンロードし、1のフォルダに入れて、必要ならショートカットを作成する

tkSQLiteは、
http://reddog.s35.xrea.com/wiki/TkSQLite.html
にあります。
基本的には最新バージョンのStandalone executable binaryをダウンロードすればいいです。
中身はexeファイル一つのみなので、そのexeファイルを1のフォルダに入れます。
頻繁に使うことが予想できるなら、ショートカットを作成しておきましょう。

3.環境変数にLANG=jaをセットする

具体的な方法はここでは書きません。検索して調べてみてください。
これで日本語のメニューが使えるようになります。以後tkSQLiteの操作はこの日本語メニューで示します。

4.tkSQLiteを立ち上げ、テンポラリデータベースを作成し、文字コードをeuc-jpにする

作業を楽にするために、文字コードがeuc-jpのテンポラリデータベースを準備します。
[ファイル]→[SQLite3DBを新規作成]を選ぶとファイル名を入力できるので、適当な名前を付けてください。手元のはtemp.sqlite3にしてあります。 これがテンポラリデータベースです。
その後、[データベース]→[文字コード]→[euc-jp]と選んで、テンポラリデータベースの文字コードをeuc-jpにします。
間違えてこのテンポラリデータベースを閉じてしまった場合、一度削除してからこの作業を繰り返してください。

5.kabojakoデータベースファイルを連続2更新分用意する

kabojakoのサイトへ行って、公開されているDBファイルをダウンロードしておきます。
zipで圧縮されているので展開すると、sinen_current.sqlite3というファイルがでてきます。
これが2更新分必要です。
ファイル名を日付.sqlite3に変更した上で1のフォルダに入れます。
必ずtkSQLiteと同じフォルダに入れましょう。理由は後述。
そんなファイルないよ、という人は、今すぐ最新のファイルをダウンロードしておき、次の更新後に試してみましょう。

2)差分ファイル検索

以後はtkSQLiteの右上のSQLエディタ部分にSQL文を入力することで作業していきます。
それぞれのSQL文が入力できたら、[データベース]→[SQL実行]もしくは、[CTRL]+[ENTER]で実行してください。

1.DB接続
ATTACH DATABASE "20081123.sqlite3" AS old;
ATTACH DATABASE "20061127.sqlite3" AS now;

kabojakoファイル二つをテンポラリに繋げます。nowに最新を、oldに一更新前のDBを指定してください。
なお、tkSQLiteとkabojakoファイルが別のフォルダにある場合はフルパスで指定します。
このフルパスに日本語や空白が入っているときの動作は不明です。

2.データ確認
SELECT (SELECT selfdate FROM old.selfdate) selfdate,
(SELECT COUNT(*) FROM old.charinfo) char_num,
(SELECT COUNT(*) FROM old.community) com_num,
(SELECT COUNT(*) FROM old.item WHERE owner_cno NOT NULL) buy_num,
(SELECT COUNT(*) FROM old.plan) plan_num
UNION
SELECT (SELECT selfdate FROM now.selfdate) selfdate,
(SELECT COUNT(*) FROM now.charinfo) char_num,
(SELECT COUNT(*) FROM now.community) com_num,
(SELECT COUNT(*) FROM now.item WHERE owner_cno NOT NULL) buy_num,
(SELECT COUNT(*) FROM now.plan) plan_num;

kabojakoファイルが正常に作成されているかを確認します。
あからさまに異常に見えたときはあきらめて6を実行して終了しましょう。

3.VIEW作成
DROP VIEW IF EXISTS old.pclist;
CREATE VIEW old.pclist AS
SELECT eno
FROM old.charinfo
WHERE eno IN (対象のEno);
DROP VIEW IF EXISTS now.pclist;
CREATE VIEW now.pclist AS
SELECT eno
FROM now.charinfo
WHERE eno IN (対象のEno);

後で楽になるための下準備です。
対象のEnoには、調べたいPC(通常は自分のPC)のEnoをカンマで区切って並べてください。 例)9998,9999
指定がミスしてないかどうかは、左上のツリーから、pclistをクリックすると右中に一覧が表示されますのでそこで確認してください。

4.差分ファイル検索
SELECT slotlist.eno,slotlist.having_slot,old_item.name AS old_item,
now_item.name AS now_item
FROM
(
SELECT owner_eno AS eno,having_slot
FROM old.item
WHERE eno IN (SELECT eno FROM pclist)
UNION
SELECT owner_eno AS eno,having_slot
FROM now.item
WHERE eno IN (SELECT eno FROM pclist)
) AS slotlist
LEFT OUTER JOIN old.item AS old_item
ON slotlist.eno = old_item.owner_eno
AND slotlist.having_slot = old_item.having_slot
LEFT OUTER JOIN now.item AS now_item
ON slotlist.eno = now_item.owner_eno
AND slotlist.having_slot = now_item.having_slot
WHERE (old_item.name != now_item.name OR old_item.name IS NULL
OR now_item.name IS NULL);

2更新間での名称の異なるアイテムの一覧です。
これは実際に実行してみた方がよく分かるでしょう。

5.VIEW削除
DROP VIEW IF EXISTS old.pclist;
DROP VIEW IF EXISTS now.pclist;

3で下準備したものを消します。

6.DB切り離し
DETACH DATABASE old;
DETACH DATABASE now;

繋げたファイルを切り離します。

なおこれは、mixiで全体公開した日記の改訂版です。
そちらではジョニーアイテムの検索方法も書いていたのですが、古いkabojakoデータを持っていないと検索できないことから、こちらでは公開しないことにしました。
古いkabojakoデータを持っていてジョニーの方の検索方法も知りたいという人は、mixiで探してみてください。

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/73142/43280258

この記事へのトラックバック一覧です: 深淵回廊 kabojakoとの付き合い方その一方法:

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

2017年12月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

最近のトラックバック

無料ブログはココログ
神奈川クリニック レーシック動体視力