2009年 12月 08日

任意のコマンドをワーカー (ジョブキューを処理するプロセス) みたいにする簡単なラッパ

を書いてみた

http://github.com/cho45/dotfiles/blob/master/bin/worker.rb

例えば、URL を引数にとってダウンロードするコマンド fetch-video.pl があるとして

worker.rb =fetch-video.pl /tmp/video

で /tmp/video をキューに fetch-video.pl を実行するワーカーをつくる (= がついてるのは zsh で補完するためなので別に必要ではない)

あとは

echo http://www.nicovideo.jp/watch/nm5253338 >> /tmp/video
echo http://www.nicovideo.jp/watch/sm8990785 >> /tmp/video
echo http://www.nicovideo.jp/watch/sm8722527 >> /tmp/video

みたいに適当に echo していけばジョブが順に走る。

zsh の機能であったりしそうだけど、わからなかった。なんかもっといい方法はあるかな。

2009年 12月 05日

fuzzyfinder.vim -> fuf.vim

http://www.vim.org/scripts/script.php?script_id=1984

早いとの話だったので乗り換えたらホントに爆速でした。開発効率が1.5倍ぐらいになりそうです!!1 fuzzyfinder 自体 life changing なのにさらに……

設定をメモ

let g:fuf_modesDisable = ['mrucmd']
let g:fuf_file_exclude = '\v\~$|\.(o|exe|bak|swp|gif|jpg|png)$|(^|[/\\])\.(hg|git|bzr)($|[/\\])'
let g:fuf_mrufile_exclude = '\v\~$|\.bak$|\.swp|\.howm$|\.(gif|jpg|png)$'
let g:fuf_mrufile_maxItem = 10000
let g:fuf_enumeratingLimit = 20
let g:fuf_keyPreview = '<C-]>'
let g:fuf_previewHeight = 0

nmap bg :FufBuffer<CR>
nmap bG :FufFile <C-r>=expand('%:~:.')[:-1-len(expand('%:~:.:t'))]<CR><CR>
nmap gb :FufFile **/<CR>
nmap br :FufMruFile<CR>
nmap bq :FufQuickfix<CR>
nmap bl :FufLine<CR>
nnoremap <silent> <C-]> :FufTag! <C-r>=expand('<cword>')<CR><CR> 

適当にセコンさんのをパクった。ちなみに僕は FufFile **/ を最もよく使う…… (MRU は候補に必要なファイルが確実にでてくるときしか安心できないのでなかなか使う機会がない)

FufLine が便利そうなので使ってみることに (覚えやすいように bl にマップ)

あと候補が下に出てほしいので preview をオフにして以下のパッチをあてた。

diff --git a/.vim/autoload/fuf.vim b/.vim/autoload/fuf.vim
index 0a91d3a..9d25e88 100644
--- a/.vim/autoload/fuf.vim
+++ b/.vim/autoload/fuf.vim
@@ -766,11 +766,11 @@ let s:bufNrFuf = -1
 "
 function s:openFufBuffer()
   if !bufexists(s:bufNrFuf)
-    topleft 1new
+    botright 1new
     silent file `='[fuf]'`
     let s:bufNrFuf = bufnr('%')
   elseif bufwinnr(s:bufNrFuf) == -1
-    topleft 1split
+    botright 1split
     execute 'silent ' . s:bufNrFuf . 'buffer'
     delete _
   elseif bufwinnr(s:bufNrFuf) != bufwinnr('%')
2009年 12月 01日

gerry++

寝てたら腹痛で叩きおこされて、よれよれになるぐらいの下痢をした

2009年 11月 29日

gerry++

2009年 11月 24日

gerry++

たべすぎた

2009年 11月 18日

起動済みバックグランドプロセスの標準出力を見るワンライナー

Linux

gdb -p 32514 -batch -n -x =( echo -e "p (int)dup2((int)open(\"/proc/$$/fd/1\", 1), 1)" )

.zshrc にこんなん書いといた (stdout, stderr をどちらも現在見てるシェルでみえるようにする)

function snatch () {
    gdb -p $1 -batch -n -x =( echo -e "p (int)open(\"/proc/$$/fd/1\", 1)\np (int)dup2(\$1, 1)\np (int)dup2(\$1, 2)" )
}

うまくいかない場合がある。なんでだろう……

うまくいかないときはとりえあえず strace -p pid -ewrite

2009年 11月 14日

git branch-recent

http://github.com/cho45/dotfiles/blob/master/bin/git-branch-recent

ブランチをたくさんつくるプロジェクトでは、使われなくなったブランチも、しばらく放置されることがしばしばあります (結果的に残念ながら master に merge されなかったブランチとか)。が、実際問題邪魔なので最近更新されたブランチ10個だけをソートして表示するのを書いてみました。

origin/master がハイライトされるので、もし origin/master よりも新しいブランチ (新機能とか) があるなら、それもわかりやすいです

大変遅かったのを高速化。git show に複数コミットわたすことで git を起動する回数を2回までに減らした

2009年 11月 13日

JavaScript 体感速度を上げるいくつかの手のメモ

  • DOMContentLoaded ですら遅いので、HTML 生成時に script 要素を各所に埋めこんで処理を先走りさせる
    • DCL 前に通信を開始できるなら意味があるかもしれない
    • document.write する script (広告とか) があると DCL が遅延するので価値があがる
  • 初期表示に必ず XHR による通信が必要なコンテンツを localStorage にキャッシュして次回はとりあえずそれを表示させてから通信を走らせる
    • ユーザを一瞬騙すけど気持ちはよくなる
  • JSONP を Cross Origin XHR に置きかえる
    • ステータスバーに余計な表示がでない分気持ちよくなる
    • URL が長くなりすぎる場合、POST でリクエスト数を減らせることがある
  • エフェクトの実行時間自体を半分にする、あるいはなくす
    • というかエフェクトは基本的に通信が同時に走るとき以外はしない、というルールにしたほうがよい
      • 通信が入る場合はエフェクトが入ったほうが待っている時間が短かく感じる
  • とりあえずでもいいのでユーザのアクジョンの結果は先にだす
    • アクション → 未確定 → 確定とちゃんと見た目が遷移するように

[続きを書く]

2009年 10月 29日

gerry++

今週はちょうしわるい……

2009年 10月 27日

gerry++