SlideShare une entreprise Scribd logo
1  sur  78
Télécharger pour lire hors ligne
Reaktor
Mannerheimintie 2
00100, Helsinki Finland
tel: +358 9 4152 0200
www.reaktor.com
info@reaktor.com
Confidential
©2015 Reaktor
All rights reserved
10 javascript conceptsFor advanced (web) analytics implementation
Simo Ahava
Senior Data Advocate
Simo Ahava
Senior Data Advocate, Reaktor
Google Developer Expert, Google Analytics
Blogger, developer, www.simoahava.com
Twitter-er, @SimoAhava
Google+:er, +SimoAhava
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
Get the basics right
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
Get the basics right
Great JavaScript learning resources
http://www.codecademy.com/
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
1. Functions
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
1. Functions
…multi-purpose, multi-use…
function (number1, number2) {
someGlobalProperty.set(number1 * number2);
return number1 * number2;
}
AVOID SIDE EFFECTS!
function () {
var timeNow = new Date();
return function() {
return "Time at initialization was ": timeNow;
}
}
understand scope,
utilize closures
function() {
var jsonLd = document.querySelector('script[type*="ld+json"]');
return jsonLd ? JSON.parse(jsonLd.innerHTML) : {};
}
function() {
return {{JSON-LD}}.author.name || undefined;
}
Leverage return values
for max flexibility!
function() {
return function() {
window.dataLayer.push({

'event' : 'commandComplete'
});

};
}
Modify state in closures, e.g.
using hitCallback
http://www.w3schools.com/js/js_function_closures.asp
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures
http://www.simoahava.com/analytics/variable-guide-google-tag-manager/#6
further reading
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
2. Data types
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
2. Data types
…stay loose…
Number: 5
String: "five"
Boolean: true
Array: [1, 2, 3]
Object: {name: "Simo"}
Misc: undefined, null…
var five = "5";
five = 5;
dynamic type
var five = "5";
var ten = five * 2;

// ten === 10
loose type
typeof [1,2,3]; // "object"
Array.isArray([1,2,3]); // true
typeof undefined; // "undefined"
typeof null; // "object"

undefined === null; // false
undefined == null; // true
typeof NaN; // "number"
isNaN(NaN); // true
isNaN(null); // false
NaN === NaN; // false
weird stuff…
window.dataLayer.push({

'event' : 'GAEvent',
'eventData' : {

'cat' : 'Category Value',
'act' : 'Action Value',
'lab' : undefined, // PURGE
'val' : undefined // PURGE
}

});
use undefined to reset
data layer variables
http://www.w3schools.com/js/js_datatypes.asp
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures
http://www.simoahava.com/gtm-tips/undefined-dimensions-wont-get-sent/
further reading
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
3. HTTP requests
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
3. HTTP requests
…loading resources without blocking the browser…
the container snippet is a
script loader
it injects a script element
into the dom
which, in turn, downloads the
gtm library
<a href=url>
<applet codebase=url>
<area href=url>
<base href=url>
<blockquote cite=url>
<body background=url>
<del cite=url>
<form action=url>
<frame longdesc=url>, <frame src=url>
<head profile=url>
<iframe longdesc=url>, <iframe src=url>
<img longdesc=url>, <img src=url>, <img usemap=url>
all these html elements
invoke an http request
<input src=url>, <input usemap=url>
<ins cite=url>
<link href=url>
<object classid=url>, <object codebase=url>, <object data=url>, <object usemap=url>
<q cite=url>
<script src=url>
<audio src=url>
<button formaction=url>
<command icon=url>
<embed src=url>
<html manifest=url>
<input formaction=url>
<source src=url>
<video poster=url>, <video src=url>
GA does both get and post
depending on payload size
http://www.w3schools.com/ajax/ajax_xmlhttprequest_create.asp
http://www.w3schools.com/tags/ref_httpmethods.asp
https://developers.google.com/analytics/devguides/collection/protocol/v1/reference#transport
further reading
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
4. Race conditions
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
4. Race conditions
…last one over the finish line is a failed request…
async in the script tag means
the resource is downloaded
asynchronously
Synchronous: The web browser reads, requests, and executes from top-to-bottom, left-to-right.
Asynchronous: The web browser reads and requests from top-to-bottom, left-to-right. 

