2008-01-01から1年間の記事一覧
(eval-when (:compile-toplevel :load-toplevel :execute) (require :quek) (require :drakma) (require :cl-json) (use-package :quek) (use-package :drakma)) (defpackage for-with-json) (defmacro! with-json (o!json &body body) (let* (($-symbols (c…
(in-package :you.example) (defmacro with-default-template ((&key (title "TODO")) &body body) `(html (:head (:title ,title)) (:body ,@body))) (defaction todo () (with-default-template (:title "TODO リスト") (:h1 "TODO リスト") (:form :actio…
clbuild は Common Lisp のライブ ラリをインストールしたりアップデートしたりするスクリプト。 各ライブラリのリポジトリから最新バージョンを自動的にチェックアウトしてくる。 常に unstable. Debian と一緒。インストールはシェルで次のように行なう。C…
携帯の SMS で認証認証コードを受信しなければならないらしい。 携帯で? 絶望した。 終了。 これで Python ともお別れだね。元気でね。さようなら。
amazon.com で注文していた http://www.amazon.com/Forth-Programmers-Handbook-Elizabeth-Rather/dp/1419675494/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1210036429&sr=8-1 が届いた。 注文したのが4/18。到着予定は5/15だったけど早く着いたんだ。 どうやら2…
defclass は defstruct にくらべると、:initarg や :initform を明示的に指定しなければならないあたりが面倒。 それを解決してくれのが defclass-star. ;; こんなふうに書くと (defclass* cat () ((eye-color "blue") (body-color "シールポイント") (lovel…
(def-primitive :|create| のことろで codes-index を 0 に設定してなかったので、2回目以降の呼び出しが何もせず終っていた。 修正した。(2005/05/05) 今日はちょっと初心にかえって小さな Forth もどきを作ってみた。 実装は Common Lisp で、参考にしたの…
mkdir って一度に複数のディレクトリを作成できるんだね。 /tmp/a $ mkdir -pv a b c/d/e /tmp/a $ /bin/mkdir: created directory `a' /bin/mkdir: created directory `b' /bin/mkdir: created directory `c' /bin/mkdir: created directory `c/d' /bin/mkd…
Perl で JS の arguments.callee 的なことしようと思ってハマった - IT戦記 の件を Forth で。Forth なら recurse がある。 :noname dup if dup . 1 - recurse else . then ; ok 10 swap ok .s <2> 10 47312420583688 ok execute 10 9 8 7 6 5 4 3 2 1 0 ok …
Common Lisp だとこんな感じ? (defmacro rlambda (lambda-list &body body) `(labels ((self ,lambda-list ,@body)) #'self)) (funcall (rlambda (n) (print n) (unless (zerop n) (self (1- n)))) 10) ん? むしろ引数に呼び出し元を持たせるのかな?
Slime の起動では次のように read-from-string して funcall している。 (progn (load "/slime/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.13550" :c…
Drakma - A Common Lisp HTTP client を使うときの注意事項。 *drakma-default-external-format* で external-format を指定しておく。 text/* 以外の Content-Type をテキストとして扱いたいときは、*text-content-types* に追加する。 Content-Length は省…
The Elephant Persistent Object Database で SQLite をバックエンドで使おうとしていつも失敗していたけど、どうやら sudo apt-get install sqlite3 していなかったぽい orz (require :elephant) (use-package :elephant) (open-store '(:clsql (:sqlite3 "…
http://www.weitz.de/hunchentoot/#mod_lisp インストール % sudo apt-get install cl-modlisp % sudo a2enmod lisp /etc/apache2/sites-enabled/hunchentoot を作成する。 % cat /etc/apache2/sites-enabled/hunchentoot LispServer 127.0.0.1 3000 "hunche…
CL-CONT で継続を使って単にページ遷移するだけの Web アプリケーション。 基本はこんな感じで、あとはマクロでくるめばそれらしいものになるかしら。 (eval-when (:compile-toplevel :load-toplevel :execute) (require :hunchentoot) (require :cl-who) (r…
以前http://cadr.g.hatena.ne.jp/g000001/20080318/1205851335でちょっとふれてあった CL-INTERPOL 便利だ。 頭に #? は付けなければならないけど、正規表現中のバックスラッシュを重ねる手間がはぶけるし、変数や式の埋め込みもできる。 これが常に有効でも…
cl-cont - A Common Lisp Delimited Continuations Library をちょっとさわってみた。 cl-cont は Common Lisp の継続ライブラリ。 (defvar *save*) (defun p1 () (print 1)) (defun p2 () (print 2)) (defun p3 () (print 3)) (defun f () (with-call/cc (l…
次のようにしてうまくいかなかった。 (defun fib (n) (loop for a = 0 then b for b = 1 then (+ a b) repeat n finally (return a))) b に (+ a b) をいれる時点で a は b になっていたから。 CLiki: Fibonacci を見ると、同じようなコードが載っていて、ど…
Hunchentoot と CL-WHO があれば Web アプリケーションが作れるが、Elephant も仲間に入れよう。 (eval-when (:compile-toplevel :load-toplevel :execute) (require :cl-who) (require :hunchentoot) (require :elephant) (use-package :hunchentoot)) ;; …
fold, map, for-each この中から一つ選ぶとしたらどれ? : jijixi's diary 次のコードの1番目が for-each, 2番目が fold, 3番目が map 相当。 ( scratchpad ) { 1 2 3 } [ . ] each 1 2 3 ( scratchpad ) 0 { 1 2 3 } [ + ] each . 6 ( scratchpad ) { } { 1…
Factor の UI のフォントは Vera とかいうので、日本語フォントではい。そのため日本語を表示できない。 それを解決するために、~/.factor-boot-rc で ui.freetype の ttf-name と ttf-path を上書きしてブートイメージを作りなおす。~/.factor-boot-rc ! -*…
Factor の UI のフォントが小さい。 その初期値を変える方法が以前 ML で流れていたのでメモ。~/.factor-boot-rc で dpi を適当に設定してブートイメージを作りなおす。 ! -*- mode: factor ; -*- USING: namespaces ui.freetype ; 90 dpi set-global dpi の…
のでもう python2.5 dev_appserver_main.py みたいにする必要がなくなった。
以下、ちょっと違うところがあるかと思います。ごめんなさい。 /tmp/dev_appserver.datastore なんてのが出来ています。 ./manage.py runserver で起動するのか? Google App Engine の Django 対応が進んでいる。 キーワードは manage.py, BaseModel, JSON,…
http://llvm.org/docs/Stacker.html Stacker という Forth ライクな言語を作成する LLVM のドキュメント。後半は "See projects/llvm-stacker/lib/compiler/StackerCompiler.cpp" という感じでかなり省略されているが、趣旨からするとソースを見てでいい。 …
The Django Form Validation Framework on Google App Engine で <input type="password"> をレンダリングする方法がわからない。できないのかな?
Django Form Validation Framework を Google App Engine で使ってみる。 参考サイト http://code.google.com/appengine/articles/djangoforms.html インポート この前のTODO アプリケーション でやってみる。djangoforms をインポートするが from google.ap…
Google App Engine で Django が使えるといっても全ての機能を使えるわけではない。セッションは使えないし、models も使えない。models が使えないと管理アプリケーションも使えない。テンプレート機能は webapp に組み込まれている。さらに、Django の for…
Google App Engine ではソケットが使えないが、そのかわりに URL Fetch API が用意されている。それで Twitter の API をたたいてみる。 参考サイト http://yamashita.dyndns.org/blog/google-app-engine-xml/ http://watcher.moe-nifty.com/memo/2007/04/tw…