ブログ::=(メモ|落書き)帳

一人前になれないプログラマのメモと落書き

Xperia SO-01B をAndroid2.3.3にアプデした

使わなくなって1年経つ初代Xperiaを今更ながらAndroid2.3.3にアップデートしてカスタムROMいれて無事動かせたので手順をメモっときます。


環境/準備

  • PC: Ubuntu 12.04
  • Flashtool: v0.9.10.1
  • Sony Ericsson純正2.3.3ROM: X10i_3.0.1.G.0.75_GLOBAL-GGL GENERIC 1232-9897.ftf
  • カスタムROM: ThGo2_v18.0c

root化 & バックアップ

  1. PCにFlashtoolをFlashtool -- Xperia devices flashingのInstallationからダウンロードしてインストールする。FlashtoolはWindows/Linux/Mac向けがある。
  2. Xperiaの設定をUSBデバックモードに変更するため、「設定」→「アプリケーション」→「開発」→「USBデバッグ」にチェック入れる。
  3. Flashtoolを起動する。
  4. XperiaをUSBで接続する。
  5. Xperiaのrootを取得するため、Flashtoolの南京錠アイコンをクリックする。
  6. Xperiaを再起動する。
  7. xRecoveryをXperiaにインストールするため、Flashtoolの+アイコンをクリックして0.3GBを選択してOKをクリックする。
  8. xRecoveryを起動するため、Xperiaを再起動し、Sony Ericssonのロゴが出たらXperiaの←ボタンの長押しを何回も行う。
  9. xRecoveryが起動したら「Backup and Restore」→「Backup」を選択する。(音量ボタン:上下移動、HOMEボタン:決定)

Android 2.3.3にアップデート

  1. X10i_3.0.1.G.0.75_GLOBAL-GGL GENERIC 1232-9897.rarをxperia x10 | 所感 ~android~からダウンロードし解凍する。
  2. FlashToolのインストール先のfirmwares/ディレクトリにX10i_3.0.1.G.0.75_GLOBAL-GGL GENERIC 1232-9897.ftfをコピーする。
  3. FlashToolを起動し、稲妻アイコンをクリックをクリックしてFlashmodeを選択してOKをクリックする。
  4. X10iを選択してOKをクリックする。(このときXperiaはPCから外しておく)
  5. Xperiaの電源切って←ボタン押しながらPCにUSBで接続する。
  6. LEDが緑色に光ったら←ボタンを離す。
  7. FlashToolの書き込みが終わったら、Xperiaを再起動してAndroid 2.3.3で起動することを確認する。
  8. 上記root化 & バックアップの手順でroot取得、xRecoveryのインストール、Backupを行う。

カスタムROM:ThGo2v18.0cインストール

  1. 「ThGo2_v18.0c.zip」をフォルダを漁ってたら出てきたので… | 所感 ~android~からダウンロードする。
  2. XperiaのMicroSDカードに「ThGo2_v18.0c.zip」をコピーする。
  3. xRecoveryを起動し、「Factory reset(full wipe)」、「Wipe cache partition」、「Advanced optinos」→「Wipe Dalvik Cache」と「Wipe Battery Stats」を行う。
  4. ThGo2_v18.0cをインストールするため、「Install Custom ZIP」→「Choose Custom Zip」でコピーした「ThGo2 v18.0c.zip」を選択する。
  5. 再起動するため「Reboot phone」を選択する。

以上で完了です。
ドコモ版Andorid2.1は遅くてイライラしてたけど、カスタムROMでサクサク動くようになったしUIがAndroid4.0ぽくなっていい感じになった。
これなら買い替えなくてもよかったかもと思える。

以下参考にさせていただきました。感謝です。
サイゴンのうさぎ: XPERIA X10にThGo2 v18.0bを入れてみた。
サイゴンのうさぎ: XPERIA X10 ThGo2 v18.0cを入れてみた。
Xperiaのroot取得からxRecovery導入までをすべてFlashToolで行う手順┃あんどろいどマニア
Linux備忘録&ちょっと休憩しましょ:Xperia SO-01B カスタムROMに入れ替えてみた - livedoor Blog(ブログ)
xperia x10 | 所感 ~android~

Ubuntu12.10にVirtualBoxインストール

Ubuntu上でWindowsを動かすためにVirtualBoxをインストールしたのでメモしときます。

手順は簡単でターミナルで以下のコマンド打てばインストールできました。

$echo "deb http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list

$wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

$sudo apt-get update

$sudo apt-get install virtualbox-4.2

以下のサイトを参考にしました!ありがとうございます!
Install VirtualBox in Ubuntu 12.10 | ITworld

Javaのチェック例外に対して勘違いしてた

Java7の新機能についてまとめてくれたブログを読んだのだけど、次の疑問があったので調べてみた。

調べてみて気づいたのだけど、チェック例外について勝手に勘違いして一人で混乱してた。
チェック例外はバイトコードレベルで特別な何かをされるため、メソッド内でスローする例外の型がthrows節に記述する型と同一かサブクラスでなければならないと思い込んでた。
よく考えればわかることだけどバイトコードレベルで特殊なことしてたらScalaなどのJVMを対象とする他言語でチェック例外を非チェック例外として扱うことができないよね。。。

ClojureでJavaプログラミング

ClojureJavaを呼び出すための方法を学んだので書き散らす。

クラスのインスタンス

 (new Classname args*)

Classnameにクラス名指定して、args*にコンストラクタに渡す引数をスペース区切りで指定する。
構文糖衣として次の形式があるのでそっちを使うのが一般的らしい。

(Classname. args*)

実際にはこんな感じで使う。

(StringBuilder. "hoge" )
-> #<StringBuilder hoge>

インスタンスのメソッド呼び出し

(.instanceMember instance args*)

instanceMemberにメソッド名、instanceにインスタンスを指す変数、args*にメソッドに渡す引数を指定する。

(.toUpperCase "fred")
-> "FRED"

Classのオブジェクトのメソッド呼び出し

(.instanceMember Classname args*)

インスタンスのメソッド呼び出しと同じで、instanceMemberにClassが持つメソッド指定して、Classnameに対象とするクラス名を指定する。

(.getName String)
-> "java.lang.String"

クラスメソッドの呼び出し

(Classname/staticMethod args*)

オブジェクトのメソッド呼び出しと異なり、"."は使わず"クラス名" + "/" + "メソッド名"になる。

(System/getProperty "java.vm.version")
-> "1.6.0_07-b06-57"

また、引数が不要な場合はカッコでくくる必要がなく次のようにかける。

Math/PI
-> 3.141592653589793

連続したメソッド呼び出し

".."マクロを使うとobject.getXXX().getYY().getZ()のような構文が簡単にかける。

(.. System (getProperties) (get "os.name"))

とりあえず、これだけ覚えればJavaの知識だけでClojureを使えるのでは?と思い書いた。
これでJavaな人(主に俺)がClojureの学習を諦めずに騙し騙し進めることができればと思う!

Ubuntu 12.04にOracle Java 7を簡単にインストールした。

Ubuntu 12.04をクリーンインストールした。
んで、Oracle Javaのインストールで以前に書いたUbuntuにOracle Java JDK 7をインストールした。 - ブログ::=(メモ|落書き)帳より、もっと簡単な方法があったのでメモしとく。

インストール手順は次の3つを行うだけ。

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java7-installer

インストールできたか確認する。

$ java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
Java HotSpot(TM) Server VM (build 23.0-b21, mixed mode)

$ javac -version
javac 1.7.0_04

ちゃんと最新のJDKがインストールされました。

この方法はこちらのブログで知りました、感謝!
http://d.hatena.ne.jp/Kazuhira/20120429/1335684623

以上。

コマンドラインでのキー操作が覚えられない。

bashコマンドラインで使えるキーコマンドの一覧を整理する。

なかなか覚えられないのでコンソールでは使うことを意識したい。

移動系

キー 説明
Ctrl + A カーソルを行の先頭へ移動
Ctrl + E カーソルを行末へ移動
Ctrl + B カーソルを一文字左に移動
Ctrl + F カーソルを一文字右に移動
Alt + F, Esc F カーソルを1単語右に移動
Alt + B, Esc A カーソルを1単語左に移動

削除系

キー 説明
Ctrl + D カーソル一の文字を削除
Ctrl + K カーソル位置から行の終わりまでを削除
Ctrl + U 行頭からカーソル位置の直前までを削除
Ctrl + W, Esc BS カーソル位置から単語の先頭までを削除
Alt + D, Esc D カーソル位置から単語の終わりまでを削除

その他

キー 説明
Ctrl + Y 直前で削除系コマンドで削除した文字列を貼り付け
Ctrl + P ヒストリを一つ戻る
CTRL + N ヒストリを一つ進む
Tab コマンド補完
CTRL + L ターミナルをクリア

