2013年8月23日金曜日

rbenvとruby-buildでrubyを使う

  1. opensslとreadlineをインストール

    brew install openssl readline
  2. homebrewからインストールしたopensslとreadlineを使用するためにリンク

    brew link readline --force
    brew link openssl --force
  3. rubyのインストール

rbenv install -l でインストール可能なrubyが一覧できる。今回は2.0.0-p247をインストールする。

    CONFIGURE_OPTS="--with-readline-dir=/usr/local --with-openssl-dir=/usr/local" rbenv install 2.0.0-p247
  1. opensslとreadlineのリンク解除

brew doctor で警告が出るためリンク解除しておく

    brew unlink openssl
    brew unlink readline
  1. インストール済みrubyの確認

    rbenv versions
     *system (set by /Users/foo/.rbenv/version)
      2.0.0-p247
  2. デフォルトで使用するrubyの設定

    rbenv global 2.0.0-p247
  3. 特定のディレクトリ内で利用する

    cd foo
    rbenv local 2.0.0-p247

2013年8月21日水曜日

Macにrbenvをインストール

Chef/Vagrantをやってみたくなったのでruby環境を作る。
Macのrubyはバージョンが古いので新しいのを使えるようにしなきゃならない。

そこで出てくるのがrubyのバージョン管理ツール。
rvmにしようかrbenvにしようか迷ったけど、結局rbenvにしてみた。
理由はHomebrewから導入できるから。

手順

  1. rbenvとruby-buildをインストールする

    brew install rbenv ruby-build
    echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.zshrc

これだけ!
簡単でした。

2013年7月16日火曜日

jsrender 1.0preから1.0betaにバージョンアップした時に躓いたところ

javascriptテンプレートエンジンの一つであるJsRender。
今日久しぶりにレポジトリを確認したら1.0betaにバージョンアップしてました。
今まで使っていたのが1.0pre。ただ jsrender.js を更新するだけでは使えず、コード側にもちょっと更新作業が必要でした。

ヘルパー

1.0preでは jsviews.helpers がヘルパー登録用メソッドだったのですが、1.0betaでは jsviews.views.helpers に移動しています。

// 1.0pre ----------
jsviews.helpers({
  fooHelper: function() {},
  barHelper: function() {}
});

// 1.0beta ----------
jsviews.views.helpers({
  fooHelper: function() {},
  barHelper: function() {}
});

カスタムタグ

1.0preではヘルパーと同様に登録用メソッドが jsviews.tags から jsviews.views.tags に移動しています。
また、1.0preではカスタムタグの描画メソッドも this.renderContent から this.tagCtx.render に変わっています。

// 1.0pre ----------
jsviews.tags({
  fooTag: function(param) {
    var ret = '';
    // カスタムタグのロジック…

    ret = this.renderContent(param);

    return ret;
  },
  barTag: functioN() {}
});

// 1.0beta ----------
jsviews.views.tags({
  fooTag: function(param) {
    var ret = '';    
    // カスタムタグのロジック…

    ret = this.tagCtx.render(param);

    return ret;
  },
  barTag: function() {}
});

とりあえず現時点で対応したのは上記の点のみ。
別件ですがjsrender.min.jsにバージョン番号つけてほしい…(jsrender-1.0beta.min.jsみたいに)

2013年6月4日火曜日

Nexus 4を買って真っ先にしたこと(root化とか色々)

Nexus4買いました。

最初は日本のGoogle Play Storeから発売されるの待ってたんですが、日本のストアから製品情報が削除されたという話を見て、ついAmazonで購入。

以下に開封してからの2時間弱くらいでやった作業をまとめておきます。
ちなみにキャリアはドコモです。作業PCはMacbook Air。

今使ってる端末のデータのバックアップ

使っていた端末はCyanogenMod 10.1を入れたGalaxy Nexus。
Nexus4に引き継ぎたいデータだけに絞ってTitanium Backupでバックアップ -> PCに保存
主にゲームのセーブデータ系ですね。
アプリ全部のバックアップはとくにしませんでした。
最近はGoogleアカウントとひもづけると、前の端末で使ってたアプリを自動でダウンロードしてくれるので。

bootloaderのアンロック

adbやfastbootはPCに入っている前提。
検証してないけど最近はandroid sdk入れたらfastbootコマンドも入ってるんですかね。
sdk managerから最新版ダウンロードしたらfastbootコマンドも入ってたような気がする。

  1. PCにつないで下記のコマンドを実行し、bootloaderに再起動

    adb reboot bootloader
  2. ドロイドくんが分解されてる画面になったら、以下のコマンドを実行

    fastboot oem unlock
  3. ボリュームボタン上下で Yes を選択、電源ボタンで決定。

これでbootloaderのアンロックは完了

