ISW11HT にAndroid4.4.2 kitkat を導入する
はじめに
HTC EVO WiMAX ISW11HT にAndroid 4.4.2 Kitkaを導入した際のメモになります。
本エントリは、完結した情報ではなく、リンク先URLの情報を補うメモと捉えてください。
Kitkat の導入は公式ファームアップデートではなく、いわゆるカスタムROMという形で導入します。 当然、自己責任です。
ざっくり言うとと
私の端末はファームアップデートを行い 2.29.970.01 というバージョンでした。
この状態からはROOT化、S-OFF(セキュリティOFF)ができないため、以下の手順で作業をしました。
ファームウェアのダウングレード
ROOT化&S-OFF
TWRP 導入
カスタムROM導入
ファームウェアのダウングレード
参考となるURL http://www.gorochan.net/archives/1365
- URL先の手順通り進める。以下注意点
- QuickRoot は2回めの再起動直後、白いメッセージが出たらすぐにUSBを抜く
- Android のオレンジが出たらRootが解除されてしまう。
- また、# /data/local/tacoroot.bin --undo の後は、 C:>adb reboot bootloader ←ISW11HTをFastbootモードに移行 C:>fastboot devices ←fastboot接続できているか確認(devicesに表示されたらOK) C:>fastboot oem rebootRUU ←RUU書き込みモードへ移行 で、RUUモードへ移行してから RUU_SuperSonic_K_KDDI_JP_1.05.970.1_Radio_2.15.00.03.04_NV_2.11_release_176711_signed.exe を実行する。
- QuickRoot は2回めの再起動直後、白いメッセージが出たらすぐにUSBを抜く
- URL先の手順通り進める。以下注意点
S-OFF(セキュリティオフ)とRoot化
- ここまでの状態で、OTAで2.16.970.2までファームアップデートを進める
-以下のURLを参考に S-OFFとRoot化を行う
http://uncofiles.blog84.fc2.com/blog-category-1.html
TWRPの導入
- TWRP
http://forum.xda-developers.com/showpost.php?p=51010876&postcount=24 - PC36IMG_TWRP_Recovery_2.7.0.0_SELinux_CPTB.zip をPC36IMG.zipにリネームし、 SDカード直下に配置 ブートローダーを起動(VOLUP&DOWNで電源)RECOVERYを実施 TWRPが起動する。
TWRP インストールは次のURLが参考になります。
文鎮製作工房 ISW11HTにMazwoz-Supersonic-JB-B4を導入。ISW11HTもついにAndroid4.2の未来へ
"TWRP 2.3.2.1のインストール方法"という節からがインストールの方法です。 詳細はリンク先にゆだねますが、ざっくりいうと
GooManager をインストール
GooManager のメニューからTWRP をインストール
AndroidStudio で補完候補の決定をReturn 以外で行う
AndroidStudio の補完について
AndroidStudio ではEclipse と同様、コードの補完(Completion)を行ってくれます。
キーマップをEmacs ライクに設定している場合、候補の選択はC-p
, C-n
でできるのですが、決定の際にReturn を押さなければなりませんが、これでは動作に無駄があります。
これをC-m
などにする方法を調べました。
補完の決定キーを割り当てる
Preferrence->IDE Settings->Keymap から設定を行います。
"Choose Lookup Item" がその名の通り、アイテムを決定するためのキーになります。これにC-m
を追加します。
おわりに
AndroidStudio の補完ウィンドウの決定にReturn 以外を割り当てる方法を説明しました。
- 作者: 八木俊広
- 出版社/メーカー: 秀和システム
- 発売日: 2013/12/06
- メディア: 単行本
- この商品を含むブログ (3件) を見る
OSX Mavericks にemacs24 をインストールする
はじめに
その都度様々Blogを調べて回ることになるMac環境へのEmacs インストール。ここでは備忘録として、OSX Mavericks にEmacs24.3 をインストールする手順をまとめます。
Cocoa 環境で、日本語はGoogle日本語入力を使用しています。日本語入力がアクティブな状態でC-xb
などのショートカットを用いると、b
が正しく入力できません。その対策として日本語パッチを導入したEmacsをインストールする必要があります。
インストール手順
もし古いEmacs がインストールされている場合はアンインストールを行います。
$ brew uninstall emacs
Homebrew のFomula をアップデートします。
$ brew update
Emacs をビルドします。
$ brew install --cocoa -srgb --with-gnutls --japanese emacs
--japanese を付けることで日本語のパッチがあたります。
日本語入力の設定
以下の設定を~/.emacs.d/init.el
に追加します。
;; CmdとOptの入れ替え (setq ns-command-modifier (quote meta)) (setq ns-alternate-modifier (quote super)) ;; Google 日本語入力 (setq default-input-method "MacOSX") (mac-set-input-method-parameter "com.google.inputmethod.Japanese.base" `title "あ")
下の2行を書くことで、Emacs からMac の日本語入力を切り替え、かつ現在のステータスをモードラインに表示することができます。
一般的には日本語入力の切り替えはC-\
に割り当てられています。
Commad キーとOption キーの入れ替えを行っているのは、M-x
を押しやすくするためです。ただしこれはポジショニングや使用頻度によって感覚が異なるでしょう。
おわりに
Mavericks へのEmacs24のインストール方法を説明しました。
参考にしたURL
HomebrewのEmacsにIMEインラインパッチが取り込まれたので設定した - @znz blog
Emacsテクニックバイブル ?作業効率をカイゼンする200の技?
- 作者: るびきち
- 出版社/メーカー: 技術評論社
- 発売日: 2010/08/03
- メディア: 単行本(ソフトカバー)
- 購入: 27人 クリック: 1,039回
- この商品を含むブログ (68件) を見る
Raspberry PI がその日の天気を教えてくれる
はじめに
その日の天気をチェックし雨なら傘を持っていく、当たり前のことに聞こえますが、朝が弱くものぐさな人間には困難の多い作業です。
”調べる”のは面倒だけれども、”教えてくれる”なら聞いてやろう、ということで天気を調べてお知らせしてくれる仕組みをRaspberry PI に組み込みました。
いわゆるXFD(eXtreme Feedback Device)というものに近いのかもしれません。
大まかな流れ
指定の時刻になったら、天気予報をネットから取得し、結果をLED で通知します。これだけです。
LED を光らせるためには
Raspberry PI のGPIO にLEDを接続する必要があります。
天気の取得
以前紹介したWeather Hacks - livedoor 天気情報を利用します。
LED の接続
LEDはGPIO に接続します。GPIO は下の写真の剣山のようにピンが立っている部分です。
それぞれのピンごとに役割が違います。詳しくは以下のURLを参考にしてください。 RPi Low-level peripherals - eLinux.org
今回はGPIO 17, 27番に2色のLEDを接続しました。
LED はブレッドボードというものに差し込みます。 半田付けをせずにLED と抵抗、基盤を接続できる優れものです。
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- この商品を含むブログを見る
ブレッドボードと基盤を接続するにはジャンパワイヤが必要です。 Raspberry PI 基盤側にメスが必要で、ブレッドボード側にオスが必要なのでオス-メスの商品がよいでしょう。
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- 購入: 1人 クリック: 1回
- この商品を含むブログを見る
今回の天気表示では黄色と青のLEDを主に使います。いかにAmazonリンクを貼りますが、少し高いですね。秋葉原などが近ければ電子パーツ店の個売りを利用するのが良いでしょう。抵抗についても同様です。
- 出版社/メーカー: イーケイジャパン
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
- 出版社/メーカー: イーケイジャパン
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
抵抗は470Ωのものを使っています。秋葉原などでは1本5円で売っています。
【PLOVER】 カーボン抵抗 炭素皮膜抵抗 1/4W(0.25W) 許容差±5% オリジナルセット 1Ω?1MΩ 37種類 各20個(合計740個) PR-203
- 出版社/メーカー: PLOVER
- メディア: エレクトロニクス
- この商品を含むブログを見る
接続方法は以下の回路図のようにしました。基本的な接続順はGPIO->LED->抵抗->Ground となります。
今回、赤のLEDは使っていません。
LED の点滅
LEDはコマンドラインから次のような流れで明滅させることができます。
# 27 番に接続したLEDの点滅 $ sudo su $ echo 27 > /sys/class/gpio/export $ echo out > /sys/class/gpio/gpio27/direction $ echo 1 > /sys/class/gpio/gpio27/value $ echo 0 > /sys/class/gpio/gpio27/value $ echo 27 > /sys/class/gpio/unexport
今回はRuby で制御をしたいので上記作業を抽象化したモジュールを書きました。
# -*- coding: utf-8 -*- module LED private def self.led_open(no) begin exp = open("/sys/class/gpio/export", "w") exp.write(no) exp.close rescue => err puts err end end def self.led_close(no) uexp = open("/sys/class/gpio/unexport", "w") uexp.write(no) uexp.close end def self.led_out(no) dir = open("/sys/class/gpio/gpio#{no}/direction", "w") dir.write("out") dir.close end public def blink10(no) led_open(no) led_out(no) out = 1 10.times do val = open("/sys/class/gpio/gpio#{no}/value", "w") val.write(out) val.close out = out == 1 ? 0 : 1 sleep 0.2 end led_close(no) end def on(no) led_open(no) led_out(no) val = open("/sys/class/gpio/gpio#{no}/value", "w") val.write(1) val.close led_close(no) end def off(no) led_open(no) led_out(no) val = open("/sys/class/gpio/gpio#{no}/value", "w") val.write(0) val.close led_close(no) end module_function :on, :off, :blink10 end
このファイルをrequire して、以下のようにすれば希望のGPIO番号のLEDにたいしてON、OFF、点滅(10秒)を指示できます。
require 'pi_led' LED.on(17) # 17番を点灯 LED.off17) # 17番を消灯 LED.blink10(17) # 17番を10秒間点滅
天気予報を表示する
ここまでの仕組みを使って最終的に以下のコードで天気予報を実現しました。
# -*- coding: utf-8 -*- $:.unshift File.dirname(__FILE__) # ロードパスにカレントディレクトリを追加 require 'json' require 'pi_led' LED.off(17) LED.off(27) LED.blink(17) LED.blink(27) # 今日の天気を取得 130010は地域コード # 地域コード変更の場合は http://weather.livedoor.com/forecast/rss/primary_area.xml tenki = JSON.parse!(`curl http://weather.livedoor.com/forecast/webservice/json/v1?city=130010`)["forecasts"][0]["telop"] if /雨/ =~ tenki.to_s LED.on(17) # 雨の場合は青いLEDを光らせる else LED.on(27) # 雨が降らない場合は黄色いLEDを光らせる end
これにより雨で傘が必要なときは青いLEDが光り、傘が不要なときは黄色いLEDが光ります。
まとめ
Raspberry PIを用いて天気予報を行う仕組みを作成しました。 具体的にはその日の天気予報を取得し、傘が必要か否かをLEDの色で表示してくれるというものです。
朝起きて目に付く場所にRaspberry PIをおくことで、傘の忘れ物を防ぐことができるでしょう。
学べた技術要素としては以下の3点です。 ・LED を光らせるための電気的な知識(抵抗、電圧) ・Raspberry PI のGPIOにLEDを接続する ・Raspberry PI のGPIOをRubyで制御する
- 出版社/メーカー: RS Components Ltd (ソースマーキング及び販売 Umemoto LLP)
- メディア: エレクトロニクス
- この商品を含むブログ (11件) を見る
参考にしたURL
EnterとTabを封印してLinux環境でのタイプ効率を上げる
Enter に手を伸ばす非効率
※この記事はCtrlを多用する事を好む一部のマニア向けのものです
タイピング時にホームポジションから手を移動させるのはタイプ効率が悪いと感じています。私の場合、Thinkpadキーボード(トラックポイント付き)を使い、多くのキーボードショートカットを覚えても、どうしてもホームポジションから手を移動させてしまう癖があります。
それはEnterとTabを押す時です。
Enterは改行時や変換確定時、Tabはコンソール上の作業で補完を行うときによく押してしまいます。その他にも人によってはインデントされたプログラムコードの文頭に移動するときなどにTabを使うかもしれません。
これらのタイプはもちろんCtrl-m、Ctrl-iでそれぞれ代用できます。Enter,Tabを使うポイントでしっかりとこれらCtrl系のショートカットを使えればタイピングの効率は多少なりとも上がるでしょう。
Enter を封印して使えなくする
使わないように我慢する、というのはこらえ性の無い私のような人間には不向きです。
ならば話は簡単、使えないようにすれば良いです。
Linuxでキーを封印するやり方
封印はxmodmapという仕組みを使います。
まずは封印したいキーのキーコードを調べます。
$ xev
xev コマンドを立ち上げ、対象となるキーをタイプすると、そのキーの情報が表示されます。その中にKeyCode という数値がありますのでこれを覚えます。Enterは36でtabは23でした。
次にXmodmapに渡すための設定ファイルを次のように書きます。
keycode 23 = NoSymbol keycode 36 = NoSymbol
これをこれを~/.xmodmap という名前で保存し、以下のコマンドを実行します。
$ xmodmap ~/.xmodmap
これでEnterとTabが動作しなくなったはずです。
まとめ
EnterとTabを押す癖を治すことでタイピングの効率が上がるのではないかと考えました。
実践してみて気がついたのは、Enterはほとんど困る場面が無いのですが、TabがつかえないとAlt-Tabでのウインドウ切り替えが使えないためかなり不便になります。
しかし、期間限定でタイピングを矯正するためにこれらキーを封印するのは効果的だと感じています。
ちなみに、タイピング効率がー云々、などと言いましたが、よく言われるプログラムのパフォーマンス向上施策と同様、作業全体において支配的で無い部分の効率化を測っても、トータルの生産性は殆ど変わりません。
Ubuntu にiPhoneがマウントできない問題の解決方
はじめに
Ubuntu13.04または13.10にて、iOS7のiPhoneがマウントできないという現象があり、しばらくの間困っていました。
環境はMac OSX 上のVMWare 環境なのですが、調べてみるとこれに限らず発生しているようです。
具体的な症状
iPhoneをUSBケーブルでPCに接続すると、このPCを信頼しますか?というダイアログが出ます。
ここで信頼するを押しても直後にまた同じだが出てしまい、ubuntu側からiPhoneを認識することができません、
解決策
ubuntuとiPhoneの接続を担うのはlibimobiledeviceというライブラリでこれをアップデートすればこの問題は修正されるという情報を見つけました。
How To Mount iPhone Or iPad With iOS 7 In Ubuntu 13.10
リンク先ではlibimobiledeviceの最新版をビルドしたものも配布してくれています。
まとめ
- Ubuntu13.04, 13.10にiOS7のiPhoneを接続してもマウント出来なかった
- 文中リンク先のlibimobiledeviceの最新版をインストールすることで、問題は解決された
CMAKE によるビルド自動化とテスト実行
CMAKE とは
CMAKE はプラットフォームに依存しないビルド方法を記述するためのツールキットです.CMAKE独自の書式で書かれたビルド記述をcmake コマンドに渡すと、MakefileやVisualStudio,Xcodeのプロジェクトファイルを生成してくれます.
つまり、一度CMAKE でビルド方法を書けば、あらゆるプラットフォームでプログラムをビルドできるわけです.
CMAKEを試してみる
以下の様なツリー構成のライブラリプログラムでCMAKE を用いたビルド・テスト環境を作成してみました.
cmake ├── krmalloc │ └── krmalloc.c └── krmalloc_test └── krmalloc_test.c
krmalloc.c はライブラリコードです.このソースコードを元にlibkrmalloc.c を作成したいです.krmalloc_test.c はkrmalloc のテストコードです.
krmalloc はK&R のC言語本 に記載のmalloc関数の実装を真似たものです.ここでは中身には触れません.
ソースツリーのトップ(cmakeディレクトリ)でビルドとテストを実行できるようにすることを目的とします.今回の環境はLinux で、CMAKEコマンドからMakefile を出力するようにします.
CMAKE のインストール
CMAKEのインストールはソースコードからインストールする方法とバイナリを取得する方法があります.
私の環境Ubuntu13.04 では$ sudo apt-get install cmake
で簡単にインストールすることが出来ました.
ソースツリーのトップのCMakeLists.txt
まずはソースツリーのトップにCMakeLists.txt を置きます.中身は以下のようになります.
# このバージョン以上のCMAKEを使うよう宣言 cmake_minimum_required(VERSION 2.8.1) # プロジェクト名 project(cmakesample C) # バージョン番号 set(serial "1.0.0") # テストを有効にする.CTestによるテスト実行が可能になる enable_testing() # サブディレクトリを指定.指定したディレクトリ内のCMakeLists.txt が実行される add_subdirectory(krmalloc) add_subdirectory(krmalloc_test) # テストの登録.krmalloc_testディレクトリの krmalloc_test バイナリを # 'test01'として登録する. add_test(test01 krmalloc_test/krmalloc_test)
krmalloc ディレクトリのCMakeLists.txt
krmalloc ディレクトリのCMakeLists.txtを以下のように書きます.
# このバージョン以上のCMAKEを使うよう宣言 cmake_minimum_required(VERSION 2.8.1) # プロジェクト名.C言語であることを宣言 project(cmakesample C) # リリースビルドのためのコンパイラオプション set(CMAKE_C_FLAGS_RELEASE "-Wall -Wextra -O2") # デバッグビルドのためのコンパイラオプション set(CMAKE_C_FLAGS_DEBUG "-Wall -Wextra -g") # ライブラリの作成を指示.SHARED で共有ライブラリ. # krmalloc.c を元に、libkrmalloc.so という名前で作成される. add_library(krmalloc SHARED krmalloc.c)
add_library を複数書くことにより、ライブラリに複数のソースコードを含めることができます.
デバッグとリリースの切り替えはcmake コマンドの引数によって行います. 詳しくはコマンドの説明の部分で書きます.
krmalloc_test ディレクトリのCMakeLists.txt
krmalloc_test ディレクトリのCMakeLists.txtを以下のように書きます.内容はkrmalloc のCMakeLists.txt と同じです.
cmake_minimum_required(VERSION 2.8.1) project(cmakesample C) # build options for release set(CMAKE_C_FLAGS_RELEASE "-Wall -Wextra -O2") # build options for debug set(CMAKE_C_FLAGS_DEBUGE "-Wall -Wextra -g") link_directories(../krmalloc) add_executable(krmalloc_test krmalloc_test.c) target_link_libraries(krmalloc_test krmalloc)
ビルドを行う
最終的にツリーは以下のような構成になりました.
cmake ├── CMakeLists.txt ├── krmalloc │ ├── CMakeLists.txt │ └── krmalloc.c └── krmalloc_test │ ├── CMakeLists.txt └── krmalloc_test.c
ここまで準備ができればビルドを行うことができます.
$ cd cmake $ cmake . # '.' を忘れないように! $ make $ make test
これでテストまで実行されるはずです.
デバッグモードでビルドするためにはcmake コマンド部分以下のようにします.
$ cmake -DCMAKE_BUILD_TYPE=Debug .
まとめ
クロスプラットフォーム環境向けビルドツールのCMAKEを試しました.
一度書くだけで、ソースツリーをあらゆる環境でビルドできるのは非常に頼もしいです.一方で、CMAKEの記法は独自のものであり、習得に時間がかかるのも事実です.