ラベル acl の投稿を表示しています。 すべての投稿を表示
ラベル acl の投稿を表示しています。 すべての投稿を表示

2009年9月10日木曜日

eli の使いこなし [起動済みのLispにEmacsを接続]


  • まず localhost 上。
  • Lisp にて

    (excl:start-emacs-lisp-interface t 1 7666 "~/.eli-startup")

    を評価。すると~/.eli-startup というファイルができる。
    このファイルの中身は、

    ^A7666 542496 :upper (8 (1) :FINAL 7) 1^A

    というシンプルなもの。Emacs に渡す接続情報である。
  • 次に、Emacs で、

    (fi:start-interface-via-file "localhost" "*common-lisp*" "~/.eli-startup")

    を評価。これでREPLが立ち上がる。メジャーモードは、TCP Common Lisp モード。このモードは、keymap は fi:lisp-listener-mode-map を使っている。

  • この方法で接続した場合も、fi:common-lisp-mode で開いたソースファイルとの連携ができる。
  • "localhost"をFQDNまたはIPアドレスに変更すれば、リモートの Lisp に接続できる。ただし起動情報ファイル(ここでは.eli-startup) をEmacsがあるホストで参照できるようにしておくこと。これは、ファイルを転送してもいいし、NFSやsambaで共有してもよい。
  • この方法で、複数 Lisp に単一 Emacs からREPL接続することができる。ただし、fi:common-lisp-mode で開いた Lisp ソースと連携するのは一番最後に開いた REPL だけ。
  • listenerを増やすことができるのも、一番最後に開いた REPL の Lisp だけ。

  • この方法で、2つ以上の Emacs をひとつの Lisp につなぐこともできる。そのときも、

    (excl:start-emacs-lisp-interface t 1 7666 "~/.eli-startup")

    これは一個でよい。

  • さて、

    (excl:start-emacs-lisp-interface t 1 7666 "~/.eli-startup-1")
    (excl:start-emacs-lisp-interface t 1 7667 "~/.eli-startup-2")

    として、それぞれに別の Emacs をつなぐこともできる。ただし、

    (excl:start-emacs-lisp-interface t 1 7666 "~/.eli-startup")

    これひとつに2つの Emacs をつなぐのと、機能上の違いはない。:processes 的には、Editor Server が2つできるので違いはある。

  • こうしてみると、かなり自由自在というか柔軟なんだな。

時間ができたときに、整理して 逆引きCommon Lisp に書こう。
こつこつ。

2009年9月7日月曜日

eli の使いこなし [fi:common-lisp によるリモートLispの起動]


  • これ、M-x fi:common-lisp の引数指定で ホストを指定してあげればよいだけなのですが、うまく起動できない。
  • ソースを調べてみると、どうやら ssh ではなく rsh 専用になっているようだ。
  • eli のためだけに、ssh とは別に rsh を運用するというのはちょっと避けたい。
  • リモート Lisp は fi:start-interface-via-file に一元化かな。

こつこつ。

eli の使いこなし [複数listener]


  • fi:common-lisp で REPL を起動済みなことが前提。
  • M-x fi:open-lisp-listener で対話的に新しい listener を起動できる。このときバッファ名は、*lisp-listener* になる。
  • M-x fi:open-lisp-listener を使ってさらに listener を起動するのはやめたほうがよい。この方法の場合、事前に作成した listener のバッファ名を *lisp-listener* 以外に変更しておいて、M-x fi:open-lisp-listener を実施することになるが、このバッファ名の変更が、Common Lisp に伝わらないからだ。

  • 2つ以上新規に listener を起動する場合は、対話的ではなく、

    (fi:open-lisp-listener -1 "*my-lisp-listener*")

    などを評価する方がよい。-1 は buffer-number という引数だが、Gnu Emacs 22 の Info では記述されていない。負数を設定すると自動的に空き番号を使うとのことなので、負数運用がいいのかもしれない。
  • fi:open-lisp-listener で起動した REPL はfi:inferior-common-lisp-mode ではなく、fi:lisp-listener-mode である。

  • さて、listener は プロセスとどういう関係があるのかというと、まず listener を増やしても、OS上の alisp のプロセスは増えない。Common Lisp 内のスレッドが増える。
  • listener を終了するときは、:kill で Common Lisp の内部スレッドを停止する。
  • どの listener においても、:exit すると、全ての listener というか Lisp 本体が停止してしまう。