Eclipseのコード補完でコーディングを楽にしよう。

Eclipseにはコーディングを楽にするためにコンテンツアシストという機能があります。
コンテンツアシストは、Javaエディタ上で「Ctrl+Space」を押すことで使用でき、クラス名のメソッド名など、何かと補完してくださるありがたい機能です。
また、コーディングパターンをJavaエディタのテンプレートとして登録しておくことで、そのテンプレートからソースコードの補完もできます。
このテンプレートをうまく使いこなすために、デフォルトで組み込まれているJavaコードのテンプレートを調べてみました。
なお、テンプレートは新たに追加登録することが可能です。

設定

Javaエディタのテンプレートは以下の場所で編集、追加、削除ができます。

「Window」→「Preferences」
「Preferences」 → 「Java」 → 「Editor」 → 「Templates」

コンテキスト

Javaエディタのテンプレートは以下のコンテキストを持ち、テンプレートが有効になる範囲を定義します。

  • Javadoc
    • Javadocコメント内で補完するテンプレート
  • Java
    • Javaコード内で補完するテンプレート
  • Java type members
    • Javaの型のメンバー(フィールド、メソッド)を補完するテンプレート
  • Java statements
    • Javaの命令文内で補完するテンプレート
  • SWT
    • ビルドパス上にSWTがあるJavaコードで補完するテンプレート
  • SWT type members
    • ビルドパス上にSWTがあるJavaの型のメンバー(フィールド、メソッド)を補完するテンプレート
  • SWT statements
    • ビルドパス上にSWTがあるJavaの命令文内で補完するテンプレート

使い方

テンプレートの使用はテンプレートの名前を入力してコンテンツアシスト(「Ctrl+Space」)を行うとテンプレートの候補される。
以下の図のように右のポップアップには補完時のコードが表示される。
f:id:radian19831019:20120206002518p:plain

Enterを押すと表示されていた内容が補完される。
f:id:radian19831019:20120206002941p:plain

テンプレート

以下にコンテキストごとに、デフォルトで含まれているテンプレートの名前と説明を列挙します。

Javadoc
名前 説明
@author author name
<b> <b></b>
<code> <code></code>
<i> <i></i>
<pre> <pre></pre>
active_task active task
false <code>false</code>
null <code>null</code>
true <code>true</code>
Java
名前 説明
catch catch block
fall-through $FALL-THROUGH$ marker
nls non-externalized string marker
runnable runnable
toarray convert collection to array
Java type members
名前 説明
main main method
private_method private method
private_static_method private static method
protected_method protected method
public_method public method
static_final static final field
test test method
Test test method (JUnit 4)
Java statements
名前 説明
arrayadd add an element to an array
arraymerge merge two arrays into one
cast dynamic cast
do do while statement
else else block
elseif else if block
for iterate over array
for iterate over array with temporary variable
for iterate over collection
foreach iterate over an array or Iterable
if if statement
ifelse if else statement
instanceof dynamic type test and cast
lazy lazy creation
new create new object
switch switch case statement
synchronized synchronized block
syserr print to standard error
sysout print to standard out
systrace print current method to standard out
try try catch block
while iterate with enumeration
while iterate with iterator
while while loop with condition
SWT statements
名前 説明
addlistener add a listener to a Widget
Browser new Browser
Button new Button
Combo new Combo
Composite new Composite with GridLayout
DateTime new DateTime
execute execute a runnable in the UI thread
ExpandBar new ExpandBar
ExpandItem new ExpandItem for an ExpandBar
GridData new GridData for a Control
GridLayout new GridLayout for a Composites
Group new Group with GridLayout
Image new Image
Label new Label
Link new Link
List new List
mainloop new top level Shell with event loop
SashForm new SashForm
Scale new Scale
ScrolledComposite new ScrolledComposite
Shell new Shell
Spinner new Spinner
StyledText new StyledText
StyleRange new StyleRange for a StyledText
TabFolder new TabFolder
TabItem new TabItem for a TabFolder
Table new Table
TableColumn new TableColumn for a Table
TableItem new TableItem for a Table
Text new Text
ToolBar new ToolBar
ToolItem new ToolItem for a ToolBar
Tree new Tree
TreeColumn new TreeColumn for a Tree
TreeItem new TreeItem for a Tree

本ブログはAmazon.co.jpアソシエイトに参加しています