Gauche(Scheme) のデバッグ環境構築
アドベントカレンダー 1 日目 by @takkyuuplayer
計算機プログラムの構造と解釈 第二版 の勉強会を会社の同僚としている。
今回は前々から欲しかった Gauche に SLIB 使って↓みたいな Stacktrace を出すための環境構築の話。
- fibonacci
(use slib) (require 'trace) (define (fibonacci n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fibonacci (- n 1)) (fibonacci (- n 2)))))) (trace fibonacci) (fibonacci 3)
CALL fibonacci 3 CALL fibonacci 2 CALL fibonacci 1 RETN fibonacci 1 CALL fibonacci 0 RETN fibonacci 0 RETN fibonacci 1 CALL fibonacci 1 RETN fibonacci 1 RETN fibonacci 2
とりあえず環境だけ欲しい人向け
私は
LPM: Local Package Manager
を利用して $HOME/lcl
内にいろいろソフトウェアをインストールしている。
オレオレスクリプトが
takkyuuplayer/lpm · GitHub
にあるので、
LPM
が使えるなら
$ git clone https://github.com/takkyuuplayer/lpm.git $ cd lpm $ lpm install scripts/texinfo.lpm $ lpm install scripts/slib.lpm $ lpm install scripts/gauche.lpm $ export SCHEME_LIBRARY_PATH=$LPM_LIB/slib/
で使えるようになる。
環境構築中にはまったところ
makeinfo
が無いと言われる
texinfo の中に入っているのでそれをインストール
must be after @defun to use @defunx texinfo
とかいうエラー
texinfoが 5.x 系だとインストールできなかった。おとなしく 4.x 系をインストールすることに。
ginstall-info
が無いと言われる
install-info
という名前で入っていたので symlink 貼った。
$ ln -fs $LPM_BIN/install-info $LPM_BIN/ginstall-info
次回予告
明日の担当も @takkyuuplayer です。
supervisor で Unicorn プロセス監視
昔はプロセス管理といえば daemontools だったそうなのですが、 最近は Supervisor を使ってプロセス管理をすることが増えているようです。
私の ホームページ は Unicorn x Sinatra x nginx で動かしていますが、このUnicornプロセスが死んでも自動で再起動してくれるように、Supervisor を導入してみました。