SlideShare a Scribd company logo
1 of 59
How
Browser Works?
by Volodymyr Voyevidka, FrontEnd Developer
eleks.com
Performance
Quality
USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTENCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
4
BROWSER
USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTENCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
BROWSER UI
BROWSER UI
User Interface
USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTENCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
7
BROWSER BROWSER ENGINE
Browser Engine
Browser
Engine
BROWSER BROWSER ENGINE
USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTENCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
9
BROWSER UI BACKEND
UI Backend
BROWSER UI BACKEND
USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTENCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
11
BROWSER DATA PERSISTENCE
Data Persistence
• Local Storage
• Cookies
• IndexedDB
BROWSER DATA PERSISTENCE
USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTENCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
13
BROWSER NETWORKING
Networking
14BROWSER NETWORKING
Concurrent Requests
15BROWSER CONCURRENT REQUESTSNETWORKING
DNS Lookup
http://gov.ug http://www.president-office.gov.mm
BROWSER DNS LOOKUPNETWORKING
17
Resource Timing API
BROWSER RESOURCE TIMING APINETWORKING
Latency matters
20
amazon100ms = 1% of sales
1% = $889 900 000
21
google500ms = 20% audience
USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTENCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
22
BROWSER JS INTERPRETER
USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTENCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
23
BROWSER WEB APIs
WEB APIs
Web Sockets
Messaging
WebRTC
Canvas
SVG
WebGL
File API
File System API
Indexed DB
DOM
Drag and Drop
Fullscreen
Animation
Timing
Media
Pointer Lock
Web Audio
Browser
Shadow DOM
Typed Arrays
Web Workers
CSS Object Model
Selectors
BROWSER WEB APIs
Event Loop / Task Queue
Philip Roberts
http://latentflip.com/loupe
Event
loop
Call stack
BROWSER WEB APIs EVENT LOOP
macro
micro
micro
micro
task queue
26
console.log('script start');
setTimeout(function() {
console.log('setTimeout');
}, 0);
Promise.resolve().then(function() {
console.log('promise1');
}).then(function() {
console.log('promise2');
});
console.log('script end');
Event Loop / Task Queue Example
BROWSER WEB APIs EVENT LOOP
"script start"
"script end"
"promise1"
"promise2"
"setTimeout"
Event Loop / Task Queue Example
BROWSER WEB APIs EVENT LOOP
var outer = document.querySelector('.outer');
var inner = document.querySelector('.inner');
new MutationObserver(function() {
console.log('mutate');
}).observe(outer, {
attributes: true
});
function onClick() {
console.log('click');
setTimeout(function() {
console.log('timeout');
}, 0);
Promise.resolve().then(function() {
console.log('promise');
});
outer.setAttribute('data-random', Math.random());
}
inner.addEventListener('click', onClick);
outer.addEventListener('click', onClick);
click
promise
mutate
click
promise
mutate
timeout
timeout
click
mutate
click
mutate
timeout
promise
promise
timeout
click
mutate
click
mutate
promise
promise
timeout
timeout
click
click
mutate
timeout
promise
timeout
promise
USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTENCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
28
BROWSER RENDERING ENGINE
Main Flow
RESPONSE HTML HTML PARSEREQUEST URL
LAYOUT/REFLOW PAINT
RENDER TREE DOM TREE
BROWSER MAIN FLOWRENDERING ENGINE
WebKit
DOM
BROWSER WebKitRENDERING ENGINE
GECKO vs WebKit
BROWSER GECKO vs WebKitRENDERING ENGINE
WebKit
DOM
BROWSER HTML PARSERWebKitRENDERING ENGINE
HTML Parser
Tokeniser
Lexical Analyzer
(Flex => Bison)
Tree construction
Syntax analyser
DOM
Script
Execution
document.write();
document.appendChild();
element.innerHTML
BROWSER HTML PARSERWebKitRENDERING ENGINE
Tokeniser
Lexical Analyzer
(Flex => Bison)
Tree construction
Syntax analyser
<p> I <span>ma i n p
I ma i n s p a
</span> </p>
DOM
html
head body
p
span
I am in span
n
linkmeta
I am in p
div
img
<p>
I am in p
<span>
I am in span
</span>
</p>
BROWSER HTML PARSERWebKit EXAMPLERENDERING ENGINE
Dealing with Resources
• Render blocking
• Parser blocking
• Non blocking
BROWSER HTML PARSERWebKit DEALING WITH RESOURCESRENDERING ENGINE
No Resource
<html>
<head>
<title>Critical Path: No Style</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
BROWSER HTML PARSERWebKit DEALING WITH RESOURCES NO RESOURCESRENDERING ENGINE
Render Blocking Resource
<html>
<head>
<link href="style.css" rel="stylesheet">
</head>
<body>
<p>Hello World</p>
</body>
</html>
BROWSER HTML PARSERWebKit DEALING WITH RESOURCES RENDER BLOCKIGNRENDERING ENGINE
Render and Parser Blocking Resource
<html>
<head>
<link href="style.css" rel="stylesheet">
</head>
<body>
<p>Hello World</p>
<script src="app.js"></script>
</body>
</html>
BROWSER HTML PARSERWebKit DEALING WITH RESOURCES RENDER AND PARSER BLOCKIGNRENDERING ENGINE
Non Blocking Resource
<html>
<head>
<link href="style.css" rel="stylesheet" media="print">
</head>
<body>
<p>Hello World</p>
<script src="app.js" async></script>
</body>
</html>
BROWSER HTML PARSERWebKit DEALING WITH RESOURCES NON BLOCKIGNRENDERING ENGINE
WebKit
DOM
BROWSER WebKit DOMRENDERING ENGINE
WebKit
DOM
BROWSER WebKit CSS PARSERRENDERING ENGINE
CSS Selectors Priority
div { background-color: pink; height: 100px; }
body.home > section.wrapper > div.container { background-color: red; height: 100px; }
#container { background-color: blue; height: 100px; }
.container { background-color: yellow; height: 100px; }
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body class="home">
<section class=“wrapper">
<div class="container" id=“container"></div>
</section>
</body>
</html>
BROWSER WebKit CSS PRIORITY EXAMPLERENDERING ENGINE
CSS Selectors Priority
a b c d
inline 1 0 0 0
#id 0 1 0 0
.class, *, attrs 0 0 1 0
tags, pseudo-* 0 0 0 1
(a, b, c, d)
a - inline
b - #id
c - .class
d - tag
highest priority
lowest priority
…
div { /* ... */ }
/* a=0, b=0, c=0, d=1 */
body.home > section.wrapper > div.container { /* ... */ }
/* a=0, b=0, c=3, d=3 */
#container { /*...*/ }
/* a=0, b=1, c=0, d=0 */
.container { /* ... */ }
/* a=0, b=0, c=1, d=0 */
#top-navigation 0 1 0 0
body.home > section.top-navifation > div.container 0 0 3 3
.container 0 0 1 0
div 0 0 0 1
BROWSER WebKit CSS PRIORITYRENDERING ENGINE
#main-navigation { } /* ID (Fastest) */
body.home #wrapper { } /* ID */
.main-navigation { } /* Class */
ul li a.current { } /* Class */
ul { } /* Tag */
ul li a { } /* Tag */
* { } /* Universal (Slowest) */
#content [title='home'] /* Universal */
ID selectors
main-navigation { }
wrapper { }
Class selectors
main-navigation { }
current { }
Tag selectors
ul { }
a { }
Universal selectors
* { }
[title='home'] { }
BROWSER WebKit CSS PERFORMANCE
CSS Selectors Performance
RENDERING ENGINE
Chrome Firefox 29 Opera 19 IE9 Android 4
Data attribute 56.8 125.4 63.6 152.6 1455.2
Data attribute (qualified) 55.4 128.4 61.4 141 1404.6
Data attribute (unqualified but with value) 55 125.6 61.8 152.4 1363.4
Data attribute (qualified with value) 54.8 129 63.2 147.4 1421.2
Multiple data attributes (qualified with values) 55.4 124.4 63.2 147.4 1411.2
Solo pseudo selector (e.g. :after) 60.6 138 58.4 162 1500.4
Combined classes (e.g. class1.class2) 51.2 126.6 56.8 147.8 1453.8
Multiple classes 48.8 127.4 56.2 150.2 1398.8
Multiple classes with child selector 48.8 127.4 55.8 154.6 1348.4
Partial attribute matching (e.g. [class^=“wrap”]) 52.2 129.4 58 172 1420.2
nth-child selector 49 127.4 56.6 148.4 1352
nth-child selector followed by another nth-child selector 50.6 127.2 58.4 146.2 1377.6
Insanity selection (all selections qualified, every class used) 64.6 129.2 72.4 152.8 1461.2
Slight insanity selection (e.g. .tagLi .tagB a.TagA.link) 50.2 129.8 54.8 154.6 1381.2
Universal selector 50 126.2 56.8 154.8 1351.6
Element single 49.2 127.6 56 149.2 1379.2
Element double 50.4 132.4 55 157.6 1386
Element treble 49.2 128.8 58.6 154.2 1380.6
Element treble with pseudo 48.6 132.4 54.8 148.4 1349.6
Single class 50.4 128 55 149.8 1393.8
Biggest Diff 16 13.6 17.6 31 152
Biggest Diff 13 6 13 10 6
body
p imgspan
span
body { font-size: 16px; }
p { font-weight: bold; }
span { color: red; }
p span { display: none; }
img { float: right; }
font-size: 16px;
font-size: 16px;
float: right;
font-size: 16px;
font-weight: bold;
font-size: 16px;
font-weight: bold;
display: none;
font-size: 16px;
color: red;
BROWSER WebKit CSS OBJECT MODEL
CSS Object Model
RENDERING ENGINE
DOM
BROWSER WebKit STYLE RULES
WebKit
RENDERING ENGINE
DOM
BROWSER RENDERING ENGIN WebKit ATTACHMENT
WebKit
RENDERING ENGINE
Attachment
CSSOMDOM
BODY
p
I am in p
div
img
font-size: 16px;
font-size: 16px;
float: right;
font-size: 16px;
font-weight: bold;
BROWSER WebKit ATTACHMENTRENDERING ENGINE
DOM
BROWSER WebKit RENDER TREE
WebKit
RENDERING ENGINE
DOM
BROWSER WebKit RENDER TREE LAYOUT / REFLOW & PAINTING
WebKit
RENDERING ENGINE
Layout / Reflow
calculating position and size of renderers
Painting
BROWSER WebKit RENDER TREE LAYOUT / REFLOW & PAINTINGRENDERING ENGINE
var textlist = [1,2,3,4,5,6,7,8,9],
elem;
for(var i = 0; i < textlist.length; i++) {
elem = document.getElementById('item-'+ textlist[i]);
elem.style.background = '#333';
elem.style.color = '#fff';
elem.style.border = '1px solid #00f';
elem.style.width = '300px';
}
Layout / Reflow & Repaint optimization
var toChange = document.getElementById('mainelement');
toChange.style.background = '#333';
toChange.style.color = '#fff';
toChange.style.border = '1px solid #00f';
toChange.style.width = '300px';
BROWSER WebKit RENDER TREE LAYOUT / REFLOW & PAINTING OPTIMIZATION
<style>
div { /* … */ }
div.highlight { /* … */ }
</style>
<script>
document.getElementById('mainelement').classList.add('highlight');
</script>
var textlist = [1,2,3,4,5,6,7,8,9],
docFragm, elem, contents;
docFragm = document.createDocumentFragment();
for(var i = 0; i < textlist.length; i++) {
elem = document.createElement('p');
contents = document.createTextNode(textlist[i]);
elem.appendChild(contents);
docFragm.appendChild(elem);
}
document.body.appendChild(docFragm);
RENDERING ENGINE
elem = document.getElementById('content');
elem.offsetWidth;
elem.clientTop;
elem.getClientRects();
elem.focus();
window.getComputedStyle();
window.scrollX
BROWSER WebKit RENDER TREE LAYOUT / REFLOW TRIGGER
Layout / Reflow Trigger
RENDERING ENGINE
DOM
BROWSER WebKit DISPLAY
WebKit
RENDERING ENGINE
USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTANCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
56
BROWSER RENDERING ENGINE
57
Summary
● Latency matters
● Browser is not so simple
● CSS selectors can be a tricky place
● Resources amount matters
● Every millisecond means a lot
58
Questions & Answers
Inspired by Technology.
Driven by Value.
Find us at eleks.com Have a question? Write to eleksinfo@eleks.com

