SlideShare a Scribd company logo
1 of 115
Download to read offline
Arnaud Bouchez - Synopse
mORMot2
Arnaud Bouchez
• Open Source Founder
mORMot
SynPDF
• Delphi and FPC expert
DDD, SOA, ORM, MVC
Performance, SOLID
• Synopse Consulting
https://synopse.info
Menu du jour
• mORMot 1.18
• mORMot 2 Survey
• mORMot 2
• mORMot 2 Units
• mORMot 2 Roadmap
• mORMot 1.18
• mORMot 2 Survey
• mORMot 2
• mORMot 2 Units
• mORMot 2 Roadmap
mORMot 1.18
RESTful
ORM
SOA
MVC / Web
mORMot 1.18
RESTful
• Integrated Framework
• JSON, logging, security, crypto, network
ORM
• SQlite3, SQL, NoSQL
• Dedicated SynDB classes
SOA
• Interface-based services, stubs/mocks
MVC / Web
mORMot 1.18
Open Source since 2008
• https://synopse.info
• https://blog.synopse.info
• https://synopse.info/fossil
• https://github.com/synopse/mORMot
mORMot 1.18
Open Source since 2008
• https://synopse.info
• https://blog.synopse.info
• https://synopse.info/fossil
• https://github.com/synopse/mORMot
an instant classic…
mORMot 1.18
Open Source since 2008
mORMot 1.18
Open Source since 2008
mORMot 1.18
Fossil Repository Stats
Number Of Check-ins: 9,286
Number Of Files: 1,345
mORMot 1.18
mORMot 1.18
Comments
Used as Specifications
Extracted into generated documentation
mORMot 1.18
mORMot 1.18
We reached Delphi IDE limits 
mORMot 1.18
Introducing
mORMot’s big friend on Delphi
mORMot 1.18
mORMot’s big friend on Delphi
mORMot 1.18
The Delphi compiler
has no trouble with the code
- only the IDE
Note: no such size problem
on recent 2.0.10 Lazarus IDE
mORMot 1.18
All inclusive
Performance
Cross compiler
mORMot 1.18
All inclusive
Performance
Cross compiler
mORMot 1.18
All inclusive
Too much code kills the code
Performance
Unreadable, verbose
Cross compiler
$ifdef and units abuse
mORMot 1.18
All inclusive
Too much coupling
Performance
Sometimes not mandatory
Cross compiler
Hard to maintain
mORMot 1.18
What some users see!
mORMot ?
mORMot 2
What?
• mORMot 1.18
• mORMot 2 Survey
• mORMot 2
• mORMot 2 Units
• mORMot 2 Roadmap
mORMot 2 Survey
After 10 years, we wanted to
• Switch to Semantic Versioning
• Split code into SOLID units
• Favor composition
• Get rid of Delphi 5/Kylix
• Focus on maintainability
mORMot 2 Survey
March-June 2020: Google Survey
mORMot 2 Survey
March-June 2020: Google Survey
• Which refactoring do you agree with?
• About source code management
• Which Delphi revision to support?
mORMot 2 Survey
March-June 2020: Google Survey
• Which refactoring do you agree with?
• About source code management
• Which Delphi revision to support?
• … is a full rewrite worth it?
mORMot 2 Survey
March-June 2020: Google Survey
• Which refactoring do you agree with?
• About source code management
• Which Delphi revision to support?
• … is a full rewrite worth it?
157 Responses
mORMot 2 Survey
Which refactoring ?
Switch to semantic versioning
Separate big units
Composition over inheritance
Avoid Delphi Internal Errors
Focus on FPC as main target
Drop Delphi 5 and Kylix support
Drop Delphi support but latest
Reformat HTML doc into small pages
mORMot 2 Survey
Which refactoring ?
mORMot 2 Survey
Which refactoring ?
Switch to semantic versioning 69%
Separate big units 78%
Composition over inheritance 59%
Avoid Delphi Internal Errors 56%
Focus on FPC as main target 41%
Drop Delphi 5 and Kylix support 84%
Drop Delphi support but latest 25%
Reformat HTML doc into small pages 42%
mORMot 2 Survey
Which refactoring ?
Switch to semantic versioning 69%
Separate big units 78%
Composition over inheritance 59%
Avoid Delphi Internal Errors 56%
Focus on FPC as main target 41%
Drop Delphi 5 and Kylix support 84%
Drop Delphi support but latest 25%
Reformat HTML doc into small pages 42%
mORMot 2 Survey
Source Code Management
Keep as-is: Fossil + GitHub mirror
Switch to GitHub and our blog/forum
Switch to GitHub only
mORMot 2 Survey
Source Code Management
mORMot 2 Survey
Source Code Management
Keep as-is: Fossil + GitHub mirror 40%
Switch to GitHub and our blog/forum 38%
Switch to GitHub only 13%
mORMot 2 Survey
Source Code Management
Keep as-is: Fossil + GitHub mirror 40%
Switch to GitHub and our blog/forum 38%
Switch to GitHub only 13%
https://github.com/synopse/mORMot2
mORMot 2 Survey
Which Delphi revision?
Delphi 7
Delphi 2007
Delphi XE4
Delphi XE7
Delphi XE8
Delphi 10.3 / latest
mORMot 2 Survey
Which Delphi revision?
mORMot 2 Survey
Which Delphi revision?
Delphi 7 18%
Delphi 2007 13%
Delphi XE4 4%
Delphi XE7 4%
Delphi XE8 4%
Delphi 10.3 / latest 70%
mORMot 2 Survey
Which Delphi revision?
Focus on
Delphi 10.3 / latest 70%
Keep compatible with
Delphi 7 18%
Delphi 2007 13%
Maintain compatibility with others
mORMot 2 Survey
Other Wishes
• Delphi Linux Support
• Focus on FPC
• More real world examples (DDD)
• Separate OS specific
• Make SynLog easier to use
mORMot 2 Survey
What we agreed on
• Semantic Versioning and releases
• Separate big units
• Composition over inheritance
• GitHub + https://synopse.info
• Main Delphi targets: latest 10.x + 7/2007
• FPC 3.2 / trunk premium support
• Eventual Delphi Linux
mORMot 2 Survey
What we agreed on
• Naming should be more consistent
TSQLRecord TSQLTableJson TSQLRest
• First iteration should be
backward compatible
(with some PUREMORMOT2 conditional)
• Later on, we may move forward
• mORMot 1.18
• mORMot 2 Survey
• mORMot 2
• mORMot 2 Units
• mORMot 2 Roadmap
mORMot 2
mORMot 2
https://github.com/synopse/mormot2
Release soon, release often
MPL / GPL / LGPL Tri-License
mORMot 2
https://github.com/synopse/mormot2
Release soon, release often
MPL / GPL / LGPL Tri-License
8 Months Active Work
373 Commits
mORMot 2
Code Esthetical / Readability
mORMot 2
Code Esthetical / Readability
mORMot 1.18 “Style”
mORMot 2
mORMot 2 “Style”
Semantic Versioning 2.0.0
From https://semver.org
MAJOR.MINOR.PATCH
increment
• MAJOR version
when you make incompatible API changes,
• MINOR version
when you add functionality
in a backwards compatible manner, and
• PATCH version
when you make backwards compatible bug fixes
Semantic Versioning 2.0.0
From https://semver.org
MAJOR.MINOR.PATCH
Real releases for production code
mORMot stuck to 1.18 since years
• mORMot 1.18
• mORMot 2 Survey
• mORMot 2
• mORMot 2 Units
• mORMot 2 Roadmap
mORMot 2 Units
• Separate Big Units
• Consistent Naming
• Composition over Inheritance
Separate Big Units
Separate Big Units
Separate Big Units
Separate Big Units
• mormot.core.*.pas
• mormot.db.*.pas
• mormot.ddd.*.pas
• mormot.lib.*.pas
• mormot.net.*.pas
• mormot.orm.*.pas
• mormot.rest.*.pas
• mormot.soa.*.pas
Separate Big Units
• mormot.core.*.pas /src/core
• mormot.db.*.pas /src/db
• mormot.ddd.*.pas /src/ddd
• mormot.lib.*.pas /src/lib
• mormot.net.*.pas /src/net
• mormot.orm.*.pas /src/orm
• mormot.rest.*.pas /src/rest
• mormot.soa.*.pas /src/soa
Separate Big Units
SynCommons.pas SynTable.pas
• mormot.core.base.pas
• mormot.core.os.pas
• mormot.core.unicode.pas
• mormot.core.text.pas
Separate Big Units
SynCommons.pas SynTable.pas
• mormot.core.rtti.pas
• mormot.core.data.pas
• mormot.core.perf.pas
• mormot.core.json.pas
• mormot.core.buffers.pas
Separate Big Units
SynCommons.pas SynTable.pas
• mormot.core.datetime.pas
• mormot.core.variants.pas
• mormot.core.search.pas
• mormot.core.threads.pas
• mormot.db.core.pas
Separate Big Units
SynCrypto.pas SynEcc.pas
• mormot.core.crypto.pas
• mormot.core.jwt.pas
• mormot.core.ecc256r1.pas
• mormot.core.ecc.pas
Separate Big Units
Very Specific / Low-Level Code
• mormot.core.base.asmx64.inc
• mormot.core.base.asmx86.inc
• mormot.core.crypto.asmx64.inc
• mormot.core.crypto.asmx86.inc
Separate Big Units
Very Specific / Low-Level Code
• mormot.core.os.windows.inc
• mormot.core.os.posix.inc
• mormot.core.rtti.delphi.inc
• mormot.core.rtti.fpc.inc
Separate Big Units
SynCrtSock.pas SynBiDirSock.pas
• mormot.net.sock.pas
• mormot.net.http.pas
• mormot.net.client
• mormot.net.server
• mormot.net.asynch.pas
• mormot.net.websock.pas
Separate Big Units
Very Specific / Low-Level Code
• mormot.net.sock.windows.inc
• mormot.net.sock.posix.inc
Separate Big Units
mORMot.pas
• mormot.core.json.pas
• mormot.core.interfaces.pas
Separate Big Units
mORMot.pas
• mormot.orm.core.pas
• mormot.orm.client.pas
• mormot.orm.server.pas
• mormot.orm.storage.pas
Separate Big Units
mORMot.pas
• mormot.soa.core.pas
• mormot.soa.client.pas
• mormot.soa.server.pas
Separate Big Units
mORMot.pas
• mormot.rest.core.pas
• mormot.rest.client.pas
• mormot.rest.server.pas
• mormot.rest.memserver.pas
Separate Big Units
SynDB*.pas SynMongoDB units
• mormot.db.sql.*.pas
• mormot.db.raw.*.pas
• mormot.db.rad.*.pas
• mormot.db.nosql.*.pas
• mormot.db.proxy.pas
Separate Big Units
SynDB*.pas units
• mormot.db.sql.odbc.pas
• mormot.db.sql.oledb.pas
• mormot.db.sql.oracle.pas
• mormot.db.sql.postgres.pas
• mormot.db.sql.sqlite3.pas
• mormot.db.sql.zeos.pas
High Level Direct SQL Access
Separate Big Units
SynDB*.pas units
• mormot.db.raw.odbc.pas
• mormot.db.raw.oledb.pas
• mormot.db.raw.oracle.pas
• mormot.db.raw.postgres.pas
• mormot.db.raw.sqlite3.pas
Low Level Raw SQL Access
Separate Big Units
SynDB*.pas units
• mormot.db.rad.pas
• mormot.db.rad.bde.pas
• mormot.db.rad.firedac.pas
• mormot.db.rad.unidac.pas
• mormot.db.rad.nexusdb.pas
Delphi DB.pas SQL Access
Separate Big Units
mORMotDB mORMotSQLite3
• mormot.orm.sqlite3.pas
• mormot.orm.sql.pas
• mormot.rest.sqlite3.pas
ORM for SQL
with a SQLite3 kernel
Separate Big Units
SynMongoDB.pas unit
• mormot.db.nosql.bson.pas
• mormot.db.nosql.mongodb.pas
MongoDB NoSQL Access
Separate Big Units
mORMotMongoDB.pas unit
• mormot.orm.mongodb.pas
• mormot.rest.mongodb.pas
ORM/ODM for NoSQL
Very same code but MongoDB
Separate Big Units
SynLog.pas SynZip.pas units
• mormot.core.log.pas
• mormot.core.zip.pas
Separate Big Units
Low-Level API units
• mormot.lib.curl.pas
• mormot.lib.winhttp.pas
• mormot.lib.z.pas
Separate Big Units
Work In Progress
the main units are converted
… still some more to go !
Separate Big Units
Work In Progress
• Refactoring into smaller units
takes a lot of time and efforts
• Some units are just about reformatting
• Full Rewrite of JSON, RTTI
• Eventually Secured by our Test Phase
Separate Big Units
Work In Progress
• /src/app MicroServices and Daemons
• /src/ddd Domain/Kingdom Driven Design
• /src/mvc MVC Web
• Full Unit and Regression Tests
Expected to be at mORMot 1.18 Feature Set
end of December 2020
Separate Big Units
Work In Progress
• /src/app MicroServices and Daemons
• /src/ddd Domain/Kingdom Driven Design
• /src/mvc MVC Web
• Full Unit and Regression Tests
Expected to be at mORMot 1.18 Feature Set
end of December 2020
mORMot 2 Units
• Separate Big Units
• Consistent Naming
• Composition over Inheritance
Consistent Naming
Consistent Naming
TSQLRecord
TSQLTable
TSQLRest
TSynPersistent
TSQLDBConnection
Consistent Naming
TSQLRecord TOrm
TSQLTable TOrmTable
TSQLRest TRest
TSynPersistent =
TSQLDBConnection =
Consistent Naming
TSQLRecord TOrm
TSQLTable TOrmTable
TSQLRest TRest
TSynPersistent =
TSQLDBConnection =
w/ compatibility type redirection
mORMot 2 Units
• Separate Big Units
• Consistent Naming
• Composition over Inheritance
Composition Over Inheritance
Composition Over Inheritance
To follow SOLID Principles
• Single Responsibility
• Open Close
• Liskov Substitution
• Interface Segregation
• Dependency Inversion
Composition Over Inheritance
TSQLRest
mORMot 1.18 main class
Composition Over Inheritance
TSQLRest
single bloated class
entry point for ORM
and communication
and services
and injection
and security
and threading
and ….
Composition Over Inheritance
TRest = class(TInterfaceResolver)
…
public
Sessions: TAuthSessions;
ORM: IRestOrm;
Services: TServicesContainer;
Run: TRestRunThreads;
end;
Composition Over Inheritance
TRest = class(TInterfaceResolver)
in mormot.rest.*.pas
ORM: IRestOrm; // TRestOrm
in mormot.orm.*.pas
Composition Over Inheritance
TRest = class(TInterfaceResolver)
in mormot.rest.*.pas
Services: TServicesContainer;
in mormot.soa.*.pas
Composition Over Inheritance
TRest = class(TInterfaceResolver)
…
public
ORM: IRestOrm;
Services: TServicesContainer;
Run: TRestRunThreads;
w/ compatibility redirection
FPC Premium Support
Spent 95% of time in Lazarus
writing mORMot 2 units
FPC Premium Support
Spent 95% of time in Lazarus
writing mORMot 2 units
Running 5% Delphi
• for integration tests on Delphi
mainly Delphi 7 / 2007 / XE4 / 10.3 CE
• for debugging
Delphi debugger is vastly superior than gdb
FPC Premium Support
mORMot 1.18 – lots of warnings
FPC Premium Support
mORMot 2 – no warning
FPC Premium Support
Vast Platform Support
+ Android
+ iOS
+ …
FPC Premium Support
100% Open Source Chain
• mORMot MPL / LGPL / GPL
• Lazarus or VSCode as IDE
• FPC as compiler
• Linux as Server and Dev OS
… continue to use Delphi on Windows
but you have alternatives
• mORMot 1.18
• mORMot 2 Survey
• mORMot 2
• mORMot 2 Units
• mORMot 2 Roadmap
Roadmap
• Feature-equal to mORMot 1.18
Roadmap
• Feature-equal to mORMot 1.18
But deprecating Delphi 5, Kylix, LVCL,
SynBigTable, RTTI-Gen UI, oldest SyNode
Roadmap
• Feature-equal to mORMot 1.18
eventual, with no priority order:
• WebSockets Event-Driven Server
• ORM Enhancements (attributes, PODO)
• mormot.core.os.pas for Delphi Linux
• TMS WebCore Client Support
Roadmap
• Feature-equal to mORMot 1.18
eventual, with no priority order:
• DDD Project Wizards
• Administration Remote UI
• Documentation Refactoring
Roadmap
• Feature-equal to mORMot 1.18
may be :
• Better VCL/FMX/LCL integration
• GraphQL Reporting/Query API
• mormot.core.os.pas for Delphi mobile
(not only as client, but with more features)
• Any external contribution
Roadmap
• Feature-equal to mORMot 1.18
• Surprise me for the Next 10 Years…
mORMot 2
Questions?
No Marmots Were Harmed in the Making of This Session

