SlideShare une entreprise Scribd logo
1  sur  136
Télécharger pour lire hors ligne
Symfony &
   JavaScript
Combining the best of two worlds




                   Nacho Martín
                    @nacmartin
Symfony &
   JavaScript
Combining the best of two worlds




                   Nacho Martín
                    @nacmartin
A bit of history
Client




Server
Client




Server
Client




Server
What’s that??
What’s that??

         It’s just a JavaScript
Client




Server
Client




Server
Client




Server
Client




Server
Client




Server
Why should I care?
Users like it
Users like it



You want to do it
Users expect it



You want to do it
Users expect it



You need to do it
It’s still just a JavaScript
But, but...


JavaScript is HARD
Sequential
Sequential
Sequential
Sequential
Sequential
Sequential
Sequential
Asynchronous
Asynchronous
Asynchronous
Asynchronous
       Call me back
Asynchronous
Asynchronous
Asynchronous



         Done !
Asynchronous
for(var i = 1; i <= 5; i++) {
  console.log(i);
}
1
for(var i = 1; i <= 5; i++) {   2
  console.log(i);               3
}
                                4
                                5
for(var i = 1; i <= 5; i++) {
   setTimeout(function() {
      console.log(i);
   }, 100);
}
6
for(var i = 1; i <= 5; i++) {
   setTimeout(function() {      6
      console.log(i);           6
   }, 100);
}
                                6
                                6
for(var i = 1; i <= 5; i++) {
  (function() {
    var j = i;
    setTimeout(
        function() {
            console.log(j);
        }, 100);
  })();
}
for(var i = 1; i <= 5; i++) {
  (function() {                 1
    var j = i;
    setTimeout(
                                2
        function() {            3
            console.log(j);     4
        }, 100);
  })();                         5
}
Callback nesting
Callback nesting




• Events
Callback nesting




• Events
• Async.js
“this” gotcha
var o = {};
o.prop = {};

var o.f1 = function(){
    var that = this;

     this.prop.active = false;

     var activate = function(){
         that.prop.active = true;

     };

     activate();

};
“this” gotcha
var o = {};
o.prop = {};

var o.f1 = function(){
    var that = this;

     this.prop.active = false;

     var activate = function(){
         that.prop.active = true;

     };

     activate();

};
http://www.flickr.com/photos/bensonkua/3161323177/in/photostream/
Douglas Crockford
But, but...
But, but...

•Can be ugly
But, but...

•Can be ugly
•Tons of crappy code
But, but...

•Can be ugly
•Tons of crappy code
•Inconsistencies
But, but...

•Can be ugly
•Tons of crappy code
•Inconsistencies
•Weird stuff inside
But, but...

•Can be ugly         •Huge community
•Tons of crappy code
•Inconsistencies
•Weird stuff inside
But, but...

•Can be ugly         •Huge community
•Tons of crappy code •Easy to get help
•Inconsistencies
•Weird stuff inside
But, but...

•Can be ugly         •Huge community
•Tons of crappy code •Easy to get help
•Inconsistencies     •Low entry barrier
•Weird stuff inside
But, but...

•Can be ugly         •Huge community
•Tons of crappy code •Easy to get help
•Inconsistencies     •Low entry barrier
•Weird stuff inside •Is everywhere
http://www.flickr.com/photos/73935252@N00/181308667
The team needs discipline

                                 compromise readablity




http://www.flickr.com/photos/39865537@N03/4395203300
  http://www.flickr.com/photos/73935252@N00/181308667
Pick your battles




          http://www.flickr.com/photos/43322231@N07/5589147122
is the perfect
complement
is the perfect
complement
Client side JS
Level I




                             Text



          http://www.flickr.com/photos/lecates/307250887/
Assetic
FOSJsRouterBundle
PHP
/**
 * @Route ("/foo/{id}/bar", name="my_route_to_expose", options={"expose"=true})
 */
public function exposedAction($foo)




JS
Routing.generate('my_route_to_expose', { id: 10 });
// /foo/10/bar
Level II




  http://www.flickr.com/photos/49766155@N07/4945673508
                                 Text
Client




Server
Client




Server
Client




Server
Then Symfony...?
Then Symfony...?