More Related Content

What's hot

Aligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsAligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsMatthew Beale
 
Freeing the cloud, one service at a time
Freeing the cloud, one service at a timeFreeing the cloud, one service at a time
Freeing the cloud, one service at a timeFrancois Marier
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Libraryjeresig
 
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015Jeongkyu Shin
 
Pyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsPyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsDylan Jay
 
Even faster django
Even faster djangoEven faster django
Even faster djangoGage Tseng
 
DEVNET-1111 Scott Hanselman on Virtual Machines, JavaScript and Assembler
DEVNET-1111	Scott Hanselman on Virtual Machines, JavaScript and AssemblerDEVNET-1111	Scott Hanselman on Virtual Machines, JavaScript and Assembler
DEVNET-1111 Scott Hanselman on Virtual Machines, JavaScript and AssemblerCisco DevNet
 
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyS314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyLuciano Resende
 
Czym jest webpack i dlaczego chcesz go używać?
Czym jest webpack i dlaczego chcesz go używać?Czym jest webpack i dlaczego chcesz go używać?
Czym jest webpack i dlaczego chcesz go używać?Marcin Gajda
 
[cssdevconf] Adaptive Images in Responsive Web Design
[cssdevconf] Adaptive Images in Responsive Web Design[cssdevconf] Adaptive Images in Responsive Web Design
[cssdevconf] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Scripting for infosecs
Scripting for infosecsScripting for infosecs
Scripting for infosecsnancysuemartin
 
