Mac Lionでrvm install はCC=/Developer-3.2.6/usr/bin/gcc-4.2 したら動いた

  1. Fluentを使いたい
  2. ruby1.9系を入れたい
  3. rvmいれるよ
  4. gccないって言われる…
  5. MacLion のやつは rvm install 1.9.2の前に export CC=gcc-4.2 にしとけ(http://blog.jeffdouglas.com/2011/08/01/ruby-1-9-2-install-errors-with-mac-os-x-lion-and-rvm/)

ってことみたいだけど、我がMacLeopardからLionにupgradeしたのでそれじゃ動かなくて、

$ export CC=/Developer-3.2.6/usr/bin/gcc-4.2

からの

$ rvm install 1.9.3

でようやく動いた。

propel-build-modelした時にコメントを出力してくれない

いつも開発はローカルで行って、共有サーバにコミットなりrsyncなりするんだけど、
設定を変えていないのにBaseモデル系にコメントが記述されない現象にハマって、
色々調べた結果治ったので、次からハマらないようにここに書き残す。

どうも下記の部分でコメントの有無を判定しているらしい。
addon/propel/builder/SfObjectBuilder.php

public function build()
{
  if (!DataModelBuilder::getBuildProperty('builderAddComments'))
  {
    return sfToolkit::stripComments(parent::build());
  }

  return parent::build();
}

で、このbuilderAddCommentsの部分は、[symfony_root]/config/propel.iniの

propel.builder.addComments = true

この部分を有効化すること。

rsyncでバックアップする際の超絶便利オプション

ウチの自宅サーバのHDDには

  • fedoraなどのOSのインストール用DVDのiso
  • ATOK(自分で買ったものです。念のため。)のISO
  • 昔撮影したビデオのDVDのavi

など、とにかく1ファイルあたり数GBになるaviファイルやisoファイルが結構あります。
これをbaculaでバックアップしようとすると、他のファイルがgzip圧縮設定になっているので、当然このファイルたちも圧縮をかけようとなさる。
FileSetで圧縮をExcludeすればいいかな?と思いながらも、restoreする際にいちいちボリュームから持ってくるのもなぁ…という思いが強くなり、結局このファイルたちだけはrsyncでバックアップすることにした。
ここで問題になったのは、全力でI/Oを使い切るものだから、やたらとLoadAverageがあがりなさる。当然I/Oが問題なのでniceも意味がない。
ウチの自宅サーバはルータも兼ねているので、ネットもぶちぶち切れたりするようになって、こらあアカンと。
なおかつ、がんばって転送したファイルのmd5sumを見てみると全然違ったりする。もうホント全然駄目。
結局rsyncしたあとにチェックサム計算するシェルスクリプト書かなきゃいけないのかなぁ。と思ったけど、何か方法ないかな?と思ってグーグル先生にお聞きしたところ、以下のオプションが。

-c, --checksum    skip based on checksum, not mod-time & size
--bwlimit=KBPS    limit I/O bandwidth; KBytes per second

超便利! -cオプションでチェックサムを計算しつつ、--bwlimitオプションで転送速度の上限を決めてI/Oを抑えることが出来た。

fedora10→11→12にupgradeしたメモ

完全なチラ裏ですが。
自宅で作ってるWEBサイトのために、何を思ったかQ4Mを使ってみたくなり(触ってみたかっただけともいう)、さらにはInnoDBプラグインも試してみたくなったのでMySQLを5.1にしてみた。
yumでupdateできなかったのでrpm入れたりしてたんだけど、先にmysql消したら依存関係の都合上postfixが一緒に消えちゃいまして。
postfixrpmとかで入らないかなーとも思ったんですが、この際どうせならってことで自宅のfedora10を一気に12までupgradeしちゃおうってのが発端です。

以下upgrade記録です。

fedora 10 → 11 へ upgade

fedora11からrpmlibが更新されたのでまずrpmを更新しておく

% sudo yum update rpm

キャッシュクリア

% sudo yum clean all

リリースパッケージを取得して更新

% mkdir -p var/pkgs/fedora/11
% cd var/pkgs/fedora/11
% wget "ftp://download.fedora.redhat.com/pub/fedora/linux/releases/11/Fedora/i386/os/Packages/fedora-release-*.noarch.rpm"
% ls
fedora-release-11-1.noarch.rpm  fedora-release-notes-11.0.0-2.fc11.noarch.rpm
% sudo rpm -Uvh fedora-release-*.noarch.rpm

リポジトリ更新

% sudo vim /etc/yum.repos.d/fedora.repo
% sudo vim /etc/yum.repos.d/fedora-updates.repo
mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch

rpmyumのみ先行UPDATE

% sudo yum update rpm\* yum\*
...
エラー: 依存性の欠落: python(abi) = 2.5 はパッケージ sos-1.8-18.fc10.noarch (installed) が必要としています
エラー: 依存性の欠落: libpython2.5.so.1.0 はパッケージ libxml2-python-2.7.6-1.fc10.i386 (installed) が必要としています
エラー: 依存性の欠落: libcrypto.so.7 はパッケージ ntp-4.2.4p7-1.fc10.i386 (installed) が必要としています
エラー: 依存性の欠落: python(abi) = 2.5 はパッケージ yum-3.2.24-2.fc10.noarch (installed) が必要としています
エラー: 依存性の欠落: libcrypto.so.7 はパッケージ 1:qt-4.5.3-9.fc10.i386 (installed) が必要としています
エラー: 依存性の欠落: python(abi) = 2.5 はパッケージ subversion-1.6.5-1.fc10.1.i386 (installed) が必要としています
エラー: 依存性の欠落: librpm-4.6.so はパッケージ systemtap-1.0-2.fc10.i386 (installed) が必要としています
エラー: 依存性の欠落: libcrypto.so.7 はパッケージ 1:qt-x11-4.5.3-9.fc10.i386 (installed) が必要としています
エラー: 依存性の欠落: libssl.so.7 はパッケージ 1:qt-x11-4.5.3-9.fc10.i386 (installed) が必要としています
エラー: 依存性の欠落: libssl.so.7 はパッケージ 1:qt-4.5.3-9.fc10.i386 (installed) が必要としています
エラー: 依存性の欠落: python(abi) = 2.5 はパッケージ audit-libs-python-1.7.13-1.fc10.i386 (installed) が必要としています
エラー: 依存性の欠落: python(abi) = 2.5 はパッケージ libxml2-python-2.7.6-1.fc10.i386 (installed) が必要としています
 問題を回避するために --skip-broken を用いることができません
 実行を試せません: package-cleanup --problems
                   package-cleanup --dupes
                   rpm -Va --nofiles --nodigest

エラーがいっぱいでたので、今は必要なさそうなパッケージを削除しちゃいます。必要になったときに後で入れ直せばよいかと。
ntpはhttp://fedoraproject.org/wiki/YumUpgradeFaqにあるように、Fedora11のパッケージより新しいことがあるようなので削除しておきます。

% sudo yum remove -y ntp

そのほかのパッケージを削除…しようとすると、依存性で大量に削除されそうになるので、大丈夫そうなパッケージだけ先に削除。

% sudo yum remove -y sos qt{,-x11} subversion systemtap libxml2-python

yumが依存性を持っているので、いったん削除する。(少し古くなる)

% sudo yum info yum
...
バージョン    : 3.2.24
リリース      : 2.fc10
...
% sudo yum remove -y yum
% mkdir yum
% cd yum
% wget "ftp://download.fedora.redhat.com/pub/fedora/linux/releases/10/Fedora/i386/os/Packages/yum*.rpm"
% ls
yum-3.2.20-3.fc10.noarch.rpm  yum-metadata-parser-1.1.2-10.fc10.i386.rpm  yum-utils-1.1.18-2.fc10.noarch.rpm
% sudo rpm -Uvh --force yum*.rpm
% sudo yum info yum
...
Available Packages
Name       : yum
Arch       : noarch
Version    : 3.2.22
Release    : 4.fc11
...

fedora10のそれよりも若干古いのね。

audit-libs-pythonの依存性があるので、古いもので置き換える

% sudo yum info audit-libs-python
Installed Packages
Name       : audit-libs-python
Arch       : i386
Version    : 1.7.13
Release    : 1.fc10
...
Available Packages
Name       : audit-libs-python
Arch       : i586
Version    : 1.7.12
Release    : 4.fc11

これも若干古いらしいのと、archが変更されていた。

% cd ..
% mkdir audit
% cd audit
% wget "ftp://download.fedora.redhat.com/pub/fedora/linux/releases/10/Fedora/i386/os/Packages/audit*.rpm"
% ls
audit-1.7.8-6.fc10.i386.rpm  audit-libs-1.7.8-6.fc10.i386.rpm  audit-libs-python-1.7.8-6.fc10.i386.rpm
% sudo rpm -Uvh --oldpackage audit*.rpm

改めて挑戦

% sudo yum update -y rpm\* yum\*

86パッケージが投入された。確認してみる。

% sudo yum info yum
Installed Packages
Name       : yum
Arch       : noarch
Version    : 3.2.22
Release    : 4.fc11
% sudo yum info audit-libs-python
Installed Packages
Name       : audit-libs-python
Arch       : i586
Version    : 1.7.12
Release    : 4.fc11

ちゃんと入っていますね。

やっとupgradeに挑戦

% sudo yum clean all
% sudo yum install -y yum-fastestmirror
% sudo yum -y upgrade

問題なく入ったのでrebootする。

% sudo reboot

とりあえずここまででfedora11になりました。
消してしまったパッケージを再度インストール。

% sudo yum install libxml2 libxml2-{devel,python} foomatic

fedora 11 → 12 へ upgade

ここからfedora12へupgradeする。
fedora11からrpmlibが更新されたのでまずrpmを更新しておく

% sudo yum update rpm

キャッシュクリア

% sudo yum clean all

リリースパッケージを取得して更新

% mkdir -p var/pkgs/fedora/12
% cd var/pkgs/fedora/12
% wget "ftp://download.fedora.redhat.com/pub/fedora/linux/releases/12/Fedora/i386/os/Packages/fedora-release-*.noarch.rpm"
% ls
fedora-release-12-1.noarch.rpm  fedora-release-notes-12.0.0-4.fc12.noarch.rpm
% sudo rpm -Uvh fedora-release-*.noarch.rpm
エラー: 依存性の欠如:
        rpmlib(PayloadIsXz) <= 5.2-1 は fedora-release-12-1.noarch に必要とされています
        rpmlib(PayloadIsXz) <= 5.2-1 は fedora-release-notes-12.0.0-4.fc12.noarch に必要とされています

rpmlibでエラーが出ます。

% sudo yum info rpm
...
Installed Packages
Name       : rpm
Arch       : i586
Version    : 4.7.0
Release    : 1.fc11
...

http://fedoraproject.org/wiki/YumUpgradeFaq

All Fedora 12 RPM packages use XZ/LZMA compression, which is only supported by the rpm-4.7.1-1 update (or later) for Fedora 11. Before upgrading from Fedora 11, run yum update rpm.

とあるのでrpmをupdateする。

% sudo yum update rpm-4.7.1-1

駄目だった。入ってないのね。
http://d.hatena.ne.jp/karronoli/20091125#1259163176
http://koji.fedoraproject.org/koji/buildinfo?buildID=115602

というわけでrpmrpmを持ってくる。

% cd ~/var/pkgs/fedora/12
% mkdir rpm
% cd rpm
% wget http://kojipkgs.fedoraproject.org/packages/rpm/4.7.1/1.fc11/i586/rpm-4.7.1-1.fc11.i586.rpm
% wget http://kojipkgs.fedoraproject.org/packages/rpm/4.7.1/1.fc11/i586/rpm-build-4.7.1-1.fc11.i586.rpm
% wget http://kojipkgs.fedoraproject.org/packages/rpm/4.7.1/1.fc11/i586/rpm-devel-4.7.1-1.fc11.i586.rpm
% wget http://kojipkgs.fedoraproject.org/packages/rpm/4.7.1/1.fc11/i586/rpm-libs-4.7.1-1.fc11.i586.rpm
% wget http://kojipkgs.fedoraproject.org/packages/rpm/4.7.1/1.fc11/i586/rpm-python-4.7.1-1.fc11.i586.rpm
% ls
rpm-4.7.1-1.fc11.i586.rpm
rpm-build-4.7.1-1.fc11.i586.rpm
rpm-devel-4.7.1-1.fc11.i586.rpm
rpm-libs-4.7.1-1.fc11.i586.rpm
rpm-python-4.7.1-1.fc11.i586.rpm
% sudo rpm -Uvh rpm-*.rpm
% sudo yum info rpm
...
Installed Packages
Name       : rpm
Arch       : i586
Version    : 4.7.1
Release    : 1.fc11

再挑戦

% cd ~/var/pkgs/fedora/12
% sudo rpm -Uvh fedora-release-*.noarch.rpm

無事に更新。

rpmyumのみ先行UPDATE

% sudo yum update rpm\* yum\*

特に何もなし。

upgradeに挑戦

% sudo yum clean all
% sudo yum install -y yum-fastestmirror
% sudo yum -y upgrade

問題なく入ったのでrebootする。

% sudo reboot

fedora11にくらべてfedora12へのupgradeはあっけないほどすんなり入った。(rpmだけ入れたけども)何がまずかったって、yumの自動更新が走っていて上のバージョンよりも新しいバージョンが入っちゃってると非常に面倒だってことがわかったので、自動更新はOFFにしなきゃなと強く思った。
自宅サーバーだからと思って面倒臭がったらだめなのね…
ちなみに上記はVMwareで試してみた結果なのでまだ自宅サーバには試していない。

参考:
http://fedoraproject.org/wiki/YumUpgradeFaq
http://blog.77jp.net/%E3%81%9D%E3%81%AE%E4%BB%96%E3%80%80linux/fedora-8-%E2%86%92-fedora-9%E3%80%80%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89.html
http://www.multiburst.net/ElectricBrain/2007/10/yumfc6fc7

教訓

自動更新はやめましょう。

Openなんちゃら

ずっと前から思ってたことを大きな釣り針にしてみる。

OpenIDやOAuthなんかは、「普通の」ユーザーには意味不明でしかないし、意味を理解するまでの習得コストが高すぎる。IDとパスワードというシンプルな仕組み以上のことを、覚えたくもないだろうと思う。
コンシューマサイトのメリットであるセキュリティリスクや管理コストの軽減なんかは、ユーザーにとって「そんなんはそっちでちゃんとやっといてよ」でしかないと思う。協力する義理がない。自分のパスワードだけ守られてればそれでいいし、信用出来ると思えば他サイトのパスワード預けるし。そもそも「預ける」感覚がないと思う。ただ入力しただけ。悪用されるなんて思ってない。フィッシングサイトとか思ってれば別だろうけど。「大手サイトのユーザーが来てくれやすくなるかも」ってのは単なる下心だよね。来るとこには来るし、来ないとこには来ないでしょ。プロバイダ側は開発の手間を負いたくないというだけだろうし。

普通に考えたらね、ユーザーがコンシューマサイト来たとするでしょ。プロバイダサイトの「認証情報」つかってログインできるよ、といわれても意味が分からないし、なんでここでプロバイダサイトが出てくるのか意味不明でしょ。最悪の場合「プロバイダサイトに登録してなきゃこのコンシューマサイト使えないのかな。何か面倒。じゃいいや」とか思われる可能性大でしょ。きちんと理解しようなんて滅多に思わないよねえ。

1度(アーリーアダプタとかじゃなく)ごく普通の主婦とか、そういうユーザーに聞いてみたい。この仕組み知ってるかと。使っているのかと。
どうせあれでしょ?通常のパスワードの認証機構も用意するんでしょ?どこのコンシューマサイトも。それでアレでしょ、OpenIDとか使って開発するんでしょ。併用した時どうなるかとか、単一の機構の時だけなら起きなかった事にいろいろ頭を悩ませるわけでしょ。時間もかかるわけでしょ。そういうコストに見合うほどのパフォーマンスあるの?見合うだけの理解してくれるユーザー数いるの?ホントに?

やるならもっともっと普及してからじゃないと割に合わない気がするんだよ。
技術的にはおもしろそうだしやってみたいけどさ。今やるべきものなのかなーってすごく思うのです。

追記

だいぶ勢いで書いたので、誤解の無いよう追記。
上にもあるように、技術者的にはいじくり倒してみたい。ただ、まだまだ本採用するにはタイミングが早すぎる感があるだけ。ユーザーにとって「理解する手間」とか「誤解しないだけのリテラシ」を要求されるデメリットや、運用コストがかかるデメリットを大きく超えるメリットが見つかるまでは、本採用するべきできでないかなぁと思うのです。もしくは、デメリットがデメリットで無くなるような画期的なアイデアとかね。逆に言えば、それがあれば良いことずくめな気がするんだけども。それを見つける「楽しみ」というのはありますけどね。エンジニア的に。技術自体を検討したり中身を調べたり、習得したりはやるべきと思うけど、そういう意味で個人的にはまだまだ「静観」せざるを得ないかなぁとも思う。

そういった最先端を追求することを掲げ、コスト増大を許容し(またはむしろコストが下がるなら)、ユーザー的にも"手間がかからずに"プラスになるならば、どんどんやるといいと思う。

.screenrcも晒してみる

今度は.screenrcも晒してみる。

#################################################
# オプション
#################################################
# 現在のウィンドウに対して可視ベルの設定します。
vbell off
# ハングアップしたときにscreenは自動的にデタッチ
autodetach on
# 起動時に著作権表示
startup_message off
# スクロールバックバッファの大きさ
defscrollback 1000
# 画面の一番下の行を反転させてハードステータス表示
hardstatus alwayslastline "%{= gk}[%m/%d %02c:%s] %{gW} %-w%{= wk}%n %t%{-}%+w %=%{gk}$USER@$HOSTNAME[$LANG] (%l) "
# エスケープは<C-z>
escape ^z^z
# 背景色消去
defbce "on"
# シェルタイトル
shelltitle '% |zsh'
# ターミナル
term xterm-256color

#################################################
# キーバインド
#################################################
# <C-s> 新規ウィンドウでssh開始
bind s colon 'screen ssh '
# <C-k> kill 現在のウィンドウ破棄
bind k
bind ^k
# <C-.> dumptermcap抑制
bind .
# <C-\> 全ウィンドウ破棄
bind ^\
bind \\
# <C-h> ハードコピー書込み
bind ^h
bind h

こんな感じ。

hardstatusについて少しだけ。
この設定が結構面倒だったけど、やっと納得できる感じになりました。

hardstatus alwayslastline "%{= gk}[%m/%d %02c:%s] %{gW} %-w%{= wk}%n %t%{-}%+w %=%{gk}$USER@$HOSTNAME[$LANG] (%l) "
% man screen

して文字エスケープの項を見てもらえればわかると思いますが、
ポイントは

したところ。
あとは色合いですね。ベース緑が好きなので。

.zshrc をいじりだす

ウノウに入社してからずーーーっとbtoさんとn0tsさんの.zshrcと.screenrcをコピペして改変して放置していたので、
さすがにもうそれはイカンだろうと。仮にもエンジニアとしてコピペで意味もわからず使うのはどうなのよと。
てなわけで見直してみました。vim使いなのでそのうち.vimrcも修正したい。
というわけで色々修正を施した上でオプションを調べ直し、スクラッチで書き直してみたので晒すことにします。
フィードバックに超期待!

#!/bin/zsh

export EDITOR=vim
export SVN_EDITOR=vim
export LANG=ja_JP.UTF-8

# 単語として認識したい文字
export WORDCHARS='*?-[]~\!#%^(){}<>|`@#%^*()+:?'

# default mask
umask 002

# vi key bind
bindkey -v

# !! IOMPORTANT !!
autoload -U compinit
compinit -u

# history
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=$HOME/.zhistory

#################################################
# オプション設定
# わからないときは man zshoptions
# http://www.ayu.ics.keio.ac.jp/~mukai/translate/zshoptions.html
#################################################
# 補完時に文字列末尾へカーソル移動
setopt ALWAYS_TO_END
# コマンド名がディレクトリ時にcdする
setopt AUTO_CD
# あいまい補完時に候補表示
setopt AUTO_LIST
# cd時に自動的にpushdする
setopt AUTO_PUSHD
# サスペンド中のプロセスと同じコマンド名を実行した場合はリジューム
setopt AUTO_RESUME
# BEEPを使わない
setopt NO_BEEP
# cshスタイルのヒストリ拡張を使う
setopt BANG_HIST
# リダイレクション時の自動削除/生成を抑制。
# 削除時は `>!'  または `>|'
# 作成時は `>>!' または `>>|'
setopt NO_CLOBBER
# カーソルの位置に補なうことで単語を完成させようとする。
setopt COMPLETE_IN_WORD
# 自動修正機能(候補を表示)
setopt CORRECT
# 全引数にスペルミス訂正を試みる
setopt CORRECT_ALL
# = のファイル名生成が利用される(`Filename Expansion' を参照のこと)。
setopt EQUALS
# `#' `~' `^' といった文字をファイル名生成のパターンの一部として扱う。
setopt EXTENDED_GLOB
# コマンドの開始時のタイムスタンプ(エポックからの秒数)と実行時間(秒単位)をヒストリに含める。
setopt EXTENDED_HISTORY
# Ctrl+S/Ctrl+Q によるフロー制御を使わないようにする
setopt NO_FLOW_CONTROL
# シェル関数やスクリプトの source 実行時に、 $0 を一時的にその関数/スクリプト名にセットする。
setopt FUNCTION_ARGZERO
# `.' で開始するファイル名にマッチさせるとき、先頭に明示的に `.' を指定する必要がなくなる
setopt GLOB_DOTS
# 同一コマンドヒストリの場合に、古いものを削除
setopt HIST_IGNORE_ALL_DUPS
# ヒストリ追加時に先頭余白削除
setopt HIST_IGNORE_SPACE
# ヒストリ追加時に余白削除
setopt HIST_REDUCE_BLANKS
# シェル終了時に起動中ジョブにHUPシグナルを送らない
setopt NO_HUP
# <C-d>でログアウトしない
setopt IGNORE_EOF
# 対話的なシェルでもコメントを有効にする
setopt INTERACTIVE_COMMENTS
# 曖昧な補完の時にビープ音を発しない
setopt NO_LIST_BEEP
# 補完リストなるべく少ない行数に
setopt LIST_PACKED
# 補完候補を種別表示(ls -F)
setopt LIST_TYPES
# ジョブリストがデフォルトでロングフォーマット
setopt LONG_LIST_JOBS
# = 以降も補完 (--prefix=/usr等)
setopt MAGIC_EQUAL_SUBST
# バックグラウンドジョブ状態の即時報告
setopt NOTIFY
# 数値ファイル名マッチ時は数値順にソート
setopt NUMERIC_GLOB_SORT
# 補完リストその他でもASCII(7ビット)以上の文字(8ビット)文字を表示 
# (マルチバイト文字補完)
setopt PRINT_EIGHT_BIT
# プロンプトで変数拡張、コマンド置換、計算拡張が実行
setopt PROMPT_SUBST
# 同ディレクトリの複数のコピーをpushしない。
setopt PUSHD_IGNORE_DUPS
# コマンド履歴ファイルを共有する
setopt SHARE_HISTORY
# zsh line editor を利用
setopt ZLE
##################################################
# オプション設定解除
##################################################
# 全てのバックグラウンドジョブを低優先度で実行
unsetopt BG_NICE

# completion color
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}

