CLISP は ffcall とセットでインストールしておけというメモ。
$ sudo port install ffcall
$ sudo port install clisp +dynffi
;; CLISP
> (ql:quickload :cffi)
参考:
macでclispでcffi - tmp
http://d.hatena.ne.jp/TAKUMA_N/20110429/1304058909
Is there a way to get the CLISP compiled with dynamic FFI support on Mac OS?
http://stackoverflow.com/questions/3901698/is-there-a-way-to-get-the-clisp-compiled-with-dynamic-ffi-support-on-mac-os
上記のステップを踏んで CLISP をインストールすれば Mac OS X で CL-DBI を使ってもエラーなく動作します。
(ql:quickload :dbi)
(defvar *db* (dbi-connect :sqlite3 :database-name "sample.db"))
(defvar query (dbi:prepare *db* "SELECT code, name FROM members"))
(defvar result (dbi:execute query))
;; dbi の fetch は plist の形で返される
(dbi:fetch result)
;; -> (:|code| 1 :|name| john)
;; なので特定のカラムのデータを抜き出すには getf を使う
(getf (dbi:fetch result) :|code|)
;; -> 2 ;; 実行する度に1レコード進む
中途半端ですが一旦メモ。
参考:
cl-dbi
http://quickdocs.org/cl-dbi/api
Common Lisp用のデータベースライブラリ「CL-DBI」を作りました - 八発白中
http://d.hatena.ne.jp/nitro_idiot/20120130/1327926575
Common LispのProperty Listユーティリティ「Multival-Plist」を公開しました - 八発白中
http://d.hatena.ne.jp/nitro_idiot/20120228/1330425112
#CommonLisp #Lisp #cl-dbi #ffcall #CLISP #MacOSX #MacPorts #QuickLisp #SQL #SQLite
SN 2013/07/21 00:29:10
Archives > CommonLisp_dbi_memo_1.html
Mac OS X (Mountain Lion) 環境で Gauche の SQLite3 ドライバーを入れる所でちょっとつまずいているのでメモ。
まずもって、 GitHub の mhayashi1120/Gauche-dbd-sqlite3 から、武蔵の日記さんのこちらの記事のやり方で試してみても、make の段階でエラーが出てしまい断念(勉強せいって話なんですが・・・)。
なので、こちらから gauche-dbd.sqlite3.080412b.tar.gz をダウンロードして gauche-package install で入れてみました。ここでもちょっとコツがあった。
# gauche-dbd.sqlite3.080412b.tar.gz を
# ダウンロードしたディレクトリに移動した上で
# リネーム
$ mv gauche-dbd.sqlite3.080412b.tar.gz gauche-dbd.sqlite3.tar.gz
# リネーム済みの圧縮ファイルを指定する形で install
$ sudo gauche-package install gauche-dbd.sqlite3.tar.gz
これで SQLite3 ドライバーのインストール自体はうまく行きました。
ただ、プログラミングGauche のP.368 前後に載ってる relation-accessor などは、SQLite には通用しないようで、発行した SELECT 文の各要素(カラムのデータ)にアクセスするには、dbi-get-value を使って番号でカラムのデータを取得するようです(ちょっと不便・・・)。
(use dbi)
(use util.match)
(use util.relation)
(use gauche.sequence)
(use gauche.parameter)
(define *db-name* "dbi:sqlite3:./schedule.db")
(define db (make-parameter #f))
;; ・・・
;; メモのため抜粋。いろいろ省略
(define (list-sch)
(let* ((result (dbi-do (db) "SELECT day, plan FROM plans"))
;; (getter (relation-accessor result)) ;; この子が動いてくれない
(plan-list (map
(lambda (row) (cons (dbi-get-value row 0) ;; "day"
(dbi-get-value row 1))) ;; "plan"
result)))
(for-each
(lambda (p)
(sch-print (car p) (cdr p)))
plan-list)))
また時間見つけてもうちょっと調べてみる。
#Gauche #MacOSX #SQLite #dbd #dbi #relation-accessor #dbi-get-value #Scheme #Lisp
SN 2013/07/17 19:18:23
Archives > Gauche_sqlite3_dbd_install_MacOSX.html
Vim memo
.vimrc を変更した時の再読み込み、リロード(よく忘れるのでメモ)
:source ~/.vimrc
ブラウザと同じように <Space> で <C-d>、<S-Space> で <C-u> にするには、Mac OS X 以外なら素直に、
:map <Space> <C-d>
:map <S-Space> <C-u>
でよし。
Mac OS X はなんでか <S-Space> を認識してくれない。
苦肉の策で、そういえばタブ送りも下に行ったり上に戻ったりするな、と思ったので、
:map <Tab> <C-d>
:map <S-Tab> <C-u>
としてみた。
ちなみに Google 日本語を入れてると <D-Space> でひらがなと英語の切り替え画面みたいのが出てきてしまう・・・。
#Vim #Vi #MacOSX #.vimrc
SN 2013/07/07 04:17:38
Archives > 20130707_Vim_memo.html