[Top Page][All Pages][Recent Changes]

archives/2005/09/20

Scheme/jail

Category of Scheme

Gaucheでファイル入出力だけを禁止する方法。めもめも。

Chickenだとeggs:sandboxなんてものあるのな。

てか変なコードの実行が心配だったら、それだけじゃなくて、 OSの保護機構を使うとか仮想化するとか新しいテスト専用マシンを作るとか、 これらを同時に使って対策するとかしたほうがいいような。

ソフトウェアでなんとかするにしても、chroot(8)なりjail(8)なりqemuなりknoppixなり、 これって結局面倒臭さと安全性の度合とのトレードオフなのだけど、いろいろあるよね。

Scheme/quack-pretty-lambda-p

Category of Scheme

そういえばquack。 手元のものは古かったので、 ダウンロードしてChangeLog読んだ。

;; * Pretty-lambda fontification. (GNU Emacs 21 only.)

おお。EmacsWiki:PrettyLambdaが入ってる。

スクリーンショット再掲。

[image]

実はしばらく使っていたのだけど、lambda→λは慣れると平気。 むしろエディタ上で無駄なスペースが圧縮されてよい感じ。

半端なところからコピペしたらソースコードが壊れる問題は直っているのかしら。 この問題がなかったら常用できるのにな。

以前の書き込み。

Scheme/Note:quack-pretty-lambda-p

Category of Scheme

え、2003-01-03の時点でもう入ってる?

;; Version 0.17 (2003-01-03)
;; * Pretty-lambda is supported well under GNU Emacs 21, when using PLT
;; Style fontification. Enable via the Options menu. (Based on
;; approach by Stefan Monnier; suggested by Ray Racine.)

ソース読んでないだけだったorz

Lisp/Scheme/Note:slime-for-scheme48

Category of Lisp
Category of Scheme

そういえばscheme48のインタプリタはエラーで中断/再開できるのだった。 goshでもできたっけ?

あー、それにslimeでごにょごにょしようとするなら、 インタプリタ側でtcp/ipのportを開いて待ってやらないといけないのか。

swank-scheme48以下のschemeコードを流し読んでみたけど、げー。けっこう複雑ね。 セッション管理もreplも全部自前だし。全コードで4000行越えてるし。 もはやslimeとは別物感あり。

Lisp/Scheme/slime-for-scheme48

Category of Lisp
Category of Scheme

slimeをひさびさにcvs updateしてみた。

  • swank-scheme48/: New backend.

キタ━━━━(゜∀゜)━━━━ッ!!

いや、まてよ。 ということはこいつをいじればgoshなりcsiなりもslimeで動かせるのかな?

quack以外の選択肢が突如浮かび上がってきた予感。

Lisp/Scheme/Chicken/guess-jp.egg

Category of Lisp
Category of Scheme
Category of Chicken

ChickenでもGaucheのguessを使えるようにしてみた: (files:guess-jp.egg)

必要なもの

chicken-2.0 on OpenBSD-currentで動作確認。 大抵の環境で動くでしょう。

インストール

 # chicken-setup guess-jp.egg

使いかた

$ echo '(require-extension guess-jp)(display (guess-jp "ほげ"))(newline)' | \
gauche-cesconv --to-code EUC-JP > euc.scm
$ csi -quiet -batch euc.scm
EUC-JP
$ gauche-cesconv --to-code UTF-8 euc.scm > utf8.scm
$ csi -quiet -batch utf8.scm
UTF-8

自分で書いたのはインストールのためのコードも含めて20行程度。 chickenのEasy FFIとオートビルドの連携はなかなか興味深い。


作ってから eggs:charconvなるものがあることを知ったorz