More Related Content

What's hot

Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Moriyoshi Koizumi
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方do_aki
 
How to add an optimization for C# to RyuJIT
How to add an optimization for C# to RyuJITHow to add an optimization for C# to RyuJIT
How to add an optimization for C# to RyuJITEgor Bogatov
 
RocksDB detail
RocksDB detailRocksDB detail
RocksDB detailMIJIN AN
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Jean-Michel Doudoux
 
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...php and sapi and zendengine2 and...
php and sapi and zendengine2 and...do_aki
 
Linux kernel tracing
Linux kernel tracingLinux kernel tracing
Linux kernel tracingViller Hsiao
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Minchul Jung
 
RocksDB compaction
RocksDB compactionRocksDB compaction
RocksDB compactionMIJIN AN
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...François-Guillaume Ribreau
 
Rhel cluster gfs_improveperformance
Rhel cluster gfs_improveperformanceRhel cluster gfs_improveperformance
Rhel cluster gfs_improveperformancesprdd
 
PostgreSQL and Linux Containers
PostgreSQL and Linux ContainersPostgreSQL and Linux Containers
PostgreSQL and Linux ContainersJignesh Shah
 
MySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated EnvironmentMySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated EnvironmentJean-François Gagné
 
Maxscale_메뉴얼
Maxscale_메뉴얼Maxscale_메뉴얼
Maxscale_메뉴얼NeoClova
 
