Androidのエミュレータのhostsの件
目的
タイトルはいったいなんなんだ、さっぱり意味が分かりません。
僕はAndroidのエミュレータからMac OS X上にあるvm上のwebサーバにアクセスしたい。
問題はAndroidのエミュレータってiOSのエミュレータとちがって、ホストOSにあるhostsファイルを参照してくれない。 だから、エミュレータ上にある、/system/etc/hostsを書き換えてやればいい。
と、単純なことなんですが、エミュレータの設定しくじると、 そもそも/systemのディスクサイズが足りなくて、
adb push ./hosts /system/etc/hosts #=> failed to copy './hosts' to '/system/etc/hosts': Out of memory
とか怒られる。
なので、エミュレータの設定をする時に、storageは念のため大きめにする。 僕の場合は、とりあえず2048MBにしたんだけど、/systemはデフォルトパンパンにするようになってるぽく、/systemをちょっと広げてあげないといけない。
設定
Android Stadioでやります。
エミュレータの設定はどこでやるんだか忘れてしまいましたが、 storageを大きめにしましょう。
次にディスク(storage)のパーティション設定です。
Run -> edit configuration -> Emulatorタブ -> Additional command line options
にチェックをいれつつ、フォームに
-partition-size 256
といれてやる。
ちょっと前後しますが、adbにパスを通す。zshrcでも、なんでもいいんで、下記を追記
export PATH=$PATH:/Applications/Android\ Studio.app/sdk/platform-tools
以下からは、エミュレータを立ち上げた時に、毎回行う必要がある作業です。
エミュレータの/system以下を読み書き可能にする。
adb remount # エミュレータの/system以下を読み書き可能にする。
あらかじめ準備したhostsをエミュレータに入れちゃいます。
adb push ./hosts /system/etc/hosts
さてこれで終了です。
設定したhostsが生きてるか、エミュレータのchromeとかで確認してみましょう。
おまけ
ちなみに、下記のようにすると、エミュレータのディスクサイズを確認できます。今回の場合は、以下のような感じ。
$ adb shell # エミュレータのシェル起動
# df
とやると、
# 中略
/system 248M 198M 49M 4096
# 中略
ってかんじで。
あと、以下で、hostsの内容とか確認できるし。
adb pull /system/etc/hosts ./hosts # 現在入ってるhostsを落としてくる
参考
rails migrationのintの話
基本mysqlでintはunsiginedで使うもんだと思ってる僕としては、 railsのマイグレーション的なアレにえぇっ思っています。
- https://github.com/kamipo/activerecord-unsigned-column
- http://qiita.com/kamipo/items/a971e31b8f910c6930be
ああいい世界ですね。
rubyの新しいのを入れたりしたら、gemでやっておきたいメモ
rbenvでrubyをいれたら、gemでこれくらいはやっておこうと思っている。
rbenv exec gem install rubygems-update;
rbenv rehash;
rbenv exec update_rubygems;
rbenv rehash;
rbenv exec gem install rbenv-rehash;
rbenv rehash;
knife soloの動きが変わった?
あんまり調べてもいないのでアレですが、 knife solo(0.2.0)の挙動が若干変わっているようですね。
rvmからrbenvを利用するように、変更したら、knife soloなどいろいろ動かなくなってた のでテンパりました。
kitchin(knife solo initすると出来るdirecotry)に
- solo.rb
が入ってないと動かないみたいです。 デフォルトの内容は
file_cache_path "/tmp/chef-solo"
data_bag_path "/tmp/chef-solo/data_bags"
encrypted_data_bag_secret "/tmp/chef-solo/data_bag_key"
cookbook_path [ "/tmp/chef-solo/site-cookbooks", "/tmp/chef-solo/cookbooks" ]
role_path "/tmp/chef-solo/roles"
ってのが入ってました。 ま、たいした話じゃないです。
gem アンインストール
全てのgemをアンインストールする悪魔のコマンド(1.9.3系)
gem uninstall -axI `gem list --no-versions`
2.0.0系ではこう!
gem uninstall -axI `gem list --no-versions | egrep -v 'test-unit|rdoc|bigdecimal|io-console|json|minitest|psych|rake'`
rbenvインストールなどのメモ
rubyを使って開発を行う会社に入社しました。
いままでも自宅でrubyはちょこちょこつかっていたのでまったくわからないということはないですが 月日が流れるのは早いようで、1.8.6が主流だった頃の僕の知識ではもう古いようです。
さて開発環境のVMでは、rbenvをつかってrubyの管理をしていますが、 僕のmacbook proでは、rvmを使っていたので、rbenvへの環境の変更などまとめてみました。
rvmをアンインストール
アンインストールは簡単です。
$ rvm seppuku
僕はzshでrubyのバージョンとかプロンプトに表示するようにしてたので、 .zshに書いてあった、該当の部分を消しました。
rbenvをインストール
まずは、rbenvとruby-buildをgithubからもってきてもちゃもちゃします。
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ mkdir ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
.zshrc に下記を追記します。
if [ -d $HOME/.rbenv/bin ]; then
export RBENV_ROOT=$HOME/.rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"
fi
いくつかのrubyのバージョンをインストール
rubyをインストールする準備として、必要なライブラリなどを準備します。 僕はbrewを使っているので、以下のようにします。
$ brew install opennssl
$ brew install readline
$ brew link readline openssl --force
$ rbenv versions #=> * system
$ rbenv install --list #=> インストールできるバージョンがガーッと表示
さて、rubyインストールの前に、コンパイルオプションにちゃんとインストールしたライブラリにパスが通るようにしておきます。
$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl) --with-readline-dir=$(brew --prefix readline) --enable-shared"
1.9.3 インストール
$ rbenv install 1.9.3-p448
$ rbenv rehash
1.9.3をグローバルでつかうrubyに設定してみる。
$ rbenv global 1.9.3-p448
$ rbenv version #=> 1.9.3-p448 (set by /Users/unlearned/development/test/.ruby-version)
2.0.0 インストール
$ rbenv install 2.0.0-p247
$ rbenv rehash
2.0.0をグローバルにつかうように設定
$ rbenv global 2.0.0-p247
$ rbenv version #=> 2.0.0-p247 (set by /Users/unlearned/.rbenv/version)
プロジェクト毎に使うrubyを変える
あるディレクトリ(プロジェクト)では1.9.3でrubyを実行したりできるというナイスな機能が売りですよね。
$ mkdir ~/test
$ cd ~/test
$ rbenv local 1.9.3-p448
ちゃんと管理されている
$ ruby --version #=> ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]
$ rbenv version #=> 1.9.3-p448 (set by /Users/unlearned/development/test/.ruby-version)
さらにそのサブディレクトリでもちゃんと管理されている
$ mkdir ~/test/subdir
$ cd ~/test/subdir
$ ruby --version #=> ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]
$ rbenv version #=> 1.9.3-p448 (set by /Users/unlearned/development/test/.ruby-version)
rbenv localを実行すると、対象のディレクトリに.ruby-versionというファイルが作られます。 中身はただバージョン番号が書いてあるだけです。
$ cd ~/test
$ cat .ruby-version #=> 1.9.3-p448
挙動を確かめてみよう
$ cd ~/test
$ echo "puts RUBY_VERSION" > ~/test/virsion.rb
$ echo "puts RUBY_VERSION" > ~/virsion.rb
local管理されてないところから実行
$ cd ~/; ruby ~/test/vrision.rb => 1.9.3
$ cd ~/; ruby ~/vrision.rb => 2.0.0
local管理されているところから実行
$ cd ~/test; ruby ~/test/vrision.rb => 1.9.3
$ cd ~/test; ruby ~/vrision.rb => 1.9.3
おお、、、いいのか悪いのかわかりませんが、local管理されているディレクトリから、管理外のディレクトリのスクリプトを実行するとlocal管理されているrubyが適用されるようです。
ローカル管理しないプロジェクトに戻す
$ cd ~/test
$ rbenv local --unset
戻ってる。そんで.ruby-versionは消えております
$ ruby --version #=> ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
$ rbenv version #=> 2.0.0-p247 (set by /Users/unlearned/.rbenv/version)
その他もろもろ
アンインストール
$ rbenv uninstall 1.9.3-p448
$ rbenv rehash
gemをインストールしたら、rehashするのは忘れないようにする
$ gem install rbenv-rehash
$ rbenv rehash
ちなみに上でインストールしたのは、rehashしなくてよくしてくれるgem 笑
rbenv自体も更新したいですよね。
$ cd ~/.rbenv
$ git pull
参考
rubyをsublimetext2でcode整形
perl tidyみたいな感じでフォーマットしたい。
https://github.com/CraigWilliams/BeautifyRuby つかってみた。
cmd + shift + p Package Control: Install Packageと打つ BeautifyRuby
デフォルトで下記のようにしてフォーマット
ctrl + cmd + k
なんかセーブのタイミングでフォーマットしてくれるモードがあるっぽいので、 あとでつかってみようかな。