2011年1月 5日

環境設定メモ: RVM + Ruby 1.9.2 + Rails3

[ 開発環境 ]

MacBook (SnowLeopard)でRails3の環境をつくりはじめました。

readlineのインストール

readline入れとかないとirbで日本語使えないということなので、readline-6.1をインストール。単純にconfigure/make/sudo make install。

RVMのインストール

http://rvm.beginrescueend.com/の指示に基本的には従う、が、scripts/installが実行されなかったので手動で実行する。

.bash_profileに、次の追記をする。

 [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

Ruby 1.9.2をインストールする

rvm install ruby-1.9.2 --with-readline-dir=/usr/local 

Railsをインストール

rvm use 1.9.2
gem install rails

2009年5月12日

gitの第一歩: working tree, index(staging area), repository(commited)

[ 開発環境 ]

gitをつかいはじめてみたけど、どうもわたしは基本的な概念が分かっていないぽいので、本を探してみました。見つけたのは2冊。

Git Internals

Git Internalsは$9のPDF本。大変安い。Internalsというだけあって、仕組みを解き明かす本のようです。

Pragmatic Version Control using Git

Pragmatic Version Control using Gitは、名前から推測つくように、The Pragmatic Bookshelfから出ている本。電子版$22, 書籍版$34.95 + 送料, 電子+書籍$43.75。

まずはPragmatic Version Control using Gitの電子版を買って、読み始めています。iPhoneでも読めるので通勤の友です。前回疑問に思ったレポジトリをworkingの関係はすぐにすっきりしました。

Gitには3種類のエリアがあります: working tree (ここで実ファイルを編集), repository(コミットされたファイルの各バージョンが入っているデータベース), index(or staging area)(これからコミットされるファイルが一時的に入っている場所)。このindexの存在意義がいまのところ私には分かっていませんが、indexとかstating areaとかcachedとかいわれるものが、レポジトリとworkの間にはさまっていることを理解しておくのがGitをちゃんと理解してつかう第一歩なように思います。

その他にもGitはいろいろ特徴的なようです。本質的に「内容の」変更がtrackされること(ファイルではなく!)、branchが本質的でその処理も非常に軽いこと(だからbranchを使いまくる、従来のVCSからみると「過激な」使い方も気楽にできる)、VCSというよりは履歴つきファイルシステムのようなものであること、等々。

2009年5月 4日

gitを使ってみる

[ 開発環境 ]

Factor言語はものすごいペースで新しいバイナリが出ます。差分のリリースノートとかないので、何がかわったのかよく分かりません。そして突然emacsのfactor mode動作が不審なことになったりします。

ソース管理システムで差分みればいいのかなー、と思って、Factorで使われているgitを自分の環境にいれてみることにしました。

どこから持ってくる?

自分でビルドしてもよいのですが、OS X用のパッケージがあるのでそれをありがたく使わせていただきます。gitは/usr/local/git以下にインストールされます。

Factorのgit repositoryをコピーする

レポジトリ用の場所を作って、次のコマンドでいけます。簡単。

git clone git://factorcode.org/git/factor.git

見るだけ?

Factorのgitレポジトリは当面見るだけ、ですが、他に今svnで管理している個人的なものもgitに移行しようかな。

基本的な使い方

subversionのように、どこかにレポジトリがあって、その一部がワークとしてコピーされている、というイメージではなさそう(たぶん)。レポジトリそのものの下にあるファイルが編集対象で、レポジトリのルートにある".git"ディレクトリ以下にデータベースがあります(たぶん)。

ということで、使い方はこんなかんじでしょうか。

まずレポジトリを用意する

既に存在するgitレポジトリならcloneする。そうでなければ、

cd <レポジトリにする場所>
git init
git add .
git commit

これで最初のバージョンがコミットされます。

日常的な操作

ファイルを編集します。編集したファイルをgit addで指定し、git commit。git commit -aで、変更されたファイルを検出してコミット。この場合、新規作成されたファイルは対象にならない。

疑問点

「リポジトリ」と「ワーク」の関係。特に、「リポジトリ」の場所。上に「たぶん」と書いたことが、間違っているようにも思うが今は理解できていない。

2009年3月 6日

Factorに入門する(3) 名前づけの習慣

[ Factor 開発環境 ]

迷走するFactor入門生その3。本日は短いですが名前付のコンベンションについて。

参考資料はこちら、というか、ただ要約しただけです。すみません。

foo?
booleanを出力する。条件にあっているかテストする用ですね。
?foo
fooを場合によっては実行。
<foo>
fooのオブジェクトを新規作成。
>foo
スタックトップをfooに変換。>stringとか。
foo>bar
スタックトップのfooをbarに変換。
new-foo
スタックトップから引数をとって、何か新規オブジェクトを作成。
foo*
fooのaltanativeまたは、fooからよばれるジェネリックなword
(foo)
fooから呼ばれる実装詳細
set-foo
fooを新しい値に。set-lengthとか。
foo>>
スロットのゲット。(スロットってなんだ? オブジェクトの属性かな)
>>foo
スロットへのセット。
with-foo
新しい動的スコープの中で、fooに関わる初期化やクリーンアップをおこなう。
$foo
ドキュメンテーション用のマークアップ

次回は、実行時のスタック操作だけじゃなくて、パース時とかコンパイル時について調べるかもしれません。

Carbon Emacsから辞書.appを使う

[ 開発環境 ]

以前は辞書引きアプリとしてJammingを使っていて、Emacsから辞書引きができるように設定していました(最初は日本語が通らなかったのですが、2ちゃんで質問やらやりとりやらやって、ちゃんとうごくようにしました。名無しで参加してましたがあれは私です。いまでも探せばアーカイブが出てきます:)。

さて、Leopardの辞書.app (Dictionary.app)は大変便利です。SafariみたいなCocoaアプリでは、単語を選択してCommand-Control-dで辞書が引けます。

これemacsからやりたいなー、と思っていたのですが、Dictionary.appのAPIがわからなくて(AppleScriptに対応してないみたいだし)、諦めていたのですが、方法がありましたよそれもとても簡単なのが。Tiger/Leopardでは、"dict://"というスキームでURLひらけば辞書が引けるのでした! 全く知らなかった。調査能力が低いです。というか、どこにそのドキュメントがあるのかも今の時点で分かりません。

というわけで、大変簡単ですがCarbon EmacsでDictionary.appを使うelisp書いてみました。jammingのときと同じキーバインドにしています。region 指定で辞書引くってのは全く使わないので今回は省略です。

;MacOS X Dict
(require 'thingatpt)
(defun macdict-lookup (word)
  "Lookup word with Dictionary.app"
  (call-process "open" nil 0 nil (concat "dict://" word)))
  
(defun macdict-lookup-word ()
  "Lookup the word at point with Dictionary.app."
  (interactive)
  (macdict-lookup (word-at-point)))

(global-set-key "\M-l" 'macdict-lookup-word)  

引きたい単語の上にポインタを置いて、M-lで 辞書.appが立ちあがります。

Cocoaアプリみたいなパネルで表示できるともっと嬉しいんだけど、あれはCocoaな親プロセスがいないと使えないのかな。

(追記 2009.3.6 15:00)
Carbon Emacsのmac-key-mode使えばコンテクストメニューで辞書引けるんですね...。しかもだいぶ前から実装されていました...。そのソースみれば、browse-urlで辞書引くってのが一目瞭然でした...。