Modern webbutveckling. av Robert Welin-Berger

Relevanta dokument
<script src= "

INTRODUKTION TILL ANGULAR JS

E12 "Evil is going on"

TDP013. Node.js, Mocha, Istanbul. Anders Fröberg Institutionen för Datavetenskap

Version Namn Datum Beskrivning 1.0 Förutsättningar Vitec Ekonomi 1.1 Marie Justering för krav på Windows Server

Exemple på Tentauppgifter Webbprogrammering

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

Webbutveckling med AngularJS

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

Datasäkerhet och integritet

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

JAVASCRIPT-POWERED LOADRUNNER CHRISTIAN GERDES PERFORMANCE ENGINEER LIGHTS IN LINE AB

Utvecklingstekniker för webben

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Karlstads Universitet, Datavetenskap 1

Support Manual HoistLocatel Electronic Locks

Avancerade Webbteknologier

KONSULTPROFIL Rodrigo

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

E12 "Evil is going on"

Webbservrar, severskript & webbproduktion

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Klientprogrammering mot databaser

Installationsanvisningar VisiWeb. Ansvarig: Visi Closetalk AB Version: 2.3 Datum: Mottagare: Visi Web kund

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Introduktion till migrering till molnet. PART 4: Plattformar för molntjänster

PHP-presentation Dataföreningens Open Source-nätverk

"HTML5 och relaterade API:er"

SERVERLESS ARCHITECTURE. är det nya svarta. CADEC 2017 Peter Larsson

Viva la evolución. Peter Backlund

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

E03 "Day 3: 2:00 p.m 3:00 p.m"

Välkommen! SA S PSA S Im I puls s Mobilite t t e 8 1

Konsultprofil. Per Norgren (1983) Arkitekt & webbutvecklare

Webbprogrammering. Sahand Sadjadee

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

Creo Customization. Lars Björs

EDA095 JavaScript. Per Andersson. Maj 4, Lund University Per Andersson EDA095 JavaScript Maj 4, / 23

Repetition DK2 Middleware, P2P, Multimediatransport. Stefan Alfredsson 18 Mars 2005

JS & beteende. TNMK30 - Elektronisk publicering

Essential Php Security Författare: Shiflett, Chris Antal sidor: 124 Förlag: O'Reilly

Tentamen etjänster och webbprogrammering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Graphs (chapter 14) 1

Asp.net mvc intro PER KVARNBRINK,

Snabbguide Visma Compact API Version 5.1 Copyright Visma Spcs AB Visma Compact API

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

[HUR DU ANVÄNDER PAPP] Papp är det program som vi nyttjar för att lotta turneringar och se resultat.

E13 "Behind the Wild"

METODER OCH VERKTYG EXEMPEL PÅ UPPDRAG KOMPETENSOMRÅDEN

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

Distribuerade System, HT03

729G28. Webbprogrammering och databaser. Introduktion till webbutveckling med PHP. Jakob Pogulis Institutionen för Datavetenskap (IDA)

Konsult: Mats Lindblad; Kontaktperson: Mats Lindblad; Tel: ; E-post:

Installationsanvisning. Dokumenttyp Installationsanvisning Område Boss med delad databas

Hå rd- och mjukvårukråv såmt rekommendåtioner fo r 3L Pro from version 2015.Q1

F8 Webbteknologier 2. PHP PHP: Hypertext Preprocessor

F8 Webbteknologier 2. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

TDP013. Innan AJAX Ett synkront webb. Med AJAX Ett Asynkront webb

JAVASCRIPT. Beteende

Hur integrera Active Directory och DNS? Rolf Åberg, Simplex System

TDP013. Innan AJAX Ett synkront webb. Med AJAX Ett Asynkront webb AJAX. Webbprogrammering och interaktivitet. AJAX, CORS,jQuery, PaaS, Projektet

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS,jQuery, PaaS, Projektet. Anders Fröberg Institutionen för Datavetenskap (IDA)

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Testdriven utveckling. Magnus Jonsson Siemens Medical Solutions

Lab 6: ASP.NET 2.0 Providermodellen

Introduk+on +ll programmering i JavaScript

LEX INSTRUKTION REPLIKERING UPPGRADERING

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Tentamen Nätverksprogrammering Lösningsförslag

Hybridappar. Utveckla mobilappar i HTML, Javascript och CSS

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

Beijer Electronics AB 2000, MA00336A,

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

JavaScript. En Introduktion

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Grafisk produktion och tryckkvalitet TNM015

Installationsanvisning Boss delad databas

Länkade strukturer. (del 2)

Handbok SSCd. Peter H. Grasch

Föreläsning 4 Innehåll

Domänspecifika språk. TDP007 Konstruktion av datorspråk Föreläsning 5. Peter Dalenius Institutionen för datavetenskap

Slutrapport. KOM - Linnéuniversitetet. Alva Fandrey. Jonas Erixon. Lukas Nilsson. Sofia Björkesjö