Deploying
DeployingDeploying
Deployingsoon
 
Economies of Scaling Software
Economies of Scaling SoftwareEconomies of Scaling Software
Economies of Scaling SoftwareJoshua Long
 
12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocratJonathan Linowes
 

What's hot (20)

The Devil and HTML5
The Devil and HTML5The Devil and HTML5
The Devil and HTML5
 
Aligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsAligning Ember.js with Web Standards
Aligning Ember.js with Web Standards
 
Python, WebRTC and You (v2)
Python, WebRTC and You (v2)Python, WebRTC and You (v2)
Python, WebRTC and You (v2)
 
Freeing the cloud, one service at a time
Freeing the cloud, one service at a timeFreeing the cloud, one service at a time
Freeing the cloud, one service at a time
 
Building a JavaScript Library
Building a JavaScript LibraryBuilding a JavaScript Library
Building a JavaScript Library
 
Ajax Security
Ajax SecurityAjax Security
Ajax Security
 
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
 
Elastic stack
Elastic stackElastic stack
Elastic stack
 
ICEfaces and JSF 2.0 on GlassFish
ICEfaces and JSF 2.0 on GlassFishICEfaces and JSF 2.0 on GlassFish
ICEfaces and JSF 2.0 on GlassFish
 
Pyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsPyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web apps
 