ClockworkMod Recoveryの導入

  1. ClockworkModの公式サイトから、Nexus4用のリカバリイメージをダウンロード。
  2. 適当なフォルダに入れて recovery.img にリネームする。
  3. ターミナルを開き、 recovery.img をダウンロードしたフォルダに移動し、下記のコマンドを実行

    adb reboot bootloader
    fastboot flash recovery recovery.img

以上でClockworkMod Recoveryの導入は完了。
bootloaderのメニューで Recovery Mode を選ぶとClockworkMod Recoveryが起動するようになっている。

root取得

  1. このリンクから SU_Busybox_Package.zip をダウンロードする(参考)。
  2. ダウンロードしたzipファイルをNexus4の内部ストレージの直下に配置する。
  3. 下記のコマンドを実行してリカバリにモードに入る。

    adb reboot bootloader
  4. Recovery Mode を選択しリカバリを起動。
  5. ボリュームボタン上下を使い install zip from sdcard を選択、電源ボタンで決定し今度は Choose zip from sdcard を選ぶ。
  6. 内部ストレージ直下に配置した SU_Busybox_Package.zip を選択し、電源ボタンを押す。
  7. 処理が終わったら reboot system now を選択して再起動。
  8. アプリの一覧にSuper SUがあればroot化完了。

CyanogenMod 10.1の導入

  1. Google PlayからROM Managerをダウンロード
  2. ROM ManagerからCyanogenModとGoogle Appsをダウンロード
  3. ダウンロード完了したらそのままインストラクションにしたがってリカバリに再起動 -> インストール完了

APNの設定

moperaの場合は下記の2つを追加。
CyanogenModなら最初から入ってる気がする。

  • mopera.net
  • open.mopera.net

ボイスメールの番号設定

留守電の設定です。
電話アプリの設定から「ボイスメール」 -> 「セットアップ」 -> 「ボイスメールの番号」と選択。 番号は「1417」を入力

バックアップしたデータの復元

最初にバックアップを取ったアプリのデータをTitanium Backupで復元する


以上、こんな感じ。

2013年5月27日月曜日

ドット記法のStringを元にオブジェクトのメンバを取得する[JavaScript]

以下のような階層の深いオブジェクトから、任意の階層にあるプロパティを楽に取得したくて作ってみました。

var foo = {
  bar: {
    hoge: 1,
    fuga: {
      isBar: true
    }
  }
};

こんな感じ。

var findRecursively = function(keyString, src) {
    var varSplitter = /\./,
        srcObj = src || window,
        keyAry = keyString.split(varSplitter),
        key;

    while (key = keyAry.shift()) {
      obj = obj[key];
      if (!obj) {
        return null;
      }
    }
    return obj;
};

var result = findRecursively('foo.bar.hoge');
console.log(result);  // 1

var result2 = findRecursively('bar.fuga.isBar', foo);
console.log(result2); // true

第一引数には、取得したいプロパティの場所をドット記法で表記したStringを渡します。
第二引数には第一引数で渡したプロパティを探したいオブジェクトを渡します。
第二引数がない場合はwindow変数から探します。

if ('foo' in window && 'bar' in foo && …) {
  ...
}

みたいな書き方をしないで済むようになります。

homebrewでgradleをインストールする

groovyもgradleもhomebrewのformulaにあるのでチョー簡単です。

groovyのインストール

brew install groovy

インストールが終わったら、 正しくインストールされていることを確認。以下のようにバージョン情報が表示されればOK

groovy -v
Groovy Version: 2.1.3 JVM: 1.6.0_45 Vendor: Apple Inc. OS: Mac OS X

gradleのインストール

brew install gradle

インストールが終わったら、正しくインストールされていることを確認。以下のようにバージョン情報が表示されればOK

gradle -v

------------------------------------------------------------
Gradle 1.6
------------------------------------------------------------

Gradle build time: 2013�N5��7�� 9��12��14�b UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.4 compiled on May 22 2012
Ivy: 2.2.0
JVM: 1.6.0_45 (Apple Inc. 20.45-b01-451)
OS: Mac OS X 10.7.5 x86_64

文字化けはとりあえずスルー。
インストールされていたら、環境変数PATHに GRADLE_HOME/bin を追加。

vim .zshrc

export GRADLE_HOME=/usr/local/Cellar/gradle/1.6
export PATH=$PATH:$GRADLE_HOME/bin

とりあえずはこんな感じで。
jsの圧縮に使ってるAntの設定ファイルの移行とか、色々試してみよう。

2013年5月9日木曜日

gitでコミット時のメッセージ編集でエラーになる時の対処法

gitでコミットする時、viでコミットメッセージを入力しても

error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.

みたいなエラーが出てコミットされなかったので調べたら、gitで使用するエディタを明示的に指定すればいいらしい。
こんな感じ。

git config --global core.editor "/usr/bin/vim"

コミットメッセージを保存する時はいつもどおり :wq でOK。