Still does almost everything
•Small library
•Stable for JS world
•Active
•Open Source
•Popular
• Models        • Models
• Collections   • Repositories
• Views         • Controllers
• Templates     • Views
• Routing       • Routing
View



Model   Model
View


                Books=new Backbone.collection();
Model   Model   Books.url = ‘/books’;
                Books.fetch()
View


                Books=new Backbone.collection();
Model   Model   Books.url = ‘/books’;
                Books.fetch()




                GET /books
View


                Books=new Backbone.collection();
Model   Model   Books.url = ‘/books’;
                Books.fetch()




                GET /books
View        Books.on(‘reset’, this.render);




                Books=new Backbone.collection();
Model   Model   Books.url = ‘/books’;
                Books.fetch()




                GET /books
View        Books.on(‘reset’, this.render);




                Books=new Backbone.collection();
Model   Model   Books.url = ‘/books’;
                Books.fetch()




                GET /books
View        Books.on(‘reset’, this.render);




                Books=new Backbone.collection();
Model   Model   Books.url = ‘/books’;
                Books.fetch()




                GET /books
View



Model   Model
events: { ‘click .mybutton’: ‘doStuffAndSave’}
    View



Model   Model
events: { ‘click .mybutton’: ‘doStuffAndSave’}
    View



Model   Model
events: { ‘click .mybutton’: ‘doStuffAndSave’}
    View        doStuffAndSave: function() {
                  var book = Books.get(3);
                  book.stuff();
                  Books.get(3).save();
                }

Model   Model
events: { ‘click .mybutton’: ‘doStuffAndSave’}
    View        doStuffAndSave: function() {
                  var book = Books.get(3);
                  book.stuff();
                  Books.get(3).save();
                }

Model   Model
events: { ‘click .mybutton’: ‘doStuffAndSave’}
    View        doStuffAndSave: function() {
                  var book = Books.get(3);
                  book.stuff();
                  Books.get(3).save();
                }

Model   Model



                PUT /books/3
Build an API




        http://www.flickr.com/photos/kaptainkobold/3203311346/
FOSRestBundle

 /**
  * @View()
  * GET /users
  */
public function getUsersAction()
{
     return $this->getDoctrine()->getRepository('myBundle:User')->findAll();
}
[
           Response
    {“id”:1,
     “name”:”nacho”,
     “password”: “X$$%$X”,
     “email”:”nacho@limenius.com”,
     “profile”: {
             “id”:3,
             “phone”: “666666666”}
             }
    },
    {...},
]
JMSSerializer
MyBundleUser:
    exclusion_policy: ALL
    properties:
        id:
            expose: true
        name:
            expose: true
        email:
            expose: true
JMSSerializer
MyBundleUser:
    exclusion_policy: ALL
    properties:
        id:
            expose: true
        name:
            expose: true
        email:
            expose: true
    callback_methods:
        pre_serialize: serializeProfile
JMSSerializer

public function serializeProfile()
{
    $this->phone = $this->profile->getPhone();
    $this->profile = null;
}
Response
[ {“id”:1,
   “name”:”nacho”,
   “email”:”nacho@limenius.com”,
   “phone”: “666666666”
   },
   {...},
]
Deserialize forms
•SimpleThingsFormSerializeBundle
•Symfony-cmf/CreateBundle
•http://williamdurand.fr/2012/08/02/
  rest-apis-with-symfony2-the-right-
  way/
NelmioApiDocBundle
Twig.js



     Twig
Twig.js



 Backbone   Twig
Twig.js

{% javascripts "@MyBundle/Resources/views/tmpl.html.twig"
     filter="twig_js, ?yui_js" %}
    <script language="javascript" src="{{ asset_url }}">
    </script>
{% endjavascripts %}
Server side JS
Client




Server
Client




Server
Client




Server
Client




Server
What for
What for

•Streaming data
What for

•Streaming data
•Soft realtime
 •Chats
 •Notifications
Challenges to face
Challenges to face
•Organization of a big code base
Challenges to face
•Organization of a big code base
•General lower level of abstraction
Challenges to face
•Organization of a big code base
•General lower level of abstraction
•Deployment
 •Serving static files
Challenges to face
•Organization of a big code base
•General lower level of abstraction
•Deployment
 •Serving static files
