SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
Sébastien Le	Marchand |	@slemarchand
Developing	faster	than	ever
No	more	wasting	time
Sébastien Le	Marchand
@slemarchand
Sébastien Le	Marchand |	@slemarchand
§ About	efficiency
§ Hands-free	coding
§ Deploying	without	waiting
§ What’s	next?
Agenda
Sébastien Le	Marchand |	@slemarchand
§ 10	years of	experience on	Liferay (since v4.3)
§ Including 6	years as	employee of	a	« Gold	Service	Partner »	
company
§ Now Freelancer
Sébastien	Le	Marchand
@slemarchand linkedin.com/in/slemarchand
Paris,	France
Sébastien Le	Marchand |	@slemarchand
About	Efficiency
Levers	for	optimal	development
Sébastien Le	Marchand |	@slemarchand
« Efficiency is the (often measurable) ability to
avoid wasting materials, energy, efforts, money,
and time in doing something or in producing a
desired result. In a more general sense, it is the
ability to do things well, successfully, and
without waste. »
[wikipedia.org]
Sébastien Le	Marchand |	@slemarchand
https://xkcd.com/303
Sébastien Le	Marchand |	@slemarchand
§ Writing &	debugging recurring code
§ Waiting during compilation,	packaging	or	deployment
§ Repeating again and	again the	same manual tasks from GUI
What is waste in	development activities?
Sébastien Le	Marchand |	@slemarchand
Hands-free	coding
Let’s	go	to	generate	code
Sébastien Le	Marchand |	@slemarchand
§ Avoid time	spent to	manually write this code
§ Reduce bugs…	and	so	reduce	time	to	fix	them	!
§ Improve code	homogeneity…	and	so	maintenability	!
Why generate « recurring »	code?
Sébastien Le	Marchand |	@slemarchand
§ Blade templates (26)
§ Maven archetypes (48)
§ Liferay Studio	Templates (25)
Code	generation 101:	create project from templates
$ blade create –t mvc-portlet myproject-web
$ mvn archetype:generate -Dfilter=liferay
Sébastien Le	Marchand |	@slemarchand
§ Define services	through service.xml file
§ Persistance	services	layer:	fully generated
§ Business	services	layer	:	very basic…	you	need	to	code	the	
missing	parts!
Service	Builder:	generate services	layers
Sébastien Le	Marchand |	@slemarchand
resource-actions/default.xml
*LocalServiceImpl::*
portlet-model-hints.xml
*.jsp
*Portlet
*ActionCommand
*PermissionChecker
*Indexer
. . .
. . .
*RenderCommand
CRUD	UI
Service
Builder
generated
code
Sébastien Le	Marchand |	@slemarchand
§ Some basic	CRUD	mechanics (ID	creation for	example)
§ Permissions
§ Indexing
§ Asset features handling
§ Web	layer	(the	portlet!)
§ …
Service	Builder missing stuff for	common use-cases
Sébastien Le	Marchand |	@slemarchand
A	New	Hope
Damascus
CLI
base.json
models descriptor
« Ready-To-Go »	OSGi modules
myproject-api
myproject-service
myproject-web
Sébastien Le	Marchand |	@slemarchand https://github.com/yasuflatland-lf/damascus
by	Yasuyuki Takeo
(here at	DEVCON	2017)
Sébastien Le	Marchand |	@slemarchand
§ « Events	Manager »	application
§ 1	model:	« Public	Event »
Let’s go	with a	concrete example
Sébastien Le	Marchand |	@slemarchand
§ Initialize project (from a	Liferay Workspace)
§ Update	model	in	events-manager/base.json file
§ Generate modules	with Damascus
Just	do	it!
$ cd events-manager
$ damascus -create
$ damascus -init EventsManager -p com.slemarchand.events
Sébastien Le	Marchand |	@slemarchand
{
"projectName": "EventsManager",
"packageName" : "com.slemarchand.events",
"liferayVersion": "70",
"applications": [
{
"model" : "PublicEvent",
"title" : "Public Event",
"web" : "true",
"asset": {
"assetTitleFieldName": "eventTitle",
"assetSummaryFieldName": "eventSummary",
"categories": "true",
"discussion": "true",
"ratings": "true",
"tags": "true",
"relatedAssets": "true",
"fullContentFieldName": "eventFullContent",
"workflow": "true",
"generateActivity": "true",
"trash":"true"
},
"fieldsName" : "Events",
"fields": [
Sébastien Le	Marchand |	@slemarchand
"generateActivity": "true",
"trash":"true"
},
"fields": [
{
"type": "com.liferay.damascus.cli.json.fields.Long",
"primary":true,
"name": "eventId",
"title": "ID",
"showFieldInView": "false",
"required": "true"
},
{
"type": "com.liferay.damascus.cli.json.fields.Varchar",
"name": "eventName",
"title": "Name",
"length": "80",
"showFieldInView": "true",
"required": "true"
},
]
}
]
}
…
Sébastien Le	Marchand |	@slemarchand
Ready to	deploy!
$ blade deploy
Sébastien Le	Marchand |	@slemarchand
Create (1/2)
Sébastien Le	Marchand |	@slemarchand
Create (2/2)
Sébastien Le	Marchand |	@slemarchand
Navigation
Sébastien Le	Marchand |	@slemarchand
Actions	on	an	entity
Sébastien Le	Marchand |	@slemarchand
Sorting
Sébastien Le	Marchand |	@slemarchand
Search
Sébastien Le	Marchand |	@slemarchand
§ « Fire &	Forget »:	after manual
code	modification,	you can’t safely
launch generation again
§ If	you want,	you can just keep
small parts	of	generated code	
What are	usages	for	Damascus?
« Service »	components
« Web »	components
Service	Builder generated code
Sébastien Le	Marchand |	@slemarchand
§ Give some feedback
§ Create new	issues
§ Comment	existing issues
§ Contribute
§ See README.md file	in	repo
We need you!
https://github.com/yasuflatland-lf/damascus
Sébastien Le	Marchand |	@slemarchand
Tribute	to	XML	Portlet Factory
Jack	A.	Rider
Juan	Gonzalez
§ Pioneer	of	CRUD	full-generation for	Liferay
§ Available for	all	6.x	versions	of	Liferay
§ 6.0
§ 6.1
§ 6.2
§ Get it
§ http://www.xmlportletfactory.org
§ https://github.com/xmlportletfactory/xmlportletfactory
Sébastien Le	Marchand |	@slemarchand
Deploying	without	waiting
Instant	deployment
Sébastien Le	Marchand |	@slemarchand
§ (Re-)Starting app server	(maybe 1	or	2	times	by	day),
§ Building	project,
§ Deploying to	local	server,
§ First	request (empty cache,	JSP	compilation,	etc)
Developing implies so often waiting
Sébastien Le	Marchand |	@slemarchand
http://memes.com/img/842717
Sébastien Le	Marchand |	@slemarchand
§ Use	Tomcat on	your local	machine
§ Uninstall permanently the	unused modules
§ Remove or	alter	some *.lpkg files, from ${liferay.home}/osgi/marketplace
§ Don’t forget to	clean	work & osgi/state	directories
Reducing app server	start time
Sébastien Le	Marchand |	@slemarchand
« Jukebox »	sample application(2):
§ Build (blade)	in	19,78	s without Gradle deamon
§ Build (blade)	in	14,78	s	with Gradle deamon
§ Bundle	installation	in	3,2	s
Deployement duration(1)
(1):	MacBook	Air	(13-inch,	Mid 2013)	- 1,7	GHz	Intel	Core i7	- 8	Go	1600	MHz	DDR3
(2):	https://github.com/epgarcia/jukebox-portlet/tree/LSNA.2016.Upgrade.to.7
Sébastien Le	Marchand |	@slemarchand
§ JRebel synchronize IDE	workspace and	the	application	deployed
on	the	local	server.
§ When developer make some code	changes,	JRebel instantly
update	bytecode (and	resources)	on	local	server,	without
full deployment.
§ Adding /	removing /	changing Classes,	Methods,	Constructors,	
Fields,	Annotations	and	Static field values
JRebel
Sébastien Le	Marchand |	@slemarchand
§ 3	steps
§ Set	JRebel Java	Agent	via	$JAVA_OPTS
§ Add org.zeroturnaround:gradle-jrebel-plugin plugin	to	your Gradle project
§ Customize rebel.xml
§ All	details :
§ https://web.liferay.com/fr/web/jardineworks/blog/-/blogs/liferay-7-jrebel
How-to	configure	JRebel for	Liferay 7
Sébastien Le	Marchand |	@slemarchand
§ JRebel is a	commercial	product (there is a	free-trial	period)	
§ Not	everyone can or	want to	buy a	licence
§ So	alternatives	are	welcome in	some contexts!
Instant	deployment without JRebel ?
Sébastien Le	Marchand |	@slemarchand
§ For	themes,	standard	liferay-theme-tasks do	the	job	with
watch task
§ https://dev.liferay.com/develop/reference/-
/knowledge_base/7-0/theme-gulp-tasks
Instant	theme deployment
$ gulp watch
Sébastien Le	Marchand |	@slemarchand
§ Install
§ Run from the	module	directory
§ Each change	in	module	sources	is automatically
synchronized using gogo	shell
Instant	modules	deployment:	liferay-osgi-watch
$ sudo npm install -g liferay-osgi-watch
$ lwatch
Sébastien Le	Marchand |	@slemarchand
« The fastest way to deploys is just… to not deploy »
[some hurry developer]
Sébastien Le	Marchand |	@slemarchand
§ Serving resources directly from source	code
§ Provide capability to	define rules to	route	some browser	
requests to	particular local	files
§ With « Map Local »	proper configuration,	static resources
(CSS,	JS)	are	loaded in	browser	from IDE	workspace local	files
JS	&	CSS:	« Map Local »	feature of	Charles	Proxy
charlesproxy.com
Sébastien Le	Marchand |	@slemarchand
§ You	can test	your local	static resources (including JS)	
§ With no	deployment delay
§ On	any environment…	including PRODUCTION 🎉
§ Privately,	without impacting other users
Beyond	the	local	server
Sébastien Le	Marchand |	@slemarchand
What’s	next?
The	game	is	not	over
Sébastien Le	Marchand |	@slemarchand
§ Each of	you knows at	least	one	uncommon trick	to	develop
faster
§ All	together,	you are	an	huge developement tips database !
YOU are	the	next step!
Sébastien Le	Marchand |	@slemarchand
§ Publish
§ Spread	the	word
Share	your tips &	tricks
Liferay
Blogs
Sébastien Le	Marchand |	@slemarchand
Thanks!
Some questions?
Want to share some tips?
http://lemarchand.co/devfaster
@slemarchand
linkedin.com/in/slemarchand
Sébastien Le Marchand

Weitere ähnliche Inhalte

Was ist angesagt?

Towards component based web UI with ReactJS
Towards component based web UI with ReactJSTowards component based web UI with ReactJS
Towards component based web UI with ReactJSOliver Häger
 
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...Puppet
 
Accelerating Your Web Application with NGINX
Accelerating Your Web Application with NGINXAccelerating Your Web Application with NGINX
Accelerating Your Web Application with NGINXKevin Jones
 
Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017Gianluca Arbezzano
 
Making sense of streaming
Making sense of streamingMaking sense of streaming
Making sense of streamingDiego Pacheco
 
ThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - BrisbaneThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - BrisbaneThoughtworks
 
Embracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryEmbracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryCyrille Le Clerc
 
Microservices in Golang
Microservices in GolangMicroservices in Golang
Microservices in GolangMo'ath Qasim
 
Ich brauche einen Abstraktions-Layer für meine Cloud
Ich brauche einen Abstraktions-Layer für meine CloudIch brauche einen Abstraktions-Layer für meine Cloud
Ich brauche einen Abstraktions-Layer für meine CloudQAware GmbH
 
Secure Architecture and Programming 101
Secure Architecture and Programming 101Secure Architecture and Programming 101
Secure Architecture and Programming 101Mario-Leander Reimer
 
Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4aspyker
 
