2011/09/25

scan-file*

(defun remove-from-keyword-args (args &rest keywords)
(loop for (a b) on args by #'cddr
unless (member a keywords :test #'eq)
append (list a b)))

(series::defS scan-file* (name &rest args-for-open &key (reader #'read-line) &allow-other-keys)
"like scan-file. accept options for open."
(series::fragl ((name) (reader) (args-for-open)) ; args
((items t)) ; rets
((items t) ; aux
(lastcons cons (list nil))
(lst list))
() ; alt
((setq lst lastcons) ; prolog
(with-open-stream (f (apply #'open name :direction
:input (remove-from-keyword-args args-for-open :reader)))
(cl:let ((done (list nil)))
(loop
(cl:let ((item (cl:funcall reader f nil done)))
(when (eq item done)
(return nil))
(setq lastcons (setf (cdr lastcons) (cons item nil)))))))
(setq lst (cdr lst)))
((if (null lst) (go series::end)) ; body
(setq items (car lst))
(setq lst (cdr lst)))
() ; epilog
() ; wraprs
:context) ; impure
:optimizer
(series::apply-literal-frag
(cl:let ((file (series::new-var 'file)))
`((((reader)) ; args
((items t)) ; rets
((items t) (done t (list nil))) ; aux
() ; alt
() ; prolog
((if (eq (setq items (cl:funcall reader ,file nil done)) done) ; body
(go series::end)))
() ; epilog
((#'(lambda (code) ; wraprs
(list 'with-open-file
'(,file ,name :direction :input ,@(remove-from-keyword-args args-for-open :reader))
code)) :loop))
:context) ; impure
,reader)))) ; これは何?

2011/09/18

Heroku で Lokka するメモ

# rvm 関連
rvm use ruby-1.9.2
rvm gemset create sumire-lokka
rvm gemset use sumire-lokka
gem env
gem install bundler

# Lokka
gem install heroku bundler
git clone git://github.com/komagata/lokka.git
cd lokka
heroku create sumire
git push heroku master
heroku rake db:setup
heroku apps:open

# ローカルから Heroku を DB を反映
gem install taps
heroku db:push --confirm sumire sqlite://db/development.sqlite3

# メンテナンス画面のオン、オフ
heroku maintenance:on
heroku maintenance:off

「すごく簡単だ」

村上春樹「ダンス・ダンス・ダンス」より

2011/09/10

Rails3 セットアップメモ

rvm と bundler 使うと綺麗にセットアップできるな。 Common Lisp にもこういうの欲しい。

# rvm 関連
rvm use ruby-1.9.2
rvm gemset create sumire
rvm gemset use sumire
gem env
gem install bundler

# プロジェクトディレクトリの作成
mkdir sumire
cd sumire

# Gemfile 作成
cat > Gemfile
source 'http://rubygems.org'
gem 'rails', '3.1.0'
C-d

# bundle
bundle install --path vendor/bundle
bundle exec rails new .
# ↑でエラーが出るが気にせず次へ
bundle install

# 起動 http://localhost:3000/
bundle exec rails s