ブログ・ア・ラ・クレーム

技術的なメモとかライフログとか。

OSのブートとサスペンドによる消費電力についての一考

OS起動時は、デバイスやシステムの初期化、各プロセスの立ち上げなど仕事が多く存在し、これが結構な電力消費になります。
そして頻繁に起動/シャットダウンするような場合には、サスペンドを利用した方がトータルで見た消費電力が低くなります。(起動も速くなりグッドですね)
しかしながらサスペンドは通電した状態を維持するので、完全にシャットダウンする場合と比較しある程度の待機の為の電力消費が発生します。
ならばさて、その損益分岐点はどこにあり、どの頻度で起動/シャットダウンを行うならば、サスペンドで代替してしまった方が低消費電力になるのでしょうか。


色々調査してみますと、Windows 向けにはなりますが以下のような分かり易い資料を発見しました。
シャットダウン vs. スリープ
http://technet.microsoft.com/ja-jp/windows/hh146895

この資料の測定環境では、Windows 7 において1時間40分あたりで消費電力量が逆転する格好になるようです。
つまるところ、ユーザがマシンの使用を一旦止め、再び使用を再開するまでの間が1時間40分以下であればサスペンドを、それ以上であればシャットダウンしてしまうのが、電力消費的に視ればお得という事になるのかと。


ちなみにこの資料におけるサスペンドの待機電力ですが、Windows7 において1Wだそうで。
これを参考に、仮に一ヶ月サスペンド状態で放置した場合の電気代を、電気代計算シミュレータ(http://www.ienakama.com/tips/page/?tid=353 )で算出してみたところ、16.5 円になりました。
これなら、無駄に消費電力を高めているという良心の呵責に囚われなければ、サスペンドを常用しても良さそうな気がします。

Redmine がError message: Cipher is not a module で動かない件

自宅のサーバ上で、Redmine をPassenger でデプロイしているのですが、いつの間にかアクセス時にエラーを吐くようになっていました。
環境は以下の通り。

$ cat /etc/redhat-release
CentOS release 5.7 (Final)
$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux]
$ rails -v
Rails 2.3.5

ちなみにRedmine のバージョンは、Redmine 0.9.3.stable

そして、passenger が吐くエラーメッセージはこんな感じ。

Error message:
  Cipher is not a module
Exception class:
  TypeError

どうも、ruby 1.8.7 のopenssl ライブラリが原因の模様。
下記URLを参照しつつ、ソースを引っ張ってきて、ライブラリを再インストールすれば大丈夫な模様です。
http://posterous.mclov.in/how-to-solve-the-cipher-is-not-a-module-error

最近の事、睡眠障害の事

最近、夜に上手く寝付けない事が多く困っています。
それゆえ、バイトや講義、ゼミにほとんど睡眠をとれていない状態で参加せざるを得ず・・。
もう8月中旬くらいからこの状態になっていたので、いい加減病院に行こうかと考えています。


眠れない。その原因の一部はストレスかも知れない。
上手い事研究が進んでいない。手応えを感じない。そうして今している事に自信が持てず不安感が拭えない。
なかなか難しい事です。あまり研究に向いていないのだろうか、などと思ってしまいます。
1年少々やったくらいで適正を占えるのか、という点は議論の余地がありそうですが。どうにも自信を喪失してしまっています。

Auto Network Switcher アップデート

ネットワーク接続を自動的にON/OFFするAndroidアプリ「Auto Network Switcher」をアップデートしました。

https://market.android.com/details?id=jp.syucream.ans&feature=search_result


更新箇所は以下の通り

  • 通話中に誤って機内モードへ移行しないようにした
  • 「今すぐ接続状況をチェック」ボタンを実装
  • その他細かい修正

IntelliJ IDEA 上でAndroid アプリのパッケージ名変更時に気を付けたいこと

IntelliJ IDEA を使用してAndroid アプリを書いているのですが、リファクタ機能を用いてパッケージ名を変更した後、ビルドは通るものの以下のようなエラーが吐かれアプリの起動が上手く行かない・・・などといった症状に陥りました。

ActivityManager: Starting: Intent { comp={XXX/XXX} }
ActivityManager: Error type 3
ActivityManager: Error: Activity class {XXX/XXX} does not exist.

どうやら上手くディレクトリ名が変更されてなく、かつAndroidManifest.xml の記述もおかしかったので修正。
しかしまだ同様のエラーが吐かれる。

そこで旧パッケージ名でgrep してみると、IntelliJ IDEA の設定ファイル ./.idea/workspace.xml が怪しい。
このファイル中の旧パッケージ名を新パッケージ名に置換したところ、上手く動きました。
なるほど、どうやらIntelliJ IDEA のAndroid 向けプラグインは自分の設定ファイルを用いてアプリ起動などさせているみたい?

rspec の実行を加速しストレスフリーな開発環境へ

クーガーの兄貴は言いました。「お前に足りないものは、それは〜  情熱思想理念 ... (中略) ... 速さが足りない!!」

さて最近Rails アプリケーションのテストをrspec で記述しているのだけど、テスト数が1000 を越えてくるとなかなかどうして全てのテストが走り切るのに大変時間がかかる。
遅いというのは大変ストレスが溜まります。
そこで最近は、autotest とspork の組合わせによりテストの実行を高速化し、ストレスフリーな開発をしています。



autotest はファイルの変更を監視し変更分のみのテストを回してくれます。
そしてspork はテストの初期化処理周りをキャッシュしてテストの実行開始を高速化してくれます。
また、autotest は差分のテストがsuccess した後に全体のテストを回してくれます。開発中はこれは毎度廻らなくてよい(と思われる)ので、以下のようなオプションをつけて差分テストのみ回すようにするとベターかも。

$ autotest -cf

Android でソフトウェアバックキーを提供する

iOSアプリをAndroidに移植したい時に需要が有る筈。
iOSアプリの、画面上部にあるBackボタンをAndroid でも提供します

Back ボタンと同じ動作をさせたいのなら、普通にActivityを終了させればOK

Button backButton = (Button)findViewById(R.id.backkey);
backButton.setOnClickListener(new View.OnClickListener(){
    public void onClick(View view){
        finish(); // 画面上のBackボタンが押されたらActivityを終了する
    }
});