Even faster django
Even faster djangoEven faster django
Even faster django
 
DEVNET-1111 Scott Hanselman on Virtual Machines, JavaScript and Assembler
DEVNET-1111	Scott Hanselman on Virtual Machines, JavaScript and AssemblerDEVNET-1111	Scott Hanselman on Virtual Machines, JavaScript and Assembler
DEVNET-1111 Scott Hanselman on Virtual Machines, JavaScript and Assembler
 
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache TuscanyS314011 - Developing Composite Applications for the Cloud with Apache Tuscany
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
 
Czym jest webpack i dlaczego chcesz go używać?
Czym jest webpack i dlaczego chcesz go używać?Czym jest webpack i dlaczego chcesz go używać?
Czym jest webpack i dlaczego chcesz go używać?
 
[cssdevconf] Adaptive Images in Responsive Web Design
[cssdevconf] Adaptive Images in Responsive Web Design[cssdevconf] Adaptive Images in Responsive Web Design
[cssdevconf] Adaptive Images in Responsive Web Design
 
Scripting for infosecs
Scripting for infosecsScripting for infosecs
Scripting for infosecs
 
SocketStream
SocketStreamSocketStream
SocketStream
 
Deploying
DeployingDeploying
Deploying
 
Economies of Scaling Software
Economies of Scaling SoftwareEconomies of Scaling Software
Economies of Scaling Software
 
12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat
 

Viewers also liked

Webinar: Eliminating Negative Impact on User Experience from Security Solutions
Webinar: Eliminating Negative Impact on User Experience from Security SolutionsWebinar: Eliminating Negative Impact on User Experience from Security Solutions
Webinar: Eliminating Negative Impact on User Experience from Security SolutionsUL Transaction Security
 
Healthiest Seeds For Life
Healthiest Seeds For LifeHealthiest Seeds For Life
Healthiest Seeds For Lifevanya Gill
 
White Label features
White Label features White Label features
White Label features MEEwallet
 
20130131 binck itude_m_commerce_v04
20130131 binck itude_m_commerce_v0420130131 binck itude_m_commerce_v04
20130131 binck itude_m_commerce_v04Robin Puthli
 
Discografia de selena gomez
Discografia de selena gomezDiscografia de selena gomez
Discografia de selena gomezlisita_95
 
Rpp jaringan dasar 1 3
Rpp jaringan dasar 1 3Rpp jaringan dasar 1 3
Rpp jaringan dasar 1 3Iam Cominx
 

Viewers also liked (12)

Webinar: Eliminating Negative Impact on User Experience from Security Solutions
Webinar: Eliminating Negative Impact on User Experience from Security SolutionsWebinar: Eliminating Negative Impact on User Experience from Security Solutions
Webinar: Eliminating Negative Impact on User Experience from Security Solutions
 
Healthiest Seeds For Life
Healthiest Seeds For LifeHealthiest Seeds For Life
Healthiest Seeds For Life
 
Building apps for india
Building apps for indiaBuilding apps for india
Building apps for india
 
Udated resume March
Udated resume MarchUdated resume March
Udated resume March
 
White Label features
White Label features White Label features
White Label features
 
Մթնոլորտ
ՄթնոլորտՄթնոլորտ
Մթնոլորտ
 
Scott Clayton Johnston ref
Scott Clayton Johnston refScott Clayton Johnston ref
Scott Clayton Johnston ref
 
FRM Certificate
FRM CertificateFRM Certificate
FRM Certificate
 
