gitのoriginのurlを変更する。


mirahを最初にインストールした時に、

git://github.com/headius/mirah.git


の方から持ってきてて、あとから

git://github.com/mirah/mirah.git


の方が最新なことに気づいて、別にそのまま新たにcloneしてくればいいんですが、
originを変えれないのかな?と思ったのでメモ。

**追記**


@murachue さんより教えていただきまして、

% git remote set-url origin <新しいリポジトリURL>


が普通とのこと。明らかにこっちのほうが自然なかんじですね!
@murachue さんありがとうございます!!
使用した感じは以下のとおりです。

regina% git remote -v
origin git://github.com/headius/mirah.git (fetch)
origin git://github.com/headius/mirah.git (push)
localhost% git remote set-url origin git://github.com/mirah/mirah.git
localhost% git remote -v
origin git://github.com/mirah/mirah.git (fetch)
origin git://github.com/mirah/mirah.git (push)
localhost%


**追記おわり**

ルートディレクトリの ".git/config" というファイルの中に

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git://github.com/headius/mirah.git


という設定があって、ここの"url ="以降の値を新しいところに書きなおせばいけるらしい
のですが、できればコマンドでやりたいもんなので、探してみると、

% git config remote.origin.url <新しいリポジトリURL>


でやってくれるらしい。あ、" < " と " > " はいらんですよ。
そうしょちゅうやる作業でもなさそうだけど、
この前教えていただいた" git remote -v"みたいな短いコマンドは
みつけれませんでした。なんかありそうだけどなぁ。

MirahでrubyライクにAndroid開発

mirah を入れてみたなら、Android 開発なんかしたくなるのが
人の心というものです。


mirah と jruby はインストール済みであることを前提に進めます。
それ以前に、androidsdkは入ってそうですが、こいつは入れてみます。

Android SDKのインストール

コンソールを開きます。

% brew install android-sdk


これ一発! なんと便利な世の中なんだ!!
brew なんてコマンドないよー、という方は以下からどうぞ
http://mxcl.github.com/homebrew/

[Homebrew]Homebrew - OSXのパッケージ管理ツール

いや、これがただ言いたかっただけだったりするんですが。
このhomebrewってパッケージ管理ツールは結構前に入れたけど、
パッケージが少なくて使ってなかったんですが、ちょっと見ないうちに随分増えた模様です。


app-engineもjavapythonもどちらもパッケージであって大丈夫なのかな?
とか思いますが、homebrew自体がリポジトリを持ってて管理してるというのではなく、
URLのあるリソースを取得し、それを展開するローカルのディレクトリ構造を管理する
ツールを提供しているようなかんじみたい(と勝手に思いこんでるだけなので、違うかも)


だから、tgzだろうが、gitにあるソースそのものだろうが、URLさえ書けば取得してくる
インストールスクリプトは自分で勝手に書けちゃうし、
それに合せてインストールに必要な作業が、makeだろうが、展開だけだろうが、
シンボリックリンク貼ればいいだけだろうが、好きなように書けという感じのようです。
インストールスクリプトRubyで書く形になっていて、ダウンロードするだけなら、
コマンドでジェネレートしてくれます。
この辺ちょっと調べてみたいです。

Android SDKの設定


brewで入れると素晴しいことに必要なコマンド類は /usr/local/binにリンクしてくれますので、
そのままコンソールでコマンド打てます。
ただ、target(開発対象のandroid APIのバージョン)のlistなどが入ってませんので、
その辺をセットアップ

% android


GUIが起動します。左のリストに[Installed Package]という項目があるのでクリックして、
表示された右の画面の[update All..]というボタンを押すと、サーバにアクセスして、
最新のリストを取得してきて、インストールするかを問われますので、同意してください。
責任はとれませんが。

Android のプロジェクトを作る


のも面倒なので、githubあたりで探してくるのがよろしいかと。
mirah android あたりでググるとなんこかサンプルプロジェクト作ってありますし。
わたしもそんな方のをフォークして、プロジェクトのスケルトンにしております。
build.xmlにmirahでコンパイルがかかるようにしてますので、
http://github.com/wats/skel-mirah-android.git

からcloneしてきて、トップディレクトリで

% ant compile

していただければ、とりあえず、mirahで書かれたactivityがコンパイルされます。
ちなみにわたしができるようにしたわけでなく、
originのプロジェクトでそうなってたわけです。感謝です。


