« 2005年10月 | Main | 2005年12月 »

2005年11月 1日

エストニアニット

[ カテゴリ: Fashion ]

エストニアのニット

一昨年にタートルネックのセーターを捨ててから、 ずっとニットを探していたわけですが、 やっといいものを見つけました。

それは、タートルネックではないんですが、 なんと、北欧の国、エストニアのニット。 有名なニット作家のトンベルクさんというかたのデザインだそうで、 とてもあたたかいやわらかな感じのニットなのです。 胸がホックになっていて、それが差し色の赤い糸で縫いつけてあるのがポイント。 とってもとってもかわいいのです。


2005年11月14日

ElScreen 1.4.0(まだだけど)

[ カテゴリ: Emacsen ]

Meadow的白井さんからパッチが飛んできたことを発端として、 今までやりたかったことをもろもろ片付けてみました。 思い返すと、

  • 1.0→1.2:multi frame support
  • 1.2→1.3:tab & menu support

と来たわけだけど、今回はどうかというとそれほど大きな変更はない感じ。 てか、若干の機能追加と大幅なリファクタリングですな。

そんなわけで、安定してることを確認したらさっさと出してしまいたいなあ。 絶賛人柱募集中。

(back-to-indentation)

[ カテゴリ: Emacsen ]

うーん、 elisp漬いてますな。中山さんとこ経由、新堂さんで。 C-aに(beginning-of-line)と組み合わせるとさらに気持ちいいという話。

(defun toggle-beginning-or-indentation-of-line (arg)
  (interactive "p")
  (if (looking-at "^")
      (back-to-indentation)
    (beginning-of-line arg))))
