Just another Ruby porter,

〜2015年6月下旬〜


<Older(,) | Newer(.)> | Recent(/)>> | RDF

2015-06-21 (Sun)

日記スクリプト

今日の日付ファイルのパスを生成するスクリプトは、
今日じゃなくて前回の翌日分を生成すればいいんだと気づいた。
つまり今日から順番に遡って見つかったらその次の日という感じに。
そうすると一回書いて閉じると次の日になってしまうが、まあいいか。


2015-06-22 (Mon)

2年半振りにTANITAの歩数計が見つかる

見つかるときは見つかるもので。
fitbitの前に使っていた歩数計がひょっこり籠の中から出てきた。
2年半だ。今となってはサイズがでかすぎる。

この歩数計が311のときに見につけてもいないのに 19歩も計測していたんだよなあ。


2015-06-23 (Tue)

上総中野

ヨルタモリでやってた終着駅が、偶然今日の鉄道捜査官の再放送で出てきた。
そのおかげでいきなりトリックがばればれになってしまったのがあれだが。


2015-06-24 (Wed)

uBlock と ublock origin

ふと気づくとChromeではuBlock originでFirefoxではuBlockを使っていた。
あれ、これって違うの?とぐぐってみるとなんかきな臭い話が。
uBlockオリジナルの作者が現開発陣の運営方針を疑問視し、独自に開発存続をアナウンス


2015-06-25 (Thu)

fitbit apiを使って歩数を取得

簡単に言うと以下のURLから歩数は取得可能。日付は2015-06-01から現在までという意味。
stepsを削除すれば保存してあるもろもろのアクティビティが取れる。
https://api.fitbit.com/1/user/-/activities/steps/date/2015-06-01/today.json
https://api.fitbit.com/1/user/-/activities/date/2015-06-01/today.json
ただ、OAuthでの認証が必要なので面倒なら API Explorerを使うといいかもしれない。
各種APIが簡単に呼び出せる。


2015-06-26 (Fri)

fitgemで歩数情報を取得

方法は Fitgem Reference Clientの通りにすればok。cunsumer_keyとcunsumer_secretは アプリ登録ページでもろもろ入力する。
Websiteとかあるが適当にhttp://localhost/でもいけるようだ。
test-fitgem.rbは最初の実行のときにPINの入力を促される。

あとtest-fitgem.rbの最後の

pp client.activities_on_date 'today'

pp client.activity_on_date_range('steps', '2012-12-15', 'today')["activities-steps"]

のようにすれば2012-12-15にから今日までの歩数が得られる。

% ruby test-fitgem.rb | tail
 {"dateTime"=>"2015-06-17", "value"=>"11348"},
 {"dateTime"=>"2015-06-18", "value"=>"17780"},
 {"dateTime"=>"2015-06-19", "value"=>"13734"},
 {"dateTime"=>"2015-06-20", "value"=>"972"},
 {"dateTime"=>"2015-06-21", "value"=>"1706"},
 {"dateTime"=>"2015-06-22", "value"=>"16762"},
 {"dateTime"=>"2015-06-23", "value"=>"13477"},
 {"dateTime"=>"2015-06-24", "value"=>"11458"},
 {"dateTime"=>"2015-06-25", "value"=>"2032"},
 {"dateTime"=>"2015-06-26", "value"=>"2977"}]

jsonにしたければppの代わりにjjで。


2015-06-27 (Sat)

PS3の音が割れる

昔はそんなことかなかったのに、ここ1年ぐらい何をしても音が割れるなと思ったら、
単にプレーヤーのボリュームが最大になっていただけだった。
ここは完全に盲点だった。テレビかと思ってそっちばかりいじってた。


2015-06-28 (Sun)

Sony Readerのbooks.dbのtriggerを更新

T3にしてから保存する場所をいじったらやはりauto collection triggerが機能しなくなった。
面倒で放置していたが、どう考えても手でコレクションに入れるほうが
もっと面倒なのでなんとかしよう。

sqlite3のtriggerでいろいろやってるわけで、よく見ると

WHEN new.file_path LIKE 'Sony_Reader/media/books/_%'

となっていて、ところどころ25という謎の数字が出てくる。
謎かと思ったが単にこの文字列の長さだった。

% echo -n Sony_Reader/media/books/ | wc -c
24

つまり何度も出てくる

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

はbooks/の後ろのディレクトリ名を抜き出しているわけだ。
これで原因はわかった。
今はSony_Reader/media/books/じゃなくて単にebooks/へ保存してるので発火しない。
このあたりを調整すればいい。

WHEN new.file_path LIKE 'ebooks/_%'

にして、25を8にすればokだ。

CREATE TRIGGER auto_collection_trigger AFTER INSERT ON books
WHEN new.file_path LIKE 'ebooks/%'
BEGIN
    INSERT OR IGNORE INTO collection (_id, title, source_id)
    VALUES (
        (SELECT _id FROM collection WHERE title = substr(new.file_path, 8, length(new.file_path) - length(new.file_name) - 8)),
        substr(new.file_path, 8, length(new.file_path) - length(new.file_name) - 8),
        new.source_id
    );
    INSERT INTO collections (collection_id, content_id)
    VALUES (
        (SELECT _id FROM collection WHERE title = substr(new.file_path, 8, length(new.file_path) - length(new.file_name) - 8)),
        new._id
    );
END;

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;

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


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ヶ所まったく同じなわけでどうにもならないんかな。


<Older(,) | Newer(.)> | Recent(/)>> | RDF


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

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