あ、build.propertiesのsdk.dirをご自身のインストールされた Android SDK
ルートディレクトリに書き換えるのをお忘れなく。
もし、brewでインストールした場合だと、

/usr/local/Cellar/android-sdk/r7


という値になります。/usr/local/Cellar 配下にインストールするパッケージが
そのままパッケージ毎に展開されるようになっています。



ああ、寝むさにまけて投げやりな記事になってもうた。。。
あと、mirahのが、bitescript に依存してて、
これがまた、mirahのインストールディレクトリと同列階層に
bitscriptのインストールディレクトリがないといけないようなので、
シンボリックリンクなどででも

somedir

------------- mirah
------------- bitescript


となるようにしてください。bitescriptのURLは以下です。
http://github.com/headius/bitescript.git

これはまだ、mirah の配下のプロジェクトじゃないんだなぁ。。。。

gitでoriginのurlを確認する。

かなり重度の健忘症というか、痴呆症に近いレベルの自分にとっては、


このソースのリポジトリってどこだっけ?


というのは日常ちゃめしごとでして、なおかつ、それを知る術も常に忘れております。
で、gitでその手のコマンドが、わりとどの本や、公式のドキュメントにもわかりやすいとこに
書いてない(たぶん、自分が見つけれてないだけ)ので備忘の為に覚え書。

※※追記※※
id:thinca さんより以下のコマンドを教えていただきました。

git remote -v

こっちの方がよさそうです。
ありがとうございました。

git config --get remote.origin.url


これで忘れても大丈夫。

Mirahのインストールを丁寧に。と Hello World

さて、Mirah さんですが回りのGeekな方々(ギリシャ人じゃないよ)が
ご存知なくてちょっと意外でした。


最初は duby っていう名前で開発されていて、
最近になって Mirah に改名された模様です。
開発者の CHARLES NUTTER さんのブログを漁ると
http://blog.headius.com/2008/03/duby-type-inferred-ruby-like-jvm.html


これは2008年3月10日の記事なので、もう2年以上前からあることになります。
で Dubious は Mirah で書かれた Rails ライクなフレームワークだそうです。
ただ、構造はもっとシンプルで、かつ Google App Engine をターゲットにしているので、
RDB とかには対応してないはずです。たぶん。。。


Mirah のgitは
http://github.com/mirah/mirah


なのですが、なぜだかここの README は duby の頃のままで、古いので、
Dubious の方の README を参考にして Mirah の環境を構築したほうがよいです。
http://github.com/mirah/dubious


ですが、Dubious 自体は GAE な感じですので、
とりあえず、Mirah だけの環境がほしーのという場合は、
以下に端折って大丈夫です。
John Woodell さんには申し訳ないですが。

当然、git ありきで進めますと、

% git clone http://github.com/mirah/mirah.git


よく見ると、Dubious のサイトも Mirah の git リポジトリが古いですね。
1月ほど前に
http://groups.google.com/group/mirah/browse_thread/thread/6cb4760aa3f69a0d
というアナウンンスで headius > mirah への移行がうながされていますので、
おそらく上記が最新かと。
(git の履歴を見ると 8/16以降のコミットは mirah/mirah にしかなされていないですね。)


そういえば、 JRuby も必要でした。
JRuby の代替なのに JRuby に依存しとんのかい、と言いたくなるのは分らんでもないですが、
使っているのは解析器のところだそうです。
Java ソースに変換する際に、ほぼ Ruby構文解析をするのでわざわざ新たに作る必要はないですしね。
そんくらいシンタックスが一緒ちゅうことですな。
そのうち JRuby からその部分が Mirah の方に移って、JRuby が Mirah で実装されるようになるんでしょうか?


JRuby は1.5.0以上だそうですので、
現在最も一般的な開発環境では

% sudo port -d selfupdate
% sudo port install jruby


で1.5.0のJRubyはインストールできます。
MacPortsなんて俺のOSにはねーよとかいう、マイノリティの方々の環境のことは良くしらんです。
emerge とか apt-get とか yum とか make とか近代的でまともな開発環境であればなにかしらあります。
もっとナウなヤングは、本家サイトからtarボールを持ってくると1.5.2が安定板手にはいります。
jarなんで、展開すりゃいいだけなので。
(2010/9/4 現在)


で、インストールディレクトリは皆様いろいろな宗派や流儀があるでしょうが、
一例として/etc/profileの一部を、以下にあげます。

JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
JRUBY_HOME=/usr/local/jruby-1.5.2
MIRAH_HOME=/usr/local/mirah

export JAVA_HOME JRUBY_HOME MIRAH_HOME
PATH=$JAVA_HOME/bin:$JRUBY_HOME/bin:$MIRAH_HOME/bin


これでPATHが通っていれば、もう世界にこんにちは!です。

% mirah -e 'puts "Hello World!"'
Hello World!


ああ、もうこれであなたもmirahcostaですね。(注:僕の勝手な造語です。)
(というか、-ahとか抜ける音で終られると後に-ist とか-erとか付けにくいなぁ)


昔、geekという言葉をサービスの名前に入れようとしたら、
'変人'とかへんな単語入れるな、ってマジで同僚に嫌がられたのが急に思い出されてなつかしい今日この頃です。

Mirah - JRubyではないJVMで動くるrubyくさい言語のインストール

rubyに行っちゃうと、もうJavaに戻れなくなるのは、
電気がある生活に慣れちゃうと、もう電気のない生活なんて想像できないのと似ている。
とおじいちゃんが言ってました。


ただ、Javaしか動かん環境というのもあるもので、
Google App Engine とか、 Google App Engine とか、 Google App Engine とかがあります。
AndroidとかもLinuxだから入れちまえとかもできるんでしょうけど、
Market placeで配布できない以上、これもJavaに限られた環境と言えると思います。


で、それでもrubyと思えばjRubyという選択肢があるんでしょうが、
app engine とかではspin-upに時間がかかり、若干不満の残るところです。
Androidでも応答性の求められるゲームなどには JRubyは厳しいみたい。

そこでMirahですよおとうさん。
rubyの引数に型指定が残った感じのシンタックスで、かなりrubyっぽい。
なのにjavaと全く同じスピードでるそうです。
なにせjavaですから。
rubyっぽいシンタックスで記述したソースをプリプロセッサで一度
javaソースに変換して、その後にclassにコンパイルという言語だそうです。
Mirah http://github.com/mirah/mirah

これがまた、上記リンクに記載されているMirahの本家にあるREADMEでは上手くインストールできない。
Mirahで作成された、dubiousというフレームワークのREADMEが一番新設に記載されています。
dubious http://github.com/mirah/dubious

さわるのは明日からだなー。

OSX の /etc/paths は変数展開してくれない。

OSXの起動時環境変数などの設定シーケンスはデフォルトのbashの場合だと

1. /etc/profile

2. /usr/libexec/path_helper

3. /etc/bashrc

の順になっていて、MacPortszshに変えたりすると

1. /etc/profile

2. /usr/libexec/path_helper

3. /opt/local/etc/zshenv

4. /opt/local/etc/zprofile

みたいになるらしいんだが、いずれでも実行される

2. /usr/libexec/path_helper

で、/etc/pathsというファイルを読みこんで、そこに書いてある文字列を全て環境変数 PATH に
突っこんでくれる。
ただ、このpathsファイルの書式がなかなか素晴しく、1行を一つの値として、":" で連結してくれるのは
いいんだけど、例えば、

$JAVA_HOME/bin
$JRUBY_HOME/bin
/opt/local/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

とか書いても $JAVA_HOME のようなシェル変数は展開してくれず、そのまま

$JAVA_HOME/bin:$JRUBY_HOME/bin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

のようになる。ちなみにコメントも有効ではなく

#/usr/bin
/bin
/usr/sbin
/sbin

だと、

#/usr/bin:/bin:/usr/sbin:/sbin

になってします。使い勝っていまいち。

JRockitがどうも不安定かも

Amazon ec2上でCentOS 5.5 + JRockit 1.6.0_03 でJavaの環境を作ったけれど、どうも不安定。
jruby + glassfish + rails とか動かしてて、そもそも大丈夫かとか突っこまれそうな環境なんだけれど、
同様の構成をCentoOS 5.2上でやって全く問題なく半年ぐらい回していたので、
環境でハマるとは思いもよらないかんじ。


glassfishの応答が全くなくなるので、DBとの接続とかも考えつつも、
とりあえずJVMをSUNじゃないや、Oracle?に変えたらあっさり安定。
(ちなみにJRockitはBEAのときに出された最後のものなので、Oracle製のものではないです。
ライセンス上そのバージョンまでは使用可能)
しかも、スピードもはやいし。