These are the presentation slides demonstratingseven versions of the UI of same HTML5 application using various libraries and frameworks. This application is described in detail in the O'Reilly book "Enterprise Web Development"
Single Page Applications (SPA) 2.0
- Push the limits of what’s possible on the web
AngularJS, RequireJS , Polymer, AMD, ES6 , Gulp, Dependency Injection, JavaScript Patterns, Functional Reactive Programming, OAuth, Promises ,Generators
Tech Webinar: Angular 2, Introduction to a new frameworkCodemotion
Fabio Biondi e Matteo Ronchi ci presentano AngularJS 2, analizzando la nuova sintassi per la creazione di componenti che ora assumono un ruolo fondamentale all’interno del framework.
Iscriviti qui per partecipare ad altri Tech Webinar: http://goo.gl/iW81VD
Scrivici a training@codemotion.it
Tw: @codemotionTR
The aim of these series is exploring Angular 2 and it's amazing features. with the simplest way and the meaningful examples and labs to be practiced. Good Luck in Exploring :D
These are the presentation slides demonstratingseven versions of the UI of same HTML5 application using various libraries and frameworks. This application is described in detail in the O'Reilly book "Enterprise Web Development"
Single Page Applications (SPA) 2.0
- Push the limits of what’s possible on the web
AngularJS, RequireJS , Polymer, AMD, ES6 , Gulp, Dependency Injection, JavaScript Patterns, Functional Reactive Programming, OAuth, Promises ,Generators
Tech Webinar: Angular 2, Introduction to a new frameworkCodemotion
Fabio Biondi e Matteo Ronchi ci presentano AngularJS 2, analizzando la nuova sintassi per la creazione di componenti che ora assumono un ruolo fondamentale all’interno del framework.
Iscriviti qui per partecipare ad altri Tech Webinar: http://goo.gl/iW81VD
Scrivici a training@codemotion.it
Tw: @codemotionTR
The aim of these series is exploring Angular 2 and it's amazing features. with the simplest way and the meaningful examples and labs to be practiced. Good Luck in Exploring :D
Learn all the essentials of building Angular 2 applications right here.
https://www.udemy.com/angular-2-training/?couponCode=UANGULAR2
This is a beginner level course aimed at those new to Angular 2 and Typescript. No previous knowledge of either is required before starting this course.
This course combines slides, projects and quizzes in a clear, concise and engaging way to guide you through the core concepts of Angular 2 and Typescript.
You will gain a solid foundation for building real-world applications following best practices and the Angular 2 style guide. This includes how to build components, create shared services, navigate between views, manage data, and managing user and system events.
AngularJS 1.3 is by far the best version of Angular available today. It was just released a few weeks ago. It's chock full of bug fixes, feature enhancements and performance improvements.
YouTube link: - https://youtu.be/bghVyCbxj6g
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016Codemotion
Angular 2 is a complete rewrite of the AngularJS framework, which introduces new approaches and leverages the latest technologies. Simplifying and generalizing core concepts, the performance is improved and the range of capabilities is broadened. In this session Shmuela will help you understand the core concepts of Angular 2 apps: the component-based architecture, dependency injection, change detection, and more.
What is AngularJS
AngularJS main components
View / Controller / Module / Scope
Scope Inheritance.
Two way data binding
$watch / $digest / $apply
Dirty Checking
DI - Dependence Injection
$provider vs $factory vs $service
Probabilmente il framework javascript più atteso di sempre, evoluzione di uno dei framework più longevi ed usati nello sviluppo front end. Si vedranno alcune delle novità introdotte e delle scelte radicali fatte da Google per la nuova versione di Angular
Create Your Own Framework by Fabien PotencierHimel Nag Rana
This is a combined form of series of articles by Fabien Potencier - the author of Symfony Framework. I have collected and converted them as this ebook for storing and sharing purpose.
Learn all the essentials of building Angular 2 applications right here.
https://www.udemy.com/angular-2-training/?couponCode=UANGULAR2
This is a beginner level course aimed at those new to Angular 2 and Typescript. No previous knowledge of either is required before starting this course.
This course combines slides, projects and quizzes in a clear, concise and engaging way to guide you through the core concepts of Angular 2 and Typescript.
You will gain a solid foundation for building real-world applications following best practices and the Angular 2 style guide. This includes how to build components, create shared services, navigate between views, manage data, and managing user and system events.
AngularJS 1.3 is by far the best version of Angular available today. It was just released a few weeks ago. It's chock full of bug fixes, feature enhancements and performance improvements.
YouTube link: - https://youtu.be/bghVyCbxj6g
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016Codemotion
Angular 2 is a complete rewrite of the AngularJS framework, which introduces new approaches and leverages the latest technologies. Simplifying and generalizing core concepts, the performance is improved and the range of capabilities is broadened. In this session Shmuela will help you understand the core concepts of Angular 2 apps: the component-based architecture, dependency injection, change detection, and more.
What is AngularJS
AngularJS main components
View / Controller / Module / Scope
Scope Inheritance.
Two way data binding
$watch / $digest / $apply
Dirty Checking
DI - Dependence Injection
$provider vs $factory vs $service
Probabilmente il framework javascript più atteso di sempre, evoluzione di uno dei framework più longevi ed usati nello sviluppo front end. Si vedranno alcune delle novità introdotte e delle scelte radicali fatte da Google per la nuova versione di Angular
Create Your Own Framework by Fabien PotencierHimel Nag Rana
This is a combined form of series of articles by Fabien Potencier - the author of Symfony Framework. I have collected and converted them as this ebook for storing and sharing purpose.
DWR, Hibernate and Dojo.E - A Tutorialjbarciauskas
This tutorial will walk you through the steps of creating a simple database-driven AJAX application using Direct Web Remoting (DWR) 2.0, Hibernate 3.0 and a new open source project from Nexaweb Technologies, dojo.E. dojo.E is an extensible markup processing engine that out-of-the-box will translate XML into dojo components.
Explaining the benefits of using WebSockets, the difference comparing with Ajax and explaining the code we should write on both ends. The server and the client.
More information about the Java course I deliver can be found at java.course.lifemichael.com
More information about the Node.js course I deliver can be found at nodejs.course.lifemichael.com
More information about the FED course I deliver can be found at fed.course.lifemichael.com
The time of static or dynamically generated sites is long gone. Non-stop interaction with users is the new normal. However, polling with Ajax requests is processor intensive and cumbersome. Websockets allow you to interact with users in real-time without increasing system load. We'll go through the basics and see all the different options, illustrated with live examples of how and when to use it, as well as when not to use it.
SOAP Web Services have a well established role in the enterprise, but aside from the many benefits of the WS-* standards, SOAP and XML also carry additional baggage for developers. Consequently, REST Web Services are gaining tremendous popularity within the developer community. This session will begin by comparing and contrasting the basic concepts of both SOAP and REST Web Services. Building on that foundation, Sam Brannen will show attendees how to implement SOAP-based applications using Spring-WS 2.0. He will then demonstrate how to build a similar REST-ful application using Spring MVC 3.0. The session will conclude with an in-depth look at both server-side and client-side development as well as efficient integration testing of Web Services using the Spring Framework.
Le temps est révolu où Java EE ne serait qu’à développer des applications de mise à jour de données, avec JSF / EJB / JPA. Aujourd’hui Java EE s’est assoupli et s’est ouvert sur le monde, avec CDI comme clé de voûte et a repoussé nos limites grâce à des capacités d’extension puissantes et faciles d’utilisation comme JCA.
Dans un premier temps, nous reviendrons rapidement sur la place de CDI dans JavaEE 7 et sur ses mécanismes d’extension. Dans un deuxième temps, nous verrons les techniques de connecteurs JCA et comment ils peuvent aussi constituer une possibilité d’ouverture simple à mettre en œuvre. JCA fournit des techniques pour gérer des connexions sortantes ou entrantes, sur des formats ou protocoles variés.
The Web and Spring MVC continue to be one of the most active areas of the
Spring Framework with each new release adding plenty of features and refinements
requested by the community. Furthermore version 4 added a significant choice
for web applications to build WebSocket-style architectures.
This talk provides an overview of the areas in which the framework has evolved
along with highlights of specific noteworthy features from the most recent
releases.
- Practical exercises on the use of the threads with TCP
- References
YouTube link :
https://www.youtube.com/playlist?list=PLtDIUAtyP4lhV7CsYfLuIx26UeG4J-ujZ
GitHub :
https://github.com/Ghadeerof
Similar to Speed up your Web applications with HTML5 WebSockets (20)
Using JHipster 4 for generating Angular/Spring Boot appsYakov Fain
JHipster 4 is an open-source code generator that allows you to automate generation and configuration of the Web project that uses the latest version of Angular on the front and Spring framework on the back. Over the next year, Angular/Spring combination will become a valuable addition to the skill set of any enterprise Java developer. In this presentation, you’ll see how to jump-start a Web project with JHipster.
Integrating consumers IoT devices into Business WorkflowYakov Fain
From the software development perspective IoT is about programming "things", connecting them with each other and integrating them with existing applications. This presentation will demonstrate how IoT-enabled devices from multiple manufacturers can be integrated into a workflow of a business application. You'll see a live demo of using commercial consumer devices as a part of an application that utilizes such technologies such as REST API, OAuth, Websockets, and Java. This presentation will give you an idea of how to go about integration of new devices as they become available on the market.
Surviving as a Professional Software DeveloperYakov Fain
This presentation was made in Kiev, Ukraine at JEEConf, May 2013 as a sequel to this one: http://www.slideshare.net/yfain/yakov-fain-enterprisedeveloperkiev.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
11. Introducing the Demo
The Software
The Server:
GlassFish 4 (promoted build B88), Oracle
The server-side Java app can generate random price quotes
The Client:
HTML5 Ext JS framework, Sencha
The Browser: Chrome , Google
Charles Proxy
The Goal
1. The server generates random stock prices for a 12-stock portfolio
2. The user sends a request for price quote for a stock
3. The HTML client displays the received price
4. Observe what went over the network
12. The Server: Rest
@Path("stock")
public
class
RestResource
{
@GET
@Produces(value
=
MediaType.APPLICATION_JSON)
@Path("/{ticker}")
public
String
getRandomValue(@PathParam(value
=
"ticker")
String
ticker)
{
return
new
Gson().toJson(RandomStocksGenerator.getDataForTicker(ticker));
}
}
13. The Client: AJAX in Ext JS
'mypanel
button[action=doRestCall]':
click:
this.onRestCall
onRestCall:
function(btn)
{
var
ticker
=
Ext.ComponentQuery.query('mypanel
textfield[name=ticker]')
[0].getValue();
var
rest_url
=
"http://"
+
document.location.host
+
document.location.pathname
+
"rest/stock/";
rest_url
=
rest_url
+
ticker;
Ext.Ajax.request({
url:
rest_url,
scope:
this,
success:
function(response)
{
var
a
=
Ext.JSON.decode(response.responseText);
a.price
=
parseFloat(a.price).toFixed(4);
console.log(a);
}
});
}
15. What’s SSE
• It’s not a request-response mode
• The browser subscribes to events from server
by creating EventSource pointing to this server
• The server can send data to client at any time
• The browser receives an event + data
16. Browser Subscribes to SSE
To listen to any messages:
source.onmessage
=
function(e)
{….};
var
source
=
new
EventSource('http://localhost:8080/stock/events');
source.addEventListener('open',
function(e)
{
//
Connection
was
opened.
},
false);
source.addEventListener('priceChanged',
function(e)
{
var
priceQuote
=
JSON.parse(e.data);
//…
},
false);
source.addEventListener('error',
function(e)
{
if
(e.readyState
==
EventSource.CLOSED)
{
//
Connection
was
closed.
}
},
false);
17. Pushing SSE from Server
The server sends events as text messages with MIME
text/event-‐stream
Each message starts with data: and end with a pair /n/n:
'data:
{"price":
"123.45"}/n/n'
The browser concatenates all these messages separating
them with /n.
18. Pushing from Glassfish (Jersey)
@Path("stock")
public
class
SseResource
{
private
static
final
SseBroadcaster
BROADCASTER
=
new
SseBroadcaster();
private
boolean
isRunning
=
false;
private
Timer
broadcastTimer;
@GET
@Path("stock-‐generator")
@Produces(SseFeature.SERVER_SENT_EVENTS)
public
EventOutput
itemEvents()
{
final
EventOutput
eventOutput
=
new
EventOutput();
BROADCASTER.add(eventOutput);
if
(!isRunning)
startBroadcastTask();
return
eventOutput;
}
}
19. Broadcasting in Jersey
protected
void
startBroadcastTask()
{
broadcastTimer
=
new
Timer();
broadcastTimer
.schedule(new
SseBroadcastTask(BROADCASTER,
0),
0,
300);
this.isRunning
=
true;
}
public
class
SseBroadcastTask
extends
TimerTask
{
private
final
SseBroadcaster
owner;
public
SseBroadcastTask(SseBroadcaster
owner,
int
timeout)
{
this.owner
=
owner;
}
@Override
public
void
run()
{
OutboundEvent
event
=
new
OutboundEvent.Builder().data(
String.class,
RandomStocksGenerator.getRandomValues().toJson()).build();
owner.broadcast(event);
21. Introducing the SSE Demo
The Software
The Server:
GlassFish 4 (promoted build B88), Oracle
The Java app can generate random price quotes
The Client:
HTML5 Ext JS framework, Sencha
The Chrome Browser, Google
The Goal
1. The server generates random stock prices for a 12-stock portfolio
2. The server pushes 3 price quotes per second using SSE
3. The HTML client shows the prices in a data grid
23. WebSocket
• Standard W3C protocol (RFC6455)
• Java EE 7 includes WebSocket API (JSR-356)
• Web Browsers include window.WebSocket
object. No plugins required.
24. How WebSocket Works
Establish a socket connection via HTTP for the initial handshake.
Switch the protocol from HTTP to a socket-based protocol.
Send messages in both directions simultaneously.
This is not a request-response model!
25. Protocol Upgrade: HTTP à WebSocket
• Client sends Upgrade HTTP-request
• Server confirms Upgrade
• Client receives Upgrade response from server
• Client changes WebSocket.readyState to open
29. WebSocket Endpoint
@ServerEndpoint(value
=
"/stock-‐generator",
encoders
=
{
StockMessageEncoder.class
},
decoders
=
{
StockMessageDecoder.class
})
public
class
StocksEndpoint
{
@OnOpen
public
void
onOpen(Session
session)
{
…
}
@OnMessage
public
void
onMessage(StockMessage
message,
Session
client)
{
}
@OnClose
public
void
onClose(Session
session)
{…
…
}
…
}
30. public
class
StockMessageDecoder
implements
Decoder.Text<StockMessage>
{
@Override
public
StockMessage
decode(String
s)
throws
DecodeException
{
Gson
gson
=
new
Gson();
return
gson.fromJson(s,
StockMessage.class);
}
}
public
class
StockMessageEncoder
implements
Encoder.Text<StockMessage>
{
@Override
public
String
encode(StockMessage
object)
throws
EncodeException
{
return
new
Gson().toJson(object);
}
}
Decoder
Encoder
31. Heartbeats: Pings and Pongs
Heartbeats is a mechanism to
check that connection is still alive.
If a WebSocket implementation
receives a ping it has
to respond with a pong ASAP.
There is no JavaScript API to support Pings and Pongs.
33. The Software
The Server:
GlassFish 4 (promoted build B88), Oracle
The Java app can generate random price quotes
The Client:
HTML5 Ext JS framework, Sencha
The Chrome Browser, Google
Charles proxy
Introducing the WebSocket Demo
The Goal
1. The server generates random stock prices for a 12-stock portfolio
2. The server pushes 20 price quotes per second using WebSocket
3. The HTML client shows the prices in a data grid
34. What was Pushed via WebSocket
The size of each data push:
The length price quote data: from 42 to 45 bytes
WebSocket added overhead: 2 bytes
{"symbol":
"APPL",
"id":
555,
"price":
"451.29"}
35. Comparing Overheads
Http Request-Response
Each roundtrip has:
request header: 429 bytes + 268 bytes response header
+ 46 bytes data
Server-Sent Events
Initial request header 406 bytes + 268 bytes response
header
Each push: 46 bytes data + 8 bytes message wrapper
WebSocket
Initial upgrade request: 406 bytes + 268 bytes
Each push 46 bytes data + 2 bytes message wrapper
It’s full-duplex, not HTTP-based, works much faster.
37. Reducing kilobytes of data to 2 bytes...
and reducing latency from 150ms to 50 ms
is far more than marginal.
In fact, these two factors alone are enough
to make WebSocket seriously interesting to
Google.
Ian Hickson, Google
The lead HTML5 writer
38. Where to use WebSockets
- Live trading/sports ticker
- Controlling medical equipment over the web
- Chat applications
- Multiplayer online games
- Real-time updating social streams
39. Unedited drafts of the book Enterprise Web Development are published at
enterprisewebbook.com
40. Contact Info
Farata Systems: faratasystems.com
Personal blog: yakovfain.com
Twitter: @yfain
Podcasts in Russian: americhka.us
Thank you!