common lisp
展開形にsetfが出てくる場合には注意。 複数回評価したら問題が出る。 define-modify-macroでかけたらかく ; SLIME 2007-05-24 CL-USER> (defmacro incfw(x &optional (y 1)) `(setf ,x (+ ,x ,y))) INCFW CL-USER> (setf lst nil) NIL CL-USER> (incf (car …
メソッドの起動(invocation)と実行(execution)の分離(Thread-Per-MessageとWorker Thread) - qnzm.log(クニジマログ)をLispで。 なんかお題があると書きやすいな。qnzmネタにしてごめん。Thread-Per-Messageは単にワーカーに投げるだけなので飛ばして、Threa…
qnzmのGuarded Suspension - qnzm.log(クニジマログ)を読んでcommonlispでやってみた。 SBCL限定。 目標は ・SBCLでのスレッドの扱いの勉強 ・あんまり触ってないCLOSでやる ・これもあんまり触ってないパッケージを切ってみる の3つ。でそれぞれの感想「ス…
seriesのリファレンス ふつーにあるじゃん。http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/clm.html ここのContentsの http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node1.html 下の方にある http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node347.ht…
common lispでCGIを書くときのユーティリティを書く。 あまり重いものを書く能力はないので、簡単なものを作りたい。 lisp-cgi-utilsでいいじゃないか、とは思うんだけど、自分でつくることに意味がある。。。んだと思う。enctypeにmultipart/form-dataを指…
どう書く?orgの入出力の中継に手をつける。 コマンドライン引数は*posix-argv*に入ってくるらしい。 プロセスの起動はsb-ext:run-programでやるのがいいのかな? sb-posix:forkというのもあるので、fork→execする手もあるのか?と思ったらexecはない。 ??…
URLエンコード、デコードする関数。 sb-extを使ってるのでsbcl限定。 (make-array 0 :element-type '(unsigned-byte 8) :adjustable t :fill-pointer 0) 可変長の配列 (vector-push-extend (read-octet strm) vec) 配列を拡張して追加 (peek-char t strm nil…
clsqlでSQLiteにつないでみた。 CL-USER> (require 'clsql) NIL CL-USER> (require 'clsql-sqlite3) NIL CL-USER> (clsql:connect '("memory") :database-type :sqlite3) # CL-USER> (clsql:create-table 'tb0 '((id integer :not-null :unique :primary-key…
先週の木曜日から嫁の弟の嫁さんが生まれて7ヶ月の赤ちゃんをつれて遊びに来てる。 なんで来てるのかはぼかしておこう。 めちゃくちゃ可愛い。が、朝から元気よくバブーと起してくれるので、休日でも昼まで寝たりできない。。。(泣き) 眠いから箇条書きで。c…
眠いから適当。 (make-array 0 :element-type 'character :fill-pointer 0 :adjustable t) で可変長のcharacterのベクタを作る。 adjustableの指定で可変になるらしい。 fill-pointerの意味がよくわからん。 (vector-push-extend #\+ vec) でベクタに要素追…
久しぶりに続き。 どう書く?に出題がどんどんでちゃって、追い付く気配が全くない。 マイペースでやってくか。 今回も処理速度とか無視。 例題は通ったけどバグはあるかも。 ;;どう書く?org 分数を小数に展開 (defun calc(x) (multiple-value-bind (a b) (…
文字化け解決したっぽい。 [mysqld]にskip-character-set-client-handshakeって書いとくとサーバ側の文字コードをクライアントも使うらしい。 /etc/mysql/my.cnfはこう変更。mysqlはコメントした。 [mysqld] skip-character-set-client-handshake default-ch…
emacs/slimeから接続して結果を取得しても、shellからつないでも日本語が化ける。 char(10)なカラムに "あいうえお"をInsertすると結果は "あいう■"みたいにつぶれる。 char(12)だと "あいうえ"になったから、一文字3バイト??になってるのか??わからん…
commonlispでデータベースに接続したくなったので、cl-sqlを試す。 mysqlもclsqlも以前に入れていたけど放置してた。まずmysqlのパスワードを忘れているという問題が・・・。 次にclsqlでmysqlにつなごうとすると何やらエラーがでる。 なんだかlibmysqlclien…
こんな感じ。 マクロを使いたくなる年頃。 あまり意味はないところが将来見たら恥ずかしいんだろな。 (defmacro string-times(n str) `(apply #'concatenate (cons 'string (make-list ,n :initial-element ,str)))) (defun pyramid(n) (dotimes (var n) (fo…
久しぶりにどう書く.orgの続き。 僕が先に進よりお題が先に追加されてて永遠に追い付けないような気がしてきた。GUI表示ってどうやればいいの?というところからわからないので、「Common lisp GUI」で検索。 一番最初に見付かった日本語サイトにLTKって書い…
seriesで遅延評価されているか確認。 なんだかまたhaskellさわってみたくなってきた・・・。 前よりはわかること増えてるんじゃないかって思えるし。 ; SLIME 2006-11-26 CL-USER> ;;seriesで遅延評価の確認 ; No value CL-USER> (require :series) ("SB-CLT…
色々うまくできんかったので八つ当たり。0.括弧。色々な意味で使われてて、使われ方にも統一がないんじゃないか? (c d">*1 と (a b c d) と書くときがあっていちいち覚えていられない。 前置は別にいいと思う。僕は。 1.日本語の情報が少ない。 文法解説は…
map-fnを#Mってかけそうな雰囲気なのにダメ・・・。 no dispatch function defined for #\Mだって。なんか勘違いしているのだろうか???
series入れてみた。 リファレンスどっかにないかなぁ。 ; SLIME 2006-11-26 CL-USER> (require :asdf) NIL CL-USER> (require :asdf-install) ("ASDF-INSTALL") CL-USER> (asdf-install:install :series) Install where? 1) System-wide install: System in …
つぎは税込み価格への修正 ・・・lispの正規表現ライブラリしらん。 ・・・lispでの回答を先に見てしまった。まぁいいや。 cl-ppcreというのがあるのか。あとは調べて頑張る。 cl-ppcreのリファレンスは↓ここ http://weitz.de/cl-ppcre/ おお。結構便利だ。 …
(princ "hello world") っと。
mapcarとmapcしか使ったことなかった。 CL-USER> (maplist #'(lambda (a) (pprint a) (reverse a)) '(1 2 3)) (1 2 3) (2 3) (3) ((3 2 1) (3 2) (3)) CL-USER> (mapcon #'(lambda (a) (pprint a) (reverse a)) '(1 2 3)) (1 2 3) (2 3) (3) (3 2 1 3 2 3) h…
もう眠いからポインタだけ 文字ーバイト sb-ext:string-to-octetsバイトー文字 sb-ext:octets-to-string unsigned-bytehttp://lispuser.net/commonlisp/japanese.html
コインを減らす払い方。できたつもり。 ずいぶん書き直したなぁ。これであってんのかなぁ。 まぁいいか。 ;;コインを減らす払い方 c (defmacro make-coins(yen1 yen5 yen10 yen50 yen100 yen500) `'((1 ,yen1) (5 ,yen5) (10 ,yen10) (50 ,yen50) (100 ,yen1…
コインを減らす払い方 難しい。単純にロジックどう書けばいいかわからんぞ。 ひょっとして俺ってものすごいバカなのかも?(ショック)とりあえず、今書いたところまでのせとく。 関数を作るマクロを初めて書いた。 おもしろーい。 ;;コインを減らす払い方 (…
ちょっと何か書いてみようと思って、すぐに詰まった。 古典的なCGIを書こうと思ったんだけど、 ・文字コード変換 ・URLエンコード、デコード ってどうすりゃいいのかわからない。 標準ライブラリとかCLISP、SBCLのライブラリに入ってるのか、入ってないのか…
会社でとんでもないことが発生していたのでずいぶん間が空いた。 まぁ、だれも読んでないからいい。とりあえずサーバ側 面倒だからインデントも整形しない。 (require :sb-bsd-sockets) (defpackage "SBCL-FAST-CGI" (:use "COMMON-LISP" "SB-BSD-SOCKETS") …
CGIって #!sbclのパスその後にプログラムを書くって感じでいいと思うんだけど、sbclのパスってどこなんだろ? findで調べんのかなぁ、って思ってたら昔書いたメモ発見。 which xxxでパスがわかるってさ。 which sbclで /usr/bin/sbclて返ってきた。 というわ…
まずはApacheを入れる。Apacheのインストールと設定 インストール自体は簡単。 UbuntuだからSynapticパッケージマネージャでApacheを選ぶだけ。 あぁ簡単。 Synapticパッケージマネージャを立ち上げて「Apachem」で検索。 ん??Apacheって1.3xx系と2.xxx系…