2010/02/21



この図はContext Freeという言語のサンプルのひとつで作られたもの。文脈自由言語という名前の通り、文脈自由な規則を書くことで絵を作ることができる。

プログラムを見て、たぶんこうだろうという解説。マニュアルは全く読んでないので、間違ってるかもしれないけど、まあ、たぶんこういうことでしょう。

startshape WHOLE


で開始記号を設定。

rule WHOLE {
QUAD { x -0.5 y -0.5 }
QUAD { x 0.5 y -0.5 }
QUAD { x 0.5 y 0.5 }
QUAD { x -0.5 y 0.5 }
}


ruleでWHOLE -> QUAD QUAD QUAD QUAD と指定したのと同じ。ただし、呼び出す際にxとyをそれぞれ変更している。

面白いのはここからで、

rule QUAD {
FILL { }
}


QUADはFILLだと。ここでFILLは後で定義されているが、単に四角を書いているだけ。これだけだと、画面に4つ四角が表示されて終わるだけなんだけど、さらに

rule QUAD 5 {
WHOLE { size 0.45 r 2 }
}

と定義されている。つまり、最初のQUADかこのQUADのどちらかが選ばれる。そのための条件はない(文脈自由だから)。そして、こっちのQUADはWHOLEだと定義されているので、再帰的な定義になっていることが分かる。さらに、もう一つ、

rule QUAD 0.5 {
// nothing
}


と定義されていて、何も表示しない場合もある。ここで、5とか0.5とQUADの後ろに書いてある。これは各ルールが選択される比率を表している。何も書かないと1。この場合は1:5:0.5ということで、分かりやすい比に直すと、2:10:1の比率で各ルールが選ばれる。

最後に、FILLを定義しておしまい。SQUAREは組み込みでしょう。

rule FILL {
SQUARE {
size 0.8
}
}

2010/02/06

MacとDropboxでgit

Macにgitをインストールするには、MacPortsで
sudo port install git-core

とする。Xcode関係のファイルがgitに含まれないようにするには、以下のように
cat - > ~/.gitignore
build
.DS_Store
*.o
*.ob
*.pbxuser
*.tmproj
*.model*
*.mode*
*.build
Ctrl-D
git config --global core.excludesfile ~/.gitignore

.gitignoreをリポジトリのroot dirにaddしておいてもよい。

これで、ローカルでは使えるのだけど、デスクトップとノートのあいだで同期がとりたい。かといって上げっぱなしの自宅サーバを用意するというのはなしでということで、Dropboxを利用してみようと思ってぐぐってみると、同じことを考えている人がいたので参考にさせてもらう。

gitとDropboxでお手軽・無料のSource Hostingを実現する - lab.naoki.sato.name

1. Dropbox内にリポジトリを用意
cd ~/Dropbox
mkdir repo
cd repo
mkdir MyApp
cd MyApp
git --bare init


ディレクトリに.gitはつけなくていいと思う。つけるとGitXが入っているとリポジトリと認識されて、ディレクトリの中をFinderで見るのが面倒になる。

2a. MyAppがまだないときは、このままclone。
cd ~/Projects    # お好みで
git clone ~/Dropbox/repo/MyApp


2b. すでにMyAppがあるときは(普通はこっちかな)、
cd ~/Devlopment/MyApp
git init
git add .
git commit
git push ~/Dropbox/repo/MyApp master


ここで、このままこのディレクトリで作業を続けるなら、
git remote add origin ~/Dropbox/repo/MyApp


しかし、おすすめは一度、このオリジナルのディレクトリをrenameするなり、Trashするなりしてしまってから、
git clone ~/Dropbox/repo/MyApp


でリポジトリからファイルを持ってきて、ビルドできることを確認したほうがいい。(Xcodeのビルドオプションが消えてしまっているな。.gitignoreを書きすぎか?)

以降は、git pullとgit push branchで同期できる。