Use case:
Notifications
♥
♥
♥
♥
Websockets



io.sockets.on('connection', function (socket) {
  socket.join('user1');
  socket.broadcast.to('user1').emit('Hi user 1');
});
Dealing with secrets




http://www.flickr.com/photos/45940879@N04/6277724736
http

MQ
The pusher way




secret     secret
The pusher way




         so
           ck
             et
             id


secret            secret
The pusher way



            id &
               e

                   so
      ck am


                     ck
    so l n




                       et
         et
        ne




                       id
     an
   ch




secret                      secret
ke
                y:s
                   ign
                       at
                          u




secret
         ch                 re
          an
             ne
         so l n
           ck am
              et    e
                 id &
                   so
                     ck
                       et
              id
                                 The pusher way




secret
secret
                               &
The pusher way




                             e
                           am re
                        l n tu
                     ne na
                   an sig
                 ch y:
                     ke         id
                              et
                            ck
                          so
                              id &
                                 e
                           et
                        ck am
                      so l n
                          ne
                     rean
                                       ch




                                            secret
                           u
                        at
                                 ign
                              y:s
                            ke
Deploy
Deploy
Deploy
It’s just a JavaScript
Thanks
                   Nacho Martín
                    @nacmartin
                nacho@limenius.com




http://www.flickr.com/photos/95572727@N00/2380543038

Contenu connexe

Tendances

Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)
Fabien Potencier
 
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro frameworkKeeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro framework
Jeremy Kendall
 

Tendances (20)

The quest for global design principles (SymfonyLive Berlin 2015)
The quest for global design principles (SymfonyLive Berlin 2015)The quest for global design principles (SymfonyLive Berlin 2015)
The quest for global design principles (SymfonyLive Berlin 2015)
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
 
Symfony 2
Symfony 2Symfony 2
Symfony 2
 
Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)Symfony: Your Next Microframework (SymfonyCon 2015)
Symfony: Your Next Microframework (SymfonyCon 2015)
 
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017The Coolest Symfony Components you’ve never heard of - DrupalCon 2017
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017
 
How I started to love design patterns
How I started to love design patternsHow I started to love design patterns
How I started to love design patterns
 
Matters of State
Matters of StateMatters of State
Matters of State
 
PHP 5.3 and Lithium: the most rad php framework
PHP 5.3 and Lithium: the most rad php frameworkPHP 5.3 and Lithium: the most rad php framework
PHP 5.3 and Lithium: the most rad php framework
 
Symfony Messenger (Symfony Live San Francisco)
Symfony Messenger (Symfony Live San Francisco)Symfony Messenger (Symfony Live San Francisco)
Symfony Messenger (Symfony Live San Francisco)
 
Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5
 
Symfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il clienteSymfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il cliente
 
Keeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and WebpackKeeping the frontend under control with Symfony and Webpack
Keeping the frontend under control with Symfony and Webpack
 
The Zen of Lithium
The Zen of LithiumThe Zen of Lithium
The Zen of Lithium
 
Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)
 
Min-Maxing Software Costs - Laracon EU 2015
Min-Maxing Software Costs - Laracon EU 2015Min-Maxing Software Costs - Laracon EU 2015
Min-Maxing Software Costs - Laracon EU 2015
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
 
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro frameworkKeeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro framework
 
Crafting beautiful software
Crafting beautiful softwareCrafting beautiful software
Crafting beautiful software
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For Beginners
 
My app is secure... I think
My app is secure... I thinkMy app is secure... I think
My app is secure... I think
 

En vedette

Get Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP StreamsGet Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP Streams
Davey Shafik
 
Why elasticsearch rocks!
Why elasticsearch rocks!Why elasticsearch rocks!
Why elasticsearch rocks!
tlrx
 
L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)
Arnauld Loyer
 