時間があるときに、整理しながら逆引きCommon Lispに書こう。
こつこつ。

2009年7月9日木曜日

Allegro Prolog

以前はまったくわからんかったが、今はわかる!!

Allegro Prolog

LispとPrologとを多少連携して使えるみたい。

PAIPやりながらAllegro Prologもいじってみることにする。これは楽しみ。


CL-USER(2): (require :prolog)
; Fast loading /opt/acl81.64/code/prolog.002
;;; Installing prolog patch, version 2.
T
CL-USER(3): (use-package :prolog)
T
CL-USER(4): (?- (append ?x ?y (1 2 3)))
?X = ()
?Y = (1 2 3)
?X = (1)
?Y = (2 3)
?X = (1 2)
?Y = (3)
?X = (1 2 3)
?Y = ()
No.
CL-USER(5): (<-- (likes Kim Robin))
LIKES
CL-USER(6): (<- (likes Sandy Lee))
LIKES
CL-USER(7): (<- (likes Sandy Kim))
LIKES
CL-USER(8): (<- (likes Robin cats))
LIKES
CL-USER(9): (?- (likes Sandy ?x))
?X = LEE
?X = KIM
No.
CL-USER(10):

2009年2月2日月曜日

module, ACL defsystem, ASDF


ASDFへの道。

まず、packageをおさらい。packageはそこそこわかっていることを確認。
続いて、module。moduleはわかっていない。

では、ansi CLのmodule。

-----------
*modules* :
現在のlisp imageにload済みのmoduleのリスト。文字列のリスト。

require module-name &optional pathname-list :
moduleに関連付けられたfilesをloadする。
pathname-listがnon-nilのときはそれをその順にloadする。
pachname-listがnilのときは、処理系依存の機構によってfilesをloadする。
provide module-name :
*modules*にmodule-nameが無ければそれを追加する。

あるmoduleが単一のpackageから構成される場合は、同じ名前にするのが
慣例である。

*modules*, require, provideはdeprecatedである。
-----------

続いてaclのmodule。

-----------
aclではmoduleという概念を活用している。
acl独自のdefsystemなる機構がありその中で定義されている。
defsystemはCLOSの上に構築されている。

souceとfaslのa pairをmoduleと呼ぶ。foo.lisp、foo.faslであれば、
module名は"foo"。

module-groupは、modulesやmodule-groupsの集りである。

systemは、module-groupsから構成される。systemは名前を持つ。

moduleの定義はdefsystemにて行なう。defsystemの中のmoduleに関する記
述をmodule-specificationsと呼ぶ。

module-specificationによって、moduleの定義およびmodule間の依存関係
を定義する。また、module-groupsを定義する。

defsystemで定義したsystemに対して、

load-system
compile-sytem
map-system

などのpredefined operationsを利用できる。require, provideはこの
defsystemとしては振舞いは定義されていない。おそらく機能として直交し
ているのだろう。

aclでapplicationをbuildして配布するときなどに便利そうだ。
OSSコミュニティでは使われていないようだ。

-----------

aclにおけるrequireはどうなっているだろう。

どうやら、

sys:*require-search-list*

