青空キンドル
青空文庫+青空キンドルを使い、Kindle で著作権の切れた小説を表示。
日本語も全くストレスなく読めるのは素晴らしい。
これ程のクオリティのPDFが無料で入手できるのは、本当に頭の下がる思い。
・青空キンドル
http://a2k.aill.org/
青空キンドル
青空文庫+青空キンドルを使い、Kindle で著作権の切れた小説を表示。
日本語も全くストレスなく読めるのは素晴らしい。
これ程のクオリティのPDFが無料で入手できるのは、本当に頭の下がる思い。
・青空キンドル
http://a2k.aill.org/
Kindle との邂逅
Kindle DX が海を渡ってやってきた。
まず、電源を入れずとも表示されている電子インク(フィルムに印字されている訳ではない!)に感動。
表示だけでは電力を消費しないらしい。
とにかく目に優しい。画面の大きさも丁度よい。少し思ったより重い。
Kinect ハックも活発である。
数年後は世界的にシェアを拡大し、きっと飛躍的な進化を遂げているだろう。
Solaris: 半年以上経ったファイルのタイムスタンプの時刻を調べる
「ls –l」コマンドを行った場合、半年以上経過したファイルは変更年月日が表示されるため、
時刻が表示されない。
1: $ ls -l ./foo.txt 2: -rw-r--r-- 1 root root 616 12月 25日 2010年 ./foo.txtタイムスタンプの「時刻」を表示するには、以下のようなやり方がある。
・ls コマンドの「-e」「-E」オプション ⇒ これらのオプションが使えれば、非常に簡単
(Linux であれば「–-full-time」オプションが使える)
1: $ ls -e ./foo.txt 2: -rw-r--r-- 1 root root 616 12月 25日 10:51:18 2010年 ./foo.txt 3: $ ls -E ./foo.txt 4: -rw-r--r-- 1 root root 616 2010-12-25 10:51:18.235541000 +0900 ./foo.txt・pr コマンドによる方法 ⇒ 印刷用ページを出力し、そのヘッダ情報を読み取る
1: $ pr ./foo.txt |sed -n 3p 2: 12月 25 10:51 2010 ./foo.txt Page 1・tar コマンドによる方法 ⇒ 標準出力にアーカイブを出力し、そのまま内容を読み取る
1: $ tar cf - ./foo.txt |tar tvf - 2: tar: ブロックサイズ = 5 3: -rw-r--r-- 0/0 616 12月 25日 10:51 2010年 ./foo.txt補足:LANG=C の場合
1: $ ls -l ./foo.txt 2: -rw-r--r-- 1 root root 616 Dec 25 2010 ./foo.txt 3: $ ls -e ./foo.txt 4: -rw-r--r-- 1 root root 616 Dec 25 10:51:18 2010 ./foo.txt 5: $ ls -E ./foo.txt 6: -rw-r--r-- 1 root root 616 2010-12-25 10:51:18.235541000 +0900 ./foo.txt 7: $ pr ./foo.txt |sed -n 3p 8: Dec 25 10:51 2010 ./foo.txt Page 1 9: $ tar cf - ./foo.txt |tar tvf - 10: tar: blocksize = 5 11: -rw-r--r-- 0/0 616 Dec 25 10:51 2010 ./foo.txtPython: ビットの数え上げ、そして実行時間計測のTips
integer または long integer 型の値のビットを数える方法。(Python らしいアプローチ)
・ビットの数え上げ => bin(x).count('1') イディオムを使う
>>> bin(0).count('1')
0
>>> bin(10).count('1')
2
>>> bin(2**81).count('1')
1
>>> bin(2**81-1).count('1')
81
・最左の'1'のビットの位置 => len(bin(x)) – 3 ※x>0 を前提とする
>>> len(bin(10)) - 3 3 >>> len(bin(2**81)) - 3 81 >>> len(bin(2**81-1)) - 3 80・時間計測
>>> import timeit
>>> min(timeit.Timer("len(bin(2**81))-3").repeat(3))
0.7450731866756541
>>> min(timeit.Timer("len(bin(2**81-1))-3").repeat(3))
0.7362237379329599
PyDev: Unresolved import
Eclipse + PyDev でコーディング中。
from bitarray import bitarray
の行でエディタにエラーが通知されている。
「Unresolved import」とあるが、パスは通っているはず。
試行錯誤のすえ、PyDev のアップデートをしたところ解決した。(Help –> Check for updates)
しかし、まだ PyLint のエラーが出ている。こちらは未解決。
E1101: ... : Instance of 'bitarray' has no 'setall' member
参考:
http://todayspython.blogspot.com/2011/06/web2py-eclipse-unresolved-import.html
コマンドラインによる Windows のスタンバイ
コマンド(スクリプト)から Windows をスタンバイ状態にしたい。
しかしこれが意外と難しいようだ。
電源絡みの外部コマンドとしては「shutdown.exe」 「logoff.exe」などがあるが、スタンバイは実現できず。
行き着くところは「powrprof.dll」であるが、ネットに跳梁している「rundll32.exe powrprof.dll,SetSuspendState」
ではどうだろうか?
これは休止モードが無効であればスタンバイ状態となり要件を満たすが、
休止モードが有効だと休止モード(ハイバネーション)になってしまう。惜しい。
ちなみに、「rundll32.exe powrprof.dll,SetSuspendState 0,0,0」のようにパラメータを増やしたところで
rundll32 が正しく解釈してくれないので全く意味が無い。
「powercfg.exe」で休止モードを無効化することもできるが、スタンバイ状態にするためだけに
グローバルな設定を変えてしまうのはスマートな方法とは言い難い。
結局、今のところ直接DLLを叩くくらいしか有効な手段がなさそうなのである。
VBA(VBScript は直接DLLを利用できないので不可)でも可能と思われるが、今回はC++で作ってみる。
VC++ なら、以下のようなコードである。
1: // Put in standby mode
2: #include <windows.h>
3: #include <powrprof.h>
4: #pragma comment(lib, "powrprof")
5: 6: void main() {
7: SetSuspendState(0, 0, 0); 8: }gcc では、「#pragma comment」が解釈できないため、リンカーに直接DLLを指定する必要がでてくる。
Eclipse CDT ならプロジェクトの Properties から、「C/C++ Build」-「Settings」-「Tool Settings」を開き
「MinGW C++ Linker」-「Libraries」-「Libraries (-l)」に「powrprof」を追加すればよい。
参考:
http://d.hatena.ne.jp/naga_sawa/20080930/1222741442
http://msdn.microsoft.com/en-us/library/Aa373201
Kindle DX の購入
amazon.com で キンドルDX を購入してみた。(まだ amazon.co.jp から買うことはできない)
本体 $379.00 + カバー $54.99 + 送料 $15.97 = 総額 $449.96。