Le protocole HTTP
Le protocole HTTPLe protocole HTTP
Le protocole HTTPSouhaib El
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기Ji-Woong Choi
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기NeoClova
 

What's hot (20)

Phpをいじり倒す10の方法
Phpをいじり倒す10の方法Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
 
php-src の歩き方
php-src の歩き方php-src の歩き方
php-src の歩き方
 
Bootcamp linux commands
Bootcamp linux commandsBootcamp linux commands
Bootcamp linux commands
 
How to add an optimization for C# to RyuJIT
How to add an optimization for C# to RyuJITHow to add an optimization for C# to RyuJIT
How to add an optimization for C# to RyuJIT
 
A3 from sql to orm
A3 from sql to ormA3 from sql to orm
A3 from sql to orm
 
RocksDB detail
RocksDB detailRocksDB detail
RocksDB detail
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
 
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
 
Linux kernel tracing
Linux kernel tracingLinux kernel tracing
Linux kernel tracing
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1
 
RocksDB compaction
RocksDB compactionRocksDB compaction
RocksDB compaction
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
 
Rhel cluster gfs_improveperformance
Rhel cluster gfs_improveperformanceRhel cluster gfs_improveperformance
Rhel cluster gfs_improveperformance
 
PostgreSQL and Linux Containers
PostgreSQL and Linux ContainersPostgreSQL and Linux Containers
PostgreSQL and Linux Containers
 
MySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated EnvironmentMySQL Scalability and Reliability for Replicated Environment
MySQL Scalability and Reliability for Replicated Environment
 
Maxscale_메뉴얼
Maxscale_메뉴얼Maxscale_메뉴얼
Maxscale_메뉴얼
 
Le protocole HTTP
Le protocole HTTPLe protocole HTTP
Le protocole HTTP
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기Maria db 이중화구성_고민하기
Maria db 이중화구성_고민하기
 

Similar to Ekon24 mORMot 2

Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14ActiveState
 
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp
 
Pharo 11: A stabilization release
Pharo 11: A stabilization releasePharo 11: A stabilization release
Pharo 11: A stabilization releaseESUG
 
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...hamidsamadi
 
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...Fabrice Bernhard
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntfUlrich Krause
 
Mongodb at-gilt-groupe-seattle-2012-09-14-final
Mongodb at-gilt-groupe-seattle-2012-09-14-finalMongodb at-gilt-groupe-seattle-2012-09-14-final
Mongodb at-gilt-groupe-seattle-2012-09-14-finalMongoDB
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)goccy
 
CPSeis & GeoCraft
CPSeis & GeoCraftCPSeis & GeoCraft
CPSeis & GeoCraftbillmenger
 
Gentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingGentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingDonnie Berkholz
 
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdfHashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdfssuser705051
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworksKirk Madera
 
