〜2015年7月上旬〜
そういうケースもあるよな。
なんで名無しのコレクションができるのかと思ったら当たり前だ。
その時はファイル名に著者名も入れとけば、
いちいち設定しなくてもいいじゃんと思っていたわけで。
こういうときはディレクトリ名なら問題ないわけか。
著者名がない場合はディレクトリ名とすればいいわけだが、
そんな処理を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'
やっぱ著者名をつけ直したほうがよさげだ。
今日もSony Reader。triggerはお手軽だけど設定した後に追加された文書しか有効ではない。
すでに登録されてるものはどうすればいいのか?
一度PCに退避してDBも消せば初期化されるので、
その状態でtriggerを設定して戻せばいけそうだ。
しかし数百MBもあるしなんか頭悪い。
books.dbだけいじればいいわけで、booksテーブルを初期化しちゃうのがいいかもしれない。
% sqlite3 books.db 'delete from books'
でうまくいった。ちゃんと再構築してくれるのでそのついでにtriggerが発火する。
ああ、だったらtriggerじゃなくてsqlite3で直接実行するのもありか。
ふりがなとかもつけられるし。いやふりがなはあってもあまり意味ない。
長いタイトルが横スクロールするようになり気づいた。
変更点。
フォルダの位置を末尾にしたかったのでこの変更はうれしいが、
メニューが増えて一括操作への動線が遠くなったが難点。
もっと動きが速ければ気にならないんだろうけど。
久し振りにInstapaperでePubに変換しようとしたら、
かなり様変わりしていて方法が見つからない。
昔は右にサイドバーがあってKindleとかePubのボタンがあったよね。
いろいろ探しまくって試行錯誤してやっと発見。
右上の自分のメールアドレスをクリックして、
Download...を選べば出てきた。
で、相変わらず日本語が化けるePubができあがってげんなりしている。
いつのまにかbashと同じように{a..c}がa b cに展開されるようになっていた。
% echo $ZSH_VERSION {a..c} 5.0.2 {a..c}
5.0.2では展開されない。
% echo $ZSH_VERSION {a..c} 5.0.7 a b c
5.0.7ではされる。 ZSHのRelease Notesには書かれてないような。
昨日のzshの release noteを見てたら5.0.6で気になる記述が。
Another new prompt feature is the %. escape within time strings, for example %D{%H:%M:%S.%.}. It provides zero-padded decimal fractions of second; by default milliseconds are shown, but the number of digits may be indicated from 1 to 6, e.g. "%6.". (Note this is part of the extensions to strftime() formats rather than basic prompt escapes.)
%Nじゃなくて%.なんだな。
% date +%T.%3N;date +%T.%3N 01:04:52.435 01:04:52.437 % date +%T.%3N;echo ${(%)${:-%D{%T.%.}}} 01:04:54.867 01:04:54.868
なんかすごくそれっぽい。ビルトインなだけに速いわけだ。
適当に試行錯誤した結果なので余計な${}が入っていた。
${(%)${:-%D{%T.%.}}}
この内側の${}が不要。
% echo ${(%):-%D{%T.%.}} 01:34:57.657
ちょっと説明しておくと(%)がprompt sequenceの展開。
% Expand all % escapes in the resulting words in the same way as in prompts (see EXPANSION OF PROMPT SEQUENCES in zshmisc(1)). If this flag is given twice, full prompt expansion is done on the resulting words, depending on the setting of the PROMPT_PERCENT, PROMPT_SUBST and PROMPT_BANG options.
それと:-での変数展開時には変数名を省略することもできる。
${name-word} ${name:-word} If name is set, or in the second form is non-null, then substitute its value; otherwise substitute word. In the second form name may be omitted, in which case word is always substituted.
実はprint -Pでprompt sequenceの展開ができるのでもっと簡単に書ける。
% print -P %D{%T.%.} 01:39:27.587
確かにどこかのフォルダをいじってるときにふとボタンを押したが、
なんでデスクトップに居座るのか?
これが右クリックを押しても消せる気配すらない。
しかしぐぐるとなぜかいっぱいヒットするわけで、
しかも解決方法も同じだ。なぜか表示されることもあるらしい。
いやいやこれバグだろ。というわけであとは
デスクトップに「最近表示した場所」が表示されるを参照。
ドキュメントを読むとDeleteRequestとPutRequestが仲良く並んでいるので、
当然混在できると思い機会を伺っていたが、
結局のところだめらしい。
ValidationException: Supplied AttributeValue has more than one datatypes set, must contain exactly one of the supported datatypes
言われてしまう。まあ、英語をよく読めばちゃんと書いてあるのであった。
- You try to perform multiple operations on the same item in the same BatchWriteItem request. For example, you cannot put and delete the same item in the same BatchWriteItem request.
なんかいつの間にかアプリを登録してAppIdを取得しないといけない仕様になっていた。
取得は簡単で設定のアプリ開発で新しいアプリを作るをクリックして適当に名前をつければいいだけ。
あとはHeaderにAppId:とAppKey:を設定すればok。
10分ごとに起動したとして2APIを使っても1日288回なので1万回とかいう制限は全然問題ないな。
実際は1時間だし。