2004-09-28 (Tue)
_ mod_securityでreferer spamよけ(2)
ホスト名が30文字以上なやつは蹴ることに。
SecFilterSelective HTTP_REFERER "http:/[a-zA-Z_-]{30}" "deny,nolog,status:403"
パス部の//が/に正規化されるのは知ってたけど、http://もhttp:/に なっちゃうのは知らなくて、はまった。
2005-09-28 (Wed)
_ CryptSignHash/CryptVerifySignatureとバイトオーダ
PVKの件が片付いたと思ったら、rubyでsignしたデータのverifyがどうしてもうまくいかない。 CryptVerifySignatureを呼ぶと、記憶領域が不足しているという旨のエラーが。
ゆうぞうさんに泣きついたら、署名データのバイトオーダが逆になっていることが発覚 (実は家に帰ってからもしやと思って調べてみたのだが、IRCのログを見たら ゆうぞうさんがとっくに調べていたorz...)。 それで記憶領域の不足なのね。 ところどころにこういう罠があるからWindowsは嫌だよなあ(実はそれまでもPRIVATEKEYBLOBをテキストモードで書き出していて、随分長い間はまっていたのは内緒だ)。
key = OpenSSL::PKey::RSA.new(key_data) sign = key.sign(OpenSSL::Digest::SHA1.new, message).reverse
のようにreverseしてやったらCryptVerifySignatureで作成される署名と同じものを 作ることができた。 PKCS #1のバージョンの違いかなとか色々調べてたのがアホみたいだ。
pkcs1.rbを使おうと思ったけど、version 1.5ならOpenSSL::PKey::RSA#signでいいという ことがわかったのも収穫であった。 やっぱり、このへんのことはわからないことがあったらゆうぞうさんに聞くのが早いな。
2019-09-28 (Sat)
_ iTerm2でCommandをメタキーとして使う
諸事情で最近中古のMacBook Proを入手したが、ターミナルのメタキーがOptionキーになっていて、TextbrinerなどでEmacsキーバインドが使いづらいのでiTerm2とKarabiner-Elementsの設定をした。
iTerm2の設定
- [Preferneces]->[Profiles]->[Keys]でLeft OptionをEsc+にする。
- [Preferences]->[Keys]->[Remap Modifiers]でLeft OptionをLeft Commandに、Left CommandをLeft Optionに変更する。
これでCommandをメタキーとして使えるが、このままだとiTerm2の時だけOption-TABで切り替えしないといけなくてつらい。
Karabiner-Elements2の設定
- 以下のファイルを~/.config/karabiner/assets/complex_modifications/iterm2.jsonに保存する。
{
"title": "iTerm2 rules",
"rules": [
{
"description": "Command-TAB to Option-TAB on iTerm2",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "tab",
"modifiers": {
"mandatory": ["left_command"]
}
},
"to": [
{
"key_code": "tab",
"modifiers": ["left_option"]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\\.googlecode\\.iterm2"
]
}
]
}
]
},
{
"description": "Command-SPC to Option-SPC on iTerm2",
"manipulators": [
{
"type": "basic",
"from": {
"key_code": "spacebar",
"modifiers": {
"mandatory": ["left_command"]
}
},
"to": [
{
"key_code": "spacebar",
"modifiers": ["left_option"]
}
],
"conditions": [
{
"type": "frontmost_application_if",
"bundle_identifiers": [
"^com\\.googlecode\\.iterm2"
]
}
]
}
]
}
]
}
- [Complex modifications]->[Add rule]で[Command-TAB to Option-TAB on iTerm2]を追加する(自分はCommand-SPCを入力ソースの切り替えに割り当てているので、Command-SPCの方も追加しているがお好みで)。
2019/9/30追記
以下の記事を参考にしたらKarabiner-Elementsを使わなくてもiTerm2の設定だけでできた。