All the slides are available here: @https://mzeiher.github.io/webengineering/
pull requests are highly appreciated 😀 @mzeiher/webengineering
Die Studierenden setzen die erarbeiteten Theorien und Modelle in Bezug zu ihren Erfahrungen aus der beruflichen Praxis und können deren Grenzen und praktische Anwendbarkeit einschätzen.
Die Studierenden sind mit Abschluss des Moduls in der Lage, für weitgehend standardisierte Anwendungsfälle in der Praxis die angemessene Methode auszuwählen und anzuwenden. Sie kennen die Stärken und Schwächen der Methode in ihrem beruflichen Anwendungsfeld und können diese in konkreten Handlungssituationen gegeneinander abwägen
Die Studierenden können sowohl eigenständig, also auch im Team zielorientiert und nachhaltig handeln
Overview of existing technologies in webengineering
Able to say "it depends..." and pick the tools which suit the best for the job
Able to look things up (no one expects from you that you know everything)
Wild ride through heaps of technologies
Fun while learning
Outlook to the future
Fanboiism/Fangirlism
Thoughtleadership
Framework/Technology wars
Comments are highly subjective
Interesting people to follow
Interesting videos to watch
Interesting links to read
Interesting repositories
Who is who (w3c, CSSWG, WHATWG, WICG, ES262, TC39 and others)
History of webengineering
Engines (blink, webkit, quantum (mozilla))
Basics
HTML5 syntax
Elements
ARIA
the CSS cascade, selectors and specificity
positioning
layout models (box model, inline/block, float, flex and grid)
containing blocks, block formatting context, stacking context
animations
media queries
Document Object Model, DOM manipulation, EventTarget, ShadowDom, Custom Elements
style attribute
CSS object model, Constructable StyleSheets, CSS Modules
ES262 basics
Editions (es3, es5, es6, es2015-2019)
Module system (>=es6)
JS object model, functions, class and prototype inheritance, "this" (scope and lexical this) explained
functional and oo paradigm for programming
Arrays (map/reduce) Arrays and ArrayLike
Promises/async/await
Generator functions and iterators
Typescript/Flow/ReasonML
the javascript event loop explained (micro/macro task)
HTTP, HTTP/2, HTTP/3 (QUIC)
REST (GraphQL) (XMLHttpRequest, fetch)
CORS, security concepts
Websockets
WebRTC
Node (JS) (Apollo for GraphQL, epxress)
JavaEE (Spring Boot)
Go/Rust
PHP
Ruby
LAMP (Linux Apache MySQL PHP)
MEAN/MERN (mongoDB, express, angular, node)
Databases NoSQL, SQL, Document Stores, Big Table
"Serverless" Gatsby, Next, Zeit,
SSR (https://developers.google.com/web/updates/2019/02/rendering-on-the-web)
General overview over the most popular frameworks, how they work and differences
(p)react (class based and hooks (also how they work ;))
Angular
vue3, svelte, Stencil
lit-html/hyper-html/lighter-html
OWASP
XSS, Injection, secure store
CORS, CSP
OAuth/OpenID, JWT, HTTP Basic, HTTP Digest, Cookies
modern javascript development needs its own tool chain to organize small and large projects, enabling shiping the best bundle for customers and increase developer experience
debugging (source maps)
Webpack/Rollup/Snowpack bundlers
babel
testing - karma/selenium, jest, jasmine, mocha
Worklets (parallelism), ServiceWorker (PWA, notification triggers, CRDTs https://medium.com/@amberovsky/crdt-conflict-free-replicated-data-types-b4bfc8459d26), CSS Houdini (paintlets), Audiolets
Rendering techniques (Server Side Rendering, Client Side Rendering and everything in between)
WebGL/WebGPU
Project FUGU APIs (WebUSB, WebSerial, WebFileAPI, ShareAPI, ContactAPI, Object Recognition API, etc)
React Native, Electron for writing client applications/apps
Webassembly (WASM, WASI)
Text Editor/IDE
vscode, sublime, textmate, JetBrains Webstorms, etc...
Browser
Latest Chrome, Firefox or Safari
Node.js
>= 14.0.0
Docker
usage of WSL2 on Windows recommended
The World Wide Web Consortium (W3C) is an international community that develops open standards to ensure the long-term growth of the Web.
WebRTC, Websocket Protocol API/IDL (Protcol itself by IETF)
Publishes drafts which are agreed upon in the WICG
Does a lot more... semantic web, web of things, etc
CSS Working Group
Brings us all the nice things
Animation, Layouting
The how in a HTML page
CSS Houdini
Web Hypertext Application Technology Working Group
Advances the HTML specification
The what in a HTML page
Reason why we don't need jQuery anymore (DOM APIs)
Web Incubator Community Group
Participation of implementors for new APIs/Technologies
WebUSB, WebBluetooth, WebRTC, Serviceworker, Orientation API all originated here, once enough traction the RFC will move to w3c
Warning! take it with a grain of salt
European Computer Manufacturers Association
Releases annual Language Specification
Provides es262 test suite for js engine implementers
Javascript is not the only implementation of ES262, Actionscript is also one
Proposes/Specifies new Langauge features
Consists of implementers, developers, academics...
Internet Corporation for Assigned Names and Numbers
Supports and maintains the databases for namespaces and numbers in the internet
Introduces and manages top level domains
Saved us from the .org sale (see ISOC)
Internet Assigned Numbers Authority
Manages DNS Root Zone
Manages IP Addresses, autonomous systems numbers, Internet Protocol numbers/symbols and ports
Delegates name registering to local registries (RIRs) (RIPE, ARIN, APNIC, etc)
Internet Engineering Task Force
Responsible for the technical side of the internet
HTTP/1 -/2 -/3, HTTPS
TCP/IP
Serializations like CBOR
International Telecommunication Union
Brought us nice things like ASN.1, X509 (used in TLS/Certificates)
Internet Society
Tries to hold it all together
Brought us the .org sale "scandal"
Internet is the global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a network of networks
- Wikipediahttps://en.wikipedia.org/wiki/Internet
IP based, package switched inter connected network
Belongs to no-one, but governed by ISOC et all.
The www is only an application on top of the internet
Providers provide the access to the internet, maintain automated systems and are interconnected via IXP (e.g DE-CIX)
Tier 1
AT&T, Century Link (Level3), Deutsche Telecom (Only exchange traffic with other Tier
1
providers)
Tier 2
Vodafone, Comcast, Local telcos (deliver internet traffic to end customers)
Tier 3
small and local ISPs
Application | ||
7 | Application | HTTP, TLS |
6 | Presentation | ASN.1 |
5 | Session | PPTP |
Transport | ||
4 | Transport | TCP, UDP |
Internet | ||
3 | Network Layer | IP |
Network Access | ||
2 | Data Link Layer | IEEE 802.X |
1 | Physical Layer | IEEE 802.X, RS-232, ... |
Domain Name System
Translates domain names into IP addresses
http://www.google.com
=
v6/2a00:1450:4001:802::200e v4/172.217.18.174
Internet Protocol
THE Protocol used for routing on the internet
32bit Address in 4 8bit tuples: 1.2.3.4
0 | 0 | 0 | 0 |
128bit Address in 8 32bit tuples: ffff:ffff:...:ffff
0x0000 | 0x0000 | 0x0000 | 0x0000 | 0x0000 | 0x0000 | 0x0000 | 0x0000 |
Flow Control (TCP)
Statefull (TCP)/Stateless (UDP) Protocols
Unicast/Multicast
Internet Explorer 11
Still in use in corporate environments
Available as embeddable Active-X control (successor will be WebView2)
Only browser for older embedded Windows Systems or SCADA Applications
On embedded systems only if you're lucky otherwise stripped down mshtml.dll
MS will drop support fir IE11 in Teams on 30.11.2020 and for MS365 on 17.08.2021
Old MS Edge
No longer relevant, but still around in enterprise environments
Google Chrome, MS Edge, Brave, Opera
Fork of WebKit
Google Chrome usually ships with the latest experimental web APIs
Current de-facto Standard
Safari
Used on all MacOS and iOS devices
Used by all other browsers on iOS (apple does not allow to ship own engine)
Webkit engine can be integrated in embedded devices (QTWebKit)
The new IE https://dev.to/nektro/safari-is-the-new-internet-explorer-1df0
Mozilla Firefox
Currently in some kind of niche
Reason we have Rust today 🦀
honorable mentions
Flow Browser
Only rendering Engine, uses Spidermonkey for JS
Modabble XS
Embeddable JS Engine
Warnign: the market share can be deciving, check depending on your target audience
Texteditor/Netscape Composer/MS Frontpage
Webspace
FTP
"If you just spin up an instance of Golden Goose on Elastic Clownshoes, then clone the flugelhorn inside a Bangwoosh container, connect to the Zonk using Zonk -commit -rj -hgs.plonk, you're good to go. Chrome only of course"
- @brucel
a typical web application
Overview of existing technologies in webengineering
Wild ride through heaps of technologies
You should be able to make a differentiated assessment to provide a solution for the task hand - you're probably not netflix or uber