Xperia SO-01B も Android 2.1 になったわけだけれど、NTTドコモも次々 Android 端末出してるし Xperia も後継機種の噂が出ているしで、ビジネス的にも開発リソース的にも Android 2.2 以降へのアップデートの可能性はちょっと低くなってるんじゃないかなと思う今日このごろ。 であればそろそろ root 化にチャレンジしてもいいよね?
ということで Web で調べ調べしながら root 化。
マーケットで z4root を検索してインストール。 起動したら画面中央の Root ボタンを押す。 「USB デバッグが有効になってないよ」という主旨のダイアログが出たので、ボタンを押すと Xperia の[アプリケーション設定]画面が開く。[開発]の中の[USBデバッグ]をチェック。
再度 z4root を実行して Root ボタンを押す。
しばらく待つと再起動がかかる。
再起動後 z4root を実行するとスーパーユーザ権限与えてねダイアログが出るので許可する(1度ここでもたもたしてたら Root 取れなかったみたいで再度 Root ボタンを押してやりなおした)。
root が取れると z4root の画面は Re-root と Un-root の2つのボタンが表示されるようになる。
Android 開発環境は以前インストールしてあったので、その中にある tools ディレクトリの下の adb コマンドを使う。
adb devices
すると
List of devices attached ???????????? no permissions
と表示される。udev の設定が必要らしい。
echo 'SUBSYSTEM=="usb",SYSFS{idVendor}=="0fce",Mode="0666"' > /etc/udev/rules.d/51-android.rules
して /etc/init.d/udev restart。adb 系のプロセスが動いていれば kill。
この状態で
adb shell
を実行して
$
というプロンプトが出たらリモート接続成功。
Xperia の /system/build.prop というテキストファイルを書き換えればいいらしい。
adb shell で入っている状態で su を実行。
$ su
初めての場合 z4root がインストールしてくれた Android アプリ 「Superuser」が Xperia 上で開いて /system/bin/sh にスーパーユーザ権限を与えて良いかときいてくるので許可する。 うまくいくと adb のプロンプトが # にかわる。
次に /system を書き込めるように remount する。
# mount ← どこにマウントされているか確認。 # mount -o remount,rw /dev/block/mtdblock2 /system ← rw で remount。
これまた z4root が インストールしてくれている、UNIX コマンドラインユーティリティをひとまとめにした BusyBox を使う。/system/bin/busybox としてコマンドが入っているのでこれを適宜呼び出す(busybox ファイルを ls やら grep やら vi やらといった名前でコピーするかシンボリックリンクを張るかすると、直接その機能が実行されるようになるのだが、ここではその設定は今はやらないでおいた)。
# busybox cp /system/build.prop /system/build.prop.original ← 編集前を残す。 # busybox vi /system/build.prop ← vi で開く。
で vi エディタが開くので /system/build.prop ファイルを編集。
ro.camera.sound.forced=1
を
ro.camera.sound.forced=0
これでカメラの設定画面中のシャッター音で OFF が選べるようになった。
マーケットから Drocap2 をインストール。 drocap2 を実行して、メニューボタンから[設定]を選び、[撮影モード]で[通知で撮る]を選択。 そうすると通知バーを引き出した中に[drocap2トリガー]というのがあらわれるようになるので、スクリーンショットをとりたいときにそれを実行する。
初回は Android アプリ 「Superuser」がスーパーユーザ権限を与えて良いかときいてくるので許可する。 これでスクリーンショットが端末単独でとれるようになった。
めでたしめでたし。
2011年1月19日のソフトウェア更新でマルチタッチ対応した Xperia SO-01B では z4root が使えなくなった。 かわりに Flashtool で root 化ができる。→ 設定方法
[ Android アプリレビュー ]
さくらのレンタルサーバ上にあるデータはローカルの Linux BOX と Unison で同期している。 この nDiki の記事も Emacs でテキストファイルで作成した後、Unison で同期して公開している。
[さくらのレンタルサーバ] /home/naney | <Unison> 同期 | [ローカル PC] /home/naney/site/site_name/sync
ただこれだとローカル PC から離れている時の記事の下書きとか面倒くさい。ということで Dropbox 上に一部を置くことにした。同期している全てのデータを Dropbox 上に置くのはナンセンスなので、一部のディレクトリのみ。
Dropbox フォルダ側は単一のディレクトリツリーである必要があるので、Unison で同期しているディレクトリのツリーの一部を Dropbox フォルダ上へ移動し、シンボリックリンクに置き換え。Unison の設定ファイルに follow = path share/some_dir を追加してそのディレクトリはシンボリックリンクを辿ってその先の中身で同期するようにした。
[さくらのレンタルサーバ] /home/naney | <Unison> 同期 | [ローカル PC] /home/naney/site/site_name/sync /home/naney/site/site_name/sync/share/some_dir | <symbolic link> | /home/naney/var/Dropbox/site/_name/sync/some_dir /home/naney/var/Dropbox/site/_name/sync | [Dropbox]
これで Dropbox を入れた他の PC や Android 端末から記事の作成・編集ができるようになった。
ちなみに Google Chrome に SourceKit をインストールすると、Web ブラウザ上から直接 Dropbox 上にテキストファイルを作成したり既存のテキストファイルを編集したりできて便利。 テキストファイルは UTF-8 で LF になるのでいい感じ。
ちょっと JavaScript コードを書く機会が増えてきそう。 そうなると、Perl コードを書く時には perltidy が手放せないように、JavaScript ソースコードフォーマッタが必要だ。 なのでとりあえず検索してよくひっかかってきた JS Beautifier を使ってみることにした。
JavaScript で書かれたバージョンと Python で書かれたバージョンがあって、後者の方はそのままコマンドラインからの呼び出しできるようになっているので、それを使うようにしてみる。
手元の環境だと Python の dev 系のファイルがインストールされていなくて setup.py が通らないので、Python からマルっと入れた。
$ tar zxvf Python-2.7.3.tgz $ cd Python-2.7.3 $ ./configure --prefix=$HOME/local/python-2.7.3 $ make $ make altinstall
で Python をインストールしたら JS Beautifier をインストール。
$ git clone https://github.com/einars/js-beautify.git $ cd js-beautify/python $ $HOME/local/python-2.7.3/bin/python2.7 setup.py install
$HOME/local/python-2.7.3/bin/js-beautify がインストールされる。PATH の通ったところにシンボリックリンクしておく。
あとは Emacs から実行できるように設定。
(defun js-beautify-region() "Run js-beautify on the current region." (interactive) (save-excursion (shell-command-on-region (point) (mark) "js-beautify -i" nil t)))
を設定しておいて、整形したいところをリージョン選択してから M-x js-beautify-region を実行するとその範囲を整形してくれる。
ちょっと使ってみた範囲では、大外ししてインデントメチャクチャとかは無かった。perltidy ほど賢くない感じだけれど、これで一貫したスタイルで書けるようになるのでいい感じかな。
Fedora 17 の home 以下に GHC とHaskell Platform をインストールの、ちょっと手を入れる必要があったのでメモ。
GHC で libgmp.so.3 が必要だけれど無いので libgmp.so.10 にシンボリックリンクを作ってごまかす。
mkdir ~/lcoal/lib cd ~/local/lib ln -s /usr/lib64/libgmp.so.10 libgmp.so.3 export LD_LIBRARY_PATH=$HOME/local/lib
cd ~/install wget http://www.haskell.org/ghc/dist/7.6.3/ghc-7.6.3-x86_64-unknown-linux.tar.bz2 tar jxvf ghc-7.6.3-x86_64-unknown-linux.tar.bz2 cd ghc-7.6.3 ./configure --prefix=$HOME/local/ghc-7.6.3 make install ~/local/ghc-7.6.3/bin/ghci # インタプリタ起動してみる。 PATH=$PATH:$HOME/local/ghc-7.6.3/bin
cd ~/install wget http://lambda.haskell.org/platform/download/2013.2.0.0/haskell-platform-2013.2.0.0.tar.gz tar zxvf haskell-platform-2013.2.0.0.tar.gz cd haskell-platform-2013.2.0.0 ./configure --prefix=$HOME/local/haskell-platform-2013.2.0.0
OpenGL 関連のライブラリが入っていないホストで、かつとりあえず必要無さそうので適当に消す(なんで OpenGL いるのー)。
あとこのままだと GHC_PACKAGE_PATH 云々とエラーが出て止まるので script/build.sh をいじる。 以下をコメントアウト。
GHC_PACKAGE_PATH="${ORIG_GHC_PACKAGE_PATH}" \
あとは configure を作り直してビルド。
./autoconf ./configure --prefix=$HOME/local/haskell-platform-2013.2.0.0 make make install PATH=$PATH:$HOME/local/haskell-platform-2013.2.0.0/bin
普段 Migemo 使っているので、それの入っていない開発環境だとちょっと不便だなということで、ソースから入れる。
Migemo だと Ruby のパッケージも入れる必要があるので、ここは C/Migemo で。
git clone https://github.com/koron/cmigemo.git cd cmigemo ./configure --prefix=$HOME/local/cmigemo make gcc mak gcc-dict make gcc-install
LD_LIBRARY_PATH=/home/naney/local/lib にしているので C/Migemo のライブラリへのシンボリックリンクをそこに作る。
cd ~/local/lib ln -s $HOME/local/cmigemo/lib/libmigemo.so* .
migemo.el だけ Migemo の tarball からもらう。Ruby のライブラリ入れてないため configure が通らないので、手で migemo.el.in から migemo.el に変換する(@pkgdatadir@ を置換)。
wget http://0xcc.net/migemo/migemo-0.40.tar.gz tar zxvf migemo-0.40.tar.gz cd migemo-0.40 sed -e 's!@pkgdatadir@!/home/naney/local/migemo/share/migemo!g' migemo.el.in > migemo.el cp -a migemo.el <自分の site-lisp なディレクトリ>
設定ファイル (~/.emacs.d/init.el とか)に設定を追加。
(when (load "migemo" t) (setq migemo-use-pattern-alist t) (setq migemo-use-frequent-pattern-alist t) (setq migemo-command "/home/naney/local/cmigemo/bin/cmigemo") (setq migemo-options '("-q" "--emacs" "-i" "\a")) (setq migemo-dictionary "/home/naney/local/cmigemo/share/migemo/euc-jp/migemo-dict") (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil))
かなり久しぶりに aufs を使った Web サイトのドラフト作成をしようと思ってマウントしたのだけれど、なぜかスタックされた ro の方のディレクトリのファイルが書き変わってアレレとなった。
しかもディレクトリによっては rw の方にきちんと変更が書き込まれて、ro は変更されないようにきちんとなっている。
なんだろうと思ってしばらく調べた結果、一部のディレクトリはシンボリックリンクで aufs でマウントした外のディレクトリを指していてアウトオブ aufs だったというオチ。ああ。
ノート/メモははライティングアプリ Ulysses を使い Markdown で書いていて、検索・閲覧・整理も Ulysses で基本済ませています。ただいくつかの良く参照するファイルはブックマークやハイパーリンクから Web ブラウザでさっと表示させたかったりします。なので以前は Plack::App::Directory::Markdown を使った自作 PSGI アプリケーションを使ってました。
が、セットアップしたり保守したりという手間を今とれないなと思って、 Markdown ビューアを探してみたところ MkDocs が良さそうなので試してみました。
MacBook Pro に Homebrew で入れて動かしてみます。
$brew install MkDocs $mkdir -p ~/var/mkdocs $cd ~/var/mkdocs $mkdocs new local $cd local $mkdocs serve
で Web サーバが立ち上がるので http://127.0.0.1:8000/ にアクセスすると ~/var/mkdocs/local/docs/index.md の内容を HTML に変換したものが表示されます。お手軽! 設定変更は ~/var/mkdocs/local/mkdocs.yml できます。
あとは docs の下に Markdown ファイルを置いておけば Web ブラウザで閲覧できます。docs の下に既存の Markdown ファイルノートディレクトリへシンボリックリンクを作ればそれらも辿って表示されます。
試していてブラウザでのレンダリング表示が重いなと思って HTML ソースを見たら同じ JavaScript ファイルを何十回も読み込んでいて何か変ぽかったので Homebrew のをやめて pip で入れなおしました。どちらも現在 mkdocs 0.17.2 ですが pip で入れた方は問題なかったのでこちらを使うことにします。
$brew uninstall mkdocs $brew install python $pip2 install mkdocs
MkDown は静的サイトジェネレータで、プレビューサーバは補助的機能ですがまずまず使えそうです。
MacBook Pro のリプレースにあたり Google ドライブのローカルへの同期を「ドライブ ファイル ストリーム」にしてみたんだけれど、自分の使い方ではデメリットが多いので即日「バックアップと同期」に戻した。
ドライブ ファイル ストリームなら実体はクラウドストレージ側にあるのでファイル数が多くてもへっちゃらではないか。そう思ったわけです。
機能比較で「Microsoft Office や Photoshop などのネイティブ アプリを使用する」とあったので、 Google Chrome 拡張機能の Application Launcher for Drive (by Google) が使えると思ったら使えなかった。ファイルシステム上で開けるという意味だったようだ。この拡張機能がないと「Chrome 上で Google ドライブ検索してからの、ネイティブアプリで閲覧編集」という使い方ができないので劇的に不便になる。
それから Finder (Path Finder でも)ブラウズできないフォルダがあってこちらは致命的な問題。ターミナルで cd していけるのだけれど Finder では駄目。これは駄目。
結局ドライブ ファイル ストリームはやめてバックアップと同期に戻すことにした。 archive フォルダをマイドライブ直下に作ってここは同期しないことにし、いったん全部そこに移動した。
選択同期は面倒なので今まで避けてきたけれどしかたあるまい。今後は作業中のフォルダだけ同期することにする。
双方向ファイル同期化ツール Unison File Synchronizer、 Mac で使っているのが Unison 2.48.6 の GUI 版なのだけれど、古いせいか macOS Catalina だと「Install command-line tool」 が機能しない(/usr/bin にインストールしようとしているからかな)。
macOS 上で text UI 版がちょっと使いたい & GUI 版も新しいのにしたいなと思ってビルドとかした。
$ brew install unison
で text UI 版の「unison version 2.51.3 (ocaml 4.10.0)」が入る。GUI 版は入らない。
Unison 最新版のバイナリ配布が見当たらないのでビルドしてみる。 Xcode が必要。
$ xcode-select --install
で入る Command Line Tools だけだと text UI 版の Unison しかビルドできないので App Store から Xcode をインストールした。
OCaml は Homebrew ので済ます。
$ brew install ocaml
今日時点で入るのは OCaml 4.10.0 だ。次に Unison 2.51.3 をビルドする。
$ cd ~/tmp $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz $ tar zxvf v2.51.3.tar.gz $ cd unison-2.51.3 $ make all
make だけだと text UI 版しかビルドされないので make all してみた。が残念 GUI 版はエラーで途中で止まった。今はうまくビルドできないのかもしれない。
諦めて make で text UI 版だけバイナリを得ることにした。 make 後
$ ./src/unison -version
で実行できることを確認。 ./src/unison を適当なところにコピーしておく(これなら brew install unison で十分だった)。
ローカルホストの Unison とリモートホストの Unison のバージョンが合っていないと同期できないのでリモートホスト側 (FreeBSD 9.1-RELEASE-p24) でも同じバージョンのものをビルドする。さくらのレンタルサーバ プレミアムで root 権限はないのでユーザー権限にて。
まずは OCaml。最近の OCaml は opam というのでインストールして使うのが流儀らしい。 opam をインストール。
$ cd ~/tmp $ mkdir bin $ curl -OL https://raw.githubusercontent.com/ocaml/opam/master/shell/install.sh $ BINDIR=$HOME/tmp/bin sh install.sh
リモートホストの環境に合ったプレビルドが無いとエラーが出て install.sh ではインストールできず。
OCaml の前に遡って opam のビルドをする。
$ cd ~/tmp $ curl -OL https://github.com/ocaml/opam/archive/2.0.7.tar.gz $ tar zxvf 2.0.7 $ cd opam-2.0.7 $ gmake cold CONFIGURE_ARGS="--prefix ~/tmp/opam" $ gmake cold-install
ビルドできた。opam を初期化する。
$ PATH=$HOME/tmp/opam/bin:$PATH $ opam init
gpatch が無いとエラーで止まった。 patch へのシンボリックリンクで gpatch を作ってイケるかなと思ったけど今度は別のエラーで止まる。うーん。 opam で OCaml をインストールするのは断念。
OCaml のドキュメントを読んだら今まで通り configure して make も普通にできるじゃない。
$ curl -OL https://github.com/ocaml/ocaml/archive/4.10.0.tar.gz $ tar zxvf 4.10.0.tar.gz $ cd ocaml-4.10.0 $ ./configure --prefix $HOME/tmp $ gmake $ gmake install
次に Unison 2.51.3 をビルドする。出来上がったバイナリは今使っている Unison 2.48.3 と併用できるように別のディレクトリへ。
$ cd ~/tmp $ curl -OL https://github.com/bcpierce00/unison/archive/v2.51.3.tar.gz $ tar zxvf v2.51.3.tar.gz $ cd unison-2.51.3 $ PATH=$PATH:$HOME/tmp/bin $ gmake $ ./unison -version $ mkdir -p $HOME/local/unison-2.51.3/bin $ cp -a src/unison $HOME/local/unison-2.51.3/bin
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。
#nNote タグがついている記事は他の記事に比べて、より断片的・未整理・不完全なちょっとしたノートです。まだ結論に至っていない考えなども含まれます。頻繁/大幅に更新したり削除したりすることがあります。
ナレッジベースアプリケーション Obsidian で書いているノートの一部を notes.naney.org で 公開しています。
※内容は個人的見解であり所属組織とは関係ありません。