Execution depends on when the requests complete respectively.
Synchronous: The web browser reads, requests, and executes from top-to-bottom, left-to-right.
Asynchronous: The web browser reads and requests from top-to-bottom, left-to-right. 

Execution depends on when the requests complete respectively.
Race condition: When the browser expects a proper
sequence for executing commands, but this sequence
cannot be guaranteed.
var jQLoad = document.createElement('script');

jQLoad.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js';

jQLoad.addEventListener('load', function() {

window.dataLayer.push({

'event' : 'jQueryComplete'
});
});
document.head.appendChild(jQLoad);
use callbacks to establish
sequence
<script>
(function() {
var el = document.createElement('script');
el.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js';
el.addEventListener('load', function() {
google_tag_manager[{{Container ID}}].onHtmlSuccess({{HTML ID}});
});
document.head.appendChild(el);
})();
</script>
tag sequencing can be used
but it’s tricky
http://callbackhell.com/
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
http://www.simoahava.com/analytics/understanding-tag-sequencing-in-google-tag-manager/
further reading
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
5. History manipulation
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
5. History manipulation
…avoiding the dreaded page refresh…
window.history.pushState(

{ pageType: 'formThankYou' },
'Form Success',
'/thank-you/'
);
pushstate creates a new
history entry in the web browser
window.location = '#thank-you';
changing location to #hash
does the same thing
window.history.replaceState(

{ pageType: 'formThankYou' },
'Form Success',
'/thank-you/'
);
replacestate replaces the
current history state
you can create triggers in
gtm that react to these changes
https://developer.mozilla.org/en-US/docs/Web/API/History_API
http://www.w3schools.com/js/js_window_history.asp
http://www.simoahava.com/analytics/google-tag-manager-history-listener/
further reading
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
6. Browser storage
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
6. Browser storage
…introducing state to a stateless environment…
function() {
return function(name, value, ms, path, domain) {
if (!name || !value) {
return;
}
var d;
var cpath = path ? '; path=' + path : '';
var cdomain = domain ? '; domain=' + domain : '';
var expires = '';
if (ms) {
d = new Date();
d.setTime(d.getTime() + ms);
expires = '; expires=' + d.toUTCString();
}
document.cookie = name + "=" + value + expires + cpath + cdomain;
}
}
browser cookies are useful for
simple storage
{{Simo Cookie Solution}}('subscribe', 'true', 1800000, '/', 'simoahava.com');
browser cookies are useful for
simple storage
if (window['Storage']) {
localStorage.setItem('subscribe', 'true');
sessionStorage.setItem('subscribe', 'true');
} else {
{{JS - setCookie}}('subscribe', 'true');
}
// TO FETCH
localStorage.getItem('subscribe');
sessionStorage.getItem('subscribe');
HTML5 STORAGE IS MORE flexible
BUT CAN BE DIFFICULT TO MANAGE
http://www.w3schools.com/js/js_cookies.asp
https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API
http://www.simoahava.com/analytics/two-ways-to-persist-data-via-google-tag-manager/
further reading
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
7. DOM traversal
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
7. DOM traversal
…needles in haystacks…
sometimes you need to retrieve
an element without direct access
to it
function() {

return {{Click Element}}

.parentElement

.parentElement

.parentElement

.parentElement

.parentElement;

}
clumsy
function() {

var el = {{Click Element}};



while (el.className !== 'content-sidebar-wrap' && el.tagName !== 'BODY') {

el = el.parentElement;
}



return el.tagName !== 'BODY' ? el : undefined;

}
better
http://www.w3schools.com/js/js_htmldom_navigation.asp
http://domenlightenment.com/
http://www.simoahava.com/analytics/node-relationships-gtm/
further reading
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
8. CSS selectors
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
8. CSS selectors
…magnet for the needles…
the most useful operator in
gtm triggers
css selectors let you identify
elements on the page based on their
unique position in the dom
http://www.w3schools.com/cssref/css_selectors.asp
http://www.simoahava.com/analytics/matches-css-selector-operator-in-gtm-triggers/
further reading
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
9. jQuery
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
9. jQuery
…machine which sorts the magnets…
function() {

var el = {{Click Element}};



while (el.className !== 'content-sidebar-wrap' && el.tagName !== 'BODY') {

el = el.parentElement;



return el.tagName !== 'BODY' ? el : undefined;

}
jQuery is excellent for
abstracting many difficult issues
with working js in the browser
function() {

return jQuery({{Click Element}}).closest('.content-sidebar-wrap');
}
jQuery is excellent for
abstracting many difficult issues
with working js in the browser
jQuery.post(

'http://www.simoahava.com/', // URL
{subscriber: 'true'}, // Payload
function() { 

window.dataLayer.push({'event' : 'requestComplete'});

} // Callback

);
jQuery is excellent for
abstracting many difficult issues
with working js in the browser
you can load it in a custom html
tag, but remember the race condition
https://api.jquery.com/category/traversing/
http://api.jquery.com/
further reading
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
10. dataLayer
@SimoAhava from @ReaktorNow | #MeasureCamp | 10 Sep 2016
10. dataLayer
…repository of semantic information - NOT just for GTM…
datalayer is a global javascript
array with a modified .push()
Since it’s global, it’s easy to destroy
it’s a message bus, and gtm
processes the messages as they come,
and in sequence
note that .push() is the only
proprietary method. others
have no impact on gtm.
window.dataLayer.pop(); // does nothing in GTM
window.dataLayer.shift(); // does nothing in GTM
window.dataLayer.splice(); // does nothing in GTM
window.dataLayer.slice(); // does nothing in GTM
window.dataLayer.push(); // does lots of things in GTM
https://github.com/google/data-layer-helper
http://www.simoahava.com/analytics/data-layer/
further reading
simo.ahava@reaktor.com
www.simoahava.com
Twitter: @SimoAhava
Google+: +SimoAhava

Contenu connexe

Tendances

Tendances (20)

Google Tag Manager For Nerds
Google Tag Manager For NerdsGoogle Tag Manager For Nerds
Google Tag Manager For Nerds
 
Data Layer - MeasureCamp VII 2015
Data Layer - MeasureCamp VII 2015Data Layer - MeasureCamp VII 2015
Data Layer - MeasureCamp VII 2015
 
Digital Analytic & SEO Acceleration
Digital Analytic & SEO AccelerationDigital Analytic & SEO Acceleration
Digital Analytic & SEO Acceleration
 
How can a data layer help my seo
How can a data layer help my seoHow can a data layer help my seo
How can a data layer help my seo
 
GTM Tools Checklist
GTM Tools ChecklistGTM Tools Checklist
GTM Tools Checklist
 
CRO analytics - How to Continually Optimise
CRO analytics - How to Continually OptimiseCRO analytics - How to Continually Optimise
CRO analytics - How to Continually Optimise
 
Google Data Studio - First impressions @ Measurecamp
Google Data Studio - First impressions @ MeasurecampGoogle Data Studio - First impressions @ Measurecamp
Google Data Studio - First impressions @ Measurecamp
 
4 clicks 2 Measurement - Analytics Automation @ SuperWeek
4 clicks 2 Measurement - Analytics Automation @ SuperWeek4 clicks 2 Measurement - Analytics Automation @ SuperWeek
4 clicks 2 Measurement - Analytics Automation @ SuperWeek
 
Blackhat Analytics 3 @ superweek - Do be evil: Force awakens
Blackhat Analytics 3 @  superweek - Do be evil: Force awakensBlackhat Analytics 3 @  superweek - Do be evil: Force awakens
Blackhat Analytics 3 @ superweek - Do be evil: Force awakens
 
Rendering SEO (explained by Google's Martin Splitt)
Rendering SEO (explained by Google's Martin Splitt)Rendering SEO (explained by Google's Martin Splitt)
Rendering SEO (explained by Google's Martin Splitt)
 
Track Everything with Google Tag Manager - #DFWSEM May 2017
Track Everything with Google Tag Manager -  #DFWSEM May 2017Track Everything with Google Tag Manager -  #DFWSEM May 2017
Track Everything with Google Tag Manager - #DFWSEM May 2017
 
Google Tag Manager - Basic Introduction
Google Tag Manager - Basic IntroductionGoogle Tag Manager - Basic Introduction
Google Tag Manager - Basic Introduction
 
Implementing schema.org in the JSON-LD format with Google Tag Manager
Implementing schema.org in the JSON-LD format with Google Tag ManagerImplementing schema.org in the JSON-LD format with Google Tag Manager
Implementing schema.org in the JSON-LD format with Google Tag Manager
 
The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014
The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014
The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014
 
Migration Best-Practices: Successfully re-launching your website - SMX New Yo...
Migration Best-Practices: Successfully re-launching your website - SMX New Yo...Migration Best-Practices: Successfully re-launching your website - SMX New Yo...
Migration Best-Practices: Successfully re-launching your website - SMX New Yo...
 
Three site speed optimisation tips to make your website REALLY fast - Brighto...
Three site speed optimisation tips to make your website REALLY fast - Brighto...Three site speed optimisation tips to make your website REALLY fast - Brighto...
Three site speed optimisation tips to make your website REALLY fast - Brighto...
 
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
 
Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018Web Performance Madness - brightonSEO 2018
Web Performance Madness - brightonSEO 2018
 
Migration Best Practices - Peak Ace on Air
Migration Best Practices - Peak Ace on AirMigration Best Practices - Peak Ace on Air
Migration Best Practices - Peak Ace on Air
 
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital MarketersSearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
 

En vedette

Using SEO in Google Analytics | Analytics Pros Webinar by Mark McLaren
Using SEO in Google Analytics | Analytics Pros Webinar by Mark McLarenUsing SEO in Google Analytics | Analytics Pros Webinar by Mark McLaren
Using SEO in Google Analytics | Analytics Pros Webinar by Mark McLaren
Caleb Whitmore
 

En vedette (20)

Search Marketer's Toolkit for Google Tag Manager and Google Analytics
Search Marketer's Toolkit for Google Tag Manager and Google AnalyticsSearch Marketer's Toolkit for Google Tag Manager and Google Analytics
Search Marketer's Toolkit for Google Tag Manager and Google Analytics
 
Meaningful Data - Reaktor Breakpoint 2015
Meaningful Data - Reaktor Breakpoint 2015Meaningful Data - Reaktor Breakpoint 2015
Meaningful Data - Reaktor Breakpoint 2015
 
Content Analytics - The Whys And Hows For Google Analytics
Content Analytics - The Whys And Hows For Google AnalyticsContent Analytics - The Whys And Hows For Google Analytics
Content Analytics - The Whys And Hows For Google Analytics
 
SuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS World
SuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS WorldSuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS World
SuperWeek 2016 - Garbage In Garbage Out: Data Quality in a TMS World
 
Advanced Form Tracking in Google Tag Manager
Advanced Form Tracking in Google Tag ManagerAdvanced Form Tracking in Google Tag Manager
Advanced Form Tracking in Google Tag Manager
 
Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)
Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)
Be Critical: Going Beyond The Defaults With GA And GTM (SMX Munich 2015)
 
What's the weather like? MeasureFest 2014
What's the weather like? MeasureFest 2014What's the weather like? MeasureFest 2014
What's the weather like? MeasureFest 2014
 
Rationalizing Tag Management
Rationalizing Tag ManagementRationalizing Tag Management
Rationalizing Tag Management
 
Tag Management Solutions - Best Data Ever (Marketing Festival 2014)
Tag Management Solutions - Best Data Ever (Marketing Festival 2014)Tag Management Solutions - Best Data Ever (Marketing Festival 2014)
Tag Management Solutions - Best Data Ever (Marketing Festival 2014)
 
Content Engagement with Google Analytics (Emerce Conversion 2015)
Content Engagement with Google Analytics (Emerce Conversion 2015)Content Engagement with Google Analytics (Emerce Conversion 2015)
Content Engagement with Google Analytics (Emerce Conversion 2015)
 
Key Insights From Funnels - Enhanced Ecommerce For Google Analytics
Key Insights From Funnels - Enhanced Ecommerce For Google AnalyticsKey Insights From Funnels - Enhanced Ecommerce For Google Analytics
Key Insights From Funnels - Enhanced Ecommerce For Google Analytics
 
Tricks and tweaks for Google Analytics and Google Tag Manager
Tricks and tweaks for Google Analytics and Google Tag ManagerTricks and tweaks for Google Analytics and Google Tag Manager
Tricks and tweaks for Google Analytics and Google Tag Manager
 
Meaningful Data - Best Internet Conference 2015 (Lithuania)
Meaningful Data - Best Internet Conference 2015 (Lithuania)Meaningful Data - Best Internet Conference 2015 (Lithuania)
Meaningful Data - Best Internet Conference 2015 (Lithuania)
 
Google Analytics Bag O' Tricks
Google Analytics Bag O' TricksGoogle Analytics Bag O' Tricks
Google Analytics Bag O' Tricks
 
Enhanced Ecommerce For Content (SMX München 2015)
Enhanced Ecommerce For Content (SMX München 2015)Enhanced Ecommerce For Content (SMX München 2015)
Enhanced Ecommerce For Content (SMX München 2015)
 
Tag Management Is Not A Miracle Cure
Tag Management Is Not A Miracle Cure Tag Management Is Not A Miracle Cure
Tag Management Is Not A Miracle Cure
 
Behavioral Targeting and SEM
Behavioral Targeting and SEMBehavioral Targeting and SEM
Behavioral Targeting and SEM
 
Product Design is Poo - And we're all going to die
Product Design is Poo - And we're all going to dieProduct Design is Poo - And we're all going to die
Product Design is Poo - And we're all going to die
 
Using SEO in Google Analytics | Analytics Pros Webinar by Mark McLaren
Using SEO in Google Analytics | Analytics Pros Webinar by Mark McLarenUsing SEO in Google Analytics | Analytics Pros Webinar by Mark McLaren
Using SEO in Google Analytics | Analytics Pros Webinar by Mark McLaren
 
Data import and widening in Google Analytics
Data import and widening in Google AnalyticsData import and widening in Google Analytics
Data import and widening in Google Analytics
 

Similaire à MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts

Html5 and beyond the next generation of mobile web applications - Touch Tou...
Html5 and beyond   the next generation of mobile web applications - Touch Tou...Html5 and beyond   the next generation of mobile web applications - Touch Tou...
Html5 and beyond the next generation of mobile web applications - Touch Tou...
RIA RUI Society
 
BlackBerry DevCon 2011 - PhoneGap and WebWorks
BlackBerry DevCon 2011 - PhoneGap and WebWorksBlackBerry DevCon 2011 - PhoneGap and WebWorks
BlackBerry DevCon 2011 - PhoneGap and WebWorks
mwbrooks
 
20150516 modern web_conf_tw
20150516 modern web_conf_tw20150516 modern web_conf_tw
20150516 modern web_conf_tw
Tse-Ching Ho
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
Igor Bronovskyy
 

Similaire à MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts (20)

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
 
Hackazon realistic e-commerce Hack platform
Hackazon realistic e-commerce Hack platformHackazon realistic e-commerce Hack platform
Hackazon realistic e-commerce Hack platform
 
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
 
Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)Building Isomorphic Apps (JSConf.Asia 2014)
Building Isomorphic Apps (JSConf.Asia 2014)
 
