2012年7月9日月曜日

iPhoneやiPadを電灯替わりに『LED 懐中電灯 HD』

このエントリーをはてなブックマークに追加
寝る前に本を読みたい。暗がりの中で何かを探したい。そんな時にiPadやiPhoneを蛍光灯替わりに使えたら便利です。そんな機能を持つ無料の電灯アプリで、使用してみてとても良かったのが『LED 懐中電灯 HD』です。

LED 懐中電灯 HD(iPad)

点灯したい時は好きな蛍光灯の色を選んでボタンをタップするだけです。他の電灯アプリと比較して良いと思ったところは、蛍光色の選択幅が広い所です。寝る前はオレンジ色、何か探したい時は白色など、用途に応じて好みのカラーが細かに設定できて良いです。

 画面の明るさは画面の右側を上下にスライドすることで簡単に調整できたりします。また、ボタンをタップしたときには切替音が鳴ったりして、演出も素敵です。

2012年6月16日土曜日

エンベデッドシステムスペシャリスト試験のまとめ

このエントリーをはてなブックマークに追加
エンベデッドシステムスペシャリスト試験に合格したので、結果と試験対策を書いておきます。

エンベデッドシステムスペシャリスト試験とは

その名の通り、組み込みシステムに関する試験です。一定の知識レベルを計る試験ですので、実務経験は特に必須ではありません。ソフトウェア・ハードウェア両方の知識が要求されます。

結果


午後I、午後IIを見ると、なんとかギリギリ合格できた結果です。ただ、自分自身の感触としては、合格しているならもう少し点数が高いと思っていました(こんなに間違ったのだろうかという感触です)。午後I、午後IIともに解答欄は、自分なりに納得した答えを埋めていたので、思ったよりも点数がない感がありました。

試験対策

基本的に過去問を解く以外やっていません。過去問で勉強する上でのポイントは、次の2つです。

  • 問題を解いて間違ったところ、わからないところの知識はきちんと復習する。
  • 記述問題の答えの書き方に慣れる。

1つ目は、当たり前過ぎるかもしれません。また、一般的な教科書を満遍なく勉強していくよりは、過去問で間違ったところから起点に勉強していく方が、効率よく覚えていくことができると思います。午前の問題は、選択式かつ例年似たような問題が出るため、過去問を数年分解いて、間違えた問題を間違いなく覚えるようにするだけで、6割の合格ラインに到達するはずです。
2つ目は、試験に合格するためのちょっとしたコツです。私の勝手な想像ですが、記述式の問題では、自分で答えのニュアンスがだいたいわかっていても、それを限られた文字数の答えに落とすためにはちょっとした慣れが必要です。いくつか問題を解くだけでも、記述式の答えを書く感覚が養えるので、この記述問題の答えの書き方に慣れるということを意識して、過去問を解くといいと思います。

以上の2つのことを意識して過去問を解くことが、私なりの試験対策でした。

ちなみに過去問とその解答は、IPAが公開しています。
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2012h24.html

感想

エンベデッドシステムスペシャリストは、情報処理技術者試験のほかの試験区分と比べると、組み込みということで少し特殊な分野かと思っていましたが、そうでもありませんでした。過去に、ソフ開(今の応用情報)とネットワークを取りましたが、そのときと同じ試験対策で合格することができました。次の秋季試験では、システムアーキテクトか情報セキュリティスペシャリストを受けようと思います。



2012年4月23日月曜日

端末の傾きでスクリーンの自動消灯を無効にする『Screebl』

このエントリーをはてなブックマークに追加
Android端末ディスプレイのバックライトを、省エネのために、何秒かたった後に自動で消灯するように設定しておく人は多いと思います。しかし、文章をじっくり読んでいたら画面が突然真っ暗になったりして不便に感じることがあります。Screeblは端末を傾けたままにしておくと、スクリーンの自動消灯をオフにしておくことができます。

Google play:Screebl


Screeblを起動すると上図の画面が現れるので、「Screebl有効」にチェックを入れます。
この画面でMENUキーを押し、設定をタップすると傾き具合の範囲が設定できる画面に移ります。


「縦向き傾き」では、例えば端末の縦向きの傾きが20°から70°であればバックライトの自動消灯を行わないなどの設定ができます。縦向きの傾きは端末を床に置いた状態を0°、床と垂直に立てた状態を90°としています。

バックライトが自動消灯モードになっているかどうかは、ステータスバーの携帯端末のようなアイコンで分かります。上図では左から5番目がそのアイコンです。携帯端末のアイコンが緑の状態のうちはバックライトが自動で消えないようになっています。