Go for SysAdmins - LISA 2015
Go for SysAdmins - LISA 2015Go for SysAdmins - LISA 2015
Go for SysAdmins - LISA 2015Chris McEniry
 
Bringing WordPress to the front-end. o2 is the new P2
Bringing WordPress to the front-end. o2 is the new P2Bringing WordPress to the front-end. o2 is the new P2
Bringing WordPress to the front-end. o2 is the new P2Beau Lebens
 
Git ops & Continuous Infrastructure with terra*
Git ops  & Continuous Infrastructure with terra*Git ops  & Continuous Infrastructure with terra*
Git ops & Continuous Infrastructure with terra*Haggai Philip Zagury
 
Joomla 4.0 what's coming in future
Joomla 4.0   what's coming in futureJoomla 4.0   what's coming in future
Joomla 4.0 what's coming in futureTim Plummer
 

Similar to Ekon24 mORMot 2 (20)

Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
 
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream ProjectsITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
ITCamp 2017 - Raffaele Rialdi - Adopting .NET Core in Mainstream Projects
 
Pharo 11: A stabilization release
Pharo 11: A stabilization releasePharo 11: A stabilization release
Pharo 11: A stabilization release
 
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
 
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntf
 
Mongodb at-gilt-groupe-seattle-2012-09-14-final
Mongodb at-gilt-groupe-seattle-2012-09-14-finalMongodb at-gilt-groupe-seattle-2012-09-14-final
Mongodb at-gilt-groupe-seattle-2012-09-14-final
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
 