En vedette (20)

Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
Finally, Professional Frontend Dev with ReactJS, WebPack & Symfony (Symfony C...
 
Symfony2, Backbone.js &amp; socket.io - SfLive Paris 2k13 - Wisembly
Symfony2, Backbone.js &amp; socket.io - SfLive Paris 2k13 - WisemblySymfony2, Backbone.js &amp; socket.io - SfLive Paris 2k13 - Wisembly
Symfony2, Backbone.js &amp; socket.io - SfLive Paris 2k13 - Wisembly
 
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
High Quality Symfony Bundles tutorial - Dutch PHP Conference 2014
 
Techniques d'accélération des pages web
Techniques d'accélération des pages webTechniques d'accélération des pages web
Techniques d'accélération des pages web
 
Diving deep into twig
Diving deep into twigDiving deep into twig
Diving deep into twig
 
Elastic Searching With PHP
Elastic Searching With PHPElastic Searching With PHP
Elastic Searching With PHP
 
Get Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP StreamsGet Soaked - An In Depth Look At PHP Streams
Get Soaked - An In Depth Look At PHP Streams
 
PHP5.5 is Here
PHP5.5 is HerePHP5.5 is Here
PHP5.5 is Here
 
Automation using-phing
Automation using-phingAutomation using-phing
Automation using-phing
 
Electrify your code with PHP Generators
Electrify your code with PHP GeneratorsElectrify your code with PHP Generators
Electrify your code with PHP Generators
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPress
 
Doctrine2 sf2Vigo
Doctrine2 sf2VigoDoctrine2 sf2Vigo
Doctrine2 sf2Vigo
 
Top tips my_sql_performance
Top tips my_sql_performanceTop tips my_sql_performance
Top tips my_sql_performance
 
Mocking Demystified
Mocking DemystifiedMocking Demystified
Mocking Demystified
 
Why elasticsearch rocks!
Why elasticsearch rocks!Why elasticsearch rocks!
Why elasticsearch rocks!
 
Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015Understanding Craftsmanship SwanseaCon2015
Understanding Craftsmanship SwanseaCon2015
 
Writing infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQLWriting infinite scalability web applications with PHP and PostgreSQL
Writing infinite scalability web applications with PHP and PostgreSQL
 
Si le tdd est mort alors pratiquons une autopsie mix-it 2015
Si le tdd est mort alors pratiquons une autopsie mix-it 2015Si le tdd est mort alors pratiquons une autopsie mix-it 2015
Si le tdd est mort alors pratiquons une autopsie mix-it 2015
 
L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)L'ABC du BDD (Behavior Driven Development)
L'ABC du BDD (Behavior Driven Development)
 
Behat 3.0 meetup (March)
Behat 3.0 meetup (March)Behat 3.0 meetup (March)
Behat 3.0 meetup (March)
 

Similaire à Symfony & Javascript. Combining the best of two worlds

Async. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.jsAsync. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.js
Shoaib Burq
 
Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)
Damien Seguy
 
Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)
Remy Sharp
 
Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02
PL dream
 
みゆっき☆Think#7 「本気で学ぶJavascript」
みゆっき☆Think#7 「本気で学ぶJavascript」みゆっき☆Think#7 「本気で学ぶJavascript」
みゆっき☆Think#7 「本気で学ぶJavascript」
techtalkdwango
 
第7回みゆっき☆Think 本気で学ぶ JavaScript
第7回みゆっき☆Think 本気で学ぶ JavaScript第7回みゆっき☆Think 本気で学ぶ JavaScript
第7回みゆっき☆Think 本気で学ぶ JavaScript
Takuya Fujimura
 

Similaire à Symfony & Javascript. Combining the best of two worlds (20)

Lecture 03 - JQuery.pdf
Lecture 03 - JQuery.pdfLecture 03 - JQuery.pdf
Lecture 03 - JQuery.pdf
 
Async. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.jsAsync. and Realtime Geo Applications with Node.js
Async. and Realtime Geo Applications with Node.js
 
JSLT: JSON querying and transformation
JSLT: JSON querying and transformationJSLT: JSON querying and transformation
JSLT: JSON querying and transformation
 
"Javascript" por Tiago Rodrigues
"Javascript" por Tiago Rodrigues"Javascript" por Tiago Rodrigues
"Javascript" por Tiago Rodrigues
 
Solving the Riddle of Search: Using Sphinx with Rails
Solving the Riddle of Search: Using Sphinx with RailsSolving the Riddle of Search: Using Sphinx with Rails
Solving the Riddle of Search: Using Sphinx with Rails
 
Cucumber
CucumberCucumber
Cucumber
 
Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)Php Code Audits (PHP UK 2010)
Php Code Audits (PHP UK 2010)
 
