最終更新: 2012-06-05T20:30+0900
Readerに接続したメモリーカードのルートにこのスクリプトをコピーして実行するとそのメモリーカード内で最後に開いた 3冊の本がホーム画面に並ぶという、以前書いてたあれをすることに。並べ替えが PC接続時に限られるのがいまいちでその気はなかったのだけど。
方法は、ファイルの最終更新年を未来のものに書き換えてる。本来の更新年月日を最終アクセス年月日として保存してるのでアクセス日の記録は失われる。
今使ってる版はこれ($3-touch_last3_opened_books.20120101.rb)。MemoryStickと SDカードの二枚差しになったのでメモリーカードドライブのルートで実行する代わりにドライブ文字をハードコーディングしてる。ところで、Rubyの 2038年問題って何?初耳。このスクリプトの「MAGIC_YEAR = 2035..2037」って部分と明らかに関係があるんだけど。
Bing検索でトップのスライドを読んだら Ruby 1.9.2で Timeが大幅にパワーアップしてるらしい。2038年以降だけでなく以前に書いた(組み込みの Timeが UTCと localtimeしか扱わないのがもったいない。任意のオフセットに基づいた日時を出力したいだけだから、DateTimeは牛刀な印象がある)、任意の時差も扱えそう。そもそも Timeの制約って OSの制約がそのまま見えてたってわけだったのか。
今使ってる版はこれ。
$3-touch_last3_opened_books.20120605.rb (2.1KiB)
オプションを新設。--set
オプションで最近読んだ三冊の更新日時を未来のものにセット。--reset
オプションで本来の更新日時を復元。オプションなしで従来通り reset&set。
分離できるようにした理由は、更新日時の復元と更新の間に、robocopyで Readerと自炊ファイルの同期を行いたかったから。2035(,2036,2037)年のタイムスタンプがセットされたままだと Readerにある方が新しいと誤認されて転送されなかったりする。
それと、連続して --setを行うと本来の更新日時が失われる不具合を修正。何度 --resetして --setして --setしても同じ結果になるように。
* 作業した順番が悪かったせいで『4871826090』だとか『4871826198』だとかが。
最終更新: 2012-11-03T16:19+0900
主観的な評価なのでどうでもいいと無視したもの、(PRS-650にて)未使用の機能につき評価不可能なものは含まれておりません。
関係ないけど、Calibreが取得したニュースを転送する前に「デバイスから本の情報リストを取得」するんだけど、それが完了するまでに充電が終わってしまった。約一時間。今度は忘れずに接続前にメモリーカードを抜いておこう。問題ないかな?
Calibreは空のコレクションを勝手に削除する。
最終更新: 2011-10-29T21:40+0900
何時間もかかるこれがどうやったら速くなるでしょうか?
いまは可能な組み合わせを全て試してみて、できあがった数字をカウントしてる。その後で素数を順番に辿って生成カウントが 1のものを足し合わせたものが答え。上限が 10倍になるごとにどえらく計算量が増える。かけ算ならまだしも足し算の組み合わせに有効な考え方を自分が全く持ち合わせていないことがこれまでの問題からも何となくわかってる。どうすんの?
# PE333 require 'mathn' # Primeが使いたいだけなのに。グローバルフラグは悪。 UPPERBOUND = 100_0000 EXP3_UPPERBOUND = (Math.log(UPPERBOUND)/Math.log(3)).floor+1 EXP2_UPPERBOUND = (Math.log(UPPERBOUND)/Math.log(2)).floor+1 # × 2^0 2^1 2^2 2^3 2^4 2^5 2^19 # 3^0 1 2 4 8 16 32 524288 # 3^1 3 6 12 24 48 96 # 3^2 9 18 36 72 # 3^3 27 54 # 3^4 81 # 3^5 # 3^12 531441 primes = Hash.new(0) q = [] sum_of_q = lambda{ sum = 0 last_exp3 = EXP3_UPPERBOUND q.each_with_index{|exp3,exp2| next if exp3 == last_exp3 sum += (1<<exp2) * 3**exp3 last_exp3 = exp3 } return sum } fill_q = lambda{ q.fill(q.last||EXP3_UPPERBOUND, q.length, EXP2_UPPERBOUND-q.length); } fill_q.call until q.empty? exp2, pow2 = q.length-1, 1<<(q.length-1) next q.pop if q[exp2] == 0 q[exp2], pow3 = q[exp2]-1, 3**(q[exp2]-1) sum = sum_of_q.call q[exp2], pow3, sum = q[exp2]-1, pow3/3, sum-(2*pow2*pow3/3) while 0 <= q[exp2] and UPPERBOUND <= sum next q.pop if q[exp2] < 0 primes[sum_of_q.call] += 1 fill_q.call end sum = 0 Prime.new.each{|pr| break if UPPERBOUND <= pr sum += pr if primes[pr] == 1 } p sum p Process.times #=> <struct Struct::Tms utime=25990.64, stime=150.806, cutime=0.0, cstime=0.0>
最終更新: 2011-10-27T13:34+0900
本機は省電力機能により以下のように動作します。
- 約10分間操作がないと自動的にスリープモードに入ります。
さらに3日間*操作がない場合には、電源が完全に切れます(シャットダウン)。
*バッテリーの残量がほとんどない場合、3日以内に電源が切れることがあります。
ご注意
省電力機能はオフにできません。音楽の再生中や、写真をスライドショーで表示しているときは、省電力機能は効きません。
文書番号:038034更新日:2011/10/19
新型の省電力機能はシャットダウンまでの待ちが 2日から 3日に伸びて(※スリープまでは 10分でそのまま)、そして馬鹿げたことにオフにすることができなくなってる。>「ふとした拍子に届いてしまいそうな近くにタイムアウトが存在していることが俺には耐えられない。そういうときっていうのは集中してるとき(あるいは寝てるとき……)なんだから邪魔されたくない。(20111013p01)」
スクリーンセーバーだとかを設定する機能が旧型からあるが、PRS-650のそれを何にするか迷ったりはしなかった。読みかけのページが表示されていればいいからだ。ブックカバーを開けば続きが読める、それがいいのじゃないか。なんであれや(SS)これや(Sleep)で遠ざけることに熱心なんだ。
スリープモードの時の表示が、kindleのようなランダムな画像ではなくそのとき読んでいる(最後に読んだ)本の表紙になっています。
これは評価する。それでもスリープにはしない(=最後に表示したページが表示されたまま。タッチセンサーがオンなのに注意)けど。