Soumettre la recherche
Mettre en ligne
Clojure Web Development
•
9 j'aime
•
1,254 vues
Hong Jiang
Suivre
Slides for a talk given at the first China Clojure Users meeting.
Lire moins
Lire la suite
Technologie
Design
Signaler
Partager
Signaler
Partager
1 sur 13
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
Shreedhar Ganapathy
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
Matt Raible
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
Matt Raible
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Arun Gupta
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
Ariya Hidayat
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
Os Johnson
Os Johnson
oscon2007
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 Workshop
Arun Gupta
Recommandé
JAX-RS JavaOne Hyderabad, India 2011
JAX-RS JavaOne Hyderabad, India 2011
Shreedhar Ganapathy
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
Matt Raible
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
Matt Raible
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Spark IT 2011 - Developing RESTful Web services with JAX-RS
Arun Gupta
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
Ariya Hidayat
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
Os Johnson
Os Johnson
oscon2007
Spark IT 2011 - Java EE 6 Workshop
Spark IT 2011 - Java EE 6 Workshop
Arun Gupta
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
Matt Raible
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018
Matt Raible
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019
Matt Raible
Choosing a Java Web Framework
Choosing a Java Web Framework
Will Iverson
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
Matt Raible
Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010
Matt Raible
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Matt Raible
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Matt Raible
How to Win at UI Development in the World of Microservices - THAT Conference ...
How to Win at UI Development in the World of Microservices - THAT Conference ...
Matt Raible
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Matt Raible
Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019
Matt Raible
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
Matt Raible
What's New in Spring 3.1
What's New in Spring 3.1
Matt Raible
Java Web Application Security - UberConf 2011
Java Web Application Security - UberConf 2011
Matt Raible
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
Matt Raible
Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021
Matt Raible
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
Arun Gupta
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
VMware Hyperic
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Matt Raible
Apache Roller, Acegi Security and Single Sign-on
Apache Roller, Acegi Security and Single Sign-on
Matt Raible
Clojure cnclojure-meetup
Clojure cnclojure-meetup
sunng87
How to Build an HTML5 Game in Half a day
How to Build an HTML5 Game in Half a day
Hong Jiang
Contenu connexe
Tendances
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
Matt Raible
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018
Matt Raible
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019
Matt Raible
Choosing a Java Web Framework
Choosing a Java Web Framework
Will Iverson
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
Matt Raible
Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010
Matt Raible
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Matt Raible
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Matt Raible
How to Win at UI Development in the World of Microservices - THAT Conference ...
How to Win at UI Development in the World of Microservices - THAT Conference ...
Matt Raible
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Matt Raible
Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019
Matt Raible
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
Matt Raible
What's New in Spring 3.1
What's New in Spring 3.1
Matt Raible
Java Web Application Security - UberConf 2011
Java Web Application Security - UberConf 2011
Matt Raible
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
Matt Raible
Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021
Matt Raible
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
Arun Gupta
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
VMware Hyperic
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Matt Raible
Apache Roller, Acegi Security and Single Sign-on
Apache Roller, Acegi Security and Single Sign-on
Matt Raible
Tendances
(20)
Seven Simple Reasons to Use AppFuse
Seven Simple Reasons to Use AppFuse
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019
Choosing a Java Web Framework
Choosing a Java Web Framework
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Mobile Development with Ionic, React Native, and JHipster - ACGNJ Java Users ...
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
Spring Boot APIs and Angular Apps: Get Hip with JHipster! KCDC 2019
How to Win at UI Development in the World of Microservices - THAT Conference ...
How to Win at UI Development in the World of Microservices - THAT Conference ...
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Mobile Development with Ionic, React Native, and JHipster - AllTheTalks 2020
Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
What's New in Spring 3.1
What's New in Spring 3.1
Java Web Application Security - UberConf 2011
Java Web Application Security - UberConf 2011
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
JavaOne India 2011 - Running your Java EE 6 Apps in the Cloud
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Apache Roller, Acegi Security and Single Sign-on
Apache Roller, Acegi Security and Single Sign-on
En vedette
Clojure cnclojure-meetup
Clojure cnclojure-meetup
sunng87
How to Build an HTML5 Game in Half a day
How to Build an HTML5 Game in Half a day
Hong Jiang
Periodico
Periodico
yordinblanquicet
Alur pendaftaran ppdb
Alur pendaftaran ppdb
Kadek Krisna Aguero
Liteputer 2011-en
Liteputer 2011-en
Topshowpro Rental
Powerpoint
Powerpoint
krusan03
Yordinmnmn
Yordinmnmn
yordinblanquicet
Keep multimedia in the classroom powerpoint 5
Keep multimedia in the classroom powerpoint 5
trittrot2
D1 - Marcos Rodrigues Saúde - Informática Aplicada ao Direito - Aula 02 - Noções
D1 - Marcos Rodrigues Saúde - Informática Aplicada ao Direito - Aula 02 - Noções
Jordano Santos Cerqueira
O PRINCÍPIO RECURSAL DA VOLUNTARIEDADE
O PRINCÍPIO RECURSAL DA VOLUNTARIEDADE
Jordano Santos Cerqueira
Direito - 1º Período - Fernanda Rocha Valim - Introdução a Pesquisa Científic...
Direito - 1º Período - Fernanda Rocha Valim - Introdução a Pesquisa Científic...
Jordano Santos Cerqueira
Periodico
Periodico
yordinblanquicet
100722 세옹이야기 음악버전
100722 세옹이야기 음악버전
Hanseong Kim
Direito 1º Período - Marcos Rodrigues Saúde - Informática Aplicada ao Direito...
Direito 1º Período - Marcos Rodrigues Saúde - Informática Aplicada ao Direito...
Jordano Santos Cerqueira
1강: 사회적기업의 Context와 concept 김종휘
1강: 사회적기업의 Context와 concept 김종휘
Hanseong Kim
Jakarta music event Oct 2012, by Mediawave
Jakarta music event Oct 2012, by Mediawave
Dwi Wahyono
Berburu kendaraan favorit dari sosial media, by Mediawave
Berburu kendaraan favorit dari sosial media, by Mediawave
Dwi Wahyono
FACELI - D1 - Helga Catarina Pereira de Magalhães Faria - Teoria Geral do Dir...
FACELI - D1 - Helga Catarina Pereira de Magalhães Faria - Teoria Geral do Dir...
Jordano Santos Cerqueira
FACELI - D1 - Zilda Maria Fantin Moreira - Linguagem Jurídica - AULA 03
FACELI - D1 - Zilda Maria Fantin Moreira - Linguagem Jurídica - AULA 03
Jordano Santos Cerqueira
FACELI - D1 - Zilda Maria Fantin Moreira - Linguagem Jurídica - AULA 01
FACELI - D1 - Zilda Maria Fantin Moreira - Linguagem Jurídica - AULA 01
Jordano Santos Cerqueira
En vedette
(20)
Clojure cnclojure-meetup
Clojure cnclojure-meetup
How to Build an HTML5 Game in Half a day
How to Build an HTML5 Game in Half a day
Periodico
Periodico
Alur pendaftaran ppdb
Alur pendaftaran ppdb
Liteputer 2011-en
Liteputer 2011-en
Powerpoint
Powerpoint
Yordinmnmn
Yordinmnmn
Keep multimedia in the classroom powerpoint 5
Keep multimedia in the classroom powerpoint 5
D1 - Marcos Rodrigues Saúde - Informática Aplicada ao Direito - Aula 02 - Noções
D1 - Marcos Rodrigues Saúde - Informática Aplicada ao Direito - Aula 02 - Noções
O PRINCÍPIO RECURSAL DA VOLUNTARIEDADE
O PRINCÍPIO RECURSAL DA VOLUNTARIEDADE
Direito - 1º Período - Fernanda Rocha Valim - Introdução a Pesquisa Científic...
Direito - 1º Período - Fernanda Rocha Valim - Introdução a Pesquisa Científic...
Periodico
Periodico
100722 세옹이야기 음악버전
100722 세옹이야기 음악버전
Direito 1º Período - Marcos Rodrigues Saúde - Informática Aplicada ao Direito...
Direito 1º Período - Marcos Rodrigues Saúde - Informática Aplicada ao Direito...
1강: 사회적기업의 Context와 concept 김종휘
1강: 사회적기업의 Context와 concept 김종휘
Jakarta music event Oct 2012, by Mediawave
Jakarta music event Oct 2012, by Mediawave
Berburu kendaraan favorit dari sosial media, by Mediawave
Berburu kendaraan favorit dari sosial media, by Mediawave
FACELI - D1 - Helga Catarina Pereira de Magalhães Faria - Teoria Geral do Dir...
FACELI - D1 - Helga Catarina Pereira de Magalhães Faria - Teoria Geral do Dir...
FACELI - D1 - Zilda Maria Fantin Moreira - Linguagem Jurídica - AULA 03
FACELI - D1 - Zilda Maria Fantin Moreira - Linguagem Jurídica - AULA 03
FACELI - D1 - Zilda Maria Fantin Moreira - Linguagem Jurídica - AULA 01
FACELI - D1 - Zilda Maria Fantin Moreira - Linguagem Jurídica - AULA 01
Similaire à Clojure Web Development
Resthub
Resthub
Sébastien Deleuze
Make your gui shine with ajax solr
Make your gui shine with ajax solr
lucenerevolution
Simple REST with Dropwizard
Simple REST with Dropwizard
Andrei Savu
Using Ajax In Domino Web Applications
Using Ajax In Domino Web Applications
dominion
Ajax
Ajax
rahmed_sct
Rapid API development examples for Impress Application Server / Node.js (jsfw...
Rapid API development examples for Impress Application Server / Node.js (jsfw...
Timur Shemsedinov
Intoduction to Play Framework
Intoduction to Play Framework
Knoldus Inc.
Performance and Scalability Testing with Python and Multi-Mechanize
Performance and Scalability Testing with Python and Multi-Mechanize
coreygoldberg
Using Apache as an Application Server
Using Apache as an Application Server
Phil Windley
Client Object Model - SharePoint Extreme 2012
Client Object Model - SharePoint Extreme 2012
daniel plocker
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus Presentation
Ajax Experience 2009
Clojure and the Web
Clojure and the Web
nickmbailey
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
Antônio Roberto Silva
Advanced JavaScript
Advanced JavaScript
Mahmoud Tolba
Introduction to ajax
Introduction to ajax
Venkat Pinagadi
AD102 - Break out of the Box
AD102 - Break out of the Box
Karl-Henry Martinsson
Day7
Day7
madamewoolf
Sun Web Server Brief
Sun Web Server Brief
Murthy Chintalapati
Mashups
Mashups
Johan Eltes
Rich Portlet Development in uPortal
Rich Portlet Development in uPortal
Jennifer Bourey
Similaire à Clojure Web Development
(20)
Resthub
Resthub
Make your gui shine with ajax solr
Make your gui shine with ajax solr
Simple REST with Dropwizard
Simple REST with Dropwizard
Using Ajax In Domino Web Applications
Using Ajax In Domino Web Applications
Ajax
Ajax
Rapid API development examples for Impress Application Server / Node.js (jsfw...
Rapid API development examples for Impress Application Server / Node.js (jsfw...
Intoduction to Play Framework
Intoduction to Play Framework
Performance and Scalability Testing with Python and Multi-Mechanize
Performance and Scalability Testing with Python and Multi-Mechanize
Using Apache as an Application Server
Using Apache as an Application Server
Client Object Model - SharePoint Extreme 2012
Client Object Model - SharePoint Extreme 2012
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus Presentation
Clojure and the Web
Clojure and the Web
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
Advanced JavaScript
Advanced JavaScript
Introduction to ajax
Introduction to ajax
AD102 - Break out of the Box
AD102 - Break out of the Box
Day7
Day7
Sun Web Server Brief
Sun Web Server Brief
Mashups
Mashups
Rich Portlet Development in uPortal
Rich Portlet Development in uPortal
Dernier
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
2toLead Limited
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
LoriGlavin3
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
LoriGlavin3
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
Pixlogix Infotech
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
BkGupta21
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Sergiu Bodiu
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
LoriGlavin3
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
Alan Dix
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
LoriGlavin3
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
BookNet Canada
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
Rick Flair
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
LoriGlavin3
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Addepto
How to write a Business Continuity Plan
How to write a Business Continuity Plan
Databarracks
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
Fwdays
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
LoriGlavin3
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Hervé Boutemy
Dernier
(20)
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
How to write a Business Continuity Plan
How to write a Business Continuity Plan
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Clojure Web Development
1.
Clojure Web Development
OnyCloud 江宏
2.
Example - Trakr https://trakrapp.com/ Web-based
project management system A product created for our own needs Requirements Feature-complete for software devs Modern friendly UI Affordable
3.
Demo
4.
Architecture
MongoDB (Log & Cache) JavaScript HTTP JSON App Server (Backbone.js) (Clojure) PostgresQL
5.
HTTP Server Structure
Ring Middleware Handlers The Compojure Framework
6.
Routes Mapping: Request ->
Handler: (defroutes app-routes (context "/users" [] (GET "/new" [] accounts/show-signup) (POST "/" [email] (accounts/new email))) ;; GET /users/new -> accounts/show-signup ;; POST /users/ -> accounts/new
7.
Handlers Request in, response
out. (defn say-hello [req] (let [name (-> req :params :name)] {:status 200 :body (str “Hello ” name “!”)}
8.
Middleware Transform: Handler ->
New Handler (defn wrap-failsafe [handler] (fn [request] (try (handler request) (catch Exception e (.printStackTrace e) {:status 500 :body "An error occured."}))))
9.
Testing Unit testing with
clojure.test and clojure.contrib.mock Integration testing using Watir Demo
10.
Performance No optimization tricks
(type hints, transients, etc.) Average latency ~ 70ms Long tail Database performance can be improved (indices).
11.
Lessons Learned Good:
High productivity Easy to test (dynamic binding) Relatively easy learning curve
12.
Lessons Learned Bad:
Ugly stacktraces. Exposes too much Java class hierarchy. PersistentMap, PersistentStructMap, struct_map ... (contains? (transient #{:a}) :a)
13.
Thank You
Télécharger maintenant