20130131 binck itude_m_commerce_v04
20130131 binck itude_m_commerce_v0420130131 binck itude_m_commerce_v04
20130131 binck itude_m_commerce_v04
 
Discografia de selena gomez
Discografia de selena gomezDiscografia de selena gomez
Discografia de selena gomez
 
Rpp 1 riil
Rpp 1 riilRpp 1 riil
Rpp 1 riil
 
Rpp jaringan dasar 1 3
Rpp jaringan dasar 1 3Rpp jaringan dasar 1 3
Rpp jaringan dasar 1 3
 

Similar to JS Lab`16. Владимир Воевидка: "Как работает браузер"

Even faster web sites
Even faster web sitesEven faster web sites
Even faster web sitesFelipe Lavín
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpMatthew Davis
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Matt Raible
 
Web Scraping In Ruby Utosc 2009.Key
Web Scraping In Ruby Utosc 2009.KeyWeb Scraping In Ruby Utosc 2009.Key
Web Scraping In Ruby Utosc 2009.Keyjtzemp
 
Front End Good Practices
Front End Good PracticesFront End Good Practices
Front End Good PracticesHernan Mammana
 
X tag with web components - joe ssekono
X tag with web components - joe ssekonoX tag with web components - joe ssekono
X tag with web components - joe ssekonoJoseph Ssekono
 
Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Estelle Weyl
 
Front End Development for Back End Developers - Devoxx UK 2017
 Front End Development for Back End Developers - Devoxx UK 2017 Front End Development for Back End Developers - Devoxx UK 2017
Front End Development for Back End Developers - Devoxx UK 2017Matt Raible
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站areyouok
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站topgeek
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017MarcinStachniuk
 
Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Matt Raible
 
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...Patrick Meenan
 

Similar to JS Lab`16. Владимир Воевидка: "Как работает браузер" (20)

How Browser Works?
How Browser Works?How Browser Works?
How Browser Works?
 
Even faster web sites
Even faster web sitesEven faster web sites
Even faster web sites
 
前端概述
前端概述前端概述
前端概述
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
 
Web Scraping In Ruby Utosc 2009.Key
Web Scraping In Ruby Utosc 2009.KeyWeb Scraping In Ruby Utosc 2009.Key
Web Scraping In Ruby Utosc 2009.Key
 
Rails 101
Rails 101Rails 101
Rails 101
 
Front End Good Practices
Front End Good PracticesFront End Good Practices
Front End Good Practices
 
X tag with web components - joe ssekono
X tag with web components - joe ssekonoX tag with web components - joe ssekono
X tag with web components - joe ssekono
 
Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0
 
URL Design
URL DesignURL Design
URL Design
 
Please dont touch-3.6-jsday
Please dont touch-3.6-jsdayPlease dont touch-3.6-jsday
Please dont touch-3.6-jsday
 
dJango
dJangodJango
dJango
 
Front End Development for Back End Developers - Devoxx UK 2017
 Front End Development for Back End Developers - Devoxx UK 2017 Front End Development for Back End Developers - Devoxx UK 2017
Front End Development for Back End Developers - Devoxx UK 2017
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017
 
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
 

More from GeeksLab Odessa

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...GeeksLab Odessa
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...GeeksLab Odessa
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторGeeksLab Odessa
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеGeeksLab Odessa
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...GeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладGeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладGeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладGeeksLab Odessa
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...GeeksLab Odessa
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...GeeksLab Odessa
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко GeeksLab Odessa
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...GeeksLab Odessa
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...GeeksLab Odessa
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...GeeksLab Odessa
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...GeeksLab Odessa
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...GeeksLab Odessa
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...GeeksLab Odessa
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот GeeksLab Odessa
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...GeeksLab Odessa
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js GeeksLab Odessa
 

More from GeeksLab Odessa (20)

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский Виктор
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображение
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
 

Recently uploaded

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Recently uploaded (20)

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

