Your SlideShare is downloading. ×
0
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも!

1,589

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
1,589
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 他言語で作ったWEBページをLispでも!<br />Shibuya.Lisp#4 LT(2009/11/07) making<br />
  • 2. 自己紹介<br />making (まきんぐと呼びます)<br />twitter: making<br />url: http://ik.am<br />
  • 3. 発表するネタの背景(建前)<br />Lispは入門者(特にWEB系の人)に、何か作ってみようと思わせるのに不向き<br />何か作って公開するのが一番身に付くプログラミング勉強法だと思っている<br />とりあえずWEBページをLispでもつくれればいいんじゃないか<br />できれば他の言語のものと共存できる形で<br />
  • 4. 例えば<br />ここを色々な言語で作って埋め込めるといい<br />レイアウト<br />ヘッダー<br />ここは共通<br />サイドバー<br />メインコンテンツ<br />フッター<br />
  • 5. ということで<br />いろいろな言語でテンプレートを共有できるテンプレートエンジンを作ろう!(cl-whoもいいけど)<br />
  • 6. 他言語でテンプレートを共有できるテンプレートエンジン「BlackPine」!<br />C++で書いてSWIG(*)で各種言語用バインディングまとめて作成<br />cffi/python/perl/php/ruby/lua/java/guileに対応<br />インタフェースはPHPのSmarty風<br />$bp = new BlackPine();<br />$bp-&gt;setTemplateDir(&quot;./template&quot;);<br />$bp-&gt;assign(&quot;foo&quot;, &quot;hoge&quot;);<br />$bp-&gt;assign(&quot;bar&quot;, &quot;hoge&quot;);<br />echo $bp-&gt;toString(”layout.bp&quot;);<br />(defvar *bp* (make-instance &apos;black-pine))<br />(set-template-dir *bp* &quot;./template&quot;)<br />(assign *bp* &quot;foo&quot; &quot;hoge&quot;)<br />(assign *bp* &quot;bar&quot; &quot;hoge”)<br />(format t (to-string *bp* ”layout.bp&quot;))<br />* : http://swig.org<br />
  • 7. バインディング生成の流れ<br />cffi:defcfun<br />CLOS<br />SWIG<br />各言語用のメソッドラッパー関数群<br />各言語のFFIラッパー<br />各言語のクラス<br />C++で実装したクラス<br />SWIG用インタフェースファイル<br />DLL<br />.hをインクルードするのみ<br />まだC++<br />
  • 8. テンプレートファイル<br />Header!!<br />&lt;{$header}&gt;<br />header.bp<br />&lt;{include header.bp}&gt;<br />&lt;{$foo}&gt;<br />&lt;{$bar}&gt;<br />&lt;{include sidebar.bp}&gt;<br />&lt;{include footer. bp}&gt;<br />layout.bp<br />Sidebar!!<br />&lt;{$sidebar}&gt;<br />sidebar.bp<br />Footer!!<br />&lt;{$footer}&gt;<br />footer.bp<br />
  • 9. デモ<br />同じレイアウトのページを<br />CL on Hunchentoot<br />PHP on Apache<br />で<br />
  • 10. BlackPine<br />http://code.google.com/p/blackpine/<br />で公開中(バージョン0.3.1)<br />興味があれば使ってみてください<br />ドキュメントはほとんどない<br />subversion上の最新版はasdf-installに対応しています<br />条件分岐・繰り返しにまだ対応していないので実用的ではないですが、、、<br />あくまで他言語でテンプレートを共有することが目的<br />機能拡張はC++でプラグインを作成<br />ビルドにboost要ります。(さくらインターネットで動いていた)<br />ふつうのレンタルサーバーだとCL版はCGIでしか動きません。。。<br />背景の説明は完全に後付けです(CL対応は一番最後だし、、)<br />VPSか自宅サーバーで使うのがおすすめ<br />個人的にはcl-whoでいいんじゃないかと思ってる<br />
  • 11. おまけ(宣伝)<br />Twitterで退社時間を記録するTawisya(たうぃっしゃー)作りました<br />http://tawisya.ik.am<br />退社時に @taisyaを先頭につけてつぶやくだけでOK<br />http://tawisya.ik.am/user/{twitterのID}<br />でグラフ表示します<br />つかってください!<br />
  • 12. ご清聴ありがとうございました<br />

×