CPSeis & GeoCraft
CPSeis & GeoCraftCPSeis & GeoCraft
CPSeis & GeoCraft
 
Gentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingGentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile Everything
 
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdfHashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
Hashicorp-Terraform-Deep-Dive-with-no-Fear-Victor-Turbinsky-Texuna.pdf
 
Terraform-2.pdf
Terraform-2.pdfTerraform-2.pdf
Terraform-2.pdf
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworks
 
Go for SysAdmins - LISA 2015
Go for SysAdmins - LISA 2015Go for SysAdmins - LISA 2015
Go for SysAdmins - LISA 2015
 
Working with Git
Working with GitWorking with Git
Working with Git
 
Bringing WordPress to the front-end. o2 is the new P2
Bringing WordPress to the front-end. o2 is the new P2Bringing WordPress to the front-end. o2 is the new P2
Bringing WordPress to the front-end. o2 is the new P2
 
Switching to Git
Switching to GitSwitching to Git
Switching to Git
 
Keep Applications Online
Keep Applications OnlineKeep Applications Online
Keep Applications Online
 
Git ops & Continuous Infrastructure with terra*
Git ops  & Continuous Infrastructure with terra*Git ops  & Continuous Infrastructure with terra*
Git ops & Continuous Infrastructure with terra*
 
Joomla 4.0 what's coming in future
Joomla 4.0   what's coming in futureJoomla 4.0   what's coming in future
Joomla 4.0 what's coming in future
 

More from Arnaud Bouchez

EKON27-FrameworksTuning.pdf
EKON27-FrameworksTuning.pdfEKON27-FrameworksTuning.pdf
EKON27-FrameworksTuning.pdfArnaud Bouchez
 
EKON27-FrameworksExpressiveness.pdf
EKON27-FrameworksExpressiveness.pdfEKON27-FrameworksExpressiveness.pdf
EKON27-FrameworksExpressiveness.pdfArnaud Bouchez
 
Ekon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsEkon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsArnaud Bouchez
 
Ekon24 from Delphi to AVX2
Ekon24 from Delphi to AVX2Ekon24 from Delphi to AVX2
Ekon24 from Delphi to AVX2Arnaud Bouchez
 
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMot
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMotEkon23 (2) Kingdom-Driven-Design applied to Social Media with mORMot
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMotArnaud Bouchez
 