JS Lab`16. Владимир Воевидка: "Как работает браузер"

  • 1. How Browser Works? by Volodymyr Voyevidka, FrontEnd Developer eleks.com
  • 4. USER INTERFACE BROWSER ENGINE RENDERING ENGINE NETWORKING JavaScript INTERPRETER UI BACKEND DATAPERSISTENCE V8, SpiderMonkey WebKit, Gecko, Blink, Trident WEB APIs 4 BROWSER
  • 5. USER INTERFACE BROWSER ENGINE RENDERING ENGINE NETWORKING JavaScript INTERPRETER UI BACKEND DATAPERSISTENCE V8, SpiderMonkey WebKit, Gecko, Blink, Trident WEB APIs BROWSER UI
  • 7. USER INTERFACE BROWSER ENGINE RENDERING ENGINE NETWORKING JavaScript INTERPRETER UI BACKEND DATAPERSISTENCE V8, SpiderMonkey WebKit, Gecko, Blink, Trident WEB APIs 7 BROWSER BROWSER ENGINE
  • 9. USER INTERFACE BROWSER ENGINE RENDERING ENGINE NETWORKING JavaScript INTERPRETER UI BACKEND DATAPERSISTENCE V8, SpiderMonkey WebKit, Gecko, Blink, Trident WEB APIs 9 BROWSER UI BACKEND
  • 11. USER INTERFACE BROWSER ENGINE RENDERING ENGINE NETWORKING JavaScript INTERPRETER UI BACKEND DATAPERSISTENCE V8, SpiderMonkey WebKit, Gecko, Blink, Trident WEB APIs 11 BROWSER DATA PERSISTENCE
  • 12. Data Persistence • Local Storage • Cookies • IndexedDB BROWSER DATA PERSISTENCE
  • 13. USER INTERFACE BROWSER ENGINE RENDERING ENGINE NETWORKING JavaScript INTERPRETER UI BACKEND DATAPERSISTENCE V8, SpiderMonkey WebKit, Gecko, Blink, Trident WEB APIs 13 BROWSER NETWORKING
  • 17. 17
  • 18. Resource Timing API BROWSER RESOURCE TIMING APINETWORKING
  • 20. 20 amazon100ms = 1% of sales 1% = $889 900 000
  • 22. USER INTERFACE BROWSER ENGINE RENDERING ENGINE NETWORKING JavaScript INTERPRETER UI BACKEND DATAPERSISTENCE V8, SpiderMonkey WebKit, Gecko, Blink, Trident WEB APIs 22 BROWSER JS INTERPRETER
  • 23. USER INTERFACE BROWSER ENGINE RENDERING ENGINE NETWORKING JavaScript INTERPRETER UI BACKEND DATAPERSISTENCE V8, SpiderMonkey WebKit, Gecko, Blink, Trident WEB APIs 23 BROWSER WEB APIs
  • 24. WEB APIs Web Sockets Messaging WebRTC Canvas SVG WebGL File API File System API Indexed DB DOM Drag and Drop Fullscreen Animation Timing Media Pointer Lock Web Audio Browser Shadow DOM Typed Arrays Web Workers CSS Object Model Selectors BROWSER WEB APIs
  • 25. Event Loop / Task Queue Philip Roberts http://latentflip.com/loupe Event loop Call stack BROWSER WEB APIs EVENT LOOP macro micro micro micro task queue
  • 26. 26 console.log('script start'); setTimeout(function() { console.log('setTimeout'); }, 0); Promise.resolve().then(function() { console.log('promise1'); }).then(function() { console.log('promise2'); }); console.log('script end'); Event Loop / Task Queue Example BROWSER WEB APIs EVENT LOOP "script start" "script end" "promise1" "promise2" "setTimeout"
  • 27. Event Loop / Task Queue Example BROWSER WEB APIs EVENT LOOP var outer = document.querySelector('.outer'); var inner = document.querySelector('.inner'); new MutationObserver(function() { console.log('mutate'); }).observe(outer, { attributes: true }); function onClick() { console.log('click'); setTimeout(function() { console.log('timeout'); }, 0); Promise.resolve().then(function() { console.log('promise'); }); outer.setAttribute('data-random', Math.random()); } inner.addEventListener('click', onClick); outer.addEventListener('click', onClick); click promise mutate click promise mutate timeout timeout click mutate click mutate timeout promise promise timeout click mutate click mutate promise promise timeout timeout click click mutate timeout promise timeout promise
  • 28. USER INTERFACE BROWSER ENGINE RENDERING ENGINE NETWORKING JavaScript INTERPRETER UI BACKEND DATAPERSISTENCE V8, SpiderMonkey WebKit, Gecko, Blink, Trident WEB APIs 28 BROWSER RENDERING ENGINE
  • 29. Main Flow RESPONSE HTML HTML PARSEREQUEST URL LAYOUT/REFLOW PAINT RENDER TREE DOM TREE BROWSER MAIN FLOWRENDERING ENGINE
  • 31. GECKO vs WebKit BROWSER GECKO vs WebKitRENDERING ENGINE
  • 33. HTML Parser Tokeniser Lexical Analyzer (Flex => Bison) Tree construction Syntax analyser DOM Script Execution document.write(); document.appendChild(); element.innerHTML BROWSER HTML PARSERWebKitRENDERING ENGINE
  • 34. Tokeniser Lexical Analyzer (Flex => Bison) Tree construction Syntax analyser <p> I <span>ma i n p I ma i n s p a </span> </p> DOM html head body p span I am in span n linkmeta I am in p div img <p> I am in p <span> I am in span </span> </p> BROWSER HTML PARSERWebKit EXAMPLERENDERING ENGINE
  • 35. Dealing with Resources • Render blocking • Parser blocking • Non blocking BROWSER HTML PARSERWebKit DEALING WITH RESOURCESRENDERING ENGINE
  • 36. No Resource <html> <head> <title>Critical Path: No Style</title> </head> <body> <p>Hello World</p> </body> </html> BROWSER HTML PARSERWebKit DEALING WITH RESOURCES NO RESOURCESRENDERING ENGINE
  • 37. Render Blocking Resource <html> <head> <link href="style.css" rel="stylesheet"> </head> <body> <p>Hello World</p> </body> </html> BROWSER HTML PARSERWebKit DEALING WITH RESOURCES RENDER BLOCKIGNRENDERING ENGINE
  • 38. Render and Parser Blocking Resource <html> <head> <link href="style.css" rel="stylesheet"> </head> <body> <p>Hello World</p> <script src="app.js"></script> </body> </html> BROWSER HTML PARSERWebKit DEALING WITH RESOURCES RENDER AND PARSER BLOCKIGNRENDERING ENGINE
  • 39. Non Blocking Resource <html> <head> <link href="style.css" rel="stylesheet" media="print"> </head> <body> <p>Hello World</p> <script src="app.js" async></script> </body> </html> BROWSER HTML PARSERWebKit DEALING WITH RESOURCES NON BLOCKIGNRENDERING ENGINE
  • 41. WebKit DOM BROWSER WebKit CSS PARSERRENDERING ENGINE
  • 42. CSS Selectors Priority div { background-color: pink; height: 100px; } body.home > section.wrapper > div.container { background-color: red; height: 100px; } #container { background-color: blue; height: 100px; } .container { background-color: yellow; height: 100px; } <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body class="home"> <section class=“wrapper"> <div class="container" id=“container"></div> </section> </body> </html> BROWSER WebKit CSS PRIORITY EXAMPLERENDERING ENGINE
  • 43. CSS Selectors Priority a b c d inline 1 0 0 0 #id 0 1 0 0 .class, *, attrs 0 0 1 0 tags, pseudo-* 0 0 0 1 (a, b, c, d) a - inline b - #id c - .class d - tag highest priority lowest priority … div { /* ... */ } /* a=0, b=0, c=0, d=1 */ body.home > section.wrapper > div.container { /* ... */ } /* a=0, b=0, c=3, d=3 */ #container { /*...*/ } /* a=0, b=1, c=0, d=0 */ .container { /* ... */ } /* a=0, b=0, c=1, d=0 */ #top-navigation 0 1 0 0 body.home > section.top-navifation > div.container 0 0 3 3 .container 0 0 1 0 div 0 0 0 1 BROWSER WebKit CSS PRIORITYRENDERING ENGINE
  • 44. #main-navigation { } /* ID (Fastest) */ body.home #wrapper { } /* ID */ .main-navigation { } /* Class */ ul li a.current { } /* Class */ ul { } /* Tag */ ul li a { } /* Tag */ * { } /* Universal (Slowest) */ #content [title='home'] /* Universal */ ID selectors main-navigation { } wrapper { } Class selectors main-navigation { } current { } Tag selectors ul { } a { } Universal selectors * { } [title='home'] { } BROWSER WebKit CSS PERFORMANCE CSS Selectors Performance RENDERING ENGINE
  • 45. Chrome Firefox 29 Opera 19 IE9 Android 4 Data attribute 56.8 125.4 63.6 152.6 1455.2 Data attribute (qualified) 55.4 128.4 61.4 141 1404.6 Data attribute (unqualified but with value) 55 125.6 61.8 152.4 1363.4 Data attribute (qualified with value) 54.8 129 63.2 147.4 1421.2 Multiple data attributes (qualified with values) 55.4 124.4 63.2 147.4 1411.2 Solo pseudo selector (e.g. :after) 60.6 138 58.4 162 1500.4 Combined classes (e.g. class1.class2) 51.2 126.6 56.8 147.8 1453.8 Multiple classes 48.8 127.4 56.2 150.2 1398.8 Multiple classes with child selector 48.8 127.4 55.8 154.6 1348.4 Partial attribute matching (e.g. [class^=“wrap”]) 52.2 129.4 58 172 1420.2 nth-child selector 49 127.4 56.6 148.4 1352 nth-child selector followed by another nth-child selector 50.6 127.2 58.4 146.2 1377.6 Insanity selection (all selections qualified, every class used) 64.6 129.2 72.4 152.8 1461.2 Slight insanity selection (e.g. .tagLi .tagB a.TagA.link) 50.2 129.8 54.8 154.6 1381.2 Universal selector 50 126.2 56.8 154.8 1351.6 Element single 49.2 127.6 56 149.2 1379.2 Element double 50.4 132.4 55 157.6 1386 Element treble 49.2 128.8 58.6 154.2 1380.6 Element treble with pseudo 48.6 132.4 54.8 148.4 1349.6 Single class 50.4 128 55 149.8 1393.8 Biggest Diff 16 13.6 17.6 31 152 Biggest Diff 13 6 13 10 6
  • 46. body p imgspan span body { font-size: 16px; } p { font-weight: bold; } span { color: red; } p span { display: none; } img { float: right; } font-size: 16px; font-size: 16px; float: right; font-size: 16px; font-weight: bold; font-size: 16px; font-weight: bold; display: none; font-size: 16px; color: red; BROWSER WebKit CSS OBJECT MODEL CSS Object Model RENDERING ENGINE
  • 47. DOM BROWSER WebKit STYLE RULES WebKit RENDERING ENGINE
  • 48. DOM BROWSER RENDERING ENGIN WebKit ATTACHMENT WebKit RENDERING ENGINE
  • 49. Attachment CSSOMDOM BODY p I am in p div img font-size: 16px; font-size: 16px; float: right; font-size: 16px; font-weight: bold; BROWSER WebKit ATTACHMENTRENDERING ENGINE
  • 50. DOM BROWSER WebKit RENDER TREE WebKit RENDERING ENGINE
  • 51. DOM BROWSER WebKit RENDER TREE LAYOUT / REFLOW & PAINTING WebKit RENDERING ENGINE
  • 52. Layout / Reflow calculating position and size of renderers Painting BROWSER WebKit RENDER TREE LAYOUT / REFLOW & PAINTINGRENDERING ENGINE
  • 53. var textlist = [1,2,3,4,5,6,7,8,9], elem; for(var i = 0; i < textlist.length; i++) { elem = document.getElementById('item-'+ textlist[i]); elem.style.background = '#333'; elem.style.color = '#fff'; elem.style.border = '1px solid #00f'; elem.style.width = '300px'; } Layout / Reflow & Repaint optimization var toChange = document.getElementById('mainelement'); toChange.style.background = '#333'; toChange.style.color = '#fff'; toChange.style.border = '1px solid #00f'; toChange.style.width = '300px'; BROWSER WebKit RENDER TREE LAYOUT / REFLOW & PAINTING OPTIMIZATION <style> div { /* … */ } div.highlight { /* … */ } </style> <script> document.getElementById('mainelement').classList.add('highlight'); </script> var textlist = [1,2,3,4,5,6,7,8,9], docFragm, elem, contents; docFragm = document.createDocumentFragment(); for(var i = 0; i < textlist.length; i++) { elem = document.createElement('p'); contents = document.createTextNode(textlist[i]); elem.appendChild(contents); docFragm.appendChild(elem); } document.body.appendChild(docFragm); RENDERING ENGINE
  • 56. USER INTERFACE BROWSER ENGINE RENDERING ENGINE NETWORKING JavaScript INTERPRETER UI BACKEND DATAPERSISTANCE V8, SpiderMonkey WebKit, Gecko, Blink, Trident WEB APIs 56 BROWSER RENDERING ENGINE
  • 57. 57 Summary ● Latency matters ● Browser is not so simple ● CSS selectors can be a tricky place ● Resources amount matters ● Every millisecond means a lot
  • 59. Inspired by Technology. Driven by Value. Find us at eleks.com Have a question? Write to eleksinfo@eleks.com

Editor's Notes

  1. Volodymyr Voyevidka
  2. Volodymyr Voyevidka
  3. Volodymyr Voyevidka
  4. Volodymyr Voyevidka
  5. Volodymyr Voyevidka
  6. Volodymyr Voyevidka
  7. Volodymyr Voyevidka
  8. Volodymyr Voyevidka
  9. Volodymyr Voyevidka
  10. Volodymyr Voyevidka
  11. Volodymyr Voyevidka
  12. Volodymyr Voyevidka
  13. Volodymyr Voyevidka
  14. Volodymyr Voyevidka
  15. Volodymyr Voyevidka
  16. Volodymyr Voyevidka
  17. Oleksandr Vasyliev
  18. Oleksandr Vasyliev
  19. Oleksandr Vasyliev
  20. Oleksandr Vasyliev
  21. Volodymyr Voyevidka
  22. Volodymyr Voyevidka
  23. Oleksandr Vasyliev
  24. Oleksandr Vasyliev
  25. Volodymyr Voyevidka
  26. Volodymyr Voyevidka
  27. Volodymyr Voyevidka
  28. Oleksandr Vasyliev
  29. Volodymyr Voyevidka
  30. Volodymyr Voyevidka
  31. Oleksandr Vasyliev
  32. Volodymyr Voyevidka