* Menu
* memo : 暫定まとめ
自分が置いているCL系の情報にアクセスしやすいよう、もう一つ上の階層にページを作る予定なのだけれど、とりあえず列挙。
* memo : MacPorts で SBCL をインストール
ソースを消されないようにキープモードでインストールする。
upgrade の時は注意。
$ sudo port -k install sbcl
upgrade の時は注意。
* memo : xyzzy lisp FFI
いつかちゃんとまとめたい。
- 基本
- データ型関連
- int -> c:int, double -> c:double, ...
- ポインタ型は「(c:char *)」というようなリストの形で表現
- C の構造体は c:define-c-struct で定義
- C の関数を呼ぶ関連
- c:define-dll-entry で C 関数のインターフェースを作る
- c:define-dll-entry RETURN-TYPE NAME (&rest ARGS) DLL-NAME &optional EXPORT-NAME
- RETURN-TYPE 関数の戻り値
- NAME 関数名
- ARGS 関数の引数
- DLL-NAME DLLのパス
- EXPORT-NAME Cの関数名 (DLLでexportされているもの)
- データのやり取りは chunk を介する
- C から呼べる関数(callback関数)を作る関連
- c:defun-c-callable で作る
- c:defun-c-callable RETURN-TYPE NAME (&rest ARGS) &body BODY
- RETURN-TYPE 関数の戻り値の型
- NAME 関数名
- ARGS 関数の引数
- BODY 関数の定義
- データのやり取りは chunk を介する、ということで同上
- 注意点
- 下手をすると簡単に xyzzy が落ちることを頭に入れておく
- gc に注意する
- gc で回収されないオブジェクトを作らない
- C の関数が動いているときに chunk が gc されないように気をつける
- ポインタ型は全部「void *」とみなしても問題ない
- 「void *」は「unsigned long (32bit unsigned integer)」と等価として扱うこともできる
- xyzzy の未実装やバグにも注意
- その他、外部とのやり取り
- dde
- ole
* 2008-03-24 :
- なにやら懐かしいものが。
- http://d.hatena.ne.jp/tamago_girai/20080323#p1
- ついでにソースのありかも示しておきましょう→http://raido.sakura.ne.jp/southly/xyzzy/site-lisp/play-turtle.lzh
- winapiというかお絵かきですけどね。この手のお絵かきならXyzzyWikiのtrash辺りにいくつかありますね。
- winapiでというかWindowを作るやつでちゃんとしたのというとkimuraさんのSPI on xyzzyが思い当たります。
- popwindow.lなんてものも作られました。
* memo : apacheの設定メモ
userdirを使えるようにするために毎回調べているのでメモ。
cgiやら.httacessやらを許可するためにuserdir.confの方を書き換える。
面倒なので両方Allで。
参考: http://x68000.q-e-d.net/~68user/webcgi/server-config.html
cd /etc/apache2/mods-enabled/ ln -s ../mods-available/userdir.conf . ln -s ../mods-available/userdir.load .
cgiやら.httacessやらを許可するためにuserdir.confの方を書き換える。
面倒なので両方Allで。
<IfModule mod_userdir.c> UserDir public_html UserDir disabled root <Directory /home/*/public_html> AllowOverride All Options All </Directory> </IfModule>
参考: http://x68000.q-e-d.net/~68user/webcgi/server-config.html
* memo : asdf を使う
さくらのサーバにインストールした clisp で asdf を使うための一連の作業をメモ。
clisp には asdf が付属していないのでソースを取得する。
ついでにコンパイルしておく。
ここからしばらく clisp での作業。
$HOME/local/lisp/ を lisp ファイル置き場にすることにしたので、ここをロードパスに追加する。
asdf.lisp をロード。
asdf:*central-registry* にパスを追加。$HOME/local/lisp/systems/ にした。
ここに *.asd ファイルへのシンボリックリンクを置くようにする。
この状態でGUESSを使えるようにする。
ソースをダウンロードして、展開、シンボリックリンクを張る。
clisp でロード。初回はコンパイルした上でロードしてくれる。
clisp での作業は初期化ファイルにでも書いておく。clispの場合は $HOME/.clisprc 辺り。
clisp には asdf が付属していないのでソースを取得する。
$ cd $HOME/local/lisp $ wget "http://cclan.cvs.sourceforge.net/*checkout*/cclan/asdf/asdf.lisp" $ clisp -c asdf.lisp
ついでにコンパイルしておく。
ここからしばらく clisp での作業。
$HOME/local/lisp/ を lisp ファイル置き場にすることにしたので、ここをロードパスに追加する。
[1]> (push (merge-pathnames "local/lisp/" (user-homedir-pathname)) custom:*load-paths*) (#P"/home/raido/local/lisp/" #P"./" "~/lisp/**/")
asdf.lisp をロード。
[2]> (load '#:asdf) ;; Loading file /home/raido/local/lisp/asdf.fas ... ;; Loaded file /home/raido/local/lisp/asdf.fas T
asdf:*central-registry* にパスを追加。$HOME/local/lisp/systems/ にした。
ここに *.asd ファイルへのシンボリックリンクを置くようにする。
[3]> (push (merge-pathnames "local/lisp/systems/" (user-homedir-pathname)) asdf:*central-registry*) (#P"/home/raido/local/lisp/systems/" *DEFAULT-PATHNAME-DEFAULTS*)
この状態でGUESSを使えるようにする。
ソースをダウンロードして、展開、シンボリックリンクを張る。
$ cd $HOME/local/src/lisp $ wget http://lispuser.net/files/guess.tar.gz $ tar xf guess.tar.gz $ cd ../../lisp/systems/ $ ln -s $HOME/local/src/lisp/guess_0.1.0/guess.asd .
clisp でロード。初回はコンパイルした上でロードしてくれる。
[4]> (asdf:oos 'asdf:load-op :guess) ; loading system definition from /home/raido/local/lisp/systems/guess.asd into #<PACKAGE ASDF0> ;; Loading file /home/raido/local/lisp/systems/guess.asd ... ; registering #<SYSTEM :GUESS #x20538B31> as GUESS ;; Loaded file /home/raido/local/lisp/systems/guess.asd ;; Compiling file /home/raido/local/src/lisp/guess_0.1.0/guess.lisp ... ;; Wrote file /home/raido/local/src/lisp/guess_0.1.0/guess.fas ;; Loading file /home/raido/local/src/lisp/guess_0.1.0/guess.fas ... ;; Loaded file /home/raido/local/src/lisp/guess_0.1.0/guess.fas 0 errors, 0 warnings NIL以上。
clisp での作業は初期化ファイルにでも書いておく。clispの場合は $HOME/.clisprc 辺り。
(push (merge-pathnames "local/lisp/" (user-homedir-pathname)) custom:*load-paths*) (load '#:asdf) (push (merge-pathnames "local/lisp/systems/" (user-homedir-pathname)) asdf:*central-registry*) (asdf:oos 'asdf:load-op :guess)ロードするものが多くなって起動に時間がかかるようになったら、メモリイメージを保存して起動時にこっちを読み込むようにする。
* memo : 調べる
* memo : clispをさくらインターネットにインストール
clispはサーバーのOSバージョンが上がっても動いていたけど、clispの方もバージョンが上がっているので入れなおしてみた。
いまいちうまくいっていないのでもう一回入れなおそう。
必要なライブラリであるlibsigsegvがきっちり認識されない。
libsigsegvはコンパイルはできるがチェックでエラーが出る状態。
ということで --ignore-absence-of-libsigsegv を追加して作成。
本当は --with-module=bindings/glibc も指定する予定だったけれどうまくいかず、結局以下のような感じでインストール。
できあがった物。
いまいちうまくいっていないのでもう一回入れなおそう。
必要なライブラリであるlibsigsegvがきっちり認識されない。
libsigsegvはコンパイルはできるがチェックでエラーが出る状態。
$make check Making check in src Making check in tests make check-TESTS Test passed. PASS: sigsegv1 Test passed. PASS: sigsegv2 FAIL: stackoverflow1 FAIL: stackoverflow2 =================== 2 of 4 tests failed =================== *** Error code 1 Stop in /home/raido/local/src/libsigsegv-2.5/tests. *** Error code 1 Stop in /home/raido/local/src/libsigsegv-2.5/tests. *** Error code 1 Stop in /home/raido/local/src/libsigsegv-2.5.
ということで --ignore-absence-of-libsigsegv を追加して作成。
本当は --with-module=bindings/glibc も指定する予定だったけれどうまくいかず、結局以下のような感じでインストール。
cd local/src/ wget http://ring.sakura.ad.jp/archives/GNU/clisp/release/2.43/clisp-2.43.tar.bz2 tar xf clisp-2.43.tar.bz2 cd clisp-2.43 ./configure --ignore-absence-of-libsigsegv --prefix=$HOME/local --with-module=rawsock --with-module=wildcard cd src/ make make check make install
できあがった物。
$ clisp --version GNU CLISP 2.43 (2007-11-18) (built 3410886803) (memory 3410887057) Software: GNU C 3.4.4 [FreeBSD] 20050518 gcc -g -O2 -Igllib -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type -Wmissing-declarations -Wno-sign-compare -O2 -fexpensive-optimizations -falign-functions=4 -DUNICODE -DDYNAMIC_FFI -DNO_GETTEXT -DNO_SIGSEGV -I. -x none libavcall.a libcallback.a -lreadline -lncurses SAFETY=0 HEAPCODES STANDARD_HEAPCODES SPVW_BLOCKS SPVW_MIXED TRIVIALMAP_MEMORY libreadline 5.0 Features: (READLINE REGEXP SYSCALLS I18N LOOP COMPILER CLOS MOP CLISP ANSI-CL COMMON-LISP LISP=CL INTERPRETER SOCKETS GENERIC-STREAMS LOGICAL-PATHNAMES SCREEN FFI UNICODE BASE-CHAR=CHARACTER PC386 UNIX) C Modules: (clisp i18n syscalls regexp readline) Installation directory: /home/raido/local/lib/clisp-2.43/ User language: ENGLISH Machine: I386 (I386) www658.sakura.ne.jp [59.106.19.88]
* memo : w3m をさくらインターネットにインストール
thread無しとimage無しがポイントだった。
cd local/src/ wget http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.0.tar.gz tar xf gc-7.0.tar.gz cd gc-7.0 ./configure --prefix=$HOME/local --enable-cplusplus --enable-threads=none make make install cd .. wget http://jaist.dl.sourceforge.net/sourceforge/w3m/w3m-0.5.2.tar.gz tar xf w3m-0.5.2.tar.gz cd w3m-0.5.2 make distclean ./configure --prefix=$HOME/local --with-gc=$HOME/local --enable-image=no make make install
* memo : Subversionをさくらインターネットにインストール
案の定、昔入れたSubversionが動かなくなっていたので、以下のページを参考にインストールしなおしてみた。
空繰再繰 - Subversionをさくらインターネットにインストール
http://nyarla.net/blog/subversion1
何とかうまくいった模様。
空繰再繰 - Subversionをさくらインターネットにインストール
http://nyarla.net/blog/subversion1
何とかうまくいった模様。
mkdir -p $HOME/local/src cd local/src/ wget http://jaist.dl.sourceforge.net/sourceforge/swig/swig-1.3.33.tar.gz tar xf swig-1.3.33.tar.gz cd swig-1.3.33 which python ./configure --prefix=$HOME/local --with-python=/usr/local/bin/python make make install cd .. wget http://ftp.riken.jp/net/apache/apr/apr-1.2.12.tar.gz tar xf apr-1.2.12.tar.gz cd apr-1.2.12 ./configure --prefix=$HOME/local --disable-static make make install cd .. wget http://ftp.riken.jp/net/apache/apr/apr-util-1.2.12.tar.gz tar xf apr-util-1.2.12.tar.gz cd apr-util-1.2.12 ./configure --prefix=$HOME/local --with-apr=$HOME/local --disable-static make make install cd .. wget http://subversion.tigris.org/downloads/subversion-1.4.6.tar.bz2 wget http://subversion.tigris.org/downloads/subversion-deps-1.4.6.tar.bz2 tar xf subversion-1.4.6.tar.bz2 tar xf subversion-deps-1.4.6.tar.bz2 cd subversion-1.4.6 which apr-1-config ./configure --prefix=$HOME/local --without-brekelay-db --with-swig=$HOME/local/bin/swig --with-apr=$HOME/local/bin/apr-1-config -with-apr-util=$HOME/local/bin/apu-1-config --disable-static make make install
* memo : sakura server
http://support.sakura.ad.jp/page/news/20071122-003.news
OSがバージョンアップするそうだから、ビルドしなおさないといけないな。
OSがバージョンアップするそうだから、ビルドしなおさないといけないな。
- clisp
- svn
* memo :
- Buffer::goto_char (Point &point, point_t goal) const
- point 現在位置
- goal 目標位置
- b_contents.p1 (point-min)相当
- b_contents.p2 (point-max)相当
- b_nchars バッファのサイズ
* memo :
なんか最近Lisp書いてないので書き捨ててみた
C++用
C++用
(defun foo () (interactive) (let ((l nil)) (save-excursion (goto-char (point-min)) (while (scan-buffer "\\bstd::\\(\\sw\\|\\s_\\)+" :regexp t :no-dup t) (pushnew (match-string 0) l :test #'string=))) (dolist (x l) (insert (format nil "using ~a;~%" x))))) (defun bar () (interactive) (perform-replace "\\bstd::\\(\\(\\sw\\|\\s_\\)+\\)" "\\1" nil t nil nil))