に含まれるpathnameに合致するファイルとカレントディレクトリのfaslが、
(require 'hoge)でロードされるようだ。ただし、例えばカレントディレク
トリにて自分で作成したfaslをrequireしたい場合は、あらかじめprovide
によって名前を*modules*に登録しておく必要がある。

さて、ASDF。

つ http://cclan.cvs.sourceforge.net/*checkout*/cclan/asdf/README

----

ASDFはソースファイル間の依存関係を記述するものである。

asdファイルの置き場所は、asdf:*central-registry*。
これは*default-pathname-defaults*を含んでいる。


ASDFの中心概念は、componentsとoperationsである。

systemsはcomponentsから構成される。

a component は a source fileまたは、a collection of componentsの表
現である。

結果としてa systemは、componentsとsource filesをnodeとする木構造を
成す。

Operationsはその木構造に作用する処理である。

なるほど。すると、'asdf:load-opしたときにどう処理が進むか(asdファ
イルの記述がどう評価されるか)はOperationを調べればいいんだな。

ただ、このREADMEには記述がない。

つ /Applications/AllegroCL/src/asdf.lisp

ソースをみる。

operateを呼ぶと、find-systemする。find-systemは、systemがin memory
かどうかin memoryだとして
(*defined-systems*に登録されているとして)、更新日付の関係はどうかを
みて、必要があれば、asdファイルをloadする。asdファイルの中の
defsystemはregister-systemを呼んで、systemを登録する。

なるほど。ASDF的には、asdファイルの必須坦務はregister-systemするこ
とだけのようだ。必要に応じてそれ以外の処理が必要であれば、そこで書
いてしまってもよいようだ。asd自体は単にloadされるだけなので、普通
にそれらは評価される。

----

runesを読む準備が整ったかなぁ。

こつこつ。

2009年1月10日土曜日

cl-benchをとりあえずやってみる

とりあえず、aclとsbclについてCL-benchをかけてみた。
いろいろ調整をしないと、正確なベンチにならないかな、と思います。その点ご了承ください。
まず、acl。

