<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://www2.atwiki.jp/okumura/">
    <title>開店休業中</title>
    <link>http://www2.atwiki.jp/okumura/</link>
    <description>開店休業中</description>

    <dc:language>ja</dc:language>
    <dc:date>2009-10-21T13:57:18+09:00</dc:date>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://www2.atwiki.jp/okumura/pages/84.html" />
                <rdf:li rdf:resource="http://www2.atwiki.jp/okumura/pages/85.html" />
                <rdf:li rdf:resource="http://www2.atwiki.jp/okumura/pages/112.html" />
                <rdf:li rdf:resource="http://www2.atwiki.jp/okumura/pages/118.html" />
                <rdf:li rdf:resource="http://www2.atwiki.jp/okumura/pages/117.html" />
                <rdf:li rdf:resource="http://www2.atwiki.jp/okumura/pages/116.html" />
                <rdf:li rdf:resource="http://www2.atwiki.jp/okumura/pages/82.html" />
                <rdf:li rdf:resource="http://www2.atwiki.jp/okumura/pages/115.html" />
                <rdf:li rdf:resource="http://www2.atwiki.jp/okumura/pages/66.html" />
                <rdf:li rdf:resource="http://www2.atwiki.jp/okumura/pages/46.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="http://www2.atwiki.jp/okumura/pages/84.html">
    <title>Mac/開発環境/subversion</title>
    <link>http://www2.atwiki.jp/okumura/pages/84.html</link>
    <description>
      * Leopardならインストーラでインストール
