HHK が日本語キーボードあつかいになる
http://support.microsoft.com/kb/927824/ja (XP でもおなじ)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters LayerDriver JPN REG_SZ kbd101.dll OverrideKeyboardIdentifier REG_SZ PCAT_101KEY OverrideKeyboardSubtype DWORD 0 OverrideKeyboardType DWORD 7
gerry++
おれの腹もクラックされてた……
chokan を CodeRepos にうつした
http://coderepos.org/share/wiki/chokan
SafeEval は http://coderepos.org/share/browser/lang/ruby/safeeval に分離して gem に
まだリリースしてない。わすれてるテストがありそう
グラフの書きかたがわからない。
あのよくみる、うねうねしたやつ。一個要素ふえるとうにょーんって動いたりするじゃないですか。だめだもう。そういうのわかんない。ぜんぜん。あたまわるい
zsh のプロセス置換 =() と <() の違い
/dev/fd とかつかうのが < で、常に tmpfile つかうのが =、でいいのかな。一応 man よんだけど英語わかんね
これは例えば lv だと違いが顕著
$ lv <(date) FileStretch(): Illegal seek exit 255 $ ls -altr <(date) prw-rw---- 1 cho45 cho45 28 9 27 02:50 /dev/fd/12 # Mac OSX lr-x------ 1 cho45 cho45 64 2007-09-27 02:51 /proc/self/fd/11 -> pipe:[2297610] # ubuntu Linux $ lv =(date) # ちゃんとみれる $ ls -altr =(date) -rw------- 1 cho45 wheel 28 9 27 02:51 /tmp/zsh0WJFb7
あと非同期かどうかも関係あるっぽい
$ cat =(date) =(sleep 5) =(date) =(sleep 10) =(date) 木 9 27 03:59:16 JST 2007 木 9 27 03:59:21 JST 2007 木 9 27 03:59:31 JST 2007 $ cat <(date) <(sleep 5) <(date) <(sleep 10) <(date) 木 9 27 03:59:54 JST 2007 木 9 27 03:59:54 JST 2007 木 9 27 03:59:54 JST 2007
前者は 15 秒かかったあと全部一気にでてくる。
後者は随時出力されながら、総合で 10 秒かかる。(順番は守られる)
zsh のチートシート
http://d.hatena.ne.jp/rubikitch/20070925#zshcheatsheet これみて、おおなるほどと思ったのでやってみた。
bindkey で超絶悩んだ……けど結局悩み損だった(つかってない)
http://lab.lowreal.net/trac/changeset/887
cheat-sheet は直接バインドせず、C-[ : して execute: だしてから cheat-sheet 実行するようにしてみた。キーバインドするほどではない気がしたのと、vi っぽくコマンド実行するようなのがいいかなみたいな。いやそれなら help だろ、っていうか help! もやらないといけないけど help! は定義できなそうとか今書きながら考えてたけどやってみたらできた
help! () { zle -M "E478: Don't panic!" }
zle -N help!
zsh の = (which的な意味で)
$ ls =ls /bin/ls*
どうみても ls `which ls`より使いやすいです今まで本当にありがとうございました (which へのメッセージ的意味で)。
If a word begins with an unquoted `=' and the EQUALS option is set, the remainder of the word is taken as the name of a command. If a command exists by that name, the word is replaced by the full pathname of the command.
SC440 がきた
XP Pro をセットアップした。CD ドライブが家にあるのどれつないでも認識しなくてかなりこまった。なんか接触不良っぽいけどよくわからない。基盤側のコネクタを一回はずして押しこんだりしてやっと認識した。と、おもったら XP インストール中に 55% まできたところでまた認識しなくなって再インストール。なんなんだ。 (BIOS ですら認識してなかった)
起動してから付属CDからドライバインストール。なんかやっぱCDがうまく認識されない。まじこまる。なんどか射れたり抜いたりやってると認識したりする。よくわからない……スピンインすると割と安定する気がする。スピンアウトするとなかなか認識しない。これはドライブの問題っぽい?
前に使ってた HDD (250G) もうつしたけど、手元のケーブルだと SC440 の下の HDD ケースには入らないので、フロントにつっこんだ。ケーブルのとりまわしを変えるのが大変だった。(電源の変換ケーブルももってない)
- Chipset ドライバ
- reboot
- Nic ドライバ
- reboot
- オンボードグラフィックドライバ
- reboot
- Firefox
- PCIe x4 mod (はんだごて。端の1pinがうもれたけど GND なのでちょっと不安定になるだけと楽観視)
- 前つかってたうるさいグラボを装着 (GeForce 6200)
- nVidia のドライバインストール
- Parity Error でるので http://pc.usy.jp/wiki/index.php?PowerEdge%2FParity%20Error%B2%F2%BE%C3%CB%A1
- WPCRSET 自動起動
- IE7 Standalone
- synergy
- foobar2000
- Columns UI
- 保存してあった設定から復元
- Last.fm
- WAVIO SE-U55GX をつける (前のPCだとプチプチノイズはいって大変だったけど、今回はない)
- smb でマウント
- マイドキュメントをマウントしたドライブに設定
ぶっ壊れたPCのメモリが利用できないのがかなしいけど、圧倒的に静かになってよかった。余裕があったらメモリ増やしたい。512 でも使わないからそんなに困らないけど
環境に一切干渉できない eval
#!ruby -Ku
# クラス化して Module.new.instance_eval するようにしてみる。
# まだなんかあるかなぁ……
class SafeEval
def safe_eval(code, tm=1)
result = nil
tg = nil
th = Thread.start do
# スレッドグループを作り、
# 新たなスレッドはすべてこれに所属させる。
tg = ThreadGroup.new.add(Thread.current)
$SAFE = 4
result = Module.new.instance_eval(code)
end.join(tm)
# 生成されたスレッドをすべて削除
tg.list.each {|t| t.kill }
raise TimeoutError unless th # タイムアウトした場合 Thread は nil を返す
result
end
alias eval safe_eval
end
if $0 == __FILE__
require "test/unit"
class SafeEvalTest < Test::Unit::TestCase
def setup
@t = SafeEval.new.taint
end
def test_safe
assert_raise(SecurityError) do
@t.safe_eval("puts ''")
end
assert_raise(SecurityError) do
@t.safe_eval("$foo = :foo")
end
assert_nothing_raised(SecurityError) do
@t.safe_eval("def hoge; end")
end
@t.safe_eval <<-EOS
def safe_eval(code)
"Nice boat."
end
EOS
assert_not_equal("Nice boat", @t.safe_eval("nil"))
end
def test_safe_access
assert_raise(NoMethodError) do
@t.safe_eval("@foo << :bar")
end
assert_equal(nil, @t.instance_variable_get(:@foo))
assert_raise(NameError) do
@t.safe_eval("@@foo")
end
end
end
endまだなんかあるかなぁ……
SafeEval クラスは毎回つかいすてる。
インスタンス変数は無名 Module でさよならする。
クラス変数は SafeEval クラスが untaint である限りつくれない。