Shelly

9,323 views

Published on

Kyoto.lisp TT

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
9,323
On SlideShare
0
From Embeds
0
Number of Embeds
7,569
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \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
  • Shelly

    1. 1. Shelly株式会社はてなid:nitro_idiot 2012/05/12 Kyoto.lisp #1
    2. 2. 深町英太郎
    3. 3. id:nitro_idiot
    4. 4. 作ったもの• Clack • CL-Markup• Caveman • CL-Project• ningle • Shelly• CL-TEST-MORE• CL-DBI See github.com/fukamachi
    5. 5. 作ったもの• Clack • CL-Markup• Caveman • CL-Project• ningle • Shelly ←• CL-TEST-MORE• CL-DBI See github.com/fukamachi
    6. 6. Shelly• 普段Common Lisp書いてる• スクリプトはPerlで書いてる• 「Common Lispでもスクリプト!」 • ワンライナー?
    7. 7. Perlの場合• plackup app.psgi --server Starman --port 3000
    8. 8. Common Lispの場合$ ccl --eval ‘(ql:quickload :clack)’$ ccl --eval ‘(ql:quickload ‘(:clack :ningle))’ シングルクォートで シェルスクリプトエラー!!!$ ccl --eval ‘(ql:quickload (quote (:clack :ningle)))’
    9. 9. 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)’
    10. 10. Shellyの場合
    11. 11. Shellyの場合• shly -Lclack clackup --server fcgi --port 3000
    12. 12. Shellyの場合 ライブラリのロード• shly -Lclack clackup --server fcgi --port 3000
    13. 13. Shellyの場合 ライブラリのロード• shly -Lclack clackup --server fcgi --port 3000 呼び出す関数
    14. 14. Shellyの場合 キーワード引数 ライブラリのロード• shly -Lclack clackup --server fcgi --port 3000 呼び出す関数
    15. 15. Shellyの場合 キーワード引数 ライブラリのロード• shly -Lclack clackup --server fcgi --port 3000 呼び出す関数 (clackup :server :fcgi :port 3000)
    16. 16. Shellyとは• Common Lispの関数をシェルコマンドのよ うに呼び出すラッパースクリプト• 処理系の差異を吸収• いろいろ良きに計らってくれる• (Perl製)
    17. 17. Shellyまとめ• Common Lispの関数をシェルコマンドのように 実行するラッパー • ルールを覚えれば簡単 • shly ql:quickload :clack → (ql:quickload :clack) • -L すると、同名のパッケージのシンボルはパッケージ名不要 • cl, cl-user, shellyパッケージはパッケージ指定不要• CL処理系のオプション差異を吸収
    18. 18. Shellyのインストール(ql:quickload :shelly)(shelly:install) orcurl -L http://xrl.us/shly | LISP_IMPL=ccl perl - install ※Kyoto.lispにQuicklispのアップデートが間に合いませんでした 明日以降またお試しください ※インストール前に(ql:update-all-dists)でQuicklispを最新にしてください
    19. 19. 使用例
    20. 20. 使用例1 : Quicklisp & ASDF$ shly ql:update-all-dists --prompt nil$ shly ql:system-apropos clack$ shly asdf:test-system :clack
    21. 21. 使用例2 : Drakma$ shly -Ldrakma http-request http://www.hatena.ne.jp/
    22. 22. 使用例3 : CL-Project$ shly -Lcl-project make-project ~/src/sampleapp
    23. 23. 使用例4 : Clack$ shly -Lclack clackup app.lisp --port 3000$ shly -Lclack clack.app.directory:start-server
    24. 24. ライブラリを作るだけで関数がシェルコマンドに
    25. 25. ライブラリを作らなくても関数がシェルコマンドに
    26. 26. 自分のコマンドを追加• shly hogehoge で何か実行させたい• cl-userに関数を追加するだけ!!!!
    27. 27. 自分のコマンドを追加 • .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
    28. 28. Enjoy Scriptingwith Common Lisp!!
    29. 29. おわり
    30. 30. おわり• ご清聴ありがとうございました。 id:nitro_idiot fukamachi.github.com

    ×