Html5 and beyond the next generation of mobile web applications - Touch Tou...
Html5 and beyond   the next generation of mobile web applications - Touch Tou...Html5 and beyond   the next generation of mobile web applications - Touch Tou...
Html5 and beyond the next generation of mobile web applications - Touch Tou...
 
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 202010 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
10 Excellent Ways to Secure Spring Boot Applications - Okta Webinar 2020
 
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'susing Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
 
RESTful Web Applications with Apache Sling
RESTful Web Applications with Apache SlingRESTful Web Applications with Apache Sling
RESTful Web Applications with Apache Sling
 
BlackBerry DevCon 2011 - PhoneGap and WebWorks
BlackBerry DevCon 2011 - PhoneGap and WebWorksBlackBerry DevCon 2011 - PhoneGap and WebWorks
BlackBerry DevCon 2011 - PhoneGap and WebWorks
 
20150516 modern web_conf_tw
20150516 modern web_conf_tw20150516 modern web_conf_tw
20150516 modern web_conf_tw
 
Django + Vue, JavaScript de 3ª generación para modernizar Django
Django + Vue, JavaScript de 3ª generación para modernizar DjangoDjango + Vue, JavaScript de 3ª generación para modernizar Django
Django + Vue, JavaScript de 3ª generación para modernizar Django
 