DevOps Spain 2019. Jaime Balañá-NetApp
DevOps Spain 2019. Jaime Balañá-NetAppDevOps Spain 2019. Jaime Balañá-NetApp
DevOps Spain 2019. Jaime Balañá-NetAppatSistemas
 
Michigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow TutorialMichigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow TutorialJeffrey Sica
 
DevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSDevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSatSistemas
 
Immutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesImmutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesC4Media
 
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDB
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDBPowering Microservices with Docker, Kubernetes, Kafka, and MongoDB
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDBMongoDB
 

Was ist angesagt? (20)

Towards component based web UI with ReactJS
Towards component based web UI with ReactJSTowards component based web UI with ReactJS
Towards component based web UI with ReactJS
 
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
PuppetConf 2016: Keynote: Pulling the Strings to Containerize Your Life - Sco...
 
Accelerating Your Web Application with NGINX
Accelerating Your Web Application with NGINXAccelerating Your Web Application with NGINX
Accelerating Your Web Application with NGINX
 
Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017Jenkins in the real world - DevOpsCon 2017
Jenkins in the real world - DevOpsCon 2017
 
Mini-Training: Redis
Mini-Training: RedisMini-Training: Redis
Mini-Training: Redis
 
Version Controlling
Version ControllingVersion Controlling
Version Controlling
 
