WWW::AppStore::Scraper::Lite
WWW::AppStore::Scraper::Lite # メンテするのも面倒なので放置中の AppStore::Scraper 、今のところ動いているけど、動かなくなった時なんとかするのも面倒なので、取り急ぎ、公開 API で取得できる情報だけに割り切った WWW::AppStore::Scraper::Lite 作った ...
WWW::AppStore::Scraper::Lite # メンテするのも面倒なので放置中の AppStore::Scraper 、今のところ動いているけど、動かなくなった時なんとかするのも面倒なので、取り急ぎ、公開 API で取得できる情報だけに割り切った WWW::AppStore::Scraper::Lite 作った ...
Mac OS X 10.8 今さらいれた # Mountain Lion こと OS X 10.8 、今さらながらいれてみた 10.7 から正常進化した感じでとまどうことなし 最近カスタマイズとかしないし、使うアプリも限られてるので、あまりハマりどころがないが、確認したことだけ書いとく なんも考えず上書きインストールしたが、特に困ったこともなし Lilypond 普通に動いた。超ラッキー SONY Rearder 用の「eBook Transfer for Reader」普通に動いてる。対応 OS に 10.8 入ってないし、SONY x Mac は過去何度かあかんかったので、ちょっとドキドキしてた 久々に Canna いれた homebrew は Canna ないのね Easy Package のはインストール失敗したり成功しても起動できなかったり MacPorts のはなんのトラブルもなし で、10.8 に対する感想は特になくて、「yc.el は最高」ってことを再確認した
メモ: SONY Reader T2 のデータベース # あとで書くかもしれない とりあえず、さわりがいがありそうな books.db だけ、schema 貼っとく books.db # CREATE TABLE android_metadata (locale TEXT); CREATE TABLE annotation (_id INTEGER PRIMARY KEY AUTOINCREMENT,content_id INTEGER,markup_type INTEGER DEFAULT 10,added_date INTEGER,modified_date INTEGER,name TEXT,marked_text TEXT,mark BLOB,mark_end BLOB,page DOUBLE,total_page INTEGER,mime_type TEXT,file_path TEXT); CREATE TABLE bookmark (_id INTEGER PRIMARY KEY AUTOINCREMENT,font_size INTEGER,mark BLOB,mark_end BLOB,page DOUBLE,total_page INTEGER,page_style INTEGER,page_style_index INTEGER,crop_mode INTEGER,crop_left INTEGER,crop_top INTEGER,crop_right INTEGER,crop_bottom INTEGER,orientation INTEGER,content_id INTEGER,markup_type INTEGER DEFAULT 0,added_date INTEGER,modified_date INTEGER,name TEXT,marked_text TEXT,mime_type TEXT,file_path TEXT); CREATE TABLE books (_id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT,author TEXT,kana_title TEXT,kana_author TEXT,title_key TEXT,author_key TEXT,source_id INTEGER,added_date INTEGER,modified_date INTEGER,reading_time INTEGER,purchased_date INTEGER,file_path TEXT,file_name TEXT,file_size INTEGER,thumbnail TEXT,mime_type TEXT,corrupted INTEGER,expiration_date INTEGER,prevent_delete INTEGER,sony_id TEXT,periodical_name TEXT,kana_periodical_name TEXT,periodical_name_key TEXT,publication_date INTEGER,conforms_to TEXT,description TEXT,logos TEXT); CREATE TABLE collection (_id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT,kana_title TEXT,source_id INTEGER,uuid TEXT); CREATE TABLE collections (_id INTEGER PRIMARY KEY AUTOINCREMENT,collection_id INTEGER,content_id INTEGER,added_order INTEGER); CREATE TABLE current_position (_id INTEGER PRIMARY KEY AUTOINCREMENT,content_id INTEGER,dpi INTEGER,width INTEGER,height INTEGER,version INTEGER,mark BLOB,split_index INTEGER,page_style INTEGER,crop_mode INTEGER,crop_area_left INTEGER,crop_area_top INTEGER,crop_area_right INTEGER,crop_area_bottom INTEGER,font_size INTEGER,reflow INTEGER,font_style TEXT,orientation INTEGER,text_encoding TEXT); CREATE TABLE deleted_markups (_id INTEGER PRIMARY KEY AUTOINCREMENT,content_id INTEGER,markup_type INTEGER,added_date INTEGER,name TEXT,mark BLOB,mark_end BLOB); CREATE TABLE dic_histories (_id INTEGER PRIMARY KEY AUTOINCREMENT,content_id INTEGER,dic_content_id INTEGER,dic_content_name TEXT NOT NULL,dic_searchword TEXT NOT NULL,dic_search_no INTEGER,added_date TEXT NOT NULL); CREATE TABLE freehand (_id INTEGER PRIMARY KEY AUTOINCREMENT,font_style TEXT,font_size INTEGER,mark BLOB,mark_end BLOB,page DOUBLE,total_page INTEGER,page_style INTEGER,page_style_index INTEGER,crop_mode INTEGER,crop_left INTEGER,crop_top INTEGER,crop_right INTEGER,crop_bottom INTEGER,orientation INTEGER,text_encoding TEXT,content_id INTEGER,markup_type INTEGER DEFAULT 20,added_date INTEGER,modified_date INTEGER,name TEXT,svg_file TEXT,thumbnail TEXT); CREATE TABLE freehand_layout (_id INTEGER PRIMARY KEY AUTOINCREMENT,content_id INTEGER,markup_id INTEGER,version INTEGER,page_width INTEGER,page_height INTEGER); CREATE TABLE history (_id INTEGER PRIMARY KEY AUTOINCREMENT,content_id INTEGER,dpi INTEGER,width INTEGER,height INTEGER,version INTEGER,added_counter INTEGER,reading_time INTEGER,mark BLOB,split_index INTEGER,page_style INTEGER,crop_mode INTEGER,crop_area_left INTEGER,crop_area_top INTEGER,crop_area_right INTEGER,crop_area_bottom INTEGER,font_size INTEGER,reflow INTEGER,font_style TEXT,orientation INTEGER,text_encoding TEXT); CREATE TABLE layout_cache (_id INTEGER PRIMARY KEY AUTOINCREMENT,content_id INTEGER,dpi INTEGER,width INTEGER,height INTEGER,font_size INTEGER,reflow INTEGER,font_style TEXT,encoding TEXT,state INTEGER,file_path TEXT,layout_version INTERGER); CREATE TABLE network_markups (_id INTEGER PRIMARY KEY AUTOINCREMENT,content_id INTEGER,markup_id INTEGER,network_id TEXT,markup_type INTEGER,svc_create_date INTEGER,svc_modify_date INTEGER,title TEXT,position_owner TEXT,position_start TEXT,position_end TEXT,client_update_date INTEGER,client_delete_date INTEGER); CREATE TABLE network_position (_id INTEGER PRIMARY KEY AUTOINCREMENT,content_id INTEGER,network_id TEXT,type TEXT,client_create_date INTEGER,svc_create_date INTEGER,position TEXT,percent DOUBLE); CREATE TABLE preference (_id INTEGER PRIMARY KEY AUTOINCREMENT,content_id INTEGER NOT NULL,tone_curve_type TEXT,contrast INTEGER,brightness INTEGER,show_notes INTEGER,binding_direction TEXT); CREATE VIEW collections_view AS SELECT content_id as _id,content_id,collection_id,added_order,title,author,kana_title,kana_author,source_id,added_date,modified_date,reading_time,purchased_date,file_path,file_name,file_size,thumbnail,mime_type,corrupted,expiration_date,prevent_delete,sony_id,periodical_name,conforms_to FROM collections LEFT OUTER JOIN books ON (collections.content_id = books._id); CREATE VIEW freehand_view AS SELECT * FROM freehand LEFT OUTER JOIN (SELECT markup_id AS _id,content_id AS content_id,version,page_width,page_height FROM freehand_layout) USING (_id,content_id); CREATE VIEW markups AS SELECT a._id _id,a.content_id content_id,a.markup_type markup_type,a.added_date added_date,a.modified_date modified_date,trim(a.name) name,a.page page,a.total_page total_page,a.mark mark,a.file_path file1,null file2,b.file_name file_name,b.title title,b.author author,b.kana_title kana_title,b.kana_author kana_author,b.periodical_name periodical_name,b.publication_date publication_date,b.mime_type mime_type,b.source_id source_id FROM bookmark a JOIN books b ON b._id=a.content_id UNION ALL SELECT a._id _id,a.content_id content_id,a.markup_type markup_type,a.added_date added_date,a.modified_date modified_date,trim(a.name) name,a.page page,a.total_page total_page,a.mark mark,a.file_path file1,null file2,b.file_name file_name,b.title title,b.author author,b.kana_title kana_title,b.kana_author kana_author,b.periodical_name periodical_name,b.publication_date publication_date,b.mime_type mime_type,b.source_id source_id FROM annotation a JOIN books b ON b._id=a.content_id UNION ALL SELECT a._id _id,a.content_id content_id,a.markup_type markup_type,a.added_date added_date,a.modified_date modified_date,trim(a.name) name,a.page page,a.total_page total_page,a.mark mark,a.svg_file file1,a.thumbnail file2,b.file_name file_name,b.title title,b.author author,b.kana_title kana_title,b.kana_author kana_author,b.periodical_name periodical_name,b.publication_date publication_date,b.mime_type mime_type,b.source_id source_id FROM freehand a JOIN books b ON b._id=a.content_id; CREATE VIEW periodicals AS SELECT DISTINCT * FROM (SELECT DISTINCT periodical_name,MAX(publication_date) AS publication_date,kana_periodical_name,CASE WHEN COUNT(reading_time)=COUNT(*) THEN MAX(reading_time) ELSE NULL END AS reading_time,MAX(reading_time) AS reading_time,COUNT(periodical_name) AS _count FROM books GROUP BY periodical_name, conforms_to HAVING (periodical_name NOT NULL AND conforms_to LIKE 'http://xmlns.sony.net/e-book/prs/periodicals/%')) AS g LEFT JOIN (SELECT periodical_name,publication_date,kana_periodical_name,_id,source_id,thumbnail,periodical_name_key,logos FROM books GROUP BY periodical_name, conforms_to, publication_date HAVING (periodical_name NOT NULL AND conforms_to LIKE 'http://xmlns.sony.net/e-book/prs/periodicals/%')) AS b ON((g.periodical_name = b.periodical_name) AND ((g.publication_date = b.publication_date) OR (g.publication_date IS NULL AND b.publication_date IS NULL) )); CREATE VIEW uncollections AS SELECT _id,title,author,kana_title,kana_author,source_id,added_date,modified_date,reading_time,purchased_date,file_path,file_name,file_size,thumbnail,mime_type,corrupted,expiration_date,prevent_delete,sony_id,periodical_name,conforms_to FROM books WHERE NOT EXISTS(SELECT 1 FROM collections WHERE content_id=books._id ); CREATE INDEX collections_index ON collections(content_id); CREATE TRIGGER annotation_cleanup DELETE ON annotation BEGIN INSERT INTO deleted_markups (content_id,markup_type,added_date,name,mark,mark_end) VALUES (old.content_id,old.markup_type,strftime('%s', 'now')*1000,old.name,old.mark,old.mark_end);UPDATE network_markups SET client_delete_date=strftime('%s', 'now')*1000 WHERE (content_id= old.content_id AND markup_id= old._id AND (markup_type)/10= (old.markup_type)/10);END; CREATE TRIGGER bookmark_cleanup DELETE ON bookmark BEGIN INSERT INTO deleted_markups (content_id,markup_type,added_date,name,mark) VALUES (old.content_id,old.markup_type,strftime('%s', 'now')*1000,old.name,old.mark);UPDATE network_markups SET client_delete_date=strftime('%s', 'now')*1000 WHERE (content_id= old.content_id AND markup_id= old._id AND (markup_type)/10= (old.markup_type)/10);END; CREATE TRIGGER books_cleanup DELETE ON books BEGIN DELETE FROM preference WHERE content_id = old._id;DELETE FROM current_position WHERE content_id = old._id;DELETE FROM layout_cache WHERE content_id = old._id;DELETE FROM history WHERE content_id = old._id;DELETE FROM bookmark WHERE content_id = old._id;DELETE FROM annotation WHERE content_id = old._id;DELETE FROM freehand WHERE content_id = old._id;DELETE FROM collections WHERE content_id = old._id;DELETE FROM deleted_markups WHERE content_id = old._id;DELETE FROM network_position WHERE content_id = old._id;DELETE FROM network_markups WHERE content_id = old._id;END; CREATE TRIGGER collections_cleanup DELETE ON collection BEGIN DELETE FROM collections WHERE collection_id = old._id;END; CREATE TRIGGER freehand_cleanup DELETE ON freehand BEGIN INSERT INTO deleted_markups (content_id,markup_type,added_date,name,mark) VALUES (old.content_id,old.markup_type,strftime('%s', 'now')*1000,old.name,old.mark);UPDATE network_markups SET client_delete_date=strftime('%s', 'now')*1000 WHERE (content_id= old.content_id AND markup_id= old._id AND (markup_type)/10= (old.markup_type)/10);END; CREATE TRIGGER freehand_layout_cleanup DELETE ON freehand BEGIN DELETE FROM freehand_layout WHERE markup_id = old._id;END;
川端裕人の本紹介企画にのっかる # タイトル通りの内容の企画をためしにやってみます。 川端裕人の著作をネット上にて紹介してくださった方で、ご連絡いただいた方に自著をお送りします。なにぶん個人レベルでの零細な企画ですので、やってみたら意外に大変だったなど、なんらかの不都合があれば即座にやめてしまうかもしれませんが、まあできる範囲でぼちぼちと。 ...
ひさびさのチャリンコ、ひさびさのニックアンドレネイ # 夏歌を迎えにいくのに、久々にチャリンコひっぱりだした なんか整備不良なんてもんじゃないわー(´・ω・`) ...
今まで使った携帯電話をふりかえってみた # なんとなく 現物は手元に残ってないので、文章のみだけど 1995 年 ? アステル AP-11 PHS 。パナソニック製ストレート端末。携帯電話に比べ安かったのと、高速 64k 通信に期待して。なにせパソコンでは 2.4kbps - 28.8k bpps のモデムを使っていた時代なので 1996 年 ? DoCoMo デジタル・ムーバ N103 HYPER ドコモの携帯電話。NEC の二つ折り。DoCoMo といえば N な時代が来る前だけど、結構気に入ってた 1999年 DoCoMo デジタル・ムーバ F601ev 富士通製フリップタイプ。この頃既に耳がちょっと悪かったので、高品質がウリなこの端末を。実際モノは良かったようで、通話先の人に「音いいですね」と言われたこともあった。あと、フリップ部分に油圧ダンパー入ってるのもなんか好きだった 2000年 DDI POCKET エッジ KX-PH35S パナソニック製ストレートタイプ。やっぱり PHS の方が音いいよなぁってのと、単身赴任だったので電話代安くするために 2002年 DDI POCKET AIR EDGE KX-HV210 パナソニック製二つ折り。パナ二つ折りのボタンでパカッと開くのは、多分これが元祖。結構気に入ってたなぁ。サイボウズのスケジュールを Pメール DX で見られるように、とか色々やってました 2002年 AU A5302CA 初 AU。子供連れて里帰りすることが増えて、DDI POCKET は実家だと圏外で、当時は AU の通話品質がよくて、というような理由で。なんでこの機種にしたのかはあんまし覚えてないけど、CASIO のメニューが操作しやすかったのかもしれない。東芝とか日立はどうも手になじまんかったような記憶がある 2003年 AU A5305K 京セラ端末。仕方なしに 機種変更したが、デザインはそれなりに気に入ってた。ディスプレイの解像度は一世代前だった 2004年 AU A1402S SONY 二つ折り。QR コードで遊びたかった ので機種変更。この頃はもう携帯電話は結構でかくなってて、小さいというだけで結構貴重だった 2005年 AU A5513CA いわゆる「G’zOne TYPE-R」。Google Map でてきた頃だったんで、GPS 遊び が楽しかったなぁ。これは 6 年くらい使った。携帯電話の夢機能もそろそろ一段落して、飽きてきてたのもありますな 2011年 AU CAY01 G’zOne の TYPE-X。あんまし欲しくなかったけど、CDMA 停波するしな ってことで。不満たらたらながら、今も使ってま こう並べてみて気づいたんだが、 ...
思いを届ける。思いを受け取る。 # 帰宅したら、川端裕人さんから本が届いていた 好きな作家さんと Blog や Twitter を通じて触れ合うことができる世界は、20 年前には思いもつかなかった世界 しかも自分のためにチョイスしてくれた本を頂けるなんて! この幸せでご飯三杯いける ...
[再訂正] Kinoppy for Mac で自炊マンガを読むなら zip が良さげと思ったが、現状書棚には登録しない方がよさげ。。。だったのは今や過去の話 # 2013/01/09 追記 v1.0.1 で、本棚から本が消える現象も、PDF 表示の問題も解消されました すばらしい ...
よかった探しリース # ←左手 右手→ 今年も結城浩さんの「よかった探しリース 」に参加するよ! 以下、随時書き足す ワシの MO-CHO 以外は、概ね家族健康。今年もよかった! 我が母校「松阪高校」甲子園初出場 。まさか母校を甲子園で応援する日がくるとは! 本当によかった! 本格的に電子書籍生活に突入 。まだまだ完全移行はできないが、置き場に悩まなくてすみそう。よかった! WWW::GooglePlay::Scraper と WWW::AppStore::Scraper::Lite 公開。プログラマとして全然活動してないようで、なんかしてた。ギリギリよかった!