Sharing Data between controllers in different ways.
Sharing Data between controllers in different ways.Sharing Data between controllers in different ways.
Sharing Data between controllers in different ways.
 
Different way to share data between controllers in angular js
Different way to share data between controllers in angular jsDifferent way to share data between controllers in angular js
Different way to share data between controllers in angular js
 
jRecruiter - The AJUG Job Posting Service
jRecruiter - The AJUG Job Posting ServicejRecruiter - The AJUG Job Posting Service
jRecruiter - The AJUG Job Posting Service
 
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
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
 
Rich Portlet Development in uPortal
Rich Portlet Development in uPortalRich Portlet Development in uPortal
Rich Portlet Development in uPortal
 
Modern Web Technologies
Modern Web TechnologiesModern Web Technologies
Modern Web Technologies
 
Spring MVC Intro / Gore - Nov NHJUG
Spring MVC Intro / Gore - Nov NHJUGSpring MVC Intro / Gore - Nov NHJUG
Spring MVC Intro / Gore - Nov NHJUG
 
Web Performance Part 4 "Client-side performance"
Web Performance Part 4  "Client-side performance"Web Performance Part 4  "Client-side performance"
Web Performance Part 4 "Client-side performance"
 

Plus de Simo Ahava

Plus de Simo Ahava (8)