SOA.2020
SOA.2020SOA.2020
SOA.2020
 
Making sense of streaming
Making sense of streamingMaking sense of streaming
Making sense of streaming
 
ThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - BrisbaneThoughtWorks Technology Radar Roadshow - Brisbane
ThoughtWorks Technology Radar Roadshow - Brisbane
 
Embracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetryEmbracing Observability in CI/CD with OpenTelemetry
Embracing Observability in CI/CD with OpenTelemetry
 
Microservices in Golang
Microservices in GolangMicroservices in Golang
Microservices in Golang
 
Ich brauche einen Abstraktions-Layer für meine Cloud
Ich brauche einen Abstraktions-Layer für meine CloudIch brauche einen Abstraktions-Layer für meine Cloud
Ich brauche einen Abstraktions-Layer für meine Cloud
 
Secure Architecture and Programming 101
Secure Architecture and Programming 101Secure Architecture and Programming 101
Secure Architecture and Programming 101
 
Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4Netflix OSS Meetup Season 4 Episode 4
Netflix OSS Meetup Season 4 Episode 4
 
DevOps Spain 2019. Jaime Balañá-NetApp
DevOps Spain 2019. Jaime Balañá-NetAppDevOps Spain 2019. Jaime Balañá-NetApp
DevOps Spain 2019. Jaime Balañá-NetApp
 
Michigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow TutorialMichigan IT Symposium 2017 - CI/CD Workflow Tutorial
Michigan IT Symposium 2017 - CI/CD Workflow Tutorial
 
DevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWSDevOps Spain 2019. Pedro Mendoza-AWS
DevOps Spain 2019. Pedro Mendoza-AWS
 
Immutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine ImagesImmutable Infrastructure: Rise of the Machine Images
Immutable Infrastructure: Rise of the Machine Images
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDB
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDBPowering Microservices with Docker, Kubernetes, Kafka, and MongoDB
Powering Microservices with Docker, Kubernetes, Kafka, and MongoDB
 

Ähnlich wie Developing faster than ever (Liferay DEVCON 2017)

Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!mold
 
Buildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbBuildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbMongoDB APAC
 