;; -*- lisp -*- International Allegro CL Enterprise Edition 8.1 [64-bit Linux (x86-64)] (Jul 28, 2007 7:38)
;;
;; Implementation *features*:
;; (:ALLEGRO-CL-ENTERPRISE :IPV6 :ACL-SOCKET :HIPER-SOCKET :PROFILER :MULTIPROCESSING :FLAVORS :LITTLE-ENDIAN :GSGC :COMPILER :USE-STRUCTS-IN-COMPILER :CLOS :DYNLOAD :DLFCN :UNIX :LINUX :AMD64 :LINUX86-64 :X86-64 :ENCAPSULATING-EFS :RELATIVE-PACKAGE-NAMES :MODULE-VERSIONS :IEEE :IEEE-FLOATING-POINT :CONFORMING-IEEE :ICS :COMMON-LISP :ANSI-CL :DRAFT-ANSI-CL-2 :X3J13 :ALLEGRO :EXCL :FRANZ-INC :ALLEGRO-VERSION>= :ALLEGRO-VERSION= :NEW-ENVIRONMENTS :SYMBOL-VALUE-VECTOR :PROCESS7 :DYNLOAD-ACL-LIBRARY :ALLEGRO-V8.1 :64BIT :TLSVALUES :TLSBNP :SSL-SUPPORT)
;;
;; Function real user sys consed
;; ----------------------------------------------------------------
;; COMPILER 1.13 1.08 0.00 0
;; LOAD-FASL 0.26 0.26 0.00 0
;; SUM-PERMUTATIONS 2.13 2.02 0.00 0
;; WALK-LIST/SEQ 0.04 0.03 0.00 0
;; WALK-LIST/MESS 0.04 0.04 0.00 0
;; BOYER 5.79 5.73 0.00 0
;; BROWSE 0.29 0.28 0.00 0
;; DDERIV 0.34 0.34 0.00 0
;; DERIV 0.30 0.31 0.00 0
;; DESTRUCTIVE 0.20 0.20 0.00 0
;; DIV2-TEST-1 0.37 0.37 0.00 0
;; DIV2-TEST-2 0.44 0.42 0.00 0
;; FFT 0.04 0.05 0.00 0
;; FRPOLY/FIXNUM 0.37 0.37 0.00 0
;; FRPOLY/BIGNUM 0.37 0.37 0.00 0
;; FRPOLY/FLOAT 0.77 0.77 0.00 0
;; PUZZLE 0.49 0.49 0.00 0
;; TAK 0.19 0.19 0.00 0
;; CTAK 0.38 0.38 0.00 0
;; TRTAK 0.19 0.19 0.00 0
;; TAKL 0.35 0.35 0.00 0
;; STAK 2.11 2.10 0.00 0
;; FPRINT/UGLY 0.82 0.75 0.00 0
;; FPRINT/PRETTY 1.92 1.90 0.00 0
;; TRAVERSE 1.00 0.99 0.00 0
;; TRIANGLE 0.66 0.65 0.00 0
;; RICHARDS 1.30 1.30 0.00 0
;; FACTORIAL 0.28 0.27 0.00 0
;; FIB 0.08 0.08 0.00 0
;; FIB-RATIO 0.02 0.02 0.00 0
;; ACKERMANN 4.98 4.93 0.00 0
;; MANDELBROT/COMPLEX 0.75 0.73 0.00 0
;; MANDELBROT/DFLOAT 0.01 0.02 0.00 0
;; MRG32K3A 0.56 0.57 0.00 0
;; CRC40 1.04 1.02 0.00 0
;; BIGNUM/ELEM-100-1000 0.14 0.14 0.00 0
;; BIGNUM/ELEM-1000-100 0.24 0.23 0.00 0
;; BIGNUM/ELEM-10000-1 0.18 0.19 0.00 0
;; BIGNUM/PARI-100-10 0.01 0.02 0.00 0
;; BIGNUM/PARI-200-5 0.06 0.07 0.00 0
;; PI-DECIMAL/SMALL 0.73 0.72 0.00 0
;; PI-DECIMAL/BIG 0.32 0.33 0.00 0
;; PI-ATAN 1.08 1.09 0.00 0
;; PI-RATIOS 1.40 1.38 0.00 0
;; HASH-STRINGS 0.45 0.45 0.00 0
;; HASH-INTEGERS 0.70 0.69 0.00 0
;; SLURP-LINES 0.00 0.00 0.00 0
;; BOEHM-GC 2.64 2.58 0.00 0
;; DEFLATE-FILE 0.58 0.58 0.00 0
;; 1D-ARRAYS 0.08 0.06 0.00 0
;; 2D-ARRAYS 1.11 1.10 0.00 0
;; 3D-ARRAYS 2.93 2.89 0.00 0
;; BITVECTORS 0.54 0.54 0.00 0
;; BENCH-STRINGS 0.92 0.91 0.00 0
;; fill-strings/adjustable 9.92 9.83 0.00 0
;; SEARCH-SEQUENCE 1.12 1.10 0.00 0
;; CLOS/defclass 0.17 0.17 0.00 0
;; CLOS/defmethod 0.24 0.24 0.00 0
;; CLOS/instantiate 1.31 1.29 0.00 0
;; CLOS/simple-instantiate 0.39 0.39 0.00 0
;; CLOS/methodcalls 1.91 1.89 0.00 0
;; CLOS/method+after 0.95 0.94 0.00 0
;; CLOS/complex-methods 0.29 0.29 0.00 0
;; EQL-SPECIALIZED-FIB 0.31 0.31 0.00 0

つづいて、sbcl。