Web Browsers and Tracking Protections
Web Browsers and Tracking ProtectionsWeb Browsers and Tracking Protections
Web Browsers and Tracking Protections
 
Server-side Tagging in Google Tag Manager - MeasureSummit 2020
Server-side Tagging in Google Tag Manager - MeasureSummit 2020Server-side Tagging in Google Tag Manager - MeasureSummit 2020
Server-side Tagging in Google Tag Manager - MeasureSummit 2020
 
Browser Tracking Protections - SuperWeek 2020
Browser Tracking Protections - SuperWeek 2020Browser Tracking Protections - SuperWeek 2020
Browser Tracking Protections - SuperWeek 2020
 
You can't spell MEASURE without CUSTOMIZATION
You can't spell MEASURE without CUSTOMIZATIONYou can't spell MEASURE without CUSTOMIZATION
You can't spell MEASURE without CUSTOMIZATION
 
Simo's Top 30 GTM tips
Simo's Top 30 GTM tipsSimo's Top 30 GTM tips
Simo's Top 30 GTM tips
 
Essential Search Marketing Tweaks For Google Analytics And Google Tag Manager
Essential Search Marketing Tweaks For Google Analytics And Google Tag ManagerEssential Search Marketing Tweaks For Google Analytics And Google Tag Manager
Essential Search Marketing Tweaks For Google Analytics And Google Tag Manager
 
