2010年11月22日月曜日

【Emacs】タブを使わずに空白のみでインデントするには


Emacsで、タブを使わずに空白のみでインデントするには、.emacsに以下を追記します。
(setq-default tab-width 4 indent-tabs-mode nil)

--

CommonLispの処理系SBCLで、コマンドラインからLispコードを実行するには


SBCLでコマンドラインからLispコードを実行するには、--scriptオプションを使って以下のようにします。
$ sbcl --script hello.lisp
同じようにして、コンパイルしたコードも実行できます。
$ sbcl --script hello.fasl

--

2010年11月15日月曜日

GnuTLSの使い方(第2回)

前回のエントリでは、「GnuTLSの使い方(第1回)」として、GnuTLSを使って、HTTPSでWebサーバに接続してHTMLを取得しようとしましたが、handshakeに失敗して通信できませんでした。

失敗の原因がどうもよく分かりません。APIの使い方の問題ではなさそうなものの、サーバの環境によるものか、GnuTLSを使う上で何か忘れているものがあるのか。

そこで、いったんGnuTLSの代わりに、OpenSSLを試してみることにしました。

「OpenSSL sample」で検索すると、
An Introduction to OpenSSL Programming(Part I)[PDF]
というちょうどいいドキュメントがひっかかるので、これを参考にします。

このドキュメントにはサンプルコードが用意されており、まずはこのサンプルを動かしてみます。

http://www.rtfm.com/openssl-examples/

まず、OpenSSLをインストールします。
手元の環境はMaxOS Xなので、MacPortを使います。
$ port install OpenSSL
次に、サンプルをビルドします。
$ ./configure --with-openssl=/opt/local/
$ make
MacPortを使ってOpenSSLをインストールしたため、そのインストール場所を--with-opensslオプションによって指定しています。

問題なくビルドができれば、SSLを通してウェブサーバからHTMLを取得してみます。
$ ./wclient -h twitter.com -p 443 -i
今度は、GnuTLSを使った場合と違い、すんなりとHTMLを取得できました。

GnuTLSを使ったときにhandshakeに失敗するのはなぜだろう?

とはいえ、これでSSL通信をする方法はわかったので、もともとのきっかけだった、HaskellからのSMTP over SSL/TLSを実装できそうです。

■関連するエントリ
GnuTLSの使い方(第1回)

--