Tentamen i Algoritmer & Datastrukturer i Java

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Support for Artist Residencies

Statistik från webbplatser

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Administrationsmanual ImageBank 2

Priskamp. En prisjämförelsesite Björn Larsson

WooCommerce at scale

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Mål med lektionen! Repetera och befästa kunskaperna.

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Swedbank Mobile Loadtesting. LoadRunner Mobile App protocol

DB, DATA, LOGIC, EXPOSURE (WEB)

Transkript:

Modern webbutveckling av Robert Welin-Berger robertwb@kth.se

Modern webbutveckling 1. Projektstorlek och Arkitektur 2. Callbacks 3. Event driven arkitektur 4. MEAN stack 5. ODM/ORM

1. Projektstorlek och Arkitektur Flexibilitet mot struktur Frivillig struktur Stöttande struktur Påtvingad struktur Vad ska man välja

Frivillig struktur Ultimat flexibilitet De rena språken PHP, Node.js och Java Språkskillnader Bibliotek Små hack och tester

Stöttande struktur Ramverk som kan partiellt integreras Angular.js, Express och Backbone.js Integrationen kan utökas med projektet Enormt stor bredd på flexibilitet

Påtvingad struktur Java EE Wordpress (CMS) Spring Både för enkla och stora saker

2. Callbacks Definition Syncronous example Asynconous example Closure Usage

Definition A callback is a piece of executable code that is passed as an argument to other code, which is expected to call back (execute) the argument at some convenient time The invocation may be immediate as in a synchronous callback or it might happen at later time as in an asynchronous callback

Callback function someaction(x, y, somecallback) { return somecallback(x, y); } function calcproduct(x, y) { } return x * y; alert(someaction(5, 15, calcproduct));

Callback <button onclick="myfunction()"> <script> function myfunction() { console.log("hello World"); } </script>

Closure Att kunna nå variabler i ett yttre scope function bestsellingbooks(threshold) { var x = 5 return booklist.filter( function (book) { } ); } console.log(x); return book.sales >= threshold;

3. Event driven arkitektur Callbacks kön Callbacks i stället för trådar Singletrådat Lätt backend Bokningssystem -exempel

Callback Kön Kollas en i taget Körs eller återsätts Går snabbt, en bit kollas

Callbacks i stället för trådar En processor kör processer en i taget Kan simplifieras till Round-robin Återimplementation? Storleksordningar snabbare att byta

Singletrådat Race conditions, vad är det? Färre saker att tänka på Tydliga event När det växer - Distribuering Slipper internal states Callback hell

Lätt backend Små anrop Interaktiva webbsidor API liknande strukturer Tyngre front-end, Angular osv

Bokningssystem Ber om tider Små requests Ber om data ofta Många requests sammtidigt 500/s => 1,000,000 per dag

MEAN stack Stack Mongodb Node Express Angular Queue App - example

Stack Frontend Backend Databas Staplade på varandra Integrerade med varandra

Mongodb No-SQL Bra på många sätt Inte SQL = bra Data är ofta relationell Överanvänds ofta

Node Javascript på backenden Google Chrome V8 IO.js/Node.js Omfattande bibliotek för webben Tillgång till alla javascript bibliotek

Express Ramverk för routing och mycket annat Minimalistiskt Middleware Väl intergrerat med Databaser

Express - Example // A middleware with no mount path. // It gets executed for every request to the app app.use(function (req, res, next) { console.log('time:', Date.now()); next(); }); // Generate paths for all files in public folder app.use(expressio.static( dirname + '/public'));

Angular MVW Det är en helt egen miljö Flexibel integration Single page application Väl integrerat med andra populära ramverk Two way data binding

Queue App - Basic setup var expressio = require('express.io'); var app = expressio(); app.http().io(); app.use(expressio.static( dirname + '/public')); app.io.on('connection', function(socket){ }); console.log('a user connected');

Queue App - Websocket Routing app.io.route('listen', function(req) { console.log('a user added to ' + req.data); req.io.join(req.data); }) app.io.route('join', function(req) { console.log('a user joined to ' + req.data.queue); app.io.room(req.data.queue).broadcast('join', req.data.user); })

Queue App <table> <tbody><tr ng-repeat="user in users"> <td>{{ user.name }}</td> <td>{{ user.place }}</td> <td>{{ user.comment }}</td> </tr></tbody> </table>

5. ORM/ODM ORM = SQL, ODM = mongodb Mappar ner objekt direkt mot databasen Säkrar datan på servern vid krash Enkelt återuppta körning Enkelt sätt att skriva lätta dataskopplingar Långsammare Skalar inte alltid som det ska.

ODM - Exempel Påminner mycket om vanliga klasser Lägger till typer var courseschema = new Schema({ }); name: String, open: { type: Boolean, default: true }, active: { type: Boolean, default: true }, queue: [userschema], admin: {type:[adminschema], default: []}