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

Mais conteúdo relacionado

Mais procurados

西区勉強会用スライド
西区勉強会用スライド西区勉強会用スライド
西区勉強会用スライド
Hiromi Kai
 
Development C++ Community
Development C++ CommunityDevelopment C++ Community
Development C++ Community
Akira Takahashi
 

Mais procurados (10)

ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しようヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
ヤマハルーターとクラウドをVPNで繋いでDaaS環境を構築しよう
 
趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方趣味でのCosmos DBとの付き合い方
趣味でのCosmos DBとの付き合い方
 
西区勉強会用スライド
西区勉強会用スライド西区勉強会用スライド
西区勉強会用スライド
 
【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!【朗報】無音無限ループは禁術じゃなかった!
【朗報】無音無限ループは禁術じゃなかった!
 
Clova腹話術スキルの紹介
Clova腹話術スキルの紹介Clova腹話術スキルの紹介
Clova腹話術スキルの紹介
 
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめあと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
あと一つプログラミング言語を
覚えたら死ぬ! 脳みそがパンクしそうな
あなたのための
nodeJSことはじめ
 
mrubyで作るマイコンボード
mrubyで作るマイコンボードmrubyで作るマイコンボード
mrubyで作るマイコンボード
 
プログラミング言語を作る
プログラミング言語を作るプログラミング言語を作る
プログラミング言語を作る
 
Development C++ Community
Development C++ CommunityDevelopment C++ Community
Development C++ Community
 
Cumiki - エンジニアのための、ちょっといい感じのドキュメント作成ツール
Cumiki - エンジニアのための、ちょっといい感じのドキュメント作成ツールCumiki - エンジニアのための、ちょっといい感じのドキュメント作成ツール
Cumiki - エンジニアのための、ちょっといい感じのドキュメント作成ツール
 

Destaque

Destaque (7)

CategoLJについて
CategoLJについてCategoLJについて
CategoLJについて
 
Clojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分HadoopClojure+Leiningenで3分Hadoop
Clojure+Leiningenで3分Hadoop
 
Spring Rooで作るGWTアプリケーション
Spring Rooで作るGWTアプリケーションSpring Rooで作るGWTアプリケーション
Spring Rooで作るGWTアプリケーション
 
Ll tiger clojure
Ll tiger clojureLl tiger clojure
Ll tiger clojure
 
Thin Server Architectureでブログ作った #ikam
Thin Server Architectureでブログ作った #ikamThin Server Architectureでブログ作った #ikam
Thin Server Architectureでブログ作った #ikam
 
喋るJava!
喋るJava!喋るJava!
喋るJava!
 
Concourse CI Meetup Demo
Concourse CI Meetup DemoConcourse CI Meetup Demo
Concourse CI Meetup Demo
 

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

Semelhante a ShibuyalispTT#4 LT 他言語で作ったWEBページをLispでも! (15)

PHPカンファレンス関西2017 PHPにおけるDSL
PHPカンファレンス関西2017 PHPにおけるDSLPHPカンファレンス関西2017 PHPにおけるDSL
PHPカンファレンス関西2017 PHPにおけるDSL
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
 
Hiroshima.rb on github
Hiroshima.rb on githubHiroshima.rb on github
Hiroshima.rb on github
 
LibreOfficeの紹介 (2015-07-27 JISTA Kansai)
LibreOfficeの紹介 (2015-07-27 JISTA Kansai)LibreOfficeの紹介 (2015-07-27 JISTA Kansai)
LibreOfficeの紹介 (2015-07-27 JISTA Kansai)
 
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
 
Macで快適にプログラミング
Macで快適にプログラミングMacで快適にプログラミング
Macで快適にプログラミング
 
C 言語で実装するオレオレ Lispっぽい言語処理系
C 言語で実装するオレオレ Lispっぽい言語処理系C 言語で実装するオレオレ Lispっぽい言語処理系
C 言語で実装するオレオレ Lispっぽい言語処理系
 