Agile Analytics
Agile AnalyticsAgile Analytics
Agile Analytics
 
Google Tag Manager - 5 years. What have we learned?
Google Tag Manager - 5 years. What have we learned?Google Tag Manager - 5 years. What have we learned?
Google Tag Manager - 5 years. What have we learned?
 

Dernier

₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
Diya Sharma
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
dharasingh5698
 

Dernier (20)

Al Barsha Night Partner +0567686026 Call Girls Dubai
Al Barsha Night Partner +0567686026 Call Girls  DubaiAl Barsha Night Partner +0567686026 Call Girls  Dubai
Al Barsha Night Partner +0567686026 Call Girls Dubai
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts ServiceReal Escorts in Al Nahda +971524965298 Dubai Escorts Service
Real Escorts in Al Nahda +971524965298 Dubai Escorts Service
 
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
Ganeshkhind ! Call Girls Pune - 450+ Call Girl Cash Payment 8005736733 Neha T...
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
 
Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Rani Bagh Escort Service Delhi N.C.R.
 
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
Call Girls Sangvi Call Me 7737669865 Budget Friendly No Advance BookingCall G...
 
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort ServiceBusty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
Busty Desi⚡Call Girls in Vasundhara Ghaziabad >༒8448380779 Escort Service
 
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
Wagholi & High Class Call Girls Pune Neha 8005736733 | 100% Gennuine High Cla...
 
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...Nanded City ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready ...
Nanded City ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready ...
 
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
Sarola * Female Escorts Service in Pune | 8005736733 Independent Escorts & Da...
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Green Park Escort Service Delhi N.C.R.
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
2nd Solid Symposium: Solid Pods vs Personal Knowledge Graphs
 
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...Katraj ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For S...
Katraj ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For S...
 
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Sarai Rohilla Escort Service Delhi N.C.R.
 
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl ServiceRussian Call girl in Ajman +971563133746 Ajman Call girl Service
Russian Call girl in Ajman +971563133746 Ajman Call girl Service
 
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Himatnagar 7001035870 Whatsapp Number, 24/07 Booking
 

MeasureCamp IX (London) - 10 JavaScript Concepts for web analysts