(define-key global-map "\C-a" 'toggle-beginning-or-indentation-of-line)

2005年11月18日

OpenVPN

[ カテゴリ: Technology ]

最近、いろいろtipsをMTに書いてないと云って怒られ気味。 で、なんとOpenVPNについても書いてないことが発覚したので、メモ代わりに。

OpenVPNは、 オープンソースのVPNの実装です。 プロトコルが独自仕様なところがいたいですが、 動作プラットフォームは各種UNIXからMacOSX、Windowsまでをサポートしており、 L2 VPNおよびL3 VPNが可能です。 L2 VPNといえば昨年S**tE***rが一世風靡しましたが、 あれを購入するくらいならOpenVPNのほうがよっぽどいいでしょう。

で、実はOpenVPNは難しいことはなにもありません。 証明書発行してサーバとクライアント双方に仕込めばおしまい。 でもこれじゃつまんないのでいくつかtipsを…

CRLをどうするか

ApacheでHTTPSすると困るのがCRLですが、OpenVPNの場合はどうでしょう? というわけでドキュメントを見てみると次のような記述があります。

When the crl-verify option is used in OpenVPN, the CRL file will be re-read any time a new client connects or an existing client renegotiates the SSL/TLS connection (by default once per hour). This means that you can update the CRL file while the OpenVPN server daemon is running, and have the new CRL take effect immediately for newly connecting clients.

ううむ、偉すぎる。 アクセス頻度が違うのでApacheがこれをやるとえぐいんですけどね。 というわけで、cronかなにかで更新するようにすればおしまい。

CNでフィルタしたい!

そもそも、基本的に証明書ベースの認証は、 証明書を持ってればだれでもおっけーになりがちです。 もちろん、EKUつかってごにょごにょしたりできますが、 現実的にはこのような方法を使っているケースは稀でしょう。 というわけで、CNベースでサービスをフィルタしたいという要望が出てきます。

OpenVPNの場合は、設定ファイルにtls-verifyというのがあります。 以下は、openvpn(8)から抜粋。

Execute shell command cmd to verify the X509 name of a pending TLS connection that has otherwise passed all other tests of certification. cmd should return 0 to allow the TLS handshake to proceed, or 1 to fail.

これをつかって、たとえば以下のようなやっつけスクリプトを書いておきます。 ここではverify-cnとしましょう。

#!/bin/sh
RUBY=/usr/pkg/bin/ruby18

DENY=1
if [ ! -x "${RUBY}" ]; then
  exit ${DENY}
fi

exec ${RUBY} -S -x $0 "$@"
#! ruby

ALLOW, DENY = 0, 1

class VerifyCN
  def initialize(allowlist)
    read_allowlist(allowlist)
  end

  public  ;#

  def verify(depth, x509_name_oneline)
    return ALLOW if depth.to_i != 0
    return DENY \
      unless x509_name_oneline =~ /\/CN=([^\/]+)/
    return DENY \
      if @allowlist_esc.find{|cn_esc| cn_esc == $1 }.nil?
    return ALLOW
  end

  private ;#

  def read_allowlist(allowlist)
    @allowlist = IO.readlines(allowlist)
    @allowlist_esc = @allowlist.collect{|cn| cn.chomp.gsub(/ /, "_") }
  end
end

allowlist = ARGV.shift
verifier = VerifyCN.new(allowlist) \
  rescue exit(DENY)

exit(verifier.verify(*ARGV)) \
  rescue exit(DENY)

で、設定ファイルには、

tls-verify "/path/to/verify-cn /path/to/allowlist"

ここで指定しているallowlistというファイルには、 接続を許可するクライアント証明書のCNを、 1行にひとつずつ記述しておきます。

という具合で、結構融通が利くOpenVPN、 L2モードでもクライアント間通信を制限することもできるし、 TCPでもUDPでも使えます。 TCPの場合はTCP over TCP問題がありますが、 HTTP Proxyを通したりもできるらしい(未検証)。 というわけで、みなさんもいかがですか?

2005年11月19日

GNU id-utils for Windowsはいずこに?

[ カテゴリ: Technology ]

もはや開発は完全に止まっているのでほとんど知られていないかもしれませんが、 GNU id-utilsというソフトウェアがあります。 ソース内のtokenを拾い出してデータベース化し、 それを検索できるというもの。 似たようなものにGNU globalとかありますけど、 やっぱりid-utilsのほうが断然よい(慣れてるからかしら)。

で、id-utilsをEmacs(当時はmule 2.1だったけどね)から使いたいがために ElScreenを書いて、 その上にElScreen-GFをかぶせるようにしたのでした。

ところでいまどきの多くの学生は、 嘆かわしいことにコードの読み方をほとんど知りません。 そこで、MeadowでElScreen-GF使えよ…と云いかけたんですけど、 これまたEmacsの使い方もよく知らないらしいというのは置いておくとして、 id-utilsのWin32版はあるのか?という問題にぶち当たってしまいました。

そんなわけで軽く捜索してみたんですが、さっぱりない。 GNUWin32で2004年の最初くらいまでは公開されてたみたいなんですが、 さっぱり見あたらないよー。 どなたか、ここにあるぜ節穴め!というかた、教えてください…

GNU GLOBAL

[ カテゴリ: Technology ]

id-utilsのところで「GNU GLOBALよりid-utilsのほうが断然よい」と書きましたが、 理由を思い出した。 GNU GLOBALの出力フォーマットがさっぱりいけてなくて、 機械的に処理できないんだ。 しかもフォーマットを指定することもできないぽい。 なんでgrep互換出力サポートしないかねえ…

2005年11月20日

ElScreen 1.4.0 & ElScreen-GF 1.4.0

[ カテゴリ: Emacsen ]

というわけでリリースしました。 でもそもそも、ElScreenはElScreen-GFのために作ったので、 ElScreen-GFユーザも増えるといいんだけどなあ。 ほんと、手前味噌ですがhackのお供にいいと思うのです。

2005年11月25日

luna

[ カテゴリ: Emacsen ]

elispのOOP kernelであるluna(flimで配布されてるのがなぞですが)の簡単な解説をみつけた。 独立して配布されてたらがんがんつかうんだけどなー。 というほどelisp書けないけどさ。

MacOS Xでldd

[ カテゴリ: MacOSX ]

調べてもすぐに忘れてしまうのでメモ。

otool -L

2005年11月28日

自動的にScreenを作りたい?

[ カテゴリ: Emacsen ]

ElScreen的な話。

<prefix> C-nとか<prefix> C-pで移動しようとしたときに、 Screenが1枚しかなければ自動で作りたい、 というひとが世の中に少なくともふたりはいるみたい。 ということは、他にもいるのかなあ。

個人的にはやっぱり変則的でちょっと気持ち悪いので、 結局本体には取り込まなかったんだけど、 こういうのをどっかに書いておくといいかもしれないです。

(defmacro elscreen-create-automatically (ad-do-it)
  (` (if (not (elscreen-one-screen-p))
	 (, ad-do-it)
       (elscreen-create)
       (elscreen-notify-screen-modification 'force-immediately)
       (elscreen-message "New screen is automatically created"))))

(defadvice elscreen-next (around elscreen-create-automatically activate)
  (elscreen-create-automatically ad-do-it))

(defadvice elscreen-previous (around elscreen-create-automatically activate)
  (elscreen-create-automatically ad-do-it))

(defadvice elscreen-toggle (around elscreen-create-automatically activate)
  (elscreen-create-automatically ad-do-it))

2005年11月30日

ま・じ・で・す・か

[ カテゴリ: Life ]

資生堂MAQuillAGEのCMのChiaki役って、 栗山千明だったんすか。まーじで。 このころと、 全然違うじゃん。当時16でいま21か、そりゃ変わるわけだ…