関東LibreOffice勉強会とは/ What's Kanto LibreOffice Study Party
関東LibreOffice勉強会とは/ What's Kanto LibreOffice Study Party関東LibreOffice勉強会とは/ What's Kanto LibreOffice Study Party
関東LibreOffice勉強会とは/ What's Kanto LibreOffice Study Party
 
HTML5 アプリ開発
HTML5 アプリ開発HTML5 アプリ開発
HTML5 アプリ開発
 
Opening talk of Kanto LibreOffice Meetup May 2013
Opening talk of Kanto LibreOffice Meetup May 2013Opening talk of Kanto LibreOffice Meetup May 2013
Opening talk of Kanto LibreOffice Meetup May 2013
 
Linux環境でLibreOfficeをビルドしてみようかね
Linux環境でLibreOfficeをビルドしてみようかねLinux環境でLibreOfficeをビルドしてみようかね
Linux環境でLibreOfficeをビルドしてみようかね
 
LL Onsen 2008 OpenPrinting
LL Onsen 2008 OpenPrintingLL Onsen 2008 OpenPrinting
LL Onsen 2008 OpenPrinting
 
関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)関数型言語とオブジェクト指向言語(序章)
関数型言語とオブジェクト指向言語(序章)
 
PHP でも活用できる Makefile
PHP でも活用できる MakefilePHP でも活用できる Makefile
PHP でも活用できる Makefile
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
 

Mais de Toshiaki Maki

マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
Toshiaki Maki
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
Toshiaki Maki
 

Mais de Toshiaki Maki (20)

From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugFrom Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
 
Concourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyoConcourse x Spinnaker #concourse_tokyo
Concourse x Spinnaker #concourse_tokyo
 
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1tServerless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
Serverless with Spring Cloud Function, Knative and riff #SpringOneTour #s1t
 
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
決済システムの内製化への旅 - SpringとPCFで作るクラウドネイティブなシステム開発 #jsug #sf_h1
 
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
Spring Boot Actuator 2.0 & Micrometer #jjug_ccc #ccc_a1
 
Spring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & MicrometerSpring Boot Actuator 2.0 & Micrometer
Spring Boot Actuator 2.0 & Micrometer
 
Open Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjpOpen Service Broker APIとKubernetes Service Catalog #k8sjp
Open Service Broker APIとKubernetes Service Catalog #k8sjp
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1Introduction to Spring WebFlux #jsug #sf_a1
Introduction to Spring WebFlux #jsug #sf_a1
 
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoBOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyo
 
Why PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring BootWhy PCF is the best platform for Spring Boot
Why PCF is the best platform for Spring Boot
 
Zipkin Components #zipkin_jp
Zipkin Components #zipkin_jpZipkin Components #zipkin_jp
Zipkin Components #zipkin_jp
 
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
マイクロサービスに必要な技術要素はすべてSpring Cloudにある #DO07
 
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoSpring Framework 5.0による Reactive Web Application #JavaDayTokyo
Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
 
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug実例で学ぶ、明日から使えるSpring Boot Tips #jsug
実例で学ぶ、明日から使えるSpring Boot Tips #jsug
 
Spring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjugSpring ❤️ Kotlin #jjug
Spring ❤️ Kotlin #jjug
 
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
Event Driven Microservices with Spring Cloud Stream #jjug_ccc #ccc_ab3
 
Managing your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CIManaging your Docker image continuously with Concourse CI
Managing your Docker image continuously with Concourse CI
 
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...Data Microservices with Spring Cloud Stream, Task,  and Data Flow #jsug #spri...
Data Microservices with Spring Cloud Stream, Task, and Data Flow #jsug #spri...
 
Short Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyoShort Lived Tasks in Cloud Foundry #cfdtokyo
Short Lived Tasks in Cloud Foundry #cfdtokyo
 

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