Everything-as-code – Polyglotte Entwicklung in der Praxis
Everything-as-code – Polyglotte Entwicklung in der PraxisEverything-as-code – Polyglotte Entwicklung in der Praxis
Everything-as-code – Polyglotte Entwicklung in der PraxisQAware GmbH
 
How You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in ProductionHow You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in ProductionBoldRadius Solutions
 
Creating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with ChaperoneCreating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with ChaperoneGary Wisniewski
 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWebDave Bouwman
 
Everything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebEverything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebJames Rakich
 
It's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrIt's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrMichael Enslow
 
Introduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopIntroduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopMark Rackley
 
AFUP Lorraine - Symfony Webpack Encore
AFUP Lorraine - Symfony Webpack EncoreAFUP Lorraine - Symfony Webpack Encore
AFUP Lorraine - Symfony Webpack EncoreEngineor
 
Sap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit SetupSap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit Setupwlacaze
 
Sustainable Agile Development
Sustainable Agile DevelopmentSustainable Agile Development
Sustainable Agile DevelopmentGabriele Lana
 
Automatisation in development and testing - within budget
Automatisation in development and testing - within budgetAutomatisation in development and testing - within budget
Automatisation in development and testing - within budgetDavid Lukac
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsMike Brittain
 
JavaScript For People Who Don't Code
JavaScript For People Who Don't CodeJavaScript For People Who Don't Code
JavaScript For People Who Don't CodeChristopher Schmitt
 
Intro To Django
Intro To DjangoIntro To Django
Intro To DjangoUdi Bauman
 
Cloud native development without the toil
Cloud native development without the toilCloud native development without the toil
Cloud native development without the toilAmbassador Labs
 

Ähnlich wie Developing faster than ever (Liferay DEVCON 2017) (20)

Ruby For Startups
Ruby For StartupsRuby For Startups
Ruby For Startups
 
Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!
 
Buildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbBuildingsocialanalyticstoolwithmongodb
Buildingsocialanalyticstoolwithmongodb
 
Everything-as-code – Polyglotte Entwicklung in der Praxis
Everything-as-code – Polyglotte Entwicklung in der PraxisEverything-as-code – Polyglotte Entwicklung in der Praxis
Everything-as-code – Polyglotte Entwicklung in der Praxis
 
How You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in ProductionHow You Convince Your Manager To Adopt Scala.js in Production
How You Convince Your Manager To Adopt Scala.js in Production
 
Creating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with ChaperoneCreating Developer-Friendly Docker Containers with Chaperone
Creating Developer-Friendly Docker Containers with Chaperone
 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWeb
 
Everything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the WebEverything is Awesome - Cutting the Corners off the Web
Everything is Awesome - Cutting the Corners off the Web
 
It's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking ModernizrIt's a Mod World - A Practical Guide to Rocking Modernizr
It's a Mod World - A Practical Guide to Rocking Modernizr
 
Introduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopIntroduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint Workshop
 
AFUP Lorraine - Symfony Webpack Encore
AFUP Lorraine - Symfony Webpack EncoreAFUP Lorraine - Symfony Webpack Encore
AFUP Lorraine - Symfony Webpack Encore
 
Sap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit SetupSap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit Setup
 
Always on! Or not?
Always on! Or not?Always on! Or not?
Always on! Or not?
 
Sustainable Agile Development
Sustainable Agile DevelopmentSustainable Agile Development
Sustainable Agile Development
 
Automatisation in development and testing - within budget
Automatisation in development and testing - within budgetAutomatisation in development and testing - within budget
Automatisation in development and testing - within budget
 
Terraform 101
Terraform 101Terraform 101
Terraform 101
 
Continuous Delivery: The Dirty Details
Continuous Delivery: The Dirty DetailsContinuous Delivery: The Dirty Details
Continuous Delivery: The Dirty Details
 
JavaScript For People Who Don't Code
JavaScript For People Who Don't CodeJavaScript For People Who Don't Code
JavaScript For People Who Don't Code
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
Cloud native development without the toil
Cloud native development without the toilCloud native development without the toil
Cloud native development without the toil
 

