Just another Ruby porter,


7月上旬の日記 | RDF

2015-07-03 (Fri)

Smart J:COM Boxソフトウェアバージョン ver.3.35

長いタイトルが横スクロールするようになり気づいた。
変更点。

フォルダの位置を末尾にしたかったのでこの変更はうれしいが、
メニューが増えて一括操作への動線が遠くなったが難点。
もっと動きが速ければ気にならないんだろうけど。


2015-07-02 (Thu)

sqlite3のtrigger

今日もSony Reader。triggerはお手軽だけど設定した後に追加された文書しか有効ではない。
すでに登録されてるものはどうすればいいのか?
一度PCに退避してDBも消せば初期化されるので、
その状態でtriggerを設定して戻せばいけそうだ。
しかし数百MBもあるしなんか頭悪い。
books.dbだけいじればいいわけで、booksテーブルを初期化しちゃうのがいいかもしれない。

% sqlite3 books.db 'delete from books'

でうまくいった。ちゃんと再構築してくれるのでそのついでにtriggerが発火する。
ああ、だったらtriggerじゃなくてsqlite3で直接実行するのもありか。
ふりがなとかもつけられるし。いやふりがなはあってもあまり意味ない。


2015-07-01 (Wed)

著者名がない

そういうケースもあるよな。
なんで名無しのコレクションができるのかと思ったら当たり前だ。
その時はファイル名に著者名も入れとけば、
いちいち設定しなくてもいいじゃんと思っていたわけで。
こういうときはディレクトリ名なら問題ないわけか。
著者名がない場合はディレクトリ名とすればいいわけだが、
そんな処理をsqlで書くのが面倒だ。

% sqlite3 books.db 'select ifnull(author,substr(file_path,instr(file_path,"/")+1,length(file_path)-length(file_name)-instr(file_path,"/")-1)) from books'

やっぱ著者名をつけ直したほうがよさげだ。


2015-06-30 (Tue)

著者名を正規化

file_pathを見ないようにしたのでもはや全部が対象になった。
で、著者名って自分で設定しているんだけど、
空白で区切ってたりしてるのもあり2つに分かれてしまう。
というわけで空白は消すことにした。

CREATE TRIGGER auto_collection_trigger AFTER INSERT ON books
BEGIN
  INSERT OR IGNORE INTO collection (_id, title, source_id)
    VALUES ((SELECT _id FROM collection WHERE title = replace(new.author," ","")),
      replace(new.author," ",""), new.source_id);
  INSERT INTO collections (collection_id, content_id)
    VALUES ((SELECT _id FROM collection WHERE title = replace(new.author," ","")), new._id);
END;

replaceで消すだけだが、3ヶ所まったく同じなわけでどうにもならないんかな。


2015-06-29 (Mon)

Sony Readerで著者名を元にコレクション作成

昨日のSQLを見てて

substr(new.file_path, 8, length(new.file_path) - length(new.file_name) - 8)

が3回も出てきていやだなと思ったが、SQLってそのあたりはどうしようもないようで。
というよりそもそもこのディレクトリ名は著者名にして作っているので、
だったらfile_pathから取得しなくてもauthorから得ればいい。
というわけでかなりシンプルになった。

CREATE TRIGGER auto_collection_trigger AFTER INSERT ON books
BEGIN
  INSERT OR IGNORE INTO collection (_id, title, source_id)
    VALUES ((SELECT _id FROM collection WHERE title = new.author), new.author, new.source_id);
  INSERT INTO collections (collection_id, content_id)
    VALUES ((SELECT _id FROM collection WHERE title = new.author), new._id);
END;

これはやばい。ディレクトリ作る必要もなくなったし、さらに便利になった。


7月上旬の日記 | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!