Leopardはapacheが標準で2.2なので、もうportsを使う必要はありません。&amp;br()
[[CollabNet&gt;http://www.collab.net/downloads/apple/download.html]]からインストーラをダウンロードするとインストーラが走ります。

** svnの入れ替え
インストーラで入れた場合、/opt/subversion以下にbinやらlibやらがインストールされます。&amp;br()
なので、標準で入ってるsvnと入れ替える必要があります。

まず、
 sudo mkdir /usr/oldsvn
 sudo mkdir /usr/oldsvn/bin
 sudo mv /usr/bin/svn* /usr/oldsvn/bin/
の用にして元々入っていたsvnを退避するといいでしょう。

その後、
 sudo ln -s /opt/subversion/bin/* /usr/bin
としてsvnコマンドをすべて入れ替えます。

また、apache用のモジュールも入れ替えます。

** svnrootの作成
/homeはLeopardではマウントポイントとして使用されているため、/home/svnrootは作れません。&amp;br()
ここでは、svnrootを/var/svnrootとしました。
 sudo mkdir /var/svnroot
mod_dav_svnを利用するためにはwwwユーザが使用可能でなければいけません。
 sudo chown www:www /var/svnroot
あとは、
 sudo -u www svnadmin create /var/svnroot/&lt;プロジェクト名&gt;/
の様にしてwwwユーザで/var/svnroot配下にリポジトリを作っていけばOKです。

** apacheの設定
Leopardの標準のapacheでは、/private/etc/apache2/other/配下の.confファイルをすべてincludeするようになっています。&amp;br()
なので、ここにsubversion用のconfファイルを作成すると良さそうです。

 sudo vi /private/etc/apache2/other/subversion.conf
などとして、以下の内容のsubversion.confファイルを/private/etc/apache2/other/配下に作ってください。&amp;br()
svnrootを/var/svnroot以外にしたときには適宜読み替えてください。
 LoadModule dav_svn_module /opt/subversion/lib/svn-apache/mod_dav_svn.so
 LoadModule authz_svn_module /opt/subversion/lib/svn-apache/mod_authz_svn.so

 # Location for subversion 
 &lt;Location /svn&gt; 
   DAV svn 
   SVNParentPath /var/svnroot 
   SVNListParentPath on
   AuthType Basic 
   AuthName &quot;Subversion repository&quot; 
   AuthUserFile /var/svnroot/passwd 
 
   &lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt; 
     Require valid-user 
   &lt;/LimitExcept&gt; 
 &lt;/Location&gt; 

最後にpasswdファイルを作って終了です。 
 cd /var/svnroot 
 htpasswd -c passwd &lt;適当なユーザ名&gt; 

* portsでインストール
tracをportsで入れる場合、subversionもportsで入れる必要があります。&amp;br()
多分apacheをportsで入れる場合も同様でしょう。

portsはports内だけで依存関係を解決するため、芋づる式に全部portsじゃないと入れられないのです。

 port install subversion +mod_dav_svn +tools
でひとまず本体を。

[[trac&gt;Mac/開発/trac]]の所でも書いた通り、pythonがなんかうまく入らんかったんですが、それ以外のbindingsはまとめて以下のように。
 sudo port install subversion-javahlbindings subversion-rubybindings
これは以下と同義の模様。
 sudo port install subversion-javahlbindings
 sudo port install subversion-rubybindings
...ふーん、こんな事できたんや...。もっと早くに知っとけばかなり楽やったかもしれません。

rubyはRedMine入れるか考え中のため。javaは、XPlannner-subversion連携とか出来へんか画策中なんで。&amp;br()
まぁ、今すぐいるわけじゃないんですが。
** 文字化け対策
macportでsubversionを入れると、文字化けします。ロケールがちゃんと設定できていないのが原因らしい。&amp;br()
で、/etc/bashrcに以下の記述を追記してやると直ります。
 export LANG=ja_JP.UTF-8
要は言語環境をちゃんと書いとけ、てことです。    </description>
    <dc:date>2009-10-21T13:57:18+09:00</dc:date>
  </item>
    <item rdf:about="http://www2.atwiki.jp/okumura/pages/85.html">
    <title>Mac/開発環境/trac</title>
    <link>http://www2.atwiki.jp/okumura/pages/85.html</link>
    <description>
      * 先にGenshiは入れておく
[[Genshiのダウンロードページ&gt;http://genshi.edgewall.org/wiki/Download]]をみてみると、現状Leopard版はi386しかありません。&amp;br()
i386版で動かしても特に問題は無いようなのですが、Core2Duoなマシンの場合x86_64版を探しに行くのかTracのsetup.pyで途中でeggファイルが無いと言われてこけてしまいます。

で、Genshiは先に入れておくとそいつを使うので、Tracのsetup.pyを走らせる前に別途入れておきます。

[[GenshiのダウンロードページのSource Tarballsの所&gt;http://genshi.edgewall.org/wiki/Download#SourceTarballs]]から適当な形式のファイルを取ってきます。&amp;br()
今回、私はzipを取りましたが、たぶんtar.bz2の方が小さかったかも…

で、こいつを解凍してできたフォルダの中に入り、
 python setup.py install
とすればOKです。

* Tracのインストール
Tracの日本語版は[[インタアクト株式会社さんの公開資料(Trac)&gt;http://www.i-act.co.jp/project/products/products.html]]の一番下のダウンロードの所から落としてきました。

こいつを解凍して中に入り、
 ./setup.py install
とすれば入ります。Tracを入れた後にGenshiを探し出して落ちるのですが、とりあえずTracが入れ終わっていればOKぽいです。

* trac環境の作成
apacheのfast_cgiやmod_pythonで動かす場合、tracの環境ディレクトリはwwwユーザが扱えないといけません。&amp;br()
なので、trac環境ディレクトリのオーナーはwwwユーザにします。

まずは、tracの環境フォルダの作成。ここでは/var/tracroot以下に作成する事とします。以下適宜読み替えてください。&amp;br()
これもLeopardからは/homeが使えないので要注意です。

 sudo mkdir /var/tracroot
 cd /var/tracroot
 sudo chown www:www .

後は、プロジェクトごとにwwwユーザでtracroot内にtrac環境を作ればOKです。&amp;br()
「&lt;プロジェクト用ディレクトリ&gt;」となっているところは適宜読み替えてください。&amp;br()
今回毎回sudoでwwwになってますが、suでwwwになって作業をして行った方が楽かもしれません。
 sudo -u www mkdir &lt;プロジェクト用ディレクトリ&gt;
 sudo -u www trac-admin &lt;プロジェクト用ディレクトリ&gt; initenv
trac環境作成用の対話UIが起動します。&amp;br()
質問に答えて行くだけで、デフォルトままで良いところは何も入れずにreturnでかまいません。&amp;br()
以下&gt; までが質問、その後ろに入力内容を記述して行きます。
 Project Name [My Project]&gt; &lt;プロジェクト名&gt;
「&lt;プロジェクト名&gt;」は適宜指定してください。
 Database connection string [sqlite:db/trac.db]&gt; 
 Repository type [svn]&gt; 
この２つは基本的にデフォルトままでかまいません。&amp;br()
svn以外に対応するのはいつになるんでしょうねー…
 Path to repository [/path/to/repos]&gt; &lt;svnリポジトリのパス&gt;
これはsvnリポジトリへのパスを指定します。適宜読み替えてください。

以上で設定が終わり、いろいろと読み込みやら何やらが走って環境が作成されます。

ここで一度
 sudo -u www tracd -p 8080 -e /var/tracroot
として動作を確認した方が良いでしょう。

* apacheの設定
tracdで動かしても良いのですが、せっかくなのでapacheをかます事にしました。&amp;br()
細かいアクセス制御やsslなどはapacheをかませた方がやりやすいです。が、tracdで動かすのが一番高速らしいので、LAN内のみで使う分にはtracdで良いかもしれません。

apacheと連携させる動かし方としては、早い方からmod_python, fast_cgi, cgiとなるようです。&amp;br()
それぞれtrac環境以下のwiki/TracModPython、wiki/TracFastCgi、wiki/TracCgiに説明があるので、tracdで起動してマニュアルを読みつつ進めると良いかもしれません。

** fast_cgiで動かす場合
可能ならmod_pythonで行きたいのですが、mod_pythonがデフォルトではi386でビルドされてしまうため、ちょっとハマるようです。&amp;br()
ですので、まずはfast_cgiで動かします。

apacheにはmod_fcgiとmod_fastcgiの2種類があるそうなのですが、mod_fastcgiはLoepardにもとから入ってるのでこれを使います。

*** trac.confの記述
Mac os Xデフォルトのapacheの設定では/etc/apache2/other/配下の*.confが自動で取り込まれるので、ここにtrac.confを作成します。
 sudo vi /etc/apache2/other/trac.conf 
内容は以下の通り
 &lt;IfModule mod_fastcgi.c&gt;
     AddHandler fastcgi-script .fcgi
 &lt;/IfModule&gt;
 LoadModule fastcgi_module libexec/apache2/mod_fastcgi.so
 
 &lt;Directory &quot;/usr/local/Trac-0.11.4.ja1/cgi-bin&quot;&gt;
     AllowOverride None
     Options None
     Order allow,deny
     Allow from all
 &lt;/Directory&gt;
 
 ScriptAlias /trac /usr/local/Trac-0.11.4.ja1/cgi-bin/trac.fcgi
 
 &lt;Location &quot;/trac&quot;&gt;
     SetEnv TRAC_ENV_PARENT_DIR &quot;/var/tracroot&quot;
 &lt;/Location&gt;
 
 &lt;LocationMatch &quot;/trac/[^/]+/login&quot;&gt;
   AuthType Digest
   AuthName &quot;develop&quot;
   AuthDigestDomain /trac
   AuthUserFile /var/svnroot/passwd
   Require valid-user
 &lt;/LocationMatch&gt;

DirectoryディレクティブやScriptAliasのパスは適宜入れたTracのパスに、&amp;br()
Locationディレクティブの中のTRAC_ENV_PARENT_DIRはtrac環境をたてたディレクトリに、&amp;br()
LocationMatchディレクティブの中のAuthUserFileは認証用のpasswdファイルのパスに、それぞれ読み替えてください。

*** eggキャッシュディレクトリの作成
これでapacheの設定ができました。ここで起動してみます。&amp;br()
apacheの起動はシステム環境設定の「共有」でweb共有のチェックを入れる（入れ直す）のが楽です。&amp;br()
apacheは起動するのですが、http://localhost/tracにアクセスするとエラーが発生します。&amp;br()
ただ、pythonのエラーが出るようになるので、ここから先はエラーの内容を見ながら直して行くのが楽です。&amp;br()
ここから先は、基本的に問題に対応した後apacheを再起動しなくてもリロードすれば解消します。

さて、エラーの内容を見てみると、/Library/WebServer/.python-eggsにeggファイルを展開したいのに書き込めないようです。&amp;br()
なので、この.python-eggsを作ります。
 sudo mkdir /Library/WebServer/.python-eggs
 sudo chown www:www /Library/WebServer/.python-eggs

これで動くようになりました。    </description>
    <dc:date>2009-06-01T04:12:09+09:00</dc:date>
  </item>
    <item rdf:about="http://www2.atwiki.jp/okumura/pages/112.html">
    <title>Mac/開発環境/QuickLook</title>
    <link>http://www2.atwiki.jp/okumura/pages/112.html</link>
    <description>
      とてつもなく便利なLeopardのQuickLook。&amp;br()
ただ、入れるのはなかなか苦労する事も。そんな訳でメモです。

*基本的に、
 /ライブラリ/QuickLook
に.qlgeneratorを入れれば動きます。&amp;br()
でもこれはあくまで基本。基本に忠実に動いてくれない事も多々。

.qlgeneratorはパッケージなので、.appと同様ctrl＆クリックなり右クリックなりダブルタップなりして、
「パッケージの内容を表示」すると中に手を入れられます。&amp;br()
で、info.plistやらを弄らないといけない事も。

** UTI
UTIはMacのファイルタイプ識別子で、URI風になってます。たとえばJavaのソースは「com.sun.java-source
」みたいに。&amp;br()
なかなかくせ者で、泣かされる事請け合いです。

「public.」で始まるのは「public.source-code」や「public.xml」などの一般的なもので、Appleが決める物です。で、継承階層のように階層状に定義されます。&amp;br()
基本的にそのファイルの関連づけられたアプリケーションのinfo.plistで定義するみたい。

- CFBundleDocumentTypes
-- LSItemContentTypes
の中に名前があって、
-UTExportedTypeDeclarations
- UTImportedTypeDeclarations
のどちらかに定義が無いといけないぽいです。

ExportedはそのApp用のファイル、Importedの方は別のアプリケーションのファイルやけど開けるよ、てときに使います。

これが書き替えて即反映、とは行かないようで、ログオフして再ログインしたり、再起動してみたりと色々しないとうまく反映されません。

* qlmanage
QuickLookの管理用コマンドがqlmanage。これはめっちゃお世話になります。覚えておくと吉。

** コマンドラインから起動
 &gt; qlmanage -p -c &lt;UTI&gt; -g &lt;試したいジェネレータ&gt; &lt;プレビューを表示するファイル&gt;
とコマンドを入力すると指定した.qlgeneratorを使って指定したファイルを開けます。&amp;br()

「-c &lt;UTI&gt;」「-g &lt;試したいジェネレータ&gt;」はそれぞれオプションで、指定しなければ拡張子やcreatorなどから判定されます。

これを使って、うまく動かないときはちょっとずつ確認しながら問題を特定していきます。&amp;br()
特にUTI指定でちゃんと開けるか確認-&gt;UTI指定無しでちゃんとひもづけたUTIで開きにいってるか確認、と言うのはめっちゃ繰り返します。

** QuickLook再起動
「qlmanage -r」でQuickLookの設定をクリアできます。

ほか、こまごまとしたオプションなどは「qlmanage -h」で。

* [[QLColorCode&gt;http://code.google.com/p/qlcolorcode/]]
なかなか使いでのあるコードカラーリング用.qlgeneratorです。

基本的な設定は「defaults」コマンドで行います。たとえば、
 &gt; defaults write org.n8gray.QLColorCode extraHLFlags &#039;-l -W&#039;
とすると、行番号がついて(-l)自動改行して(-W)くれます。

また、info.plistの中の「QLPreviewWidth」をディスプレイの幅いっぱいにしておくといい感じです。実際には最大幅指定になるようで、これをしておくと最大化したときに全画面表示になります。&amp;br()
この設定を変更したあとは、
 &gt; qlmanage -r
してキャッシュをクリアする必要があります。

** 日本語対応

[[Leopardを使いこなす&gt;http://heptech.web.fc2.com/macosx/leopard.html#qlcolorcode_nkf]]というページに書いてありました。

&gt;QLColorCode.qlgeneratorの&quot;パッケージの内容を表示&quot;して〜Contents/Resources/colorize.sh を開き〜30行目に以下のように utf-8 のオプションを追加します。
&gt; --encoding utf-8 --font-size $fontSizePoints ${=extraHLFlags})	# line30
&gt;34行目の reader を以下のようにします。（nkfのpathは自分の環境に合わせて変更してください）
&gt; reader=(/opt/local/bin/nkf -w $target)	# line34
&gt; こうすると、とにかく日本語を正しく表示するようになり、かつ色付き強調表示できるものは強調表示、 できないものはそんな拡張子は知らんというメッセージの後、強調表示をせずに白黒で通常表示を行います。

なるほどなるほど。  
という訳で、porticusを使ってMacPortsからデフォルトでnkfをインストールして、上記の通りやってみると…うまく行きました！

** QLColorCodeのgroovy対応
まず、CFBundleDocumentTypesの中のLSItemContentTypesのarrayにgroovy用のUTIを追加します。&amp;br()
sourcecode.groovyなどでいいでしょう。
 &lt;key&gt;LSItemContentTypes&lt;/key&gt;
 &lt;array&gt;
...
      &lt;string&gt;sourcecode.groovy&lt;/string&gt;&lt;!-- この１行を追加する --&gt;
  &lt;/array&gt;
さらに、UTImportedTypeDeclarationsにも追加します。このとき、LSItemContentTypesに追加したUTIと一致させるよう注意してください。
 	&lt;key&gt;UTImportedTypeDeclarations&lt;/key&gt;
 	&lt;array&gt;
...
 		&lt;!-- 同じような記述が並んだ中に、以下の記述を追加する。 --&gt;
 		&lt;dict&gt;
 			&lt;key&gt;UTTypeConformsTo&lt;/key&gt;
 			&lt;array&gt;
 				&lt;string&gt;public.source-code&lt;/string&gt;
 			&lt;/array&gt;
 			&lt;key&gt;UTTypeDescription&lt;/key&gt;
 			&lt;string&gt;Groovy Source Files&lt;/string&gt;
 			&lt;key&gt;UTTypeIdentifier&lt;/key&gt;
 			&lt;string&gt;sourcecode.groovy&lt;/string&gt;
 			&lt;key&gt;UTTypeTagSpecification&lt;/key&gt;
 			&lt;dict&gt;
 				&lt;key&gt;public.filename-extension&lt;/key&gt;
 				&lt;array&gt;
 					&lt;string&gt;gv&lt;/string&gt;
 					&lt;string&gt;gvy&lt;/string&gt;
 					&lt;string&gt;groovy&lt;/string&gt;
 				&lt;/array&gt;
 			&lt;/dict&gt;
 		&lt;/dict&gt;
...
 	&lt;/array&gt;
 &lt;/dict&gt;
 &lt;/plist&gt;
dictがいっぱい並んでるので、追加先を間違えないように注意が必要です。最後よりも、その１つ手前の方が間違えにくそうです。

最後に、groovy用の言語定義「groovy.lang」をQLColorCode.qlgeneratorの中の
 Contents/Resources/override/langDefs
に作成します。&amp;br()
Contents/Resources/highlight/share/highlight/langDefs/java.langをコピーして手直ししました。

- $KW_LIST(kwa)に「def」を追加
- $STRINGDELIMITERSに「&quot;&quot;&quot;」 「&#039;&#039;&#039;」を追加
他にもいろいろと出来そうですが、まずはそんなところで充分でした。     </description>
    <dc:date>2009-05-30T00:46:57+09:00</dc:date>
  </item>
    <item rdf:about="http://www2.atwiki.jp/okumura/pages/118.html">
    <title>Mac/BootCampに2パーティション</title>
    <link>http://www2.atwiki.jp/okumura/pages/118.html</link>
    <description>
      苦労しました。素直に１パーティションでやっときゃよかったかも。&amp;br()
まだVMWareでDドライブを認識できていないのですが、ここまでの奮闘記をひとまず書いておきます。

**条件の整理
まず、BootCampでWindowsを起動するためには、MBR上の先頭から4つまでのパーティションの中で、一番最後のパーティションじゃないといけない、そうです。

で、GUIDテーブルで1パーティションで１パーティション使います。&amp;br()
なので、例えばMac用、win用、共有データ置き場と３つのパーティションが要るなら
+GUIDテーブル
+Mac用パーティション
+共有データ置き場パーティション
+win用パーティション

という構成にしないといけないですし、Mac, winそれぞれにデータ用とOS用のパーティションが要るなら
+GUIDテーブル
+Mac用パーティション
+winデータ用パーティション
+winOS用パーティション
+Macデータ用パーティション
のようにしないと行けません。

普通にBootCampでMac, Winの2パーティション構成の場合は
+GUIDテーブル
+Mac用パーティション
+win用パーティション
てなりますね。

ここまでは認識してました。で、BootCampで分割した後、winのインストーラのパーティション切るところでこの構成を作ってたんですが、&amp;bold(){そうすると必ず失敗します。}&amp;br()
なんか128MBずつの隙間があるように見えるんですが、この隙間、実はGUIDとMBRを共存させるために必要なエリアなんですね。こいつを残しとかなきゃいけない。

で、
**パーティションの切り方
多分ブートセクタを正しく作るためにはBootCampで切らないとだめっぽいんですが、こいつは２パーティション構成しか作れません。&amp;br()
で、パーティションをいっぱい作ろうと思うとディスクユーティリティなんですが、ディスクユーティリティで作ったパーティションはブートできないっぽいです。&amp;br()
何回かディスクユーティリティで切ったパーティションにwinを入れてみたけどうまくいきませんでした。

じゃあどうするか。両方使ってなんとかしました。

まず、１パーティションにMacOS Xが入った状態でBootCampアシスタントを立ち上げてwinを入れるパーティションを切ります。&amp;br()
で、次にBootCampアシスタントが立ち上がったままでディスクユーティリティを使ってさらにOsXの入ったパーティションを分割し、共有用のパーティションを切ります。

これで、

+GUIDテーブル
+Mac用パーティション
+共有データ置き場パーティション
+*win用パーティション*

の構成ができました。後はwinのインストーラCDを入れて、BootCampのインストールボタンを押してインストールします。

**アクティベーション

こいつがうざいです。確かパッケージ版だと２回まで受け付けてくれるんですが、追加ライセンスだと１回なんで、BootCampでライセンス認証を行った後VMWareでライセンス認証を行う際に電話認証が居る…

まぁ、それはめんどくさいだけです。「同じコンピュータにインストールし直し」します、と答えれば自動音声で確認コードがもらえるはずです。&amp;br()
今回はインストールし直しじゃないから、と「それ以外」を選択したのでオペレータとのやり取りがさらに数分続いてしまいましたが…

めんどくさいのはいいとして、注意点が１つ。BootCampについてるドライバ群や、VMWare toolsを入れて、最新に更新するまではアクティベーションをしない事！&amp;br()
いろいろとハードウェアが認識されて別マシンとご認識され、アクティベーションを何度も行った結果自動アクティベーションが通らなくなっちゃいます。&amp;br()
まぁ、オペレータと話してのアクティベーションはできるんですけど、手間が半端無いです…

ちなみに、BootCampパーティションを参照してVMWareで起動する分には1ライセンスでかまいませんが、仮想マシンを別途つくって仮想ディスクに入れる場合は２ライセンス必要らしいです。    </description>
    <dc:date>2009-02-11T17:30:30+09:00</dc:date>
  </item>
    <item rdf:about="http://www2.atwiki.jp/okumura/pages/117.html">
    <title>Mac/開発環境/svk</title>
    <link>http://www2.atwiki.jp/okumura/pages/117.html</link>
    <description>
      svkはDeveloper Toolsに含まれています。&amp;br()
なので、LeopardのインストールDVDからデベロッパーツールをインストールすれば、svkも使用可能になります。

バージョンは2.0.1、/usr/lib以下のsvnがらみのライブラリを使っているので、svnを入れる際にlib配下はそっとしておいた方が良いかもしれません。

ざっくり言うとcvsでいうベンダーブランチを使った追っかけと同じような事を自動でやってくれるツール、と思っておけばだいたい間違いなさそうです。

ベンダーブランチを切って、編集用ブランチを切って、とすればマージはコマンド1発で確実にやってくれる、という感じです。

だいたいの使い方としては、
- ローカルにリポジトリのミラーと作業ブランチを用意する
- ミラーはネットワークにつながってる間は常に本リポジトリと同期させる
- 作業はこまめに作業ブランチにコミットし
- 一通りまとまったら作業リポジトリにためていた変更を一気にミラーと本リポジトリに反映
と言った感じになります。

* まずは準備
まず、
 svk depotmap --init
として、環境を作成する必要があります。&amp;br()
このコマンドを実行すると、$SVKROOTに設定ファイルやらリポジトリやらが作成されます。&amp;br()
$SVKROOTが未設定の場合は~/.svkが使用されます。

で、このリポジトリの事をdepotと言うみたいなんですが、こいつはデフォルトでは//…でアクセスするルートのdepotが$SVKROOT/localに置かれるだけで好きなdepotを好きな場所に置く事が出来ます。たとえば、
 svk depotmap myProject /Volumes/svkroot/myProject
の様に指定すると/myProject/でアクセスできるdepotを作成する事が出来ます。

depotのリストは、
 svk depotmap -l
で確認できます。svkの管理下から外す時は、たとえば先ほどのmyProjectを外す場合は
 svk depotmap -d myProject
とすればsvkとは関係のないただのsvnリポジトリになります。

* mirrorの作成
depotが出来たら、ローカルにミラーを作成します。&amp;br()
例えば先ほどのmyProjectの下のmirror/以下に「http://myProject.com/svn/product」をミラーリングしたい場合は、
 svk mirror /myProject/mirror/product http://myProject.com/svn/product
の様にします。

このミラー、svkを使って操作する限りは常に本リポジトリと同期してくれるようなのですが、svnを使って操作するといとも簡単に整合が取れなくなるので注意が必要です。

まぁ、手でマージして合わせれば良いだけなのですが…大変でした。

で、この状態ではまだミラーリングの設定が出来ただけで実際にリポジトリの内容が取り込まれてはいません。&amp;br()
取り込むためには、
 svk sync /myProject/mirror/product
のようにsyncコマンドにmirrorで作成したミラーのパスを渡してやります。

また、
 svk sync --all
とすれば、複数ミラーが存在してもまとめて全てを取り込む事が出来ます。

* 作業用ブランチの作成
で、常に同期されるのも困りますしsvnから使いたいので、別にブランチというかコピーを作ってそっちを触ります。これは
 svk copy /myProject/mirror/product /myproject/product
の様にcopyコマンドを使ってsvnでブランチを切るのと同じように切るだけです。

一度作った作業用ブランチに最新のミラーを反映させるためには
 svk pull /myproject/product
の様にpullコマンドを使用します。

* 作業の反映
作業用ブランチを指定してpushコマンドを実行すれば一気にミラー、本体へと反映してくれるのですが、そのままだとsvkの書き足すヘッダが付いてしまいます。これを抑制するために、
 svk push ---verbatim /myproject/product
と「--verbatim」オプションを使用した方がいい感じです。    </description>
    <dc:date>2008-11-02T04:12:56+09:00</dc:date>
  </item>
    <item rdf:about="http://www2.atwiki.jp/okumura/pages/116.html">
    <title>Mac/開発環境/eclipse on Java6</title>
    <link>http://www2.atwiki.jp/okumura/pages/116.html</link>
    <description>
      * Mac版EclipseはMac版Java6では動きません
Mac版ではEclipseのSWTは32bit版しか無く、Java6は64bit版しかないので、
Java6ではSWTが動きません。どうしようも無いです。&amp;br()
Cocoa版UIも開発中のようですが、こいつも32bitオンリーです。早く64bit版出してくれ！

で、64bit版が出るまでeclipseはJava5で動かすしか無いんです。

* 32bit版Java5を優先にしておくのが簡単

/アプリケーション/ユーティリティ/Java/Java Prefarences

で、優先するJVMを設定できます。&amp;br()
こいつでいじらない限りデフォルトは32bit版Java5が最優先になっているので、下手に弄らなければ動くはずです。

eclipseが動かなかったらまずはJava Prefarencesを確認すると吉です。

* Java6を優先にする場合
eclipseはちょっと設定が普通のJavaアプリケーションと違うので、ちょっと苦労しました。

**普通のJavaアプリケーションの場合、
Jar Bundlerというユーティリティで.appファイルを作ると、Info.plistの中身はだいたい同じになります。
で、Root/Java/JVMVersionでバージョンを指定すれば、起動されるJavaのバージョンを好きに制御できます。

**ところが、eclipseには
Info.plistにこのプロパティが無い。それっぽいものもありません。
eclipseの起動設定と言えばeclipse.iniで、これも.appの中にあるんですが、こいつにもそれらしい設定はありません。

**じゃあどうするの、
うーん、と悩んだんですが、実はそれらしい設定はInfo.plist上でコメントアウトされてました。
このコメントをはずせばJavaのバージョンを指定できるよー的コメントがついてます。

info.plistはEclipse.appを右クリック(またはcontrol+クリック or 二本指タップ)して、&amp;br()
コンテキストメニューから「パッケージの内容を表示」すると、&amp;br()
「Contents」フォルダの中にあるので、&amp;bold(){普通のエディタで}開きます。

ダブルクリックするとハマります。ダブルクリックではプロパティエディタが開くんですが、&amp;br()
こいつはコメントを全く表示してくれないのでそのせいでハマります。ご注意。

で、くだんのコメントは
  &lt;!-- to use a specific Java version (instead of the platform&#039;s default) uncomment one of the following options:
    &lt;string&gt;-vm&lt;/string&gt;&lt;string&gt;/System/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Commands/java&lt;/string&gt;
    &lt;string&gt;-vm&lt;/string&gt;&lt;string&gt;/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Commands/java&lt;/string&gt;
  --&gt;
こんな感じ。&amp;br()
1.5系最新で動かしてもらいたいので、このコメントの直後に
  &lt;string&gt;-vm&lt;/string&gt;&lt;string&gt;/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Commands/java&lt;/string&gt;
と書いて見ると...動きました。    </description>
    <dc:date>2008-10-24T15:05:32+09:00</dc:date>
  </item>
    <item rdf:about="http://www2.atwiki.jp/okumura/pages/82.html">
    <title>Mac/開発環境/apache</title>
    <link>http://www2.atwiki.jp/okumura/pages/82.html</link>
    <description>
      * Leopardの場合
デフォルトのapacheが2.2なので、そのままでもsubversionやら何やらが使えます。&amp;br()
めっちゃ楽になりました。

* portsで入れる場合
先に[[ports&gt;Mac/開発/ports]]のインストールが必要です。

portsさえ入っていれば、
 &gt;sudo ports install apache2
でOK。

最後に吐かれたメッセージによれば、インストール後に
 &gt;sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
とすると、起動時に自動的にサービスが立ち上がるとの事でした。    </description>
    <dc:date>2008-10-24T15:05:14+09:00</dc:date>
  </item>
    <item rdf:about="http://www2.atwiki.jp/okumura/pages/115.html">
    <title>プログラミング/groovy/NetBeans Plugin</title>
    <link>http://www2.atwiki.jp/okumura/pages/115.html</link>
    <description>
      6.0に入ると噂の有ったGroovy/Grailsプラグインですが、先日リリースされた6.1にも含まれていませんでした。開発ビルドを入手する必要があります。

#contents(,option=word)

*開発ビルド
現在、[[最新ビルド&gt;http://deadlock.netbeans.org/hudson/job/trunk/lastSuccessfulBuild/artifact/nbbuild/dist/zip/]]のプラグインサイトには含まれているようで、最新ビルドを落として来てメニューのTools&gt;Pluginでgroovyを検索したところ、無事インストールできました。

**入手
ただ、落とすのには少し苦労しました。&amp;br()
「(全てのファイルをzipで)」のリンクや、各zipファイルのリンクをクリックしても、なぜか落とせません。&amp;br()
結局、各ファイルの右側にある「view」のリンク先がバイナリのようだったので、右クリックしてダウンロードし解凍したところ、ようやく目当てのビルドが取得できました。&amp;br()
落としたのは一番下の「netbeans-hudson-trunk-1932.zip」です。結構かなり遅いです。解凍もちょっと時間がかかりました。

**groovy and grailsプラグインの導入
+メニューの「Tools &gt; Plugins」から、Pluginsダイアログを開く
+「Search:」入力欄に「grails」と入力 
+検索された「Groovy and Grails」プラグインにチェックを入れ、[Install]ボタン押下
あとはライセンスに同意してインストールを開始させれば入ります。&amp;br()


**app化
binフォルダのnetbeansを実行すれば起動するのですが、コンソールが邪魔です。&amp;br()
解凍して出来るnetbeansフォルダは、実はNetBeans.appの中に丸ごと置かれているものなので、
+ リリース版の.appをコピーし、
+ コンテキストメニューの「パッケージの内容を表示」でappの中に入り、
+ Contents/Resources/以下にnetbeansフォルダを上書きすれば、
開発版を起動するNetBeans.appが出来ます。

*リリース版へのプラグイン導入
&amp;bgcolor(#ffff99){※注：以下の作業を行った後、NetBeansが起動しなくなりました。原因は突き止めていません。&amp;br()他にも色々やったのでgroovy and grailsプラグインの導入が原因とは限りませんが、注意してください。}

さて、このgroovy/grailsプラグインですが、Update CenterのURLさえあれば、[[正式版の6.1&gt;http://www.netbeans.org/community/releases/61/]]に入れる事も出来ました。&amp;br()
方法は、

+メニューの「Tools &gt; Plugins」から、Pluginsダイアログを開く
+一番右の「Settings」タブを選択
+右真ん中よりちょいしたの[Add]ボタンを押す
+「Update CenterCustomizer」ダイアログに以下のように入力して[OK]を押す
++「Name:」に適当な名前（私は「NetBeans Dev」としました。）を入れる
++「Check for updates automativally」のチェックボックスは入れたままにする
++「URL:」には、「http://deadlock.netbeans.org/hudson/job/javadoc-nbms/lastSuccessfulBuild/artifact/nbbuild/nbms/updates.xml.gz」と入力
+「Available Plugins」タブを選択

後は開発版の時のプラグインの同様です。&amp;br()
と、こんなところで、なんだか眠いし疲れてるので実際に動かしてみるのは明日にします。    </description>
    <dc:date>2008-05-16T02:30:51+09:00</dc:date>
  </item>
    <item rdf:about="http://www2.atwiki.jp/okumura/pages/66.html">
    <title>プログラミング/groovy</title>
    <link>http://www2.atwiki.jp/okumura/pages/66.html</link>
    <description>
      groovy, 良いです。便利。

groovy自体はかなり使ってます。
といってもちょっとしたツールを作るくらいで、たいてい100行未満なんですけど...
#ls3(プログラミング/groovy)    </description>
    <dc:date>2008-05-16T02:18:11+09:00</dc:date>
  </item>
    <item rdf:about="http://www2.atwiki.jp/okumura/pages/46.html">
    <title>groovyのソートはえらい</title>
    <link>http://www2.atwiki.jp/okumura/pages/46.html</link>
    <description>
      次のようなクラスが有るとして、
 class Song {
     public String name;
     public String artist;
     public String album;
     public int indexAtAlbum;
 }
因みに上記で定義されているのはフィールドではなくプロパティで、
こう書くとgroovyではprivateなフィールドとpublicなアクセサができるんですけど、

まあ、こいつのリストをアーティスト順、アルバム順、アルバム中の曲順にソートしたいとしましょう。
その場合、こう書きます。
 songs.sort{[it.artist, it.album, it.indexAtAlbum]};

sortメソッドに、1引数で配列を返すクロージャを渡すと、その配列の先頭から順に比較していく...
ということなんですけど、何よりなんて直感的なコードなんだろうと感動してしまいました。    </description>
    <dc:date>2008-05-16T02:15:04+09:00</dc:date>
  </item>
  </rdf:RDF>