;; -*- lisp -*- SBCL 1.0.24.8
;;
;; Implementation *features*:
;; (:SB-THREAD :ANSI-CL :COMMON-LISP :SBCL :SB-DOC :SB-TEST :SB-LDB
;; :SB-PACKAGE-LOCKS :SB-UNICODE :SB-EVAL :SB-SOURCE-LOCATIONS
;; :IEEE-FLOATING-POINT :X86-64 :UNIX :ELF :LINUX :GENCGC
;; :STACK-GROWS-DOWNWARD-NOT-UPWARD :C-STACK-IS-CONTROL-STACK :LINKAGE-TABLE
;; :COMPARE-AND-SWAP-VOPS :UNWIND-TO-FRAME-AND-CALL-VOP
;; :RAW-INSTANCE-INIT-VOPS :STACK-ALLOCATABLE-CLOSURES :ALIEN-CALLBACKS
;; :CYCLE-COUNTER :OS-PROVIDES-DLOPEN :OS-PROVIDES-PUTWC
;; :OS-PROVIDES-SUSECONDS-T)
;;
;; Function real user sys consed
;; ----------------------------------------------------------------
;; COMPILER 2.27 2.24 0.00 0
;; LOAD-FASL 0.35 0.34 0.00 0
;; SUM-PERMUTATIONS 1.94 1.93 0.00 0
;; WALK-LIST/SEQ 0.03 0.03 0.00 0
;; WALK-LIST/MESS 0.04 0.04 0.00 0
;; BOYER 4.10 4.05 0.00 0
;; BROWSE 0.28 0.27 0.00 0
;; DDERIV 0.32 0.32 0.00 0
;; DERIV 0.38 0.38 0.00 0
;; DESTRUCTIVE 0.23 0.23 0.00 0
;; DIV2-TEST-1 0.52 0.51 0.00 0
;; DIV2-TEST-2 0.70 0.69 0.00 0
;; FFT 0.06 0.06 0.00 0
;; FRPOLY/FIXNUM 0.33 0.33 0.00 0
;; FRPOLY/BIGNUM 0.27 0.27 0.00 0
;; FRPOLY/FLOAT 0.45 0.45 0.00 0
;; PUZZLE 0.36 0.35 0.00 0
;; TAK 0.33 0.32 0.00 0
;; CTAK 0.38 0.38 0.00 0
;; TRTAK 0.33 0.33 0.00 0
;; TAKL 0.45 0.45 0.00 0
;; STAK 0.74 0.73 0.00 0
;; FPRINT/UGLY 1.43 1.41 0.00 0
;; FPRINT/PRETTY 2.60 2.58 0.00 0
;; TRAVERSE 0.93 0.93 0.00 0
;; TRIANGLE 0.89 0.87 0.00 0
;; RICHARDS 0.71 0.71 0.00 0
;; FACTORIAL 0.18 0.19 0.00 0
;; FIB 0.28 0.28 0.00 0
;; FIB-RATIO 0.04 0.05 0.00 0
;; ACKERMANN 3.57 3.55 0.00 0
;; MANDELBROT/COMPLEX 0.48 0.47 0.00 0
;; MANDELBROT/DFLOAT 0.01 0.01 0.00 0
;; MRG32K3A 0.76 0.75 0.00 0
;; CRC40 0.36 0.36 0.00 0
;; BIGNUM/ELEM-100-1000 0.11 0.12 0.00 0
;; BIGNUM/ELEM-1000-100 0.13 0.13 0.00 0
;; BIGNUM/ELEM-10000-1 0.06 0.06 0.00 0
;; BIGNUM/PARI-100-10 0.01 0.01 0.00 0
;; BIGNUM/PARI-200-5 0.05 0.04 0.00 0
;; PI-DECIMAL/SMALL 0.65 0.66 0.00 0
;; PI-DECIMAL/BIG 0.29 0.27 0.00 0
;; PI-ATAN 0.62 0.62 0.00 0
;; PI-RATIOS 1.25 1.23 0.00 0
;; HASH-STRINGS 0.34 0.35 0.00 0
;; HASH-INTEGERS 0.68 0.67 0.00 0
;; SLURP-LINES 0.003 0.00 0.00 0
;; BOEHM-GC 1.66 1.63 0.00 0
;; DEFLATE-FILE 0.33 0.34 0.00 0
;; 1D-ARRAYS 0.04 0.04 0.00 0
;; 2D-ARRAYS 0.75 0.75 0.00 0
;; 3D-ARRAYS 2.18 2.17 0.00 0
;; BITVECTORS 0.53 0.51 0.00 0
;; BENCH-STRINGS 0.71 0.71 0.00 0
;; fill-strings/adjustable 9.12 9.04 0.00 0
;; STRING-CONCAT 33.66 33.50 0.00 0
;; SEARCH-SEQUENCE 0.41 0.41 0.00 0
;; CLOS/defclass 1.51 1.46 0.00 0
;; CLOS/defmethod 6.03 6.00 0.00 0
;; CLOS/instantiate 7.99 7.95 0.00 0
;; CLOS/simple-instantiate 0.28 0.28 0.00 0
;; CLOS/methodcalls 0.92 0.92 0.00 0
;; CLOS/method+after 3.56 3.54 0.00 0
;; CLOS/complex-methods 2.43 2.41 0.00 0
;; EQL-SPECIALIZED-FIB 0.27 0.27 0.00 0

