CLでローカルに立てたWebサーバーの更新は出来たけど、会社のブログはリモート。そこに接続して更新する方法を覚える必要がある。
AllegroServeを立てて、ブログ用のマクロや関数を書いてくれたg000001さんにやり方を聞こうかなと思ったらSkypeにいない!!
これは「教わろうとするな、盗め!」ということに違いない。厳しス。
ssh port forwarding
とりあえず、ブログのサーバーに入って何番でSWANKサーバーが立ち上がってるのか知る必要がある。
netstat -tlnで見てみた。
Redmineと同居してるのでApacheもあるけど(仕方ないね・・・)、8888番がAllegroServeで、多分4005番ってのがSWANKだろう。
4005番を開け放つ訳にはいかないのでローカルの14005番をリモートの4005番にsshでforwardする。
% ssh -N -f -L 14005:localhost:4005 tech.actindi.net
(-fはバックグランド実行、-Nはトンネリングだけするオプションだそうです。)
リモートのSWANKサーバーに接続
EmacsからM-x slime-connectするとhostとportを聞かれるのでlocalhost, 14005をそれぞれ入力すると、
; SLIME 2008-12-25
ACTINDI>
というプロンプトが。
エントリーを評価する
g000001さんがブログエントリー用の関数をたしか書いてたはず。homeディレクトリにblog.lispというそれっぽいファイルがありました。
(in-package :actindi)
(let ((date (encode-universal-time 0 0 0 21 2 2009)))
(defentry (format nil "/~A" date)
(:title "ブログはじめました"
:author "komagata"
:date date
:category "システム管理")
"本文"))
in-packageというのは確か実践CommonLispに出て来た。多分import的な奴だと思う。:actindiパッケージにdefentryという関数が定義されてるんだろう。本文はhtml-generatorと同じ記法かな?
適当なバッファで始めてのエントリーを書いて、C-M-xで評価。
出来た!
後でもっとスマートなやり方を聞こう・・・。
参照: