Previously I have presented MVC - Model: the great forgotten, in which I have explained what models were for.
It was very well received but because it was focused only in the model concept it leak of some important concepts about the whole MVC abstraction or how it make scale into a large AngularJS.
In the previous talk I gave some hints, but not all, and the audience asked for more.
This presentation explains the whole MVS, and adaptation of MVC leveraging in Angular capacities.
It should be presented in the Angular Camp of July 2016, but unfortunately their organizers forgot about it in the votations for talk and different set of talks were selected from the same author.
This talk has been given to some of my customers in private sessions.
MVC is a very popular model and many people claim that they follow it. But, despite of this, many people does not understand what are Models and which role are they playing.
This presentation was done in the Angular Camp of January'2015, explains with AngularJS step by step what happens when we develop Applications and how Models solve a large list of potential problems.
This presentation was very well received by the audience which had been very grateful and claimed to finally understand what models were for.
By beginnings of 2016 there was very little information about how to work with Angular2 and almost no information about how to scale large applications.
There was no example of how to do modules, how to inject dependences inside services, how to use ES5 and so on.
In this presentation I explained how it worked and I have also provided an example in ES5 and Typescript how it can be done:
- https://github.com/drpicox/angular2-thedoctoris-ts
- https://github.com/drpicox/angular2-thedoctoris-es5
The Many Ways to Build Modular JavaScriptTim Perry
The document discusses different approaches to building modular JavaScript code, including:
1. Using immediately-invoked function expressions (IIFEs) to encapsulate code and make dependencies explicit.
2. Asynchronous module definition (AMD), which defines modules and their dependencies, allowing for asynchronous loading and better management of modules.
3. The benefits of modular code include encapsulated state, reusable code, and explicit dependency management. This improves code organization, reuse, and reasoning about the system.
This document discusses JavaScript module patterns, which help organize and limit the scope of code in projects. It covers different patterns for creating objects and modules, including using constructors, prototypes, the revealing module pattern, CommonJS, and AMD. The basic module pattern allows defining private and public members to encapsulate data and functions. Later patterns like CommonJS and AMD build on this to support asynchronous loading and use in different environments like the browser and Node.js.
The document provides an agenda and overview for a SharePoint Saturday session on using SharePoint and jQuery. The session will cover the history of SharePoint and jQuery, an overview of jQuery, best practices for when to use jQuery and how to deploy and develop with it. It will also discuss using jQuery to interact with SharePoint forms and lists, and demonstrate some third party jQuery libraries.
JavaScript is a scripting language that works in web browsers to make web pages interactive. jQuery is a JavaScript library that simplifies HTML document traversal, event handling, animating, and Ajax interactions. While JavaScript allows for web application creation and event handling, jQuery makes these tasks easier through its simplified syntax and methods. jQuery also enables animations, which are difficult to create with plain JavaScript. Overall, jQuery builds on JavaScript by providing a simpler, cross-browser compatible way to select and manipulate HTML, handle events, perform animations, and add Ajax interactions to web pages.
This document provides an introduction and overview of ReactJS concepts including components, JSX, props, state, lifecycle methods and the virtual DOM. It compares ReactJS to AngularJS, noting ReactJS uses a non-MVC architecture and focuses on just the view layer while AngularJS follows MVC. Later sections discuss additional ReactJS topics like Flux, Redux, Webpack and RamdaJS.
Javascript and first-class citizenry: require.js & node.js
Javascript on web pages is ubiquitous and its problems are legendary. Javascript, seen as a second-class code citizen, is usually hacked together even by seasoned developers. New libraries (jQuery, prototype, backbone, knockout, underscore) and runtime tools (firebug, jasmine) look like they solve many problems - and they do. But they still leave poorly written code as just that. One key problem is that all javascript code lives globally and this results in poorly managed, tested and delivered code.
In this session, I will illustrate that we can treat javascript as a first-class citizen using with require.js and node.js: it can be modular, encapsulated and easily unit tested and added to continuous integration cycle. The dependencies between javascript modules can also be managed and packaged just like in C# and Java. In the end, we can resolve many javascript difficulties at compile time rather than waiting until runtime.
MVC is a very popular model and many people claim that they follow it. But, despite of this, many people does not understand what are Models and which role are they playing.
This presentation was done in the Angular Camp of January'2015, explains with AngularJS step by step what happens when we develop Applications and how Models solve a large list of potential problems.
This presentation was very well received by the audience which had been very grateful and claimed to finally understand what models were for.
By beginnings of 2016 there was very little information about how to work with Angular2 and almost no information about how to scale large applications.
There was no example of how to do modules, how to inject dependences inside services, how to use ES5 and so on.
In this presentation I explained how it worked and I have also provided an example in ES5 and Typescript how it can be done:
- https://github.com/drpicox/angular2-thedoctoris-ts
- https://github.com/drpicox/angular2-thedoctoris-es5
The Many Ways to Build Modular JavaScriptTim Perry
The document discusses different approaches to building modular JavaScript code, including:
1. Using immediately-invoked function expressions (IIFEs) to encapsulate code and make dependencies explicit.
2. Asynchronous module definition (AMD), which defines modules and their dependencies, allowing for asynchronous loading and better management of modules.
3. The benefits of modular code include encapsulated state, reusable code, and explicit dependency management. This improves code organization, reuse, and reasoning about the system.
This document discusses JavaScript module patterns, which help organize and limit the scope of code in projects. It covers different patterns for creating objects and modules, including using constructors, prototypes, the revealing module pattern, CommonJS, and AMD. The basic module pattern allows defining private and public members to encapsulate data and functions. Later patterns like CommonJS and AMD build on this to support asynchronous loading and use in different environments like the browser and Node.js.
The document provides an agenda and overview for a SharePoint Saturday session on using SharePoint and jQuery. The session will cover the history of SharePoint and jQuery, an overview of jQuery, best practices for when to use jQuery and how to deploy and develop with it. It will also discuss using jQuery to interact with SharePoint forms and lists, and demonstrate some third party jQuery libraries.
JavaScript is a scripting language that works in web browsers to make web pages interactive. jQuery is a JavaScript library that simplifies HTML document traversal, event handling, animating, and Ajax interactions. While JavaScript allows for web application creation and event handling, jQuery makes these tasks easier through its simplified syntax and methods. jQuery also enables animations, which are difficult to create with plain JavaScript. Overall, jQuery builds on JavaScript by providing a simpler, cross-browser compatible way to select and manipulate HTML, handle events, perform animations, and add Ajax interactions to web pages.
This document provides an introduction and overview of ReactJS concepts including components, JSX, props, state, lifecycle methods and the virtual DOM. It compares ReactJS to AngularJS, noting ReactJS uses a non-MVC architecture and focuses on just the view layer while AngularJS follows MVC. Later sections discuss additional ReactJS topics like Flux, Redux, Webpack and RamdaJS.
Javascript and first-class citizenry: require.js & node.js
Javascript on web pages is ubiquitous and its problems are legendary. Javascript, seen as a second-class code citizen, is usually hacked together even by seasoned developers. New libraries (jQuery, prototype, backbone, knockout, underscore) and runtime tools (firebug, jasmine) look like they solve many problems - and they do. But they still leave poorly written code as just that. One key problem is that all javascript code lives globally and this results in poorly managed, tested and delivered code.
In this session, I will illustrate that we can treat javascript as a first-class citizen using with require.js and node.js: it can be modular, encapsulated and easily unit tested and added to continuous integration cycle. The dependencies between javascript modules can also be managed and packaged just like in C# and Java. In the end, we can resolve many javascript difficulties at compile time rather than waiting until runtime.
On May 14, 2015, Jeff Winkler gave a talk at Harvard University's Lamont Library titled "Intro to ReactJS."
Description
Created by Facebook and Instagram, React has recently been embraced by companies and organizations including Airbnb, Khan Academy, Reddit, the BBC, and Code Academy. This presentation will be especially interesting for those using or planning to use javascript libraries such as angularJS, backbone.js, ember.js, and others.
For this talk, Jeff Winkler will present:
- An introduction to React, mixed with demos.
- An examination of how React implements Computer Science principles from Functional and Object-Oriented. The discussion will consider the impact on maintainable large-scale systems.
Biography
Jeff Winkler, is a professional developer* in the Boston area and organizer of the Boston ReactJS Meetup. In addition to the ReactJS Boston Meetup, Jeff works with React professionally at TapJoy and runs http://react.rocks.
(* Full-stack guy. ReactJS, Rails, TDD. Best OODA loop wins)
A single language for backend and frontend from AngularJS to cloud with Clau...Walter Dal Mut
This document discusses building a backend for an Angular application using serverless technologies on AWS. It describes using API Gateway to declare APIs and delegate to Lambda functions. Lambda functions can access data from DynamoDB. Testing the Angular components and services is also covered. The document recommends using the Claudia library to simplify building APIs with API Gateway and Lambda, as it provides an interface similar to Express.
Single Page Web Applications with CoffeeScript, Backbone and JasminePaulo Ragonha
This document discusses using CoffeeScript, Backbone.js, and Jasmine BDD to build single page web applications. It begins by explaining why CoffeeScript is useful for cleaning up JavaScript code and avoiding errors. It then discusses how Backbone.js provides structure for single page apps by defining models, collections, views and routers. It notes that Backbone works well with CoffeeScript. Finally, it mentions that Jasmine BDD can be used for writing professional tests.
This document provides an overview of React, including initial reactions to it, fundamental concepts like components and one-way data flow, and how the virtual DOM works. Some key points covered include:
- Initial reactions to React were mixed, with some finding it "ugly" but others seeing benefits like separation of concerns with components.
- Everything in React is a component, with data flowing in one direction from parent to child via props. State is mutable within a component.
- By using a virtual DOM, React can efficiently update the real DOM by only making necessary changes, keeping the interface fast and pure.
This document summarizes an upcoming talk about changes in Rails 3. It notes that Rails 3 release candidate 1 will soon be released, following beta 4. It warns that upgrading apps to Rails 3 may not be straightforward. The talk will cover unobtrusive JavaScript, ActiveModel which decouples models, ActiveRelation for database queries, and Bundler for managing gem dependencies.
The document discusses creating web applications using jQuery. It begins with introductions and background on the speaker's experience. It then discusses how JavaScript can become complex when building real-world applications, but common requirements emerge a pattern. JavaScript frameworks help simplify coding through interfaces and syntactic sugar. jQuery is introduced as a popular framework that handles cross-browser compatibility issues and simplifies DOM manipulation through selectors and functions. The document then covers various jQuery topics like versions, objects, selectors, reading/manipulating the DOM, events, and communicating with servers.
Javascript Application Architecture with Backbone.JSMin Ming Lo
This document provides an overview and summary of Javascript application architecture using Backbone.js and Underscore.js. It discusses the traditional web architecture with server-side rendering compared to client-side MVC frameworks. It then covers the basics of Backbone.js including models, collections, RESTful APIs, and how Backbone handles CRUD operations and tying the front-end to backend data. Templating with Underscore.js and building single page apps are also mentioned.
The document introduces the jQuery library, which is a popular JavaScript library that simplifies tasks like HTML document traversal, event handling, animating, and Ajax interactions. It notes that over 20% of websites use jQuery and outlines some of its main capabilities like selecting elements, hiding/showing elements, and loading remote HTML. Alternatives to jQuery are mentioned but it is positioned as standing alone in popularity based on Google search volumes.
This document provides an introduction to jQuery, including:
- jQuery is a JavaScript library that simplifies HTML document interaction and event handling. It was created by John Resig in 2006.
- The current version is 1.3.2 and version 1.4 is coming soon. John Resig continues to develop jQuery in Boston.
- jQuery selects elements, changes their properties, handles events, and makes AJAX calls to simplify common JavaScript tasks. It works by selecting DOM elements and running functions on the selection.
The document discusses tools for building web applications, including Express.js, Underscore.js, and Backbone.js. Express.js is described as providing routing, request and response rendering, and middleware capabilities. Underscore.js is a utility library that provides functions for tasks like mapping, filtering, and grouping data. Backbone.js implements a client-side MVC pattern and allows binding data to views so that changes to data automatically update views. EJS is mentioned as a templating engine that allows embedding JavaScript in HTML.
This document provides an introduction to React and React Native. It begins with an overview of ReactJS, including its motivation as a library for building user interfaces and key concepts like components, the virtual DOM, JSX, immutability, and one-way data flow. It then covers React Native, explaining how it uses native components to render interfaces for mobile rather than HTML/CSS. The document concludes with exercises for creating basic React and React Native apps.
Getting the Most Out of jQuery Widgetsvelveeta_512
The document discusses strategies for building modular widgets in jQuery. It recommends thinking of widgets as small, decoupled components that communicate through events. Components should subscribe to and respond to events from other components, with references only going downward between layers. Each layer consumes events from lower layers and publishes events upward. The document also recommends decorating widget functions to add logging or other functionality.
This document discusses building REST APIs with Laravel 5. It covers topics like using REST instead of SOAP, authentication with basic authentication and middleware, response formats, controller hierarchy, repositories, data transformers, error handling, and an internal dispatcher for making internal API requests. The goal is to provide best practices and patterns for building robust and well-structured REST APIs with Laravel.
The document discusses different approaches to using JavaScript libraries, including plug-and-play widgets, libraries that require some coding, and writing raw JavaScript from scratch. It then examines popular open-source JavaScript libraries like Prototype, jQuery, Yahoo UI, and Dojo, comparing their features, functionality, and widgets. The ideal library should have a robust core feature set along with user interface widgets, active development and support, and good documentation.
Caldera Learn - LoopConf WP API + Angular FTW WorkshopCalderaLearn
The document provides an overview of a workshop on using the WordPress REST API and AngularJS. The workshop will cover REST API fundamentals, building custom REST APIs, unit testing APIs, and getting started with AngularJS by building controllers, templates, services, and factories. Attendees will learn through hands-on examples and code walkthroughs applied to real world projects.
The document provides an overview of jQuery including:
- What jQuery is and its main features like DOM manipulation and AJAX
- How to include jQuery in an HTML document and basic usage syntax
- jQuery selectors to find elements and filters to refine selections
- Common jQuery methods for manipulating attributes, events, HTML, CSS, and more
- Examples of using various jQuery functions and concepts
This document provides an introduction and overview of ReactJS concepts including:
- Features of ReactJS like its component-based architecture and support for ES6
- What transpilers are and examples like Babel and Traceur
- Examples of setting up a basic "Hello World" React app with increasing complexity
- Additional concepts covered include properties, events, lists, conditional rendering, fetching external data and more
Slides from a presentation given at Laravel Chicago on November 18, 2014. Goes over the basics of building a REST API using the Laravel framework as well as some handy tips and tools.
Single Page Applications on JavaScript and ASP.NET MVC4Yuriy Shapovalov
Single page applications (SPAs) use a single web page and JavaScript to provide a fluid user experience similar to a desktop application. The document discusses building SPAs with JavaScript and ASP.NET MVC. It covers SPA architecture with a client-side application and data services, server-side design using ASP.NET Web API and Entity Framework, and JavaScript patterns like AMD and MVVM. Bundling and minification are used to reduce page load size. The SPA is bootstrapped on the initial page load to prime data and setup the presentation using various JavaScript libraries.
This document provides an overview of CakePHP, an MVC framework for PHP. It discusses the folder structure, naming conventions, and basic steps for creating a CakePHP application including creating a database, model, controller, and views. The model isolates application logic from presentation. Controllers manage application logic and can access models. Views present data. Samples of a model, controller, and view are also provided.
On May 14, 2015, Jeff Winkler gave a talk at Harvard University's Lamont Library titled "Intro to ReactJS."
Description
Created by Facebook and Instagram, React has recently been embraced by companies and organizations including Airbnb, Khan Academy, Reddit, the BBC, and Code Academy. This presentation will be especially interesting for those using or planning to use javascript libraries such as angularJS, backbone.js, ember.js, and others.
For this talk, Jeff Winkler will present:
- An introduction to React, mixed with demos.
- An examination of how React implements Computer Science principles from Functional and Object-Oriented. The discussion will consider the impact on maintainable large-scale systems.
Biography
Jeff Winkler, is a professional developer* in the Boston area and organizer of the Boston ReactJS Meetup. In addition to the ReactJS Boston Meetup, Jeff works with React professionally at TapJoy and runs http://react.rocks.
(* Full-stack guy. ReactJS, Rails, TDD. Best OODA loop wins)
A single language for backend and frontend from AngularJS to cloud with Clau...Walter Dal Mut
This document discusses building a backend for an Angular application using serverless technologies on AWS. It describes using API Gateway to declare APIs and delegate to Lambda functions. Lambda functions can access data from DynamoDB. Testing the Angular components and services is also covered. The document recommends using the Claudia library to simplify building APIs with API Gateway and Lambda, as it provides an interface similar to Express.
Single Page Web Applications with CoffeeScript, Backbone and JasminePaulo Ragonha
This document discusses using CoffeeScript, Backbone.js, and Jasmine BDD to build single page web applications. It begins by explaining why CoffeeScript is useful for cleaning up JavaScript code and avoiding errors. It then discusses how Backbone.js provides structure for single page apps by defining models, collections, views and routers. It notes that Backbone works well with CoffeeScript. Finally, it mentions that Jasmine BDD can be used for writing professional tests.
This document provides an overview of React, including initial reactions to it, fundamental concepts like components and one-way data flow, and how the virtual DOM works. Some key points covered include:
- Initial reactions to React were mixed, with some finding it "ugly" but others seeing benefits like separation of concerns with components.
- Everything in React is a component, with data flowing in one direction from parent to child via props. State is mutable within a component.
- By using a virtual DOM, React can efficiently update the real DOM by only making necessary changes, keeping the interface fast and pure.
This document summarizes an upcoming talk about changes in Rails 3. It notes that Rails 3 release candidate 1 will soon be released, following beta 4. It warns that upgrading apps to Rails 3 may not be straightforward. The talk will cover unobtrusive JavaScript, ActiveModel which decouples models, ActiveRelation for database queries, and Bundler for managing gem dependencies.
The document discusses creating web applications using jQuery. It begins with introductions and background on the speaker's experience. It then discusses how JavaScript can become complex when building real-world applications, but common requirements emerge a pattern. JavaScript frameworks help simplify coding through interfaces and syntactic sugar. jQuery is introduced as a popular framework that handles cross-browser compatibility issues and simplifies DOM manipulation through selectors and functions. The document then covers various jQuery topics like versions, objects, selectors, reading/manipulating the DOM, events, and communicating with servers.
Javascript Application Architecture with Backbone.JSMin Ming Lo
This document provides an overview and summary of Javascript application architecture using Backbone.js and Underscore.js. It discusses the traditional web architecture with server-side rendering compared to client-side MVC frameworks. It then covers the basics of Backbone.js including models, collections, RESTful APIs, and how Backbone handles CRUD operations and tying the front-end to backend data. Templating with Underscore.js and building single page apps are also mentioned.
The document introduces the jQuery library, which is a popular JavaScript library that simplifies tasks like HTML document traversal, event handling, animating, and Ajax interactions. It notes that over 20% of websites use jQuery and outlines some of its main capabilities like selecting elements, hiding/showing elements, and loading remote HTML. Alternatives to jQuery are mentioned but it is positioned as standing alone in popularity based on Google search volumes.
This document provides an introduction to jQuery, including:
- jQuery is a JavaScript library that simplifies HTML document interaction and event handling. It was created by John Resig in 2006.
- The current version is 1.3.2 and version 1.4 is coming soon. John Resig continues to develop jQuery in Boston.
- jQuery selects elements, changes their properties, handles events, and makes AJAX calls to simplify common JavaScript tasks. It works by selecting DOM elements and running functions on the selection.
The document discusses tools for building web applications, including Express.js, Underscore.js, and Backbone.js. Express.js is described as providing routing, request and response rendering, and middleware capabilities. Underscore.js is a utility library that provides functions for tasks like mapping, filtering, and grouping data. Backbone.js implements a client-side MVC pattern and allows binding data to views so that changes to data automatically update views. EJS is mentioned as a templating engine that allows embedding JavaScript in HTML.
This document provides an introduction to React and React Native. It begins with an overview of ReactJS, including its motivation as a library for building user interfaces and key concepts like components, the virtual DOM, JSX, immutability, and one-way data flow. It then covers React Native, explaining how it uses native components to render interfaces for mobile rather than HTML/CSS. The document concludes with exercises for creating basic React and React Native apps.
Getting the Most Out of jQuery Widgetsvelveeta_512
The document discusses strategies for building modular widgets in jQuery. It recommends thinking of widgets as small, decoupled components that communicate through events. Components should subscribe to and respond to events from other components, with references only going downward between layers. Each layer consumes events from lower layers and publishes events upward. The document also recommends decorating widget functions to add logging or other functionality.
This document discusses building REST APIs with Laravel 5. It covers topics like using REST instead of SOAP, authentication with basic authentication and middleware, response formats, controller hierarchy, repositories, data transformers, error handling, and an internal dispatcher for making internal API requests. The goal is to provide best practices and patterns for building robust and well-structured REST APIs with Laravel.
The document discusses different approaches to using JavaScript libraries, including plug-and-play widgets, libraries that require some coding, and writing raw JavaScript from scratch. It then examines popular open-source JavaScript libraries like Prototype, jQuery, Yahoo UI, and Dojo, comparing their features, functionality, and widgets. The ideal library should have a robust core feature set along with user interface widgets, active development and support, and good documentation.
Caldera Learn - LoopConf WP API + Angular FTW WorkshopCalderaLearn
The document provides an overview of a workshop on using the WordPress REST API and AngularJS. The workshop will cover REST API fundamentals, building custom REST APIs, unit testing APIs, and getting started with AngularJS by building controllers, templates, services, and factories. Attendees will learn through hands-on examples and code walkthroughs applied to real world projects.
The document provides an overview of jQuery including:
- What jQuery is and its main features like DOM manipulation and AJAX
- How to include jQuery in an HTML document and basic usage syntax
- jQuery selectors to find elements and filters to refine selections
- Common jQuery methods for manipulating attributes, events, HTML, CSS, and more
- Examples of using various jQuery functions and concepts
This document provides an introduction and overview of ReactJS concepts including:
- Features of ReactJS like its component-based architecture and support for ES6
- What transpilers are and examples like Babel and Traceur
- Examples of setting up a basic "Hello World" React app with increasing complexity
- Additional concepts covered include properties, events, lists, conditional rendering, fetching external data and more
Slides from a presentation given at Laravel Chicago on November 18, 2014. Goes over the basics of building a REST API using the Laravel framework as well as some handy tips and tools.
Single Page Applications on JavaScript and ASP.NET MVC4Yuriy Shapovalov
Single page applications (SPAs) use a single web page and JavaScript to provide a fluid user experience similar to a desktop application. The document discusses building SPAs with JavaScript and ASP.NET MVC. It covers SPA architecture with a client-side application and data services, server-side design using ASP.NET Web API and Entity Framework, and JavaScript patterns like AMD and MVVM. Bundling and minification are used to reduce page load size. The SPA is bootstrapped on the initial page load to prime data and setup the presentation using various JavaScript libraries.
This document provides an overview of CakePHP, an MVC framework for PHP. It discusses the folder structure, naming conventions, and basic steps for creating a CakePHP application including creating a database, model, controller, and views. The model isolates application logic from presentation. Controllers manage application logic and can access models. Views present data. Samples of a model, controller, and view are also provided.
Nessa apresentação demonstro como arquitetar uma aplicação Android utilizando MVVM+Clean Architecture no Android utilizando as bibliotecas do Jetpack (View Model, Room, LiveData, ...)
Single Page Web Apps with Backbone.js and RailsPrateek Dayal
This document discusses using Backbone.js to build single page applications with Rails. It describes how Backbone implements an MVC pattern with Models, Collections, Views and Controllers. Models represent data and trigger events on changes. Collections contain models and trigger add/remove events. Views are responsible for rendering templates and binding events. Controllers set up routes and match URLs to views. The document provides examples of implementing tickets in a support app using Backbone with Rails, Handlebars templating, and testing with Jasmine and Sinon mocks.
The document discusses using Backbone.js and Ractive.js to build productive web applications. It provides an overview of the key features and benefits of each library, including Backbone's MV* pattern and Ractive's data binding capabilities. Code examples are given that demonstrate basic usage of models, collections and views with Backbone and two-way data binding with Ractive. The document also discusses how to combine the two libraries using a Ractive adapter for Backbone.
The document discusses Django's database API and how it improves upon directly writing SQL queries in views. It introduces Django models and shows how to define models for a book publishing example with books, authors, and publishers. Code examples are provided for defining the models, inserting data into the database, retrieving and filtering objects, and adding human-readable representations for models. The database API handles common boilerplate, abstracts away the database backend, and provides a Pythonic interface for working with data.
MongoDB Days UK: Building Apps with the MEAN StackMongoDB
Presented by Norberto Leite, Developer Advocate, MongoDB
Experience level: Advanced
Get ready to be MEAN! The MEAN Stack (MongoDB, ExpressJS, AngularJS and Node.js) allows developers to do rapid application development and application scaffolding. In this session, Norberto will walk you through strategies and best practices for building applications on the MEAN stack, the benefits of using such an application stack and the key benefits of each of the individual components.
This document provides an overview and introduction to single page application (SPA) frameworks using AngularJS. It discusses the rise of responsive SPAs and some of the challenges in building SPAs. It then introduces key AngularJS concepts like templates, directives, expressions, data binding, scopes, controllers and modules. It also includes a recap of JavaScript concepts like objects, functions and classes. Finally, it demonstrates basic AngularJS examples using directives, expressions, filters, controllers and scopes.
AngularJS seems initially complex with many new concepts and terms. It is designed for single page applications and has a learning curve. AngularJS uses modules, dependency injection, MVC principles, scopes, directives, filters and services/factories/providers to build applications. Testing and reusable components are important. While challenging, AngularJS is a powerful tool for building dynamic web applications.
This document provides an overview of RapidApp, a Catalyst extension that aims to speed web development. It discusses RapidApp's features like automatic Ajax interfaces, CRUD interfaces generated from schemas, and RESTful URL schemes. The presenter then demonstrates RapidApp by developing a web admin interface for a DNS server application.
From Backbone to Ember and Back(bone) Againjonknapp
As a software consultant, I get to see a lot of interesting code. In this particular instance a client was in the process of transforming their web application to a rich, interactive interface with the help of another company.
The project kicked off using Backbone and things were great. Until they were not great. Pages starting getting more and more involved and blame started being thrown at the technology choice.
A move to Ember.js ensued and the app was rewritten. But architecturally bad decisions don't hide long, and soon the rewrite was preforming even worse. That's when I stepped in, with the help of another consultant, to solve the performance issues once and for all. Our solution used Backbone.js and it was fast. This is that journey.
Turbocharge your web development with Rails
Vagmi Mudumbai presented an overview of Ruby on Rails web development. The presentation covered installing Ruby and Rails, the MVC framework, generating models and migrations, querying the database, controllers and routes, views and forms. Attendees learned the basics of building a Rails application including setting up models, controllers and views to create, read, update and delete data through a RESTful interface.
Presented this talk at AltConf 2019. Covers typical REST API approach to syncing data between servers and mobile apps; then discusses how new eventually consistent databases with syncing technology built in can be used to make syncing simpler and easier to work with.
If you are new to Single Page Applications, This will give you a great understanding of a proven technology stack & Architecture used in a popular commercial project.
Nessa apresentação demonstro como arquitetar uma aplicação Android utilizando as bibliotecas do Jetpack. O exemplo apresentado utiliza MVVM+Clean:
- Na camada de dados local, Room com Coroutines e Flow;
- View Model, Live Data e Data Binding na camada de apresentação;
- Fragments com a Navigation API na camada de UI.
O app também conta com uma implementação de banco de dados remoto utilizando Firebase.
Hear Ryan Millay, IBM Cloudant software development manager, discuss what you need to consider when moving from world of relational databases to a NoSQL document store.
You'll learn about the key differences between relational databases and JSON document stores like Cloudant, as well as how to dodge the pitfalls of migrating from a relational database to NoSQL.
Entering in the full TDD, including:
- how TDD works and why it is required in Agile development
- why there are so many people that say that TDD does not work
- how to fix the problems in bad TDD to make it effective
- and the primary value of the sofware: make it adaptable
The document discusses testing techniques and principles for writing tests. It advocates for tests that are FAST, ISOLATING, REPEATABLE, SELF-VALIDATING, and TIMELY (FIRST). It also discusses the Arrange-Act-Assert (AAA) structure for tests and how to achieve high code coverage while maintaining test quality. The document notes that while code coverage is a useful metric, it does not guarantee correctness on its own. It also covers the use of test doubles like stubs, spies, mocks and fakes to replace dependencies.
How difficult is to automatically test the HelloWorld.
We fix it and other many difficult scenarios with techniques like:
- lower "s" singleton
- law of demeter
- dependency injection
- and more examples
This document provides instructions for a test-driven development (TDD) coding assignment using JavaScript. It outlines how to set up the development environment, run tests, and iterate through solving tests one by one while committing changes. It also includes an introduction to JavaScript basics like types, functions, classes, and interfaces to provide context for completing the assignment. Students are instructed to work individually on solving commented tests in a GitHub classroom repository by running tests and committing after each solved test.
This document provides instructions for completing the bowling game kata exercise in both Java and JavaScript. It outlines the kata, links to the code repositories, and provides tips for setting up the development environment and executing tests in each language. The goal is to iteratively implement the kata by copying each commit exactly through test-driven development and repetition to learn how to solve problems and design solutions in the same way.
ES3-2020-06 Test Driven Development (TDD)David Rodenas
Basics of TDD. Including why? Why it is discipline. Typical Pitfalls. Kinds of TDD, and a Recipe so anyone can do testing quickly. And lots of examples.
- Testing shows the presence, not the absence of bugs. Tests are driven by requirements and business rules, focusing only on relevant cases rather than testing everything.
- Tests improve quality and confidence by verifying that each scenario works as expected. Tests serve as live documentation of the system.
- While testing has been used for decades in different forms like debugging, demonstration, and evaluation, modern test-driven development and integrated testing frameworks from the 1990s helped establish testing as a mainstream practice.
Testing, Learning and Professionalism — 20171214David Rodenas
Two hours talk about testing, its history, its meaning and propose, a small guide of good practices, and what it is supposed to be a good professional and what is expected from us the professionals.
This is the support of a course to teach React programming for Java and C# programmers. It covers from its origins in Facebook til separation of presentational and container components. What is JSX, rules, state, props, refactoring, conditionals, repeats, forms, synchronizing values, composition, and so on.
Have fast, performant, and successful web pages is a great Challenge. There are many layers involved and all of them have to work together.
In this talk I presented at FIBAlumni with collaboration of COEINF and the video recording is at http://media.fib.upc.edu/fibtv/streamingmedia/view/22/1400 (in Catalan).
It shows how all parts are involved in the success of web pages from the server up to the human brain and perception.
It introduces metrics and ways to effectively calculate and measure objectively the impact of the actions taken in the optimisation and also some ways to detect ways to optimise websites.
This is the support of a course to teach mainly Redux, and Redux with React for Java and C# programmers. It is the third part of the course to recycle programmers from desktop app programming to web app programming. This course covers from history of Redux, its origin, step by step what is a reducer, and later concepts like reducer splitting, action handling, async and many more.
You also can use repositories:
- https://github.com/drpicox/learn-redux-bytesting
- https://github.com/drpicox/learn-redux-zoo-bytesting
To improve your skills.
Basic Tutorial of React for ProgrammersDavid Rodenas
This is the support of a course to teach React programming for Java and C# programmers. It covers from its origins in Facebook til separation of presentational and container components. What is JSX, rules, state, props, refactoring, conditionals, repeats, forms, synchronizing values, composition, and so on.
Introduction to web programming for java and c# programmers by @drpicoxDavid Rodenas
(better presented by @drpicox)
Slides of an introductory course for web programming focusing in basic Javascript and CSS concepts. It assumes knowledge of programming, Java or C#.
From high school to university and workDavid Rodenas
Presentation mostly in Catalan.
Aquesta presentació es va fer en el Institut Bernat el Ferrer de Molins de Rei.
El públic son els alumnes d'aquest institut i s'els mostra el camí que poden seguir després en la universitat i la responsabilitat que adquireixen després com a professionals.
La versió original conté els gifs animats, la majoria extrets de giphy.com.
Talk given in the Mataro University (Technocampus) to grade students about what is a Freelance.
It explains about what implies to be a Freelance, concepts about Javascript, what are Meetups and user-groups, and basic notions about MVC.
Integrating Physical and Cybersecurity to Lower Risks in Healthcare!Alec Kassir cozmozone
The contemporary hospital setting is witnessing a growing convergence between physical security and cybersecurity. Because of advancements in technology and the rise in cyberattacks, healthcare facilities face unique challenges.
Honeypots Unveiled: Proactive Defense Tactics for Cyber Security, Phoenix Sum...APNIC
Adli Wahid, Senior Internet Security Specialist at APNIC, delivered a presentation titled 'Honeypots Unveiled: Proactive Defense Tactics for Cyber Security' at the Phoenix Summit held in Dhaka, Bangladesh from 23 to 24 May 2024.
Securing BGP: Operational Strategies and Best Practices for Network Defenders...APNIC
Md. Zobair Khan,
Network Analyst and Technical Trainer at APNIC, presented 'Securing BGP: Operational Strategies and Best Practices for Network Defenders' at the Phoenix Summit held in Dhaka, Bangladesh from 23 to 24 May 2024.
HijackLoader Evolution: Interactive Process HollowingDonato Onofri
CrowdStrike researchers have identified a HijackLoader (aka IDAT Loader) sample that employs sophisticated evasion techniques to enhance the complexity of the threat. HijackLoader, an increasingly popular tool among adversaries for deploying additional payloads and tooling, continues to evolve as its developers experiment and enhance its capabilities.
In their analysis of a recent HijackLoader sample, CrowdStrike researchers discovered new techniques designed to increase the defense evasion capabilities of the loader. The malware developer used a standard process hollowing technique coupled with an additional trigger that was activated by the parent process writing to a pipe. This new approach, called "Interactive Process Hollowing", has the potential to make defense evasion stealthier.
Discover the benefits of outsourcing SEO to Indiadavidjhones387
"Discover the benefits of outsourcing SEO to India! From cost-effective services and expert professionals to round-the-clock work advantages, learn how your business can achieve digital success with Indian SEO solutions.
2. THINGS WRONG THAT I DID TO FIT THINGS IN SLIDES
DISCLAIMER
• Directives should use controller and bindToController
• Directives should never load resources, this should be done by
routes or under demand
• Use .factory to simplify and homogenize code
(not .service neither .value)
• In a previous talk I said that model was plain JS data, sorry
(plain data is the form, but does not defines a model)
• Use better variable names
23. NEW FEATURE - UPDATE BOOK
SHIT!
What about:
• Cache?
• What if we have a list side-by side, it is updated?
• What if we have view and update side-by-side?
24. NEW FEATURE - UPDATE BOOK
SHIT!
How to solve it?
• New services?
• Callbacks?
• RxJS?
• More caches?
• Events?
26. NEW FEATURE - UPDATE BOOK
WHAT IS THE REAL PROBLEM?
R4 (manage caches) is hidden another responsibility:
• Single source of true
We need a model!
27. WHAT A MODEL IS NOT?
• A model is not styles in the web
• A model is not objects in the scope
• A model is not objects stored in the browser (local,websql,…)
• A model are not instances of any sort of data
• A model is not plain data
28. SINGLE SOURCE OF TRUE
WHAT IS A MODEL?
• You can find your model
• There is only one instance for each “concept”
(all books with the same id are the same object)
• Models may be computed from other models
• It does not matters how many views do you have,
all views use the same models
(as do services also)
That is something that ember programmers knows very well.
29. REFACTOR - ADD MODEL
Book
app.value(‘Book’, function Book(id) {
this.id = id;
this.isSciFi = function() { return !!this.tags.sciFi; };
this.takeData = function(bookData) {
angular.extend(this, bookData);
};
});
We discover new responsibilities:
• R5: update and extract information of a book
30. REFACTOR - ADD MODEL
booksDictionary
app.value(‘booksDictionary’, (Book) => {
this.list = []; this.map = {};
this.getOrCreate = (id) => {
var book = this.map[id];
if (!book) {
book = new Book(id);
this.list.push(book); this.list.map[id] = book;
};
return book;
};
this.takeDatas = (bookDatas) => {
bookInfos.forEach((bookData) => {
this.getOrCreate(bookData.id).takeData(bookData);
});
};
});
We discover new responsibilities:
• R6: manage book instances to avoid replicates
• R7: store books so anyone can access to them
Note that list
is also a model.
31. booksService (loadAll)
app.service(‘booksService’, (booksDictionary, $http) => {
this.getList = () => {
if (!this.list) {
this.list = $http.get(‘/api/v1/books’).then(response => {
booksDictionary.takeDatas(response.data);
return booksDictionary.list;
});
}
return this.list;
});
};
…
});
REFACTOR - ADD MODEL
getList returns always the same instance of list.
32. booksService (load)
app.service(‘booksService’, (booksDictionary, $http) => {
…
this.books = {};
this.load = (id) => {
if (!this.books[id]) {
this.books[id] = $http.get(‘/api/v1/books/’+id).then(response => {
var book = booksDictionary.getOrCreate(id);
book.takeData(reponse.data);
return book;
});
}
return this.books[id];
};
…
});
REFACTOR - ADD MODEL
Load(id) returns always the same instance of book for the same id.
And the instance will be contained by the list in getList.
33. booksService (update)
app.service(‘booksService’, (booksDictionary, $http) => {
…
this.update = (book) => {
var id = book.id;
this.books[id] = $http.put(‘/api/v1/books/’+id).then(response => {
var book = booksDictionary.getOrCreate(id);
book.takeData(response.data);
return book;
});
};
});
REFACTOR - ADD MODEL
Update returns always the same instance than get and getList,
regardless the input. And also updates the same instance.
36. NEW FEATURE - UPDATE BOOK
DONE?
What about Sci-Fi list?
• Is computed:
it has to be recomputed each time that a book o list changes
• A filter is expensive
• Watch a derive function is expensive
• Watch all books (aka $watch(,,true)) is expensive
37. NEW FEATURE - UPDATE BOOK
SHIT!
Solved in the next talk…
42. ORIGINAL MVC
SHIT!
It is not as beautiful and easy as it seems.
May be it worked in ’78, with just few Kb…
and low complexity, but now…
43. FB comments about MVC
ARCHITECTURES VARIATIONS
https://youtu.be/nYkdrAPrdcw?t=10m20s
44. FB comments about MVC
ARCHITECTURES VARIATIONS
“MVC works pretty well
for small applications…
but it doesn’t make room
for new features.”
“Flux is a single direction data flow,
that avoids all the arrows
going on all directions
what makes really
hard to understand the system.”
45. FB comments about MVC
ARCHITECTURES VARIATIONS
“Let’s see a real good example: FB chat”
“How we get to the point, so we were annoying our
users so much the just they wanted us to fix chat?”
“The problems here were:
• The code has no structure
• It was very imperative, that makes it fragile
• It loose a lot of the original intend behind it, its hard to tell what it tries [to do]
• Add more features only gets this code larger
• We had our most annoying chat bug happen over and over
• We were always fixing some pretty good edge case, the whole system was fragile
• …
• This code becomes more fragile with the time.
• No member of the team wanted to touch it, they wanted to jump to any other bug.”
53. the same flow
FROM MVC TO MVS
SERVICES
MODELS VIEWS
calls
updates
are $watched
54. MVS RULES (I)
SERVICES
MODELS VIEWS
calls
updates
are $watched
• Views can call to services
• Services manages models
• Models are watched by views through $watch
• Views cannot modify models but temporary copies
• Each services has its own models and do not modify other
services models
55. Key points are:
• Single direction flow
• Avoid imperative code
• Decoupled state from views
• Computed data consistency
(example: sciFiBooks = books.filter(isSciFi))
ANGULAR MVS
56. SOLUTION FOR SCI-FI-BOOKS
• Create a new model for SciFiBooks
• Add a method getSciFiBooks() to bookService
• Recompute the list each time that an update() method is called
60. SOLUTION FOR COMPUTED VALUES
MODELS
• Models launch update: ex $broadcast(‘booksChanged’)
for angular1
fire events
61. SOLUTION FOR COMPUTED VALUES
MODELS
• Models launch update: ex $broadcast(‘booksChanged’)
• Rules:
• Each model has its own event (1 <-> 1)
• We do not pass any information (ex: previous and new value)
• Change event is fired by the Service that manages the model
• Events can be debounced (multiple collapsed in one)
rules
fire events
62. booksService (update)
app.service(‘booksService’, (booksDictionary, $http, $broadcast) => {
…
this.update = (book) => {
var id = book.id;
this.books[id] = $http.put(‘/api/v1/books/’+id).then(response => {
var book = booksDictionary.getOrCreate(id);
book.takeData(response.data);
$broadcast(‘booksChanged’);
return book;
});
};
});
SOLUTION FOR SCI-FI-BOOKS
74. the same flow
MVS
SERVICES
MODELS VIEWS
calls
updates
are $watched
Dumb
Views
Smart
Views
BROWSER
uses listens
uses listens
Services
Remotes Storages
callscalls
State
Holders
State
Singletons
State
Dictionaries
CI
CI
CICICI
75. computed data flow
MVS
SERVICES
MODELS VIEWS
calls
updates
are $watched
Dumb
Views
Smart
Views
BROWSER
uses listens
uses listens
Services
Remotes Storages
callscalls
State
Holders
State
Singletons
State
Dictionaries
CI
CI
CICICI
76. computed data flow
MVS
SERVICES
MODELS VIEWS
calls
updates
are $watched
Dumb
Views
Smart
Views
BROWSER
uses listens
uses listens
Services
Remotes Storages
callscalls
State
Holders
State
Singletons
State
Dictionaries
CI
CI
CICICI
are listened
are listened
77. step by step
COMPUTED DATA FLOW
1. call
5. is fired
Books
Service
Books
Dictionary
Sci-Fi
Service
Sci-Fi
Dictionary
2. updates
3. fire $update
7. updates
8. fire $update
$UPDATE
EVENT MANAGER
4. fire $update
6. reads