Shelly
- 5. 作ったもの
• Clack • CL-Markup
• Caveman • CL-Project
• ningle • Shelly
• CL-TEST-MORE
• CL-DBI
See github.com/fukamachi
- 6. 作ったもの
• Clack • CL-Markup
• Caveman • CL-Project
• ningle • Shelly ←
• CL-TEST-MORE
• CL-DBI
See github.com/fukamachi
- 7. Shelly
• 普段Common Lisp書いてる
• スクリプトはPerlで書いてる
• 「Common Lispでもスクリプト!」
• ワンライナー?
- 9. Common Lispの場合
$ ccl --eval ‘(ql:quickload :clack)’
$ ccl --eval ‘(ql:quickload ‘(:clack :ningle))’
シングルクォートで
シェルスクリプトエラー!!!
$ ccl --eval ‘(ql:quickload (quote (:clack :ningle)))’
- 10. Common Lispの場合
$ ccl --eval ‘(ql:quickload :clack)’
--eval ‘(clack:clackup #p”app.lisp” :server :fcgi :port 3000)’
$ clisp -x ‘(ql:quickload :clack)’
-x ‘(clack:clackup #p”app.lisp” :server :fcgi :port 3000)’
$ cmucl -eval ‘(ql:quickload :clack)’
-eval ‘(clack:clackup #p”app.lisp” :server :fcgi :port 3000)’
- 13. Shellyの場合
ライブラリのロード
• shly -Lclack clackup --server fcgi --port 3000
- 14. Shellyの場合
ライブラリのロード
• shly -Lclack clackup --server fcgi --port 3000
呼び出す関数
- 15. Shellyの場合
キーワード引数
ライブラリのロード
• shly -Lclack clackup --server fcgi --port 3000
呼び出す関数
- 16. Shellyの場合
キーワード引数
ライブラリのロード
• shly -Lclack clackup --server fcgi --port 3000
呼び出す関数
(clackup :server :fcgi :port 3000)
- 17. Shellyとは
• Common Lispの関数をシェルコマンドのよ
うに呼び出すラッパースクリプト
• 処理系の差異を吸収
• いろいろ良きに計らってくれる
• (Perl製)
- 18. Shellyまとめ
• Common
Lispの関数をシェルコマンドのように
実行するラッパー
• ルールを覚えれば簡単
• shly ql:quickload :clack → (ql:quickload :clack)
• -L すると、同名のパッケージのシンボルはパッケージ名不要
• cl, cl-user, shellyパッケージはパッケージ指定不要
• CL処理系のオプション差異を吸収
- 21. 使用例1 : Quicklisp & ASDF
$ shly ql:update-all-dists --prompt nil
$ shly ql:system-apropos clack
$ shly asdf:test-system :clack
- 24. 使用例4 : Clack
$ shly -Lclack clackup app.lisp --port 3000
$ shly -Lclack clack.app.directory:start-server
- 28. 自分のコマンドを追加
• .ccl-init.lisp に install-from-github を追加
(defun install-from-github (username repos)
(zerop
(asdf:run-shell-command
"git clone https://github.com/~A/~A.git ~~/quicklisp/local-projects/~:*~A"
username repos)))
• shly install-from-github fukamachi clack
Editor's Notes
- \n
- \n
- \n
- 京都のはてなという会社の、\n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n
- \n