2009-06-05

emacs23でインラインパッチが使えるようになった

[Macemacsjp-users 1649]ではしもと氏からemacs23で使えるインラインパッチをSVNのリポジトリに登録した、という投稿があった。実は結構前からCarbon Emacsからemacs23に移行したいのだが、インラインパッチがあたらないため、移行を見送っていた。 今回のパッチでとりあえず動くようになったので、その顛末を書いておく。 まずはCVSでemacsのソースを落としてくる。 最近、cvs.savannha.gnu.orgがRAIDトラブルでサービス不能になっていたが、2009年6月4日には復旧していた。中の人に感謝しつつ、emacsのソースを落とす。 % cvs -d:pserver:anonymous@cvs.savannha.gnu.org:/sources/emacs login % cvs -z3 -d:pserver:anonymous@cvs.savannha.gnu.org:/soruces/emacs co emacs 当然、インラインパッチもローカルに落とす。こっちはメールにも書かれている通り、sourceforge.jpのsvnレポジトリから落としてくる。 で、パッチをあてて、コンパイル。 % cd /path/to/emacs/source % patch -p 0 < /path/to/inline/patch/file % ./configure --with-ns % make bootstrap % make install インラインパッチのアナウンスメールほぼそのままの何も芸がないな。。。 で、ここまでくるとemacsのソースディレクトリにnextstep/Emacs.appが生成される。 インライン入力を有効にするために.emacsに下記のように設定を追加しておく。 (setq default-input-method "MacOSX") あとは、いつも使っていたelispパッケージをがりがりインストールしてあげればよい。実はこのelispパッケージのインストール時にwanderlustからgmailにメールを送信できない問題にぶちあっていた。しばらくはCarbon Emacsと併用して、問題がなければemacs23一本に絞る予定。 今日のまとめ
  • emacs23でインラインパッチをあててみた
  • 情報量は0bit

gmailのimap機能をwanderlustから使ってみる その2

ずーと昔にgmailのimap機能をwanderlustから使ってみるていう記事をポストしたんだけど、どうやら古い情報になってしまったぽい。昔の記事ではsmtpにsslを使えと書いていたが、今のGMailの仕様ではstarttlsを使えといっている。今回は情報をアップデートして、環境を作り直すときに不幸にならないようにしておく。 (setq wl-smtp-posting-user "gmailのメールアドレス") (setq wl-smtp-posting-server "smtp.gmail.com") (setq wl-authenticate-type "login") (setq wl-smtp-posting-port 587) (setq wl-smtp-connection-type 'starttls) (setq ssl-certificate-verification-policy 1) ということでwl-smtp-posting-port587にして、wl-smtp-connection-typestarttlsにすると幸せになれる。僕はこれに気が付かずにメールが遅れなくなりかなりハマってしまった。 ちなみにssl-certificate-verification-policy0にしておくと、gmail.comの証明書の正当性(opensslで上位の認証局が確認できるか)を調べてしまう。gmail.comの証明書の上位はopensslの証明局に登録されていないので、Cannot open: elmo-network-initialize-sessionと怒られてしまい、smtpサーバに接続できない。0以外の値を入れておけば、証明書の正当性をチェックしないらしいので、とりあえず1を入れておく。証明書の正当性を確認できないのが気持ち悪いなら、エラーの内容でググれば対応策が書かれたサイトが見つかるはず。 今日のまとめ
  • gmailのsmtpサーバに接続するときにはSSLではなくSTARTTLSを使わなければならない
  • 困ったときはググるのもいいけど、その前にベンダーが提供している情報を参照しろ

2009-06-01

OpenBSD 4.5の/var/backupに感動した話

最近、色々考えることがあって、OpenBSD 4.5をまじめに使ってみている。 で、感動したのがOpenBSD(他の*BSDでも同じだと思うけど)は/var/backupに/etcの下にあるコンフィグファイルとかのバックアップを2世代分保持していて、変更があったらdaily cronで差分をroot宛てに"hostname.domain daily output"ていうsubjectで送信してくれる。つまり、このメールを後生大事にとっておくとマシンに万が一のことがあったら何とか復旧できるかもしれない。まぁ、こういう重要なファイルは自分でバックアップをとっておくとか、設定内容はちゃんとメモしておくとかすればいいんだけど、往々にしてそんなめんどくさいことは後回しになってしまう。なので、このシステムはずぼらな鯖管には嬉しすぎるシステムなわけ。 ただ、OpenBSDはあとからportsとかでがんがんパッケージを追加して環境を整えるべきなんだけど、当然後から入れた分については/var/backupの対象外になってしまう。で、/var/backupにファイルを配置する仕組みや差分をとる仕組みについてちょっと調べたのでメモしておく。 まず、daily cronでは/etc/securityというshell scriptを起動して、daily insecure outputを出力している。ただ、/etc/securityは/var/backup以下にあるfoo.currentと対象ファイルの差分を計算して、差分があればdiffの内容を出力し、出力結果をまとめて標準出力に出しているだけぽい。つまり、/var/backupでバックアップをとっておくファイルの指定はできない。man 8 securityを読むと
Check for changes in files listed in /etc/changelist
と書いてあったので、どうやら/etc/changelistをごにょごにょすると幸せになれるらしい。/etc/changelistはプレインテキストファイルなので中身をcatで見てみると、確かに/var/backupでバックアップをとっているファイルが列挙されている。ただ、いくつかのファイルは行頭に"+"が書かれていて、これはファイルの内容ではなく、MD5のチェックサムでバックアップをとっているとのこと。 なので、/etc/changelistの中にバックアップをとりたいファイルをフルパスで書いてあげれば、/etc/securityが起動したときに最初のバックアップを取ってくれる。でも、大体はdaily cronで/etc/securityが起動する前に設定ファイルを編集したいと思うので、そんなときは/etc/securityを実行してしまうか、バックアップファイルを作ってしまうのがよいかも。例えば、バックアップしたいファイルのフルパスが/path/to/fileだったらpath_to_fileてなる。なので、ファイル名はpath_to_file.currentになるはず。ここは/var/backupの中を直接のぞいてもいいし、/etc/securityの_fnchgという関数の定義を見てもいい。 というわけで今日のまとめ
  • daily insecurity outputは/etc/securityの出力結果
  • /var/backupでバックアップを取るためには/etc/changelistに対象ファイルのフルパスを書いておく
    • 行頭に+をつけるとファイルのMD5ハッシュ値を記録する
  • /etc/changelistに追加した直後にファイルを編集する必要がある場合は/etc/securityを実行するか、自分で/var/backupの下にバックアップファイルを作る
ちなみにMac OS Xにも/var/backupはあるけど、中身は空っぽ。多分、FreeBSDにも同じような仕組みがあって何らかの設定が必要なんじゃないかな。ちなみにこのエントリはOpenBSDの4.5で試した結果を書いているけど、他のバージョンでもほぼ同じだと思う。詳しくはmanを見てねて感じで。