Mehr von Sébastien Le Marchand

Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...
Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...
Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...Sébastien Le Marchand
 
Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021Sébastien Le Marchand
 
Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021Sébastien Le Marchand
 
Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Sébastien Le Marchand
 
Let’s discover and extend the Content Dashboard - /dev/24 2020
Let’s discover and extendthe Content Dashboard - /dev/24 2020Let’s discover and extendthe Content Dashboard - /dev/24 2020
Let’s discover and extend the Content Dashboard - /dev/24 2020Sébastien Le Marchand
 
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...Sébastien Le Marchand
 
Liferay Gogo Scripts - Liferay France User Group - meetup #13
Liferay Gogo Scripts -  Liferay France User Group - meetup #13Liferay Gogo Scripts -  Liferay France User Group - meetup #13
Liferay Gogo Scripts - Liferay France User Group - meetup #13Sébastien Le Marchand
 
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...Sébastien Le Marchand
 
Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)Sébastien Le Marchand
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Sébastien Le Marchand
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016Sébastien Le Marchand
 
PhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha TouchPhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha TouchSébastien Le Marchand
 
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - BerlinUsing MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - BerlinSébastien Le Marchand
 
Les2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_dataLes2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_dataSébastien Le Marchand
 
Liferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferayLiferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferaySébastien Le Marchand
 

Mehr von Sébastien Le Marchand (16)

Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...
Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...
Client Extensions - Episode 2 : Custom Element - 2024-04-30 - Liferay France ...
 
Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021Let's revive the Liferay Marketplace together - /dev/24 2021
Let's revive the Liferay Marketplace together - /dev/24 2021
 
Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021Convert to liferay forms! - Liferay DEVCON 2021
Convert to liferay forms! - Liferay DEVCON 2021
 
Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020Convertissez vos formulaires ! - Liferay France Symposium 2020
Convertissez vos formulaires ! - Liferay France Symposium 2020
 
Let’s discover and extend the Content Dashboard - /dev/24 2020
Let’s discover and extendthe Content Dashboard - /dev/24 2020Let’s discover and extendthe Content Dashboard - /dev/24 2020
Let’s discover and extend the Content Dashboard - /dev/24 2020
 
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...Relever les défis techniques d'un site internet multi-pays et multilingue - L...
Relever les défis techniques d'un site internet multi-pays et multilingue - L...
 
Liferay Gogo Scripts - Liferay France User Group - meetup #13
Liferay Gogo Scripts -  Liferay France User Group - meetup #13Liferay Gogo Scripts -  Liferay France User Group - meetup #13
Liferay Gogo Scripts - Liferay France User Group - meetup #13
 
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
Back from Liferay DEVCON 2018 (Liferay France User Group Meetup #10 - 15/11/2...
 
Recap Liferay France Symposium 2018
Recap Liferay France Symposium 2018Recap Liferay France Symposium 2018
Recap Liferay France Symposium 2018
 
Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)Instances multiples : les pièges à éviter (Liferay User Group France)
Instances multiples : les pièges à éviter (Liferay User Group France)
 
Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017Développement : mettez le turbo ! - Liferay France Symposium 2017
Développement : mettez le turbo ! - Liferay France Symposium 2017
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
 
PhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha TouchPhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
PhoneGap Paris Meetup #6 - Pix2know - Sencha Touch
 
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - BerlinUsing MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
Using MyBatis in Alfresco custom extensions - Alfresco Devcon 2012 - Berlin
 
Les2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_dataLes2012 lightning talk_exporting_and_importing_company-level_data
Les2012 lightning talk_exporting_and_importing_company-level_data
 
Liferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferayLiferay france symposium 2012 - montée de version d’une instance liferay
Liferay france symposium 2012 - montée de version d’une instance liferay
 

Kürzlich hochgeladen

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Kürzlich hochgeladen (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

Developing faster than ever (Liferay DEVCON 2017)