Shibuya.js Technical Talk #1

俺だけ存在がおかしいですが気にしないように努めます。わろすわろす。

人前で喋るのは中学の部活紹介以来かな。何喋ったかは覚えていないけれど、同級生の部員が俺含めて3人だったのはよく覚えている (内訳:やる気ない部員2, 幽霊部員1)

  1. トップ
  2. js
  3. Shibuya.js でライトニングトークするみたい

BASH Programming - Introduction HOW-TO: 参照テーブル, 11.2 文字列比較の実例

なんで if [ "$X" = "$Y" ] とか if [ x$X = x$Y ] にするのかわからなかったけど、変数がセットされていないときにエラーになるらしいからだった。へー

  1. トップ
  2. sh
  3. シェルスクリプト, test で変数をクオートする理由

emacs がなかなか使えなかった理由はタブインデントをデフォルトでちゃんとしてくれないからだった。今までは色の設定を変えるのが面倒臭いからだと思ってた。

class Foo
\tdef initialize(hoge, huga)
\t\tfoooooooooooooooooooo(aaaaaaaaaaaaaaa,
\t\t                      bbbbbbbbbbbbbbb)
\tend
end

本当は上記のようにインデント (環境が変わってタブ幅が変わっても問題が起きないタブインデント) をさせたいんだけど、さすがに無理っぽいので、タブの部分だけちゃんとできていればいいことにした。

人それぞれ読みやすいインデント幅は違うから、誰にでも読みやすいソースを書くならタブでインデントすべきだと思ってる。でも全部タブにすればいいってわけじゃなくて、文字幅が重要なところには、ちゃんとスペースを使いたい、みたいな。

そんなにこだわる必要はないんだけど、少なくともタブインデントじゃないとコードを書く気がしないことに気付いた。いやむしろ、タブインデントにすると書きたくなる (謎)

  1. トップ
  2. life
  3. 色じゃなかったんだ。タブだったんだ。
  1. トップ
  2. prog
  3. 色じゃなかったんだ。タブだったんだ。

要するに期限切れの日から 35 日たつと開放されるってことかな。30 日の RGP (取り戻し猶予期間) のあと、5 日間の削除保留期間がある。

レジストラのキャッシュ?とかがよくわからない。

  1. トップ
  2. net
  3. ドメインの削除プロセス

なんかうまくいかねーってごちゃごちゃやっていたけど、$stdout.flush しないとだめだった。

あーあーあー CLON - 2005/12/05 に書いてあった……全部読んどくべき!!

Ruby の場合 $| にあたるのは $stdout.sync かな?

  1. トップ
  2. screen
  3. screen backtick with Ruby

スクリーンのスクリーンショット

長い処理させてウィンドウ切り替えたとき、バックグラウンドのウィンドウの処理が終わっているんだかいないんだかが気になるので手を入れた。

何かいい方法があるのかもしれないけど、よくわからないのでごちゃる。

ari's diary - ステータスライン のスクリプトを使っている。

if [ "$TERM" = "screen" ]; then
chpwd () { echo -n "^[_`dirs`^[\\" }
preexec() {
# see [zsh-workers:13180]
# http://www.zsh.org/mla/workers/2000/msg03993.html
emulate -L zsh
local -a cmd; cmd=(${(z)2})
case $cmd[1] in
fg)
if (( $#cmd == 1 )); then
cmd=(builtin jobs -l %+)
else
cmd=(builtin jobs -l $cmd[2])
fi
;;
%*)
cmd=(builtin jobs -l $cmd[1])
;;
cd)
if (( $#cmd == 2)); then
cmd[1]=$cmd[2]
fi
;&
*)
echo -n "^[k$cmd[1]:t^[\\"
prev=$cmd[1]
return
;;
esac
local -A jt; jt=(${(kv)jobtexts})
$cmd >>(read num rest
cmd=(${(z)${(e):-\$jt$num}})
echo -n "^[k$cmd[1]:t^[\\") 2>/dev/null
prev=$cmd[1]
}
precmd() {
#local prev; prev=`history -1 | sed "s/^[ 0-9]*//" | sed "s/ .*$//"  `
echo -n "^[k$:$prev^[\\"
}
chpwd
fi

みたいにした。precmd を追加しただけ。

これで、実行が終わったら$:prevcmd みたいなウィンドウ名になるので一目でわかりやすい気分。

上のスクリーンショットだと、0 が入力待ち (前回のコマンドは sleep) 1 がアクティブで emacs, 2 が sleep 実行中

preexec の処理を利用するようにした。cd の場合にちゃんとディレクトリになるように。

  1. トップ
  2. zsh
  3. screen, zsh, 処理終わったか見たい
  1. トップ
  2. screen
  3. screen, zsh, 処理終わったか見たい