やっぱり面倒だ。 こないだ日記に書いた cvs/svn/svk 自動切り替えコマンドを書いてみた。 cvsc とか cvsdiffl みたいな独自コマンドも呼べることと、 svk ワーキングコピーの検出に適当感が蔓延しているのが特徴。
#!/bin/sh # $Id: vs.sh,v 1.3 2006/01/01 17:52:06 aamine Exp $ guess_vs() { if [ -d CVS ] then echo "cvs" elif [ -d .svn ] then echo "svn" elif grep -q "`pwd`:" $HOME/.svk/config then echo "svk" else echo "not under control of CVS/SVN/SVK" 1>&2 exit 1 fi } cmd_suffix() { basename $1 | sed 's/^vs//' } `guess_vs``cmd_suffix $0` ${@+"$@"}
なんとなく不安ではあるが、いちおう使ってみよう。
……うーん、どうしても cvs と打ってしまうな。
(03:00)
ネットワークを切断してブラウザもメーラも IRC も落とした、 ゆぞさん言うところの「殺伐とした環境」だと作業効率がとてもいいことがわかった。 インターネットに発する煩悩の数は 108 どころではないのだ。
さ、もう一回ネットワーク切ろっと。
(09:51)
where を使えば部分適用なしでも fgrep が書けることに気付いたんだけど、 where で変数共有するのと部分適用じゃ どちらが理解しにくいかは微妙なところですな。 なんとなく、Java な人なら where のが簡単そうな気がするんだけど。
-- where を使う import System import List main = do args <- getArgs cs <- getContents putStr $ fgrep (head args) cs fgrep pattern cs = unlines $ filter match $ lines cs where match line = any prefixp $ tails line prefixp str = pattern `isPrefixOf` str -- 部分適用を使う import System import List main = do args <- getArgs cs <- getContents putStr $ fgrep (head args) cs fgrep pattern cs = unlines $ filter (match pattern) $ lines cs match pattern line = any (pattern `isPrefixOf`) $ tails line
うーん、部分適用があると関数合成も使いたくなってしまうな……。
ちなみに最終的にはこうなる。
-- 最終版 import System import List main :: IO () main = do args <- getArgs case args of [pattern] -> putStr . fgrep pattern =<< getContents _ -> error "wrong argument" fgrep :: String -> String -> String fgrep pattern = unlines . filter (match pattern) . lines match :: String -> String -> Bool match pattern = any (pattern `isPrefixOf`) . tails
(10:21)
http://www.vector.co.jp/magazine/softnews/060107/n0601076.html
プログラム名がナイスすぎる。
(13:36)
37 度後半まで下がり、歩けるようになったので復活してみる。 まさか 40 度スレスレが三日続くとは思わなかった。 あああ、週末がつぶれたおかげでスケジュールがさらにシビアに……
(11:22)
JARP より http://www.in-ulm.de/~mascheck/various/shebang/
「#!」とパスの間の空白は実は必要ではなかったらしい。 なんかあれ好きじゃなかったし、setup.rb でも空白を入れないようにするか。
(18:59)
http://www-ise2.ise.eng.osaka-u.ac.jp/~iwanaga/study/csharp/ap_ver3.html
モブデータが絶望先生かよ!
(21:18)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
■ KM [つ http://jp.rubyist.net/?Logotype]