2009年1月4日日曜日

clbuildをためす (その3)


  • Mac+CarbonEmacs+ACL(+eli)+clbuild という環境ができるかどうかトライ。
  • バージョン管理ツールたちで存在しないものはmacportsを使う。(cvsとsvnはmacに入っている) (ただし私は日本語patchをあてたsvnをmacportsベースで使っているので細かくいうと違うのだが、たぶんclbuildにとってはどちらでも同じだと思う)
  • バージョン管理ツールたちを用意。

    $ sudo port install git-core
    $ sudo port install darcs
    $ sudo port install mercurial
    $ sudo port install wget

    macportsのお約束かもしれないが、エラーが散発して手動対処が必要になる。こんな感じ。

    ~$ sudo port install darcs
    [snip]
    Unable to activate port gmp.
    Error: The following dependencies failed to build: ghc gmp libedit
    Error: Status 1 encountered during processing.
    ~$ sudo port uninstall gmp
    ---> Uninstalling gmp @4.2.4_0
    ~$ sudo port -f install gmp
    ---> Installing gmp @4.2.4_0
    ---> Activating gmp @4.2.4_0
    Warning: File /opt/local/include/gmp.h already exists. Moving to: /opt/local/include/gmp.h.mp_1230992586.
    [snip]
    Warning: File /opt/local/share/info/gmp.info-2 already exists. Moving to: /opt/local/share/info/gmp.info-2.mp_1230992586.
    ---> Cleaning gmp
    ~$ sudo port install darcs
    [snip]

    これを繰り返すとたいていうまくいく。理由はわからない。今は深掘りしない。
  • Terminal->Screen->bash->Emacs->bash(shell mode)->port という中でdarcsのinstallをしていたらいつまでたってもおわらない。。。そこで、それらを全てkillしてTerminal->bash->portでやりなおし。そんなに時間かからずに終わる。理由はわからない。今は深掘りしない。
  • いろいろ小回りがきくようにSBCLもいれておく。

    $ sudo port install sbcl

  • これで準備が整ったはず。clbuildは依存関係に留意したdownloaderとしてのみ使う方針。さっそくDL。

    $ ./clbuild update --all-projects

  • .clinit.clを変更。clbuildのsystemsを追加。

    (require :asdf)

    (setf asdf:*central-registry*
    '(*default-pathname-defaults*
    #p "/Users/aka/local/lib/cl/systems/"
    #p "/Users/aka/local/lib/clbuild/systems/"))

    自分で手で管理するものlib/cl/systems/にいれて、clbuildの管理のものをlib/clbuild/systems/にいれる運用とする。
  • 使ってみる。

    CL-USER(2): (asdf:operate 'asdf:load-op 'cxml)
    (...)
    CL-USER(3): :cd
    /Users/aka/
    CL-USER(4): :cd /Users/aka/scratch/cl/
    /Users/aka/scratch/cl/
    CL-USER(5): (with-open-file (s "example.xml" :direction :output)
    (write-string "<test a='b'><child/></test>" s))
    "<test a='b'><child/></test>"
    CL-USER(6): (cxml:parse-file "example.xml" (rune-dom:make-dom-builder))
    #<RUNE-DOM::DOCUMENT @ #x10029a9182>
    CL-USER(7): (defparameter *example* *)
    *EXAMPLE*
    CL-USER(8): (dom:document-element *example*)
    #<RUNE-DOM::ELEMENT test @ #x10029ba012>
    CL-USER(9): (dom:tag-name (dom:document-element *example*))
    "test"

    一応使える。
  • これで様子をみてみよう。

こつこつ。

2008年12月31日水曜日

【IMAP】ACLでIMAP

ACLのIMAPインターフェイスでIMAPを操作してみる。

CL-USER(2): (require :imap)
; Fast loading /Applications/AllegroCL64/code/IMAP.fasl
T
CL-USER(3): (require :smtp)
; Fast loading /Applications/AllegroCL64/code/SMTP.fasl
; Fast loading from bundle code/streamp.fasl.
; Fast loading /Applications/AllegroCL64/code/SASL.fasl
; Fast loading /Applications/AllegroCL64/code/OSI.fasl
; Fast loading from bundle code/fileutil.fasl.
;; Autoloading locale from #P"/Applications/AllegroCL64/locales/en_US"
; Autoloading for package "REGEXP":
; Fast loading from bundle code/regexp2-s.fasl.
;;; Installing regexp2-s patch, version 1.
; Autoloading for REGEXP::MAKE-VM-CLOSURE:
; Fast loading /Applications/AllegroCL64/code/regexp2.fasl
; Fast loading /Applications/AllegroCL64/code/YACC.fasl
; Fast loading from bundle code/rc4.fasl.
; Fast loading from bundle code/hmac.fasl.
; Fast loading from bundle code/sha1.fasl.
; Fast loading from bundle code/iodefs.fasl.
; Fast loading from bundle code/iordefs.fasl.
; Fast loading from bundle code/efmacs.fasl.
; Fast loading /Applications/AllegroCL64/code/MIME.fasl
;;; Installing mime patch, version 1.
T
CL-USER(4): (require :mime)
NIL
CL-USER(5): (require :rfc2822)
; Fast loading /Applications/AllegroCL64/code/RFC2822.fasl
;;; Installing rfc2822 patch, version 1.
; Fast loading from bundle code/acldns.fasl.
T
CL-USER(6): (use-package :net.post-office)
T
CL-USER(7): (setq mb (make-imap-connection "mail.mac.com"
:user "xxxxxxxxxxxxxx"
:password "yyyyyyyyyyyyyyyy"))
#
CL-USER(8): (select-mailbox mb "inbox")
T
CL-USER(9): (mailbox-message-count mb)
3
CL-USER(10): (setq body (fetch-parts mb 3 "body[]"))
((3
("FLAGS" (:\\SEEN :$NOTJUNK) "BODY[]" "Return-path:
Received: from smtpin135-bge351000 ([10.150.68.135])
by ms183.mac.com (Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26
2008; 64bit)) with ESMTP id <0KCQ00CDK3UWUR10@ms183.mac.com> for
xxxxxxxxxxxxxx@me.com; Tue, 30 Dec 2008 20:16:08 -0800 (PST)
Original-recipient: rfc822;xxxxxxxxxxxxxx@me.com
Received: from rv-out-0506.google.com ([209.85.198.225])
by smtpin135.mac.com (Sun Java(tm) System Messaging Server 6.3-7.03 (built Aug
4 2008; 32bit)) with ESMTP id <0KCQ00KWA3U3H4E0@smtpin135.mac.com> for
xxxxxxxxxxxxxx@me.com (ORCPT xxxxxxxxxxxxxx@me.com); Tue,
30 Dec 2008 20:16:08 -0800 (PST)
X-Brightmail-Tracker: AAAAAgAAAUAAAAFU
Received: by rv-out-0506.google.com with SMTP id k40so5315646rvb.17 for
; Tue, 30 Dec 2008 20:16:08 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com;
s=gamma; h=domainkey-signature:received:received:message-id:date:from:to
:subject:mime-version:content-type;
bh=8dDsdMj/vZZL9PRpkSNUfojFFW/h1Az3Jku6kEgINls=;
b=Kpw6QRPqms9P52jKWlx3hohMEr/pfb49GuZ/TcQaWILOKy7bxWqbwkJMvPvCf+/Fjp
NIa4osARbT3Sw+b1VE3VK2Pl2Vk9bXCdz1UKewUFJigncGZgOnTWaD5BYyL1D53BZsub
jdAjlSdfea4xpkzCWGYHs2i7hN8bnUW/Locto=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma;
h=message-id:date:from:to:subject:mime-version:content-type;
b=LD5L76x33I1n41sNffoiQpeUCDB81Vp43e1NOmXTkLBOnJ+nmUO+FENEWbfJIE9xW5
HBuImoVxID1gtO68rTyr3Xez3n7AgRHR42CWIeCSUq1Iyz7bOzEvPWEq/YsIYy+8XJvT
J7rE/TgLjgQsC6tHayK7X/3PZ87ZLav8ECY/E=
Received: by 10.141.45.16 with SMTP id x16mr7619679rvj.7.1230696967987; Tue,
30 Dec 2008 20:16:07 -0800 (PST)
Received: by 10.141.115.4 with HTTP; Tue, 30 Dec 2008 20:16:07 -0800 (PST)
Message-id:
Date: Wed, 31 Dec 2008 13:16:07 +0900
From: aka
To: xxxxxxxxxxxxxx@me.com
Subject: =?ISO-2022-JP?B?GyRCRnxLXDhsJE43b0w+GyhC?=
MIME-version: 1.0
Content-type: multipart/alternative;
boundary=\"----=_Part_162342_20660604.1230696967980\"

------=_Part_162342_20660604.1230696967980
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

$BF|K\\8l$NK\\J8$G$9!#(B
$B$I$&8+$($k$N$+$J(B?

------=_Part_162342_20660604.1230696967980
Content-Type: text/html; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

$BF|K\\8l$NK\\J8$G$9!#(B
$B$I$&8+$($k$N$+$J(B?


------=_Part_162342_20660604.1230696967980--
")))
CL-USER(11): (search-mailbox mb '(:text "test"))
(1 2 3)
CL-USER(12): (search-mailbox mb '(:text "日本語"))
NIL
CL-USER(13): (close-connection mb)
T
CL-USER(14):

おお、普通に動く。
しかし、なんとACLのMIMEインターフェイスは、object -> multipart変換機能はあるが、multipart -> object変換機能がまだ未実装のようだ。なんじゃいな。CL-MIMEのお世話になるのかな。

2008年12月5日金曜日

aclにリモートからemacsで接続 [done]

できた。

http://www.franz.com/support/documentation/8.1/doc/operators/excl/new-start-emacs-lisp-interface.htm

でいける。手順としては、

まずlispをはしらせているホストのREPLで、

(start-emacs-lisp-interface t 1 9999 "/tmp/eli")

などとする。私はscreenをつかう人なので、screen上でやってデタッチ。
すると/tmp/eliファイルができる。

この/tmp/eliファイルをemacsをはしらせているホストのどこかにおく。
例えば、/tmp/eliとして置く。その後*scratch*にて、

(fi:start-interface-via-file "hoge" "*remote-lisp*" "/tmp/eli")

を評価する。hogeのところはIPアドレスまたはホスト名をいれる。
以上で完了。

NFSがつかえるなら、マウントして指定するだけでもよい。

2008年12月3日水曜日

aclにリモートからemacsで接続

いろいろ探ってみたが、ぱっと簡単な方法はないかも?
今のところ可能性があるのは、emacs lisp interfaceをファイルでやって、そのファイルをNFSで共有するというスタイル。ほんとにこんなことしなくちゃいかんのかな? eliじゃなくてslimeならできるのかな、、、eliに慣れちゃったのでそれもできれば避けたい。継続調査。