The backbone of Progressive Web Apps has to be the ServiceWorker. A new browser paradigm, nearly every new browser api that controls network events, offline functionality, push notifications, background sync, and more are all powered by it. We will go over the path that led to the ServiceWorker design, as well as how to implement a number of cutting ed features on your website or webapp today!
PayPal's NemoJS and Applitools Eyes - Visual Testing with Node.jsApplitools
Take an inside look at how PayPal is managing its test automation efforts, with Nemo: open source node.js-based Selenium-webdriver wrapper, and Applitools Eyes automated visual testing.
Praktik Pengembangan Konten HTML5 untuk E-Learning (Extended)Muhammad Yusuf
Praktik lebih lanjut mengenai pengembangan konten E-Learning yang menggunakan HTML5 sebagai dasar pengembangannya. Library yang digunakan adalah CreateJS.
PayPal's NemoJS and Applitools Eyes - Visual Testing with Node.jsApplitools
Take an inside look at how PayPal is managing its test automation efforts, with Nemo: open source node.js-based Selenium-webdriver wrapper, and Applitools Eyes automated visual testing.
Praktik Pengembangan Konten HTML5 untuk E-Learning (Extended)Muhammad Yusuf
Praktik lebih lanjut mengenai pengembangan konten E-Learning yang menggunakan HTML5 sebagai dasar pengembangannya. Library yang digunakan adalah CreateJS.
Krátká prezentace poslední verze Macdom preprocesoru. Ukázka syntaxe, předvedení práce s textem, selektory, makry, replikátorem a quick atributy. Seznam možností v nastavení a srovnánÍ s preprocesory jako je Haml, Jade a Slim.
Macdom lze nalézt na https://github.com/Machy8/Macdom.
Back To The Front - Javascript Test Driven Development is between us (workshop)Marco Cedaro
Javascript & browsers have been for years a complex and unsafe environment for a web developer, now we have the right tools to gain control on what we are distributing in our web applications. During the workshop you will learn first-hand basic Javascript Test Driven Development practices including testing, refactoring and related agile practices such as continuous integration and pair programming.
presented at italian Back To The Front conference /w @sirLisko
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Ontico
Не так страшен Angular 2, как его малюют.
Первая реакция о нем весьма негативная. Круглые скобочки, квадратные, что это, зачем? Но что, если я вам скажу, что эти скобочки позволяют избавиться от проблем, которые не может решить React v15.x?
Знаете ли вы, что Angular 2 ближе к функциональному программированию, чем Redux?
В этом докладе мы обсудим:
1) Что нового даёт нам Angular 2?
2) Рассмотрим его архитектуру и поймём ценность этих решений.
3) Реактивное программирование с Angular 2.
4) В чём Angular 2 превосходит React и Redux?
5) Как перейти на Angular 2 и спать спокойно.
Une immense majorité de développeurs connaissent jQuery, mais pas vraiment JavaScript. Nous verrons comment faire en pur JS ce que vous avez l’habitude de faire avec jQuery et jQuery UI, en mettant l’accent sur le support par les navigateurs des fonctionnalités JS utilisées, et sur les polyfills disponibles.
You finally built that amazing start-up idea you had in mind for years and you did it using Node.js! That's Great! You just launched it on Hacker News and you are very happy and proud... but now more and more people are using it and you start to have a nasty fear that Node.js won't scale because you now... it's single-threaded! Is your project doomed now? Do you have to invest your time on rewriting it in something like C++ or maybe Rust or even Go? You'd rather invest your time on adding valuable features for your users rather than learning a new language and rewriting everything from scratch, but what if nothing works anymore? And... by the way, what the heck "single-threaded" really means?! Fear no more, dear fellow developer! In this talk, we will discuss the architecture of Node.js going through its strengths and its weaknesses. We will then talk about scalability and I will share some valuable tips and tricks to make your Node.js app scale! Spoiler alert: you probably won't need Go or Rust :)
Krátká prezentace poslední verze Macdom preprocesoru. Ukázka syntaxe, předvedení práce s textem, selektory, makry, replikátorem a quick atributy. Seznam možností v nastavení a srovnánÍ s preprocesory jako je Haml, Jade a Slim.
Macdom lze nalézt na https://github.com/Machy8/Macdom.
Back To The Front - Javascript Test Driven Development is between us (workshop)Marco Cedaro
Javascript & browsers have been for years a complex and unsafe environment for a web developer, now we have the right tools to gain control on what we are distributing in our web applications. During the workshop you will learn first-hand basic Javascript Test Driven Development practices including testing, refactoring and related agile practices such as continuous integration and pair programming.
presented at italian Back To The Front conference /w @sirLisko
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Ontico
Не так страшен Angular 2, как его малюют.
Первая реакция о нем весьма негативная. Круглые скобочки, квадратные, что это, зачем? Но что, если я вам скажу, что эти скобочки позволяют избавиться от проблем, которые не может решить React v15.x?
Знаете ли вы, что Angular 2 ближе к функциональному программированию, чем Redux?
В этом докладе мы обсудим:
1) Что нового даёт нам Angular 2?
2) Рассмотрим его архитектуру и поймём ценность этих решений.
3) Реактивное программирование с Angular 2.
4) В чём Angular 2 превосходит React и Redux?
5) Как перейти на Angular 2 и спать спокойно.
Une immense majorité de développeurs connaissent jQuery, mais pas vraiment JavaScript. Nous verrons comment faire en pur JS ce que vous avez l’habitude de faire avec jQuery et jQuery UI, en mettant l’accent sur le support par les navigateurs des fonctionnalités JS utilisées, et sur les polyfills disponibles.
You finally built that amazing start-up idea you had in mind for years and you did it using Node.js! That's Great! You just launched it on Hacker News and you are very happy and proud... but now more and more people are using it and you start to have a nasty fear that Node.js won't scale because you now... it's single-threaded! Is your project doomed now? Do you have to invest your time on rewriting it in something like C++ or maybe Rust or even Go? You'd rather invest your time on adding valuable features for your users rather than learning a new language and rewriting everything from scratch, but what if nothing works anymore? And... by the way, what the heck "single-threaded" really means?! Fear no more, dear fellow developer! In this talk, we will discuss the architecture of Node.js going through its strengths and its weaknesses. We will then talk about scalability and I will share some valuable tips and tricks to make your Node.js app scale! Spoiler alert: you probably won't need Go or Rust :)
13. AppCache
Static list of files
ALWAYS takes over, even when online
Updates only if the AppCache itself changes
Redirects are treated as failures, and 404
You can cache the AppCache,
causing it to never upgrade
18. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
}
// main.js
19. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
}
// main.js
20. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
}
// main.js
21. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
}
// main.js
22. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
}
// main.js
23. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
}
// main.js
24. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
}
// main.js
25. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
}
// Controls any URL on the same domain
// main.js
26. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/js/sw.js")
}
// Controls any URL on the same domain that
// starts with "/js"
// main.js
28. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/js/sw.js", {
scope: "/"
})
}
// main.jsService-Worker-Allowed: /js
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/js/sw.js")
}
29. if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/js/sw.js", {
scope: "/"
})
}
// main.js
Service-Worker-Allowed: /js
// Controls any URL on the same domain
137. // main.js
}
navigator.serviceWorker.onmessage =
function(ev) {
var message = JSON.parse(ev.data);
var lastETag = localStorage.currentETag;
if (lastETag !== message.eTag) {
// alert the user to reload the page
}
}
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
138. // main.js
}
navigator.serviceWorker.onmessage =
function(ev) {
var message = JSON.parse(ev.data);
var lastETag = localStorage.currentETag;
if (lastETag !== message.eTag) {
// alert the user to reload the page
}
}
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
139. // main.js
}
navigator.serviceWorker.onmessage =
function(ev) {
var message = JSON.parse(ev.data);
var lastETag = localStorage.currentETag;
if (lastETag !== message.eTag) {
// alert the user to reload the page
}
}
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
140. // main.js
}
navigator.serviceWorker.onmessage =
function(ev) {
var message = JSON.parse(ev.data);
var lastETag = localStorage.currentETag;
if (lastETag !== message.eTag) {
// alert the user to reload the page
}
}
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
141. // main.js
}
navigator.serviceWorker.onmessage =
function(ev) {
var message = JSON.parse(ev.data);
var lastETag = localStorage.currentETag;
if (lastETag !== message.eTag) {
// alert the user to reload the page
}
}
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")
142. // main.js
}
navigator.serviceWorker.onmessage =
function(ev) {
var message = JSON.parse(ev.data);
var lastETag = localStorage.currentETag;
if (lastETag !== message.eTag) {
// alert the user to reload the page
}
}
if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js")