これで、自動消灯をしないために、定期的に画面をタップする煩わしさから解放されて楽になれました。

2012年3月9日金曜日

minttyにカラースキームを適用する

このエントリーをはてなブックマークに追加
Cygwinのターミナルエミュレータminttyにカラースキームsolarizedを適用します。minttyのデフォルトカラースキームもいいですが、solarizedの方が目にやさしいと思います。

solarized mintty

まず、solarizedの公式ページ。
SOLARIZED

mintty版のsolarizedはこちらにあります。
mavnn/mintty-colors-solarized

READMEのところにも書いてありますが、まず、sol.darkとsol.lightをダウンロードして適当な場所に置きます。次に、以下のコマンドを実行します(もちろん、your_dirは適当に置いた場所です)。これによりカラースキームがターミナルに適用されます。

source ~/your_dir/sol.light

or

source ~/your_dir/sol.dark

minttyの起動時にカラースキームを適用させるには、cygwin上の /etc/bash.bashrc に上記コマンドを追加します。以上で、カラースキームsolarizedの適用は終わりです。

vimやemacsにも、このsolarizedのテーマが引き継がれるようなので、エディタも見やすくなります。 ただしvimの場合は、.vimrcにsyntax enableを追加する必要があるかもしれません。


参考ページ
新卒さんのための人気Vimカラースキーマランキング5+1(vim.org & github調べ) - 常識という迷信

2012年3月6日火曜日

Rubyでスレッド処理をしてみた

このエントリーをはてなブックマークに追加
Rubyでスレッド処理をしてみました。ちょっとでも使えるようになると、プログラミングが楽しくなるのが、スレッド処理かなと思います。

今回のサンプルプログラムでは、メインとなるプログラムのスレッドのほかに、2つのスレッドを作成します。それぞれのスレッドで文字列を並行して出力させ、実行結果がどうなるか見てみます。

thread_sample1.rb
require 'thread'

# 1つ目のスレッド(作成後、すぐに走り始める)
Thread.new do
  5.times do
    puts "Thread1"; $stdout.flush
  end
end

# 2つ目のスレッド(作成後、すぐに走り始める)
Thread.new do
  5.times do
    puts "Thread2"; $stdout.flush
  end
end

# 上記2つのスレッドの実行が終わるのを待つ
Thread.list.each { |t| t.join unless t == Thread.current }

puts "Main Thread"


実行結果
(※同じプログラムでも、実行環境によって実行結果が変わると思います。)
$ ruby thread_sample1.rb
Thread1
Thread2Thread1

Thread2
Thread1
Thread2
Thread2Thread1

Thread1Thread2

Main Thread


プログラムではputsを使って文字列を1行単位で出力させている($stdout.flushも敢えて実行させている)はずですが、実際の実行結果では、なぜか"Thread2Thread1"と続けて文字列が出力されました。このあたりがスレッド処理特有の現象で、1つのメインプログラムだけのシングルスレッドではなかなか予想できないことが、起きるようになります。

この"Thread2Thread1"と出力された原因は、おそらく、Thread2が出力バッファからflushされる前に、Thread1が出力バッファに書きこまれたためです。よって、出力部分をMutexでロックしてflushまでをアトミックな処理にするようプログラムを変更してみます。

thread_sample2.rb
require 'thread'

# Mutex
lock = Mutex.new

# 1つ目のスレッド(作成後、すぐに走り始める)
Thread.new do
  5.times do
    lock.synchronize { puts "Thread1"; $stdout.flush }
  end
end

# 2つ目のスレッド(作成後、すぐに走り始める)
Thread.new do
  5.times do
    lock.synchronize { puts "Thread2"; $stdout.flush }
  end
end

# 上記2つのスレッドの実行が終わるのを待つ
Thread.list.each { |t| t.join unless t == Thread.current }

puts "Main Thread"


実行結果
(※同じプログラムでも、実行環境によって実行結果が変わると思います。)
$ ruby thread_sample2.rb
Thread1
Thread1
Thread1
Thread1
Thread1
Thread2
Thread2
Thread2
Thread2
Thread2
Main Thread

今度は、putsからflushまでがアトミックな処理として行われたことを反映して、Thread1, Thread2の文字列出力が1行ごとに出力されています。スレッドを使うと予期せぬ現象が起こり、バグになりやすいため扱いが難しいところもありますが、その分使いこなせるようになるとおもしろいと思います。

参考ページ
ミューテックス - Wikipedia -
アトミック性 - Wikipedia -
スレッドセーフ - Wikipedia -