ECMAScript.Next ECMAScipt 6
ECMAScript.Next ECMAScipt 6ECMAScript.Next ECMAScipt 6
ECMAScript.Next ECMAScipt 6
 
Es.next
Es.nextEs.next
Es.next
 
Modernizes your objective C - Oliviero
Modernizes your objective C - OlivieroModernizes your objective C - Oliviero
Modernizes your objective C - Oliviero
 
Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)Is HTML5 Ready? (workshop)
Is HTML5 Ready? (workshop)
 
Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02Is html5-ready-workshop-110727181512-phpapp02
Is html5-ready-workshop-110727181512-phpapp02
 
Fantom and Tales
Fantom and TalesFantom and Tales
Fantom and Tales
 
Workshop 1: Good practices in JavaScript
Workshop 1: Good practices in JavaScriptWorkshop 1: Good practices in JavaScript
Workshop 1: Good practices in JavaScript
 
React Native Evening
React Native EveningReact Native Evening
React Native Evening
 
みゆっき☆Think#7 「本気で学ぶJavascript」
みゆっき☆Think#7 「本気で学ぶJavascript」みゆっき☆Think#7 「本気で学ぶJavascript」
みゆっき☆Think#7 「本気で学ぶJavascript」
 
第7回みゆっき☆Think 本気で学ぶ JavaScript
第7回みゆっき☆Think 本気で学ぶ JavaScript第7回みゆっき☆Think 本気で学ぶ JavaScript
第7回みゆっき☆Think 本気で学ぶ JavaScript
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
Awesomeness of JavaScript…almost
Awesomeness of JavaScript…almostAwesomeness of JavaScript…almost
Awesomeness of JavaScript…almost
 
CoffeeScript Design Patterns
CoffeeScript Design PatternsCoffeeScript Design Patterns
CoffeeScript Design Patterns
 

Plus de Ignacio Martín

Plus de Ignacio Martín (16)

Elixir/OTP for PHP developers
Elixir/OTP for PHP developersElixir/OTP for PHP developers
Elixir/OTP for PHP developers
 
Introduction to React Native Workshop
Introduction to React Native WorkshopIntroduction to React Native Workshop
Introduction to React Native Workshop
 
Server side rendering with React and Symfony
Server side rendering with React and SymfonyServer side rendering with React and Symfony
Server side rendering with React and Symfony
 
Symfony 4 Workshop - Limenius
Symfony 4 Workshop - LimeniusSymfony 4 Workshop - Limenius
Symfony 4 Workshop - Limenius
 
Server Side Rendering of JavaScript in PHP
Server Side Rendering of JavaScript in PHPServer Side Rendering of JavaScript in PHP
Server Side Rendering of JavaScript in PHP
 
Extending Redux in the Server Side
Extending Redux in the Server SideExtending Redux in the Server Side
Extending Redux in the Server Side
 
Redux Sagas - React Alicante
Redux Sagas - React AlicanteRedux Sagas - React Alicante
Redux Sagas - React Alicante
 
React Native Workshop - React Alicante
React Native Workshop - React AlicanteReact Native Workshop - React Alicante
React Native Workshop - React Alicante
 
Asegurando APIs en Symfony con JWT
Asegurando APIs en Symfony con JWTAsegurando APIs en Symfony con JWT
Asegurando APIs en Symfony con JWT
 
Redux saga: managing your side effects. Also: generators in es6
Redux saga: managing your side effects. Also: generators in es6Redux saga: managing your side effects. Also: generators in es6
Redux saga: managing your side effects. Also: generators in es6
 
Integrating React.js with PHP projects
Integrating React.js with PHP projectsIntegrating React.js with PHP projects
Integrating React.js with PHP projects
 
Introduction to Redux
Introduction to ReduxIntroduction to Redux
Introduction to Redux
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
 
Adding Realtime to your Projects
Adding Realtime to your ProjectsAdding Realtime to your Projects
Adding Realtime to your Projects
 
Symfony 2 CMF
Symfony 2 CMFSymfony 2 CMF
Symfony 2 CMF
 
Presentacion git
Presentacion gitPresentacion git
Presentacion git
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
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
Safe Software
 

Dernier (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
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...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
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
 

Symfony & Javascript. Combining the best of two worlds