# PROMPT
#################################################
# 色一覧
#################################################
# 00: なにもしない
# 01: 太字化
# 04: 下線
# 05: 点滅
# 07: 前背色反転
# 08: 表示しない
# 22: ノーマル化
# 24: 下線なし
# 25: 点滅なし
# 27: 前背色反転なし
# 30: 黒(前景色)
# 31: 赤(前景色)
# 32: 緑(前景色)
# 33: 茶(前景色)
# 34: 青(前景色)
# 35: マゼンタ(前景色)
# 36: シアン(前景色)
# 37: 白(前景色)
# 39: デフォルト(前景色)
# 40: 黒(背景色)
# 41: 赤(背景色)
# 42: 緑(背景色)
# 43: 茶(背景色)
# 44: 青(背景色)
# 45: マゼンタ(背景色)
# 46: シアン(背景色)
# 47: 白(背景色)
# 49: デフォルト(背景色)

#################################################
# プロンプト表示フォーマット
# http://zsh.sourceforge.net/Doc/Release/zsh_12.html#SEC40
#################################################
# %% %を表示
# %) )を表示
# %l 端末名省略形
# %M ホスト名(FQDN)
# %m ホスト名(サブドメイン)
# %n ユーザー名
# %y 端末名
# %# rootなら#、他は%を表示
# %? 直前に実行したコマンドの結果コード
# %d ワーキングディレクトリ %/ でも可
# %~ ホームディレクトリからのパス
# %h ヒストリ番号 %! でも可
# %a The observed action, i.e. "logged on" or "logged off".
# %S (%s) 反転モードの開始/終了 %S abc %s とするとabcが反転
# %U (%u) 下線モードの開始/終了 %U abc %u とするとabcに下線
# %B (%b) 強調モードの開始/終了 %B abc %b とするとabcを強調
# %t 時刻表示(12時間単位、午前/午後つき) %@ でも可
# %T 時刻表示(24時間表示)
# %* 時刻表示(24時間表示秒付き)
# %w 日表示(dd) 日本語だと 曜日 日
# %W 年月日表示(mm/dd/yy)
# %D 年月日表示(yy-mm-dd)
PROMPT='%{^[[32m%}%B%U%n@%m%#%{^[[m%}%u%b '
RPROMPT='%{^[[32m%}%B[%d]%{^[[m%}%b'
SPROMPT='%{^[[33m%} %BCurrenct> '\''%r'\'' [Yes, No, Abort, Edit]%{^[[m%}%b '

# aliases
if ls --color --color > /dev/null 2>&1; then
  alias ls='ls --color=auto -F'
elif ls -G -G > /dev/null 2>&1; then
  alias ls='ls -G'
else
  alias ls='ls -F'
fi
alias la='ls -AFlh'
alias ll='ls -Flh'
alias l=ls
alias v=vim
alias f=finger
alias p=pushd pp=popd
alias j=jobs
alias h=history
alias st=startx
alias scr='screen -U'
alias sx='screen -x'
alias sd="sudo -H -s"
alias x=exit
alias df='df -h'
alias du='du -h'
alias sudu='sudo'
alias bim='vim'

# grep
function gr () {
    grep -nri $1 $2/* | grep -v '.svn'
}

# autoload
bindkey '^R' history-incremental-search-backward

fpath=(${ZDOTDIR}/function $HOME/.dotfiles/zsh/functions $fpath)
autoload preexec

source $HOME/.dotfiles/zsh/AA_functions.sh
source $HOME/.dotfiles/zsh/ENV.sh

export PATH=$PATH:$HOME/code

PROMPTの設定の箇所にエスケープコードが入っていたので
はてダで文字化けしまくってプチハマり。そりゃそうか…

上記の結果、プロンプトはこんな感じに。

SPROMPTも良い感じ。