mintty用xoria256カラーテーマ
昨日のパステルカラーのやつはちょっと明る過ぎで、赤地に白みたいな表示をされると読めないぐらいきつかったので、背景色に使われてもそこそこ落ち着いて眺められそうなカラーを探した。
で、みつけたのがxoria256っていうvimのカラースキーム……をrxvt用に移植したやつで、基本色を守りつつも控えめな彩度でよさそうな感じだったのでmintty用に移植してみた。
例によって.minttyrc版とエスケープシーケンス版と作ってGistに置いときました。
mintty: A soft pastel color theme(xoria256) for mintty
https://gist.github.com/3422835
CUIプログラムってシンタックスカラーとは違って、赤なら赤ってのをそれとなく期待してるところ*1があると思ってるので、ぜんぜん違う色を割り当てちゃうのはなんとなく抵抗があるのよね。綺麗なんだけど。
*1:diffの追加と削除とか、レッドバー、グリーンバーとか
Cygwinのscreenでタイトルが化ける問題(未解決)
連日のCygwin上のscreenでウィンドウタイトルが文字化けする問題だけど、ちょっとだけわかったことがある。
xtermのドキュメントによると次のようなエスケープシーケンスでウィンドウタイトルが変更できるらしい。
ESC]0;stringBEL -- Set icon name and window title to string ESC]1;stringBEL -- Set icon name to string ESC]2;stringBEL -- Set window title to string
というわけで、試しにこんなのを実行してみると……
# (1) echo -en "\e]0;test\a" # (2) echo -en "\e]0;テスト\a"
上は正常に反映されるけど、下はなんとも言えない感じに文字化けして反映された。
そんで、screenのドキュメントを見てみるとこんなことが書いてある。
screen が認識する制御シーケンスの一覧を以下に示す。 "(V)" は VT100 固有の機能であることを示し、 "(A)" は ANSI または ISO 固有の機能であることを示す。 : ESC \ (A) 文字列の終端子 : ESC P (A) デバイス制御文字列。文字列を、解釈せず、直接ホストの端末に出力する。
なんかパススルーしてくれそうな感じ?
というわけで、早速こんな感じで試してみると……
# (3) echo -en "\eP\e]0;test\a\e\\" # (4) echo -en "\eP\e]0;テスト\a\e\\"
ダメだった\(^o^)/
terminal | (1) | (2) | (3) | (4) |
---|---|---|---|---|
mintty | 正常 | 正常 | 正常 | 正常 |
mintty+screen | 正常 | 文字化け | 正常 | 文字化け |
余談
余談だけど、vimはタイトルを変更するときに、そのタイトル文字列の前後にt_tsとt_fsをつけて出力するみたい。
で、これがこんな感じに設定されてるのでウィンドウのタイトルが変わるみたい。
t_ts=^[]2; t_fs=^G
Cygwinとminttyで行こう!
昨日頑張ってscreenを自前ビルドしてみたものの解決ならずがっくりしていたところ、「mintty使えよ」という各方面からの温かいお言葉により何気なく試してみたらなんと文字化けしないじゃありませんか!
なにこれ?やっぱりPuTTYの問題だったの?でもminttyってPuTTYベースなんだよね?なんかその辺の問題認識してて手を入れてあるのかな?
実はminttyはずっと前に試したことがあったんだけど、その当時はまだ設定とかもこなれてなかったし、これならCygTerm+PuTTYのほうがいいなと思ったのでした。
しかし、今使ってみるとこれで十分な気がする。PuTTYに比べると設定は少ないけどターミナルの設定とかは別にどうでもいいわけだし。
というわけで、minttyに乗り換えることにした!
カラー
色、大事だよね。
というわけで、Macで使ってたPastelにちょっとだけ手を加えたカラーテーマをminttyに移植した。
.minttyrc版とエスケープシーケンス版と作ってGistに置いときました。
あとエスケープシーケンスにするのがしんどかったので、.minttyrcの設定項目から色の部分だけ変換するスクリプト書きました。
A pastel color theme for mintty
https://gist.github.com/3412915
Convert .minttyrc color settings to escape sequences.
https://gist.github.com/3412590
Cygwinとscreenで行こう!
@ArcCosineさんがCygwin+screen+vimで文字崩れするーとかいってscreenを自前で入れていたので、自分も入れ直してみることにした。
確かにCygwin上のscreenでvimを使うと描画がおかしくなることがあって、自分も以前screenをビルドしなおしてみたりしたんだけど、結局解決できなかったので開き直ってWindowsネイティブ側のgvimを使っている。
Cygwinでvim使うと重いし、元々gvimのほうが好きだってのもあるけど。→Cygwin内から外のgvimを使う - ぱせらんメモ
screen開発版を入れる
@ArcCosineさんは4.0.3を入れたみたいだけど、真似してもつまんないので最新版を入れてみることにした。
自分の環境はビルドに必要なツールとかlibncurses-develとかすでに入ってたっぽくて何も引っかからなかったけど、エラーが出る人は色々入れてみて。
configureオプションも--enable-colors256以外はよくわからないけど、Cygwinで関係無さそうなPAM以外は全部入りにしてみた。--prefixはお好みで。
# リポジトリをcloneしてくる git clone git://git.savannah.gnu.org/screen.git # パーミッション絡みで動かなかったのでパッチ書いて当てた cd screen/src curl -k https://raw.github.com/gist/3401354 | patch # ビルド&インストール ./autogen.sh ./configure --prefix=/usr/local \ --enable-colors256 \ --enable-rxvt-osc \ --enable-use-locale \ --enable-telnet make make install
普通にビルドしてみたら起動時に"Directory '/tmp/uscreens' must have mode 777"とかいって起動できなかったので、Cygwin版のパッチを真似してそれっぽいところを無効化した。→それっぽいところを無効化するパッチ
自分はNTFS ACLを無効化(noacl)して使っているのでそれがいけないのかも。
screenのススメにあるパッチは取り込まれてるっぽい話だったので当てなかった。ざっとソース見た感じでは反映されてるっぽい。
とりあえずこれで無事に最新版が出来上がったわけだけど、実はウィンドウの終了時に"Utmp slot not found -> not removed"と出る問題が。
これもCygwin版のパッチを探ってみたんだけど、いかんせん全部入りでボリュームがでかすぎてどのへんを取り込めばいいのかわからない。
まぁCygwinだしutmpとか放っておいてもいいかなぁ……とか。だめ?
ちなみに、Cygwinパッチをそのまま取り込めないのはCygwin版が4.0.3だから。
git submoduleがなんかおかしいけど原因よくわからん
submodule入りのgitリポジトリをMac上でcloneして初期化してみたらなんかうまく行かなかった。
よくわかんないけど、とりあえず現象を記録しておく。
OS:Mac OS X 10.6.8 (Snow Leopard)
Git:1.7.11.1 (公式のMac版インストーラで入れたやつ)
リポジトリ:https://github.com/pasela/studying-cakephp2.git
このリポジトリはsubmoduleをひとつ含んでいて、そのsubmoduleがさらにひとつsubmoduleを含んでいるという入れ子状態なんだけど、その入れ子のやつでおかしくなる。
$ cd /var/www/app $ git clone https://github.com/pasela/studying-cakephp2.git Cloning into 'studying-cakephp2'... remote: Counting objects: 1291, done. remote: Compressing objects: 100% (691/691), done. remote: Total 1291 (delta 424), reused 1287 (delta 420) Receiving objects: 100% (1291/1291), 1.35 MiB | 605 KiB/s, done. Resolving deltas: 100% (424/424), done. $ cd studying-cakephp2 $ git submodule update --init --recursive Submodule 'app/Plugin/TwigView' (https://github.com/predominant/TwigView.git) registered for path 'app/Plugin/TwigView' Cloning into 'app/Plugin/TwigView'... remote: Counting objects: 333, done. remote: Compressing objects: 100% (139/139), done. remote: Total 333 (delta 159), reused 311 (delta 140) Receiving objects: 100% (333/333), 53.25 KiB, done. Resolving deltas: 100% (159/159), done. Submodule path 'app/Plugin/TwigView': checked out '865c8c2d08e436070892d519f5b8566b070c5ba3' Submodule 'Vendor/Twig' (git://github.com/fabpot/Twig.git) registered for path 'Vendor/Twig' Cloning into 'Vendor/Twig'... remote: Counting objects: 12116, done. remote: Compressing objects: 100% (3231/3231), done. remote: Total 12116 (delta 7862), reused 11672 (delta 7467) Receiving objects: 100% (12116/12116), 1.55 MiB | 138 KiB/s, done. Resolving deltas: 100% (7862/7862), done. fatal: Not a git repository: ../../../../../../../../../private/var/www/app/studying-cakephp2/.git/modules/app/Plugin/TwigView/modules/Vendor/Twig Failed to recurse into submodule path 'app/Plugin/TwigView'
なんかfatal: Not a git repositoryのところがすごいことになってる。
ちなみにこのパス自体はちゃんと存在してるし、いちおうgitリポジトリになってるっぽい。
この時のgitの情報はこんな感じになっている。
$ cat .gitmodules [submodule "app/Plugin/TwigView"] path = app/Plugin/TwigView url = https://github.com/predominant/TwigView.git $ cat app/Plugin/TwigView/.git gitdir: ../../../.git/modules/app/Plugin/TwigView $ cat app/Plugin/TwigView/.gitmodules [submodule "Vendor/Twig"] path = Vendor/Twig url = git://github.com/fabpot/Twig.git $ cat app/Plugin/TwigView/Vendor/Twig/.git gitdir: ../../../../../../../../../private/var/www/app/studying-cakephp2/.git/modules/app/Plugin/TwigView/modules/Vendor/Twig
/var -> /private/varなのが怪しい?
OS Xは/varが/private/varへのリンクになっているので、この辺が影響してるのかもしれない?
$ ls -l /var lrwxr-xr-x@ 1 root wheel 11B 5 1 2010 /var@ -> private/var
ちなみに、なんでこんなことになってるのかは知らない。
あと、/tmpも/private/tmpになってるので、もしや…と思ったらやっぱり同じエラーになった。
んで、とりあえず/private/varが怪しい感じなので試しに別のところでやってみると上手くいった……。
$ cd ~/tmp $ pwd /Users/pasela/tmp $ git clone https://github.com/pasela/studying-cakephp2.git Cloning into 'studying-cakephp2'... remote: Counting objects: 1291, done. remote: Compressing objects: 100% (691/691), done. remote: Total 1291 (delta 424), reused 1287 (delta 420) Receiving objects: 100% (1291/1291), 1.35 MiB | 591 KiB/s, done. Resolving deltas: 100% (424/424), done. $ cd studying-cakephp2 $ git submodule update --init --recursive Submodule 'app/Plugin/TwigView' (https://github.com/predominant/TwigView.git) registered for path 'app/Plugin/TwigView' Cloning into 'app/Plugin/TwigView'... remote: Counting objects: 333, done. remote: Compressing objects: 100% (139/139), done. remote: Total 333 (delta 159), reused 311 (delta 140) Receiving objects: 100% (333/333), 53.25 KiB, done. Resolving deltas: 100% (159/159), done. Submodule path 'app/Plugin/TwigView': checked out '865c8c2d08e436070892d519f5b8566b070c5ba3' Submodule 'Vendor/Twig' (git://github.com/fabpot/Twig.git) registered for path 'Vendor/Twig' Cloning into 'Vendor/Twig'... remote: Counting objects: 12116, done. remote: Compressing objects: 100% (3231/3231), done. remote: Total 12116 (delta 7862), reused 11672 (delta 7467) Receiving objects: 100% (12116/12116), 1.55 MiB | 327 KiB/s, done. Resolving deltas: 100% (7862/7862), done. Submodule path 'Vendor/Twig': checked out '6e3a1c401608146e5302f7124404b7a0895484e0'
この時のgitの情報はこんな感じになっている。
$ cat .gitmodules [submodule "app/Plugin/TwigView"] path = app/Plugin/TwigView url = https://github.com/predominant/TwigView.git $ cat app/Plugin/TwigView/.git gitdir: ../../../.git/modules/app/Plugin/TwigView $ cat app/Plugin/TwigView/.gitmodules [submodule "Vendor/Twig"] path = Vendor/Twig url = git://github.com/fabpot/Twig.git $ cat app/Plugin/TwigView/Vendor/Twig/.git gitdir: ../../../../../.git/modules/app/Plugin/TwigView/modules/Vendor/Twig
rootまで遡るような意味不明な状態にはなってない。
この辺にヒントがあるような気もする。
$ pwd /var/www/app/studying-cakephp2 $ pwd -P /private/var/www/app/studying-cakephp2
コマンドラインでランダムな文字列を生成する
FuelPHPとかSymfony2が触りたいのに何故かCakePHPをやってるぱせらです。
んで、こういうフレームワークはセキュリティ用のsaltとかが初期状態だと「ちゃんと設定してね」みたいなメッセージが出るようになってるので書き換えなきゃいけないんだけど、適当にキーボードがちゃがちゃやるのは問題外として、ハッシュ関数やBase64はなんとなくそれっぽく見えちゃうので、こんな感じで生成してみた。
# 英数40桁 cat /dev/urandom | tr -dc '[:alnum:]' | head -c 40 # 数字29桁 cat /dev/urandom | tr -dc '[:digit:]' | head -c 29
上の例はCakePHPのcore.phpに初期設定されてるやつに合わせてみた*1けど、文字種とか文字数とか自由に決められていい感じ。
あとこんな感じで一気に生成できたりするのも楽しい。
$ cat /dev/urandom | tr -dc '[:graph:]' | fold -w 8 | grep '[:punct:]' | head -n 5 #n;%[A@2 AttFfb7, i4/R>3pu JcfA}s#k $)E+:.VX $ cat /dev/urandom | tr -dc 'a-zA-Z0-9_!@#$%&+-' | fold -w 8 | grep -i '[_!@#$%&+-]' | head -n 5 dE_MGw63 soL2@DoG 04rlu4_S sL+lh&82 +QiG2Dxh
2012-07-22追記
OS Xとかで"tr: Illegal byte sequence"とか怒られちゃう場合は、trの前にLC_CTYPE=Cをつけてあげるといいかも。
$ cat /dev/urandom | tr -dc '[:alnum:]' | head -c 40 tr: Illegal byte sequence $ cat /dev/urandom | LC_CTYPE=C tr -dc '[:alnum:]' | head -c 40 zec3tqT24y9PxEetepzca82mSYAOEvVpbfFuHYuQ
参考
*1:Security.cipherSeedのほうは"digits only"って書かれてるので。
FuelPHP用のunite source、unite-fuelを作ってみた
GitHub - pasela/unite-fuel: A unite.vim plugin for FuelPHP
(unite-zf と unite-sf2 をパク参考にしました)
最近FuelPHPに興味を持ってちょこちょこいじってるんだけど、unite-zfやunite-sf2みたいに操作できたらいいなーと思って作ってみた。
作ってみたというかパクっ(ry
使い方はまぁ同じです。
coreとかvendorはいらんかなーとも思ったんだけど、ソース見たくなるかもしれないのでいちおう入れておいた感じ。
ほんとうはlangとかmodulesとかpackagesの下を自動展開するような仕組みも考えてみたんだけど、
define()のところが最初しか呼ばれないのでカレントディレクトリに応じて変えるにはどうしたらいいのかよくわからなくて断念した。
んで、よくよく考えたらそれってsourceとして提供する部分じゃなくて、sourceを表示した後の話だよなーと思ったのでやめた。