Ekon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignEkon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignArnaud Bouchez
 
High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)Arnaud Bouchez
 
Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)Arnaud Bouchez
 
Ekon21 Microservices - SOLID Meets SOA
Ekon21 Microservices - SOLID Meets SOAEkon21 Microservices - SOLID Meets SOA
Ekon21 Microservices - SOLID Meets SOAArnaud Bouchez
 
Ekon21 Microservices - Event Driven Design
Ekon21 Microservices - Event Driven DesignEkon21 Microservices - Event Driven Design
Ekon21 Microservices - Event Driven DesignArnaud Bouchez
 
Ekon20 mORMot WorkShop Delphi
Ekon20 mORMot WorkShop DelphiEkon20 mORMot WorkShop Delphi
Ekon20 mORMot WorkShop DelphiArnaud Bouchez
 
Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Arnaud Bouchez
 
D1 from interfaces to solid
D1 from interfaces to solidD1 from interfaces to solid
D1 from interfaces to solidArnaud Bouchez
 
D2 domain driven-design
D2 domain driven-designD2 domain driven-design
D2 domain driven-designArnaud Bouchez
 
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMotDelphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMotArnaud Bouchez
 

More from Arnaud Bouchez (19)

EKON27-FrameworksTuning.pdf
EKON27-FrameworksTuning.pdfEKON27-FrameworksTuning.pdf
EKON27-FrameworksTuning.pdf
 
EKON27-FrameworksExpressiveness.pdf
EKON27-FrameworksExpressiveness.pdfEKON27-FrameworksExpressiveness.pdf
EKON27-FrameworksExpressiveness.pdf
 
Ekon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side NotificationsEkon25 mORMot 2 Server-Side Notifications
Ekon25 mORMot 2 Server-Side Notifications
 
Ekon24 from Delphi to AVX2
Ekon24 from Delphi to AVX2Ekon24 from Delphi to AVX2
Ekon24 from Delphi to AVX2
 
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMot
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMotEkon23 (2) Kingdom-Driven-Design applied to Social Media with mORMot
Ekon23 (2) Kingdom-Driven-Design applied to Social Media with mORMot
 
Ekon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignEkon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-Design
 
High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)High Performance Object Pascal Code on Servers (at EKON 22)
High Performance Object Pascal Code on Servers (at EKON 22)
 
Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)Object Pascal Clean Code Guidelines Proposal (at EKON 22)
Object Pascal Clean Code Guidelines Proposal (at EKON 22)
 
Ekon21 Microservices - SOLID Meets SOA
Ekon21 Microservices - SOLID Meets SOAEkon21 Microservices - SOLID Meets SOA
Ekon21 Microservices - SOLID Meets SOA
 
Ekon21 Microservices - Event Driven Design
Ekon21 Microservices - Event Driven DesignEkon21 Microservices - Event Driven Design
Ekon21 Microservices - Event Driven Design
 
Ekon20 mORMot WorkShop Delphi
Ekon20 mORMot WorkShop DelphiEkon20 mORMot WorkShop Delphi
Ekon20 mORMot WorkShop Delphi
 
Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference Ekon20 mORMot SOA Delphi Conference
Ekon20 mORMot SOA Delphi Conference
 
2016 mORMot
2016 mORMot2016 mORMot
2016 mORMot
 
A1 from n tier to soa
A1 from n tier to soaA1 from n tier to soa
A1 from n tier to soa
 
D1 from interfaces to solid
D1 from interfaces to solidD1 from interfaces to solid
D1 from interfaces to solid
 
A2 from soap to rest
A2 from soap to restA2 from soap to rest
A2 from soap to rest
 
D2 domain driven-design
D2 domain driven-designD2 domain driven-design
D2 domain driven-design
 
A4 from rad to mvc
A4 from rad to mvcA4 from rad to mvc
A4 from rad to mvc
 
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMotDelphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMot
 

Recently uploaded

AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingWSO2
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseWSO2
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceIES VE
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaWSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governanceWSO2
 

Recently uploaded (20)

AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 

Ekon24 mORMot 2