From b91ede03f3e003f2a0c98389b667f8c4ac096938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93lafur=20Sverrir=20Kjartansson?= Date: Mon, 14 Oct 2024 21:39:57 +0000 Subject: [PATCH] efni viku 10 --- namsefni/31.async/1.async.md | 372 +++++++++++++++ namsefni/31.async/daemi/.eslintrc.js | 6 + namsefni/31.async/daemi/01.snooze.js | 25 + namsefni/31.async/daemi/02.promise.js | 10 + namsefni/31.async/daemi/03.future-message.js | 35 ++ namsefni/31.async/daemi/04.snooze-promise.js | 14 + namsefni/31.async/daemi/05.all-race.js | 29 ++ .../31.async/daemi/06.futureMessage-async.js | 18 + namsefni/31.async/daemi/07.snooze-async.js | 15 + namsefni/31.async/img/ajax-fig1_small.png | Bin 0 -> 96444 bytes namsefni/31.async/img/control-io.svg | 10 + namsefni/31.async/img/framendibakendi.svg | 42 ++ namsefni/31.async/readme.md | 22 + namsefni/32.http-form/1.http-form.md | 290 ++++++++++++ namsefni/32.http-form/daemi/01.form.html | 25 + namsefni/32.http-form/img/framendibakendi.svg | 42 ++ namsefni/32.http-form/readme.md | 21 + namsefni/33.ajax/1.ajax.md | 318 +++++++++++++ namsefni/33.ajax/daemi/.eslintrc.js | 6 + namsefni/33.ajax/daemi/01.json.js | 19 + namsefni/33.ajax/daemi/02.fetch.html | 71 +++ namsefni/33.ajax/daemi/03.cors.html | 17 + namsefni/33.ajax/daemi/04.fetch-states.html | 100 ++++ namsefni/33.ajax/daemi/straeto.json | 433 ++++++++++++++++++ namsefni/33.ajax/img/ajax-fig1_small.png | Bin 0 -> 96444 bytes namsefni/33.ajax/readme.md | 18 + namsefni/34.eslint/1.eslint.md | 142 ++++++ namsefni/34.eslint/daemi/.editorconfig | 18 + namsefni/34.eslint/daemi/.eslintrc.js | 13 + .../34.eslint/daemi/.vscode/settings.json | 9 + namsefni/34.eslint/daemi/main.js | 5 + namsefni/34.eslint/daemi/package.json | 20 + namsefni/34.eslint/daemi/readme.md | 11 + namsefni/34.eslint/readme.md | 20 + readme.md | 4 + vikur/vika-10.md | 44 ++ 36 files changed, 2244 insertions(+) create mode 100644 namsefni/31.async/1.async.md create mode 100644 namsefni/31.async/daemi/.eslintrc.js create mode 100644 namsefni/31.async/daemi/01.snooze.js create mode 100644 namsefni/31.async/daemi/02.promise.js create mode 100644 namsefni/31.async/daemi/03.future-message.js create mode 100644 namsefni/31.async/daemi/04.snooze-promise.js create mode 100644 namsefni/31.async/daemi/05.all-race.js create mode 100644 namsefni/31.async/daemi/06.futureMessage-async.js create mode 100644 namsefni/31.async/daemi/07.snooze-async.js create mode 100644 namsefni/31.async/img/ajax-fig1_small.png create mode 100644 namsefni/31.async/img/control-io.svg create mode 100644 namsefni/31.async/img/framendibakendi.svg create mode 100644 namsefni/31.async/readme.md create mode 100644 namsefni/32.http-form/1.http-form.md create mode 100644 namsefni/32.http-form/daemi/01.form.html create mode 100644 namsefni/32.http-form/img/framendibakendi.svg create mode 100644 namsefni/32.http-form/readme.md create mode 100644 namsefni/33.ajax/1.ajax.md create mode 100644 namsefni/33.ajax/daemi/.eslintrc.js create mode 100644 namsefni/33.ajax/daemi/01.json.js create mode 100644 namsefni/33.ajax/daemi/02.fetch.html create mode 100644 namsefni/33.ajax/daemi/03.cors.html create mode 100644 namsefni/33.ajax/daemi/04.fetch-states.html create mode 100644 namsefni/33.ajax/daemi/straeto.json create mode 100644 namsefni/33.ajax/img/ajax-fig1_small.png create mode 100644 namsefni/33.ajax/readme.md create mode 100644 namsefni/34.eslint/1.eslint.md create mode 100644 namsefni/34.eslint/daemi/.editorconfig create mode 100644 namsefni/34.eslint/daemi/.eslintrc.js create mode 100644 namsefni/34.eslint/daemi/.vscode/settings.json create mode 100644 namsefni/34.eslint/daemi/main.js create mode 100644 namsefni/34.eslint/daemi/package.json create mode 100644 namsefni/34.eslint/daemi/readme.md create mode 100644 namsefni/34.eslint/readme.md create mode 100644 vikur/vika-10.md diff --git a/namsefni/31.async/1.async.md b/namsefni/31.async/1.async.md new file mode 100644 index 0000000..8e9e42c --- /dev/null +++ b/namsefni/31.async/1.async.md @@ -0,0 +1,372 @@ +--- +title: Fyrirlestur – Ósamstillt forritun +--- + +# Fyrirlestur – Ósamstillt forritun + +## Vefforritun 1 — TÖL107G + +### Ólafur Sverrir Kjartansson, [osk@hi.is](mailto:osk@hi.is) + +--- + +## Ósamstillt forritun (async programming) + +* Þegar forritin okkar fara að nýta hluti sem eru ekki í minni þurfum við að beita öðrum aðferðum í forritun +* Það er _hratt_ að sækja hluti í minni, _hægara_ að sækja á disk og (oftast) enn _hægara_ að sækja yfir net +* Bíðum ekki eftir því að beiðni klárist, nýtum _ósamstillta forritun_ (asynchronous/async programming) + +*** + +## Samstillt forritun + +* Flest forrit sem þið hafið séð hingað til eru samstillt—þau keyra eina línu í einu, eitt fall í einu—eru línuleg +* Hægt að nota _þræði_, JavaScript hefur **ekki** stuðning við þá +* Notum async forritun með _event loop_ á einum þræði +* Höldum CPU ekki uppteknum á meðan beðið + +*** + +![Dæmi um mismunandi forritun](img/control-io.svg "Mynd frá https://eloquentjavascript.net/11_async.html") + +*** + +## Callbacks + +* Ein leið til að vinna með async kóða, t.d. í atburðum +* Köllum í fall sem tekur langan tíma, eða verður kallað í seinna, með _callback_ argument +* Fallið kallar í _callback_ fall með niðurstöðu þegar búið +* Ef við köllum í annað fall sem tekur langan tíma úr _callback_ þurfum við annað callback o.s.fr. o.s.fr. + +*** + + + +```javascript +// snoozea í 5s, síðan 3s og að lokum 1s +setTimeout(() => { + alert('Vakna!'); + setTimeout(() => { + alert('Vakna núna!'); + setTimeout(() => { + alert('VAKNA!!'); + }, 1000); + }, 3000); +}, 5000); +``` + +*** + +* Getum búið til almennt fall `snooze` sem birtir skilaboð eftir ákveðinn tíma +* Getur aukalega tekið við _callback_ falli sem keyrir í framhaldinu +* Verður aðeins læsilegra + +*** + + + +```javascript +function snooze(s, msg, callback) { + setTimeout(() => { + alert(msg); + if (callback) { + callback(); + } + }, 1000 * s); +} + +snooze(5, 'Vakna', () => { + snooze(3, 'Vakna núna!', () => { + snooze(1, 'VAKNA!!'); + }); +}); +``` + +*** + +* [snooze dæmi](daemi/01.snooze.js) + +--- + +## Promises + +* [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) er hjúpun fyrir gildi sem _mun verða til_ í framtíðinni +* Gerir asynchronous forritun auðveldari +* Öðruvísi hugtak en callbacks, vinnum með hjúpuð gildi í staðinn fyrir eitthvað sem við köllum í framhaldi + +*** + +* Þegar við skilgreinum Promise köllum við í: + * `resolve` með gildi þegar við höfum lokið aðgerð + * `reject` með villu ef eitthvað fer úrskeiðis + +*** + +* Þegar við vinnum með promise skilgreinum við + * `then` callback til að vinna með gildið, fær skilagildi sem argument + * `catch` callback til að vinna með villu, fær villu sem argument +* `then` og `catch` eru föll á Promise + +*** + +* Getum sent promise gildi á milli og bætt við `then` og `catch`! +* Ef búið er að uppfylla en við köllum í seinna, þá fáum við svarið + +*** + +```javascript +const fifteen = Promise.resolve(15); +fifteen + .then(v => console.log(`Got ${v}`)); +// → Got 15 +setTimeout(() => { + fifteen + .then((value) => { + console.log('Sama svar, sekúndu seinna', value) + }); +}, 1000); +``` + +*** + +* [promise dæmi](daemi/02.promise.js) + +--- + +## Villur + +* Villumeðhöndlun með callbacks verður hratt mjög ólæsileg og flókin +* Eitt argument fyrir hvað gerist ef við fáum gildi, annað fyrir villu +* Blöndum saman villumeðhöndlun og lógík +* Mjög mikið inndreginn kóði, _callback hell_ + +*** + + + +```javascript +snooze(5, 'Vakna', () => { + if (ok) { + snooze(3, 'Vakna núna!', () => { + if (okok) { + snooze(1, 'VAKNA!!'); + } else { + // villa + } + }); + } else { + // villa + } +}); +``` + +*** + +* `catch` eftir `then` í Promise sér um villur í öllum kóða sem á undan kemur +* Þurfum ekki að hafa villumeðhöndlun innan kóða sem sér um að bregðast við gildi + +*** + + + +```javascript +function futureMessage(msg) { + return new Promise((resolve, reject) => { + if (msg === 'foo') { + reject(new Error('No foo!')); + } + + setTimeout(() => + resolve(`${msg} from future`), 2000); + }); +} + +futureMessage('Hi!') + .then(msg => console.log(msg)); +// "Hi! from future!" eftir 2 sek +``` + +*** + + + +```javascript +futureMessage('foo') + .then(msg => console.log(msg)) + .catch(e => console.log(e)); +// "No foo!" strax +``` + +*** + +## Stöður á promise + +Promise getur verið í einni af þrem stöðum: + +* `pending`, verið að bíða eftir gildi +* `fulfilled`, búið að uppfylla loforð með gildi +* `rejected`, búið að hafna loforði með villu + +*** + + + +```javascript +const p = futureMessage('hmm'); +function foo(promise) { + console.log(promise); + + promise.then(msg => console.log(msg)); + + return 'Handling promise...'; +} +foo(p); +// Promise { ... } +// "Handling promise..." +// "hmm from the future!" eftir 2 sek +``` + +*** + + + +```javascript +function snooze(s, msg) { + return new Promise((resolve) => { + setTimeout(() => { + resolve(msg); + }, s * 1000); + }); +} + +snooze(5, 'Vakna') + .then(msg => alert(msg)) + .then(() => snooze(3, 'Vakna núna!')) + .then(msg => alert(msg)) + .then(() => snooze(1, 'VAKNA!!!')) + .then(msg => alert(msg)); +``` + +*** + +* [promise og villumeðhöndlun dæmi](daemi/03.future-message.js) +* [snooze dæmi með promises](daemi/04.snooze-promise.js) + +--- + +## Promise.all + +* `Promise.all` tekur við fylki af Promise og skilar Promise + * Ef eitthvert rejactarar er Promise rejectað + * Niðurstaða er fylki með niðurstöðu í réttri röð m.v. uppruna + +*** + +## Promise.race + +* `Promise.race` tekur við fylki af Promise og skilar Promise + * Skilar niðurstöðu úr fyrsta Promise sem lýkur eða rejectar + +*** + + + +```javascript +const snoozefest = Promise.all([ + snooze(5, 'Vakna'), + snooze(3, 'Vakna núna!'), + snooze(1, 'VAKNA!!!'), +]) + .then(result => console.log(result)); + +console.log(snoozefest); +// Promise {pending} +// 5s seinna.. +// ["Vakna", "Vakna núna!", "VAKNA!!!"] +``` + +*** + + + +```javascript +// snooze eins og áður + +Promise.race([ + snooze(5, 'Vakna'), + snooze(3, 'Vakna núna!'), + snooze(1, 'VAKNA!!!'), +]) + .then(result => console.log(result)); + +// 1s seinna.. +// "VAKNA!!!" +``` + +*** + +* [all og race dæmi](daemi/05.all-race.js) + +--- + +## async og await + +* [`async await`](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await) er önnur leið til að vinna með async kóða +* Leyfir okkur að _bíða_ eftir async aðgerð í línulegu flæði +* Merkjum föll sem þarf að bíða eftir með `async` +* Merkjum að við ætlum að bíða með `await` +* Grípum villur með `try catch` + +*** + + + +```javascript +// snooze fall eins og áður +async function snoozer() { + alert(await snooze(5, 'Vakna')); + alert(await snooze(3, 'Vakna núna')); + alert(await snooze(1, 'VAKNA!!!')); +} + +snoozer(); +``` + +*** + + + +```javascript +// futureMessage eins og áður +async function future() { + try { + const res = await futureMessage('foo'); + console.log(res); + } catch (e) { + console.log(e); + } +} + +future(); +``` + +*** + +* Getum ekki notað `await` í global scope—verður að vera innan `async` falls +* `async` fallið skilar Promise! + * `async await` er _syntactic sugar_ fyrir Promise + * Ættum að hafa `catch` á það fall til að vera örugg um að missa ekki af villum + +*** + +## async forritun + +* Async forritun er erfið til að byrja með +* Lærum ekki á einum degi eða einni viku en margt af því sem við gerum á vefnum **er** async +* Sjáum dæmi í atburðum og _ajax_ beiðnum +* Förum enn dýpra í vefforritun 2 + +*** + +* [async await dæmi](daemi/06.futureMessage-async.js) +* [snooze dæmi með async await](daemi/07.snooze-async.js) diff --git a/namsefni/31.async/daemi/.eslintrc.js b/namsefni/31.async/daemi/.eslintrc.js new file mode 100644 index 0000000..f3e5010 --- /dev/null +++ b/namsefni/31.async/daemi/.eslintrc.js @@ -0,0 +1,6 @@ +module.exports = { + rules: { + // leyfum alert() + 'no-alert': 0, + }, +}; diff --git a/namsefni/31.async/daemi/01.snooze.js b/namsefni/31.async/daemi/01.snooze.js new file mode 100644 index 0000000..258dc40 --- /dev/null +++ b/namsefni/31.async/daemi/01.snooze.js @@ -0,0 +1,25 @@ +// snoozea í 5s, síðan 3s og að lokum 1s +setTimeout(() => { + alert('Vakna!'); + setTimeout(() => { + alert('Vakna núna!'); + setTimeout(() => { + alert('VAKNA!!'); + }, 1000); + }, 3000); +}, 5000); + +function snooze(s, msg, callback) { + setTimeout(() => { + alert(msg); + if (callback) { + callback(); + } + }, 1000 * s); +} + +snooze(5, 'Vakna', () => { + snooze(3, 'Vakna núna!', () => { + snooze(1, 'VAKNA!!'); + }); +}); diff --git a/namsefni/31.async/daemi/02.promise.js b/namsefni/31.async/daemi/02.promise.js new file mode 100644 index 0000000..c237568 --- /dev/null +++ b/namsefni/31.async/daemi/02.promise.js @@ -0,0 +1,10 @@ +// `fifteen` breytan heldur utan um Promise gildi sem verður eða hefur verið +// svarað á einhverjum tímapunkti +const fifteen = Promise.resolve(15); + +fifteen.then((value) => console.log(`Got ${value}`)); +// → Got 15 + +setTimeout(() => { + fifteen.then((value) => console.log('Sama svar, sekúndu seinna', value)); +}, 1000); diff --git a/namsefni/31.async/daemi/03.future-message.js b/namsefni/31.async/daemi/03.future-message.js new file mode 100644 index 0000000..9aa16da --- /dev/null +++ b/namsefni/31.async/daemi/03.future-message.js @@ -0,0 +1,35 @@ +function futureMessage(msg) { + return new Promise((resolve, reject) => { + if (msg === 'foo') { + reject(new Error('No foo allowed!')); + } + + setTimeout(() => resolve(`${msg} from the future!`), 2000); + }); +} + +futureMessage('Hi!') + .then((msg) => console.log(msg)); +// "Hi! from the future!" eftir 2 sek + +futureMessage('foo') + .then((msg) => console.log(msg)) + .catch((e) => console.log(e)); +// "No foo allowed!" strax + +const p = futureMessage('hmm'); + +/** + * Fall sem tekur við promise og bætir við `then` handler + */ +function foo(promise) { + console.log(promise); + + // Þetta mun prenta út í console *seinna* + promise.then((msg) => console.log('foo:', msg)); + + // skilum þessu *núna* + return 'Handling promise...'; +} + +foo(p); diff --git a/namsefni/31.async/daemi/04.snooze-promise.js b/namsefni/31.async/daemi/04.snooze-promise.js new file mode 100644 index 0000000..e4769ee --- /dev/null +++ b/namsefni/31.async/daemi/04.snooze-promise.js @@ -0,0 +1,14 @@ +function snooze(s, msg) { + return new Promise((resolve) => { + setTimeout(() => { + resolve(msg); + }, s * 1000); + }); +} + +snooze(5, 'Vakna') + .then((msg) => alert(msg)) + .then(() => snooze(3, 'Vakna núna!')) + .then((msg) => alert(msg)) + .then(() => snooze(1, 'VAKNA!!!')) + .then((msg) => alert(msg)); diff --git a/namsefni/31.async/daemi/05.all-race.js b/namsefni/31.async/daemi/05.all-race.js new file mode 100644 index 0000000..737fac6 --- /dev/null +++ b/namsefni/31.async/daemi/05.all-race.js @@ -0,0 +1,29 @@ +function snooze(s, msg) { + return new Promise((resolve) => { + setTimeout(() => { + resolve(msg); + }, s * 1000); + }); +} + +const snoozefestAll = Promise.all([ + snooze(5, 'Vakna'), + snooze(3, 'Vakna núna!'), + snooze(1, 'VAKNA!!!'), +]) + .then((result) => console.log(result)); + +console.log(snoozefestAll); +// Promise {} +// 5s seinna.. +// ["Vakna", "Vakna núna!", "VAKNA!!!"] + +Promise.race([ + snooze(5, 'Vakna'), + snooze(3, 'Vakna núna!'), + snooze(1, 'VAKNA!!!'), +]) + .then((result) => console.log(result)); + +// 1s seinna.. +// "VAKNA!!!" diff --git a/namsefni/31.async/daemi/06.futureMessage-async.js b/namsefni/31.async/daemi/06.futureMessage-async.js new file mode 100644 index 0000000..51bf8af --- /dev/null +++ b/namsefni/31.async/daemi/06.futureMessage-async.js @@ -0,0 +1,18 @@ +function futureMessage(msg) { + return new Promise((resolve, reject) => { + if (msg === 'foo') reject(new Error('No foo allowed!')); + + setTimeout(() => resolve(`${msg} from the future!`), 2000); + }); +} + +async function future() { + try { + const result = await futureMessage('foo'); + console.log(result); + } catch (e) { + console.log(e); + } +} + +future(); diff --git a/namsefni/31.async/daemi/07.snooze-async.js b/namsefni/31.async/daemi/07.snooze-async.js new file mode 100644 index 0000000..ebdca41 --- /dev/null +++ b/namsefni/31.async/daemi/07.snooze-async.js @@ -0,0 +1,15 @@ +function snooze(s, msg) { + return new Promise((resolve) => { + setTimeout(() => { + resolve(msg); + }, s * 1000); + }); +} + +async function snoozer() { + alert(await snooze(5, 'Vakna')); + alert(await snooze(3, 'Vakna núna')); + alert(await snooze(1, 'VAKNA!!!')); +} + +snoozer(); diff --git a/namsefni/31.async/img/ajax-fig1_small.png b/namsefni/31.async/img/ajax-fig1_small.png new file mode 100644 index 0000000000000000000000000000000000000000..d73717a317f87e8583a24dad61de02b7130018bb GIT binary patch literal 96444 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

}%Z+3~ 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%0AC^FSH{(hycdf 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 YQ6HYyizTN{h=3n?X=SOe5(a+%4?hWfHUIzs literal 0 HcmV?d00001 diff --git a/namsefni/31.async/img/control-io.svg b/namsefni/31.async/img/control-io.svg new file mode 100644 index 0000000..97a6f61 --- /dev/null +++ b/namsefni/31.async/img/control-io.svg @@ -0,0 +1,10 @@ + + +synchronous, single thread of controlsynchronous, two threads of controlasynchronous diff --git a/namsefni/31.async/img/framendibakendi.svg b/namsefni/31.async/img/framendibakendi.svg new file mode 100644 index 0000000..17fc0cf --- /dev/null +++ b/namsefni/31.async/img/framendibakendi.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + BAKENDI + + + + + + + + + + + + HTTP + + + + + + + + + + + + + + + FRAMENDI + + diff --git a/namsefni/31.async/readme.md b/namsefni/31.async/readme.md new file mode 100644 index 0000000..d6b6786 --- /dev/null +++ b/namsefni/31.async/readme.md @@ -0,0 +1,22 @@ +# Ósamstill forritun + +[Fyrirlestur](1.async.md), [vídeó (29:35)](https://youtu.be/QJsHkQHZrQw) + +## Lesefni + +* [Eloquent JavaScript, kafli 11: Asynchronous Programming](https://eloquentjavascript.net/11_async.html) + +## Dæmi + +* [snooze dæmi](daemi/01.snooze.js) +* [promise dæmi](daemi/02.promise.js) +* [promise og villumeðhöndlun dæmi](daemi/03.future-message.js) +* [snooze dæmi með promises](daemi/04.snooze-promise.js) +* [all og race dæmi](daemi/05.all-race.js) +* [async await dæmi](daemi/06.futureMessage-async.js) +* [snooze dæmi með async await](daemi/07.snooze-async.js) + +## Aukaefni + +* [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) +* [`async await`](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await) diff --git a/namsefni/32.http-form/1.http-form.md b/namsefni/32.http-form/1.http-form.md new file mode 100644 index 0000000..f1e41de --- /dev/null +++ b/namsefni/32.http-form/1.http-form.md @@ -0,0 +1,290 @@ +--- +title: Fyrirlestur – HTTP og form +--- + +# Fyrirlestur – HTTP og form + +## Vefforritun 1 — TÖL107G + +### Ólafur Sverrir Kjartansson, [osk@hi.is](mailto:osk@hi.is) + +--- + +## Villumeðhöndlun + +* JavaScript hefur ekki eins villumeðhöndlun og HTML og CSS +* Ef eitthvað brotnar eru líkur á að það hafi áhrif á _allt_ +* Verðum að hafa í huga + +*** + +> Has the page loaded yet? Did the HTTP request for the JavaScript succeed? Did the HTTP request for the JavaScript complete? Does the corporate firewall block JavaScript? Does their ISP or mobile operator interfere with downloaded JavaScript? Have they switched off JavaScript? Do they have add‐ons or plug‐ins installed which inject script or alter the DOM in ways you didn’t anticipate? Is the Content Delivery Network up? +> +> —[Everyone has JavaScript, right?](https://kryogenix.org/code/browser/everyonehasjs.html) + +*** + +## Unobtrusive JavaScript + +Alveg eins og við aðskiljum útlit frá efni viljum við aðskilja forrit frá efni. + +Tengt progressive enhancement er hugtakið _unobtrusive JavaScript_. + +* Aðskilnaður hegðunar frá markupi +* Sem minnst fótspor — ekki skilgreina í global scope +* Athuga hvort virkni sé studd og þá bæta henni við + +*** + +* Bæta hegðun við og virka án hennar – ekki festa atburð við element + * `` + * `document.querySelector('enhance'). addEventListener('click', handleClick)` + +*** + +> 1\. Identify core functionality. +> +> 2\. Make that functionality available using the simplest possible technology. +> +> 3\. Enhance! +> +> —[Resilient Web Design, chapter 6: Steps](https://resilientwebdesign.com/chapter6/) + +*** + +> Some designers have misunderstood progressive enhancement to mean that all functionality must be provided to everyone. It’s the opposite. Progressive enhancement means providing core functionality to everyone. After that, it’s every browser for itself. +> +> —[Resilient Web Design, chapter 5: Layers](https://resilientwebdesign.com/chapter5/) + +*** + +## Verkefni + +* Í verkefnum sem við leysum með JavaScript erum við stundum að setja upp efni _eftir_ að vefur hleðst inn +* Ef svona verkefni væru leyst í raunveruleikanum myndum við hafa _server-side rendering_ + * Höfum efni til staðar í HTML í byrjun—krefjumst ekki JavaScript +* Viðfangsefni í vefforritun 2 + +--- + +## Framendi VS bakendi + +![Mynd af framendi vs bakenda](img/framendibakendi.svg) + +*** + +## Sagan + +* Búið til af Tim Berners-Lee í sambandi við HTML +* Fyrst skjalað sem útgáfa 0.9 1991 +* [RFC 1945](http://tools.ietf.org/html/rfc1945) skilgreinir HTTP 1.0 árið 1996 +* [RFC 2616](http://tools.ietf.org/html/rfc2068) skilgreinir HTTP 1.1 árið 1999 + +*** + +* [HTTP 1.1](http://tools.ietf.org/html/rfc2068) ennþá mikið notað í dag + * HTTP 2 þó að sækja í sig veðrið, er um 49% af traffík í okt 2020! +* Notar TCP/IP fyrir gagnafluttning +* DNS (Domain Name System) þýðir IP-tölur í lén + +*** + +## Request—response + +* HTTP byggir á request—response milli client og server +* Client sendir request á server +* Server framkvæmir aðgerðir og sendir response á client + +*** + +## Server + +* Server getur einfaldlega sent til baka HTML, CSS og JavaScript skrár sem finnast, t.d. eins og á heimasvæði HÍ +* Eða framkvæmt flóknari aðgerðir, sótt gögn í gagnagrunn, sett saman vef með forriti + * t.d. haus, efni og fótur síðu _dýnamískt_ búið til + +*** + +## Request + +* Request er: + * Request line: aðferð (method) sem notuð er, auðlind og útgáfu af HTTP + * Headers fyrir aðgerð, a.m.k. `Host` + * Tóm lína + * Hugsanlega gögn + +*** + +## Request – dæmi + +```http +GET / HTTP/1.1 +Host: example.org +User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:93.0) Gecko/20100101 Firefox/93.0 +Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 +Accept-Language: en-US,en;q=0.5 +Accept-Encoding: gzip, deflate +Connection: keep-alive +``` + +*** + +## Response + +* Response er: + * Status lína: útgáfa af HTTP, staða sem tala og staða sem texti + * Headers frá þjóni + * Tóm lína + * Hugsanlega gögn + +*** + +## Response – dæmi + +```http +HTTP/1.1 200 OK +Content-Encoding: gzip +Accept-Ranges: bytes +Cache-Control: max-age=604800 +Content-Type: text/html; charset=UTF-8 +Date: Mon, 25 Oct 2021 08:39:07 GMT +Expires: Mon, 01 Nov 2021 08:39:07 GMT +Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT +Vary: Accept-Encoding +Content-Length: 648 + + +... +``` + +*** + +## HTTP aðferðir + +* HTTP Request þarf að hafa aðferð (method) tilgreinda + * Stundum kölluð _sögn_ +* HTTP 1.0 og 1.1 skilgreina þær flestar sem notaðar eru í dag + +*** + +* `GET` – biður um síðu, lang mest notaða aðferðin! +* `POST` – Biður server um að taka við gögnum í request sem nýrri einingu. T.d. nýtt svar við umræðuþræði eða ný gögn í gagnagrunni +* `PUT`, `DELETE` o.fl. notað í vefþjónustum, ekki á vefnum + +*** + +## Hausar – headers + +* Sendir bæði í request og response +* Heiti og gildi í texta, aðskilið með tvípunkt + * `Connection: close` + +*** + +## Dæmi um request hausa + +* `Accept` – efnistýpur, content-types, sem eru samþykktar fyrir svar +* `Accept-Charset` – Charset sem eru samþykkt í svari +* `Host` – domain nafn sem beðið er um + +*** + +## Dæmi um response hausa + +* `Date` – Dagstími sem svar var sent +* `Server` – Nafn þjóns +* `Content-Length` – lengd svars í bætum +* `Content-Type` – MIME týpa efnis og stafasett + +*** + +## Stateless + +* HTTP er hannað sem stöðulaus prótókoll +* Server þarf **ekki** að geyma neinar upplýsingar á milli beiðna +* Stöður geta þó verið geymdar á nokkra máta, förum ekki nánar í það + +*** + +## Stöðukóðar — status codes + +Þegar þjónn svarar með response gefur hann upp stöðukóða, sem tölu og lesanlegan texta + +* `1xx` – Til upplýsinga +* `2xx` – Gekk, success +* `3xx` – Áframsending, redirection +* `4xx` – Villa hjá client +* `5xx` – Villa hjá server + +*** + +## Dæmi um stöðukóða + +* `200 OK` – staðlað svar fyrir HTTP request sem gengur upp +* `201 Created` – request gekk upp og ný auðlind var búin til +* `301 Moved Permanently` – þessi og allar frekari requests eiga að fara á nýtt URI + +*** + +* `400 Bad Request` – Einhver villa í syntax hjá client +* `404 Not Found` – Fannst ekki en gæti birst í framtíðinni +* `500 Internal Server Error` – Almenn villa + +*** + +## URL + +* Staðsetja og skilgreina hvernig við sækjum vefsíður yfir HTTP +* Samanstanda af nokkrum pörtum +* `http://example.org/example.html?start=true#kafli2` +* Stundum er talað um `URI`, en í nýjum staðli er `URL` og `URI` það sama + +--- + +## HTTP aðferðir og `

` + +* Þegar við búum til `` getum við skilgreint hvort við notum `GET` eða `POST` með `method` attribute +* `` sendir gögn með `GET` og setur allar breytur í query-string, t.d. `http://example.org/?foo=bar` +* `` sendir gögn með `POST` og setur allar breytur í _request body_ + +*** + +## `` + + + + + + +```html +
+ + +
+``` + +*** + +## `
` + + + + +
+ +```html +
+ + +
+``` + +*** + +* [form](daemi/01.form.html) diff --git a/namsefni/32.http-form/daemi/01.form.html b/namsefni/32.http-form/daemi/01.form.html new file mode 100644 index 0000000..581e9ae --- /dev/null +++ b/namsefni/32.http-form/daemi/01.form.html @@ -0,0 +1,25 @@ + + + + + Form + + +

Form

+ +

GET

+ +
+ + +
+ +

POST

+ +
+ + +
+ + + diff --git a/namsefni/32.http-form/img/framendibakendi.svg b/namsefni/32.http-form/img/framendibakendi.svg new file mode 100644 index 0000000..17fc0cf --- /dev/null +++ b/namsefni/32.http-form/img/framendibakendi.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + BAKENDI + + + + + + + + + + + + HTTP + + + + + + + + + + + + + + + FRAMENDI + + diff --git a/namsefni/32.http-form/readme.md b/namsefni/32.http-form/readme.md new file mode 100644 index 0000000..6ce18d4 --- /dev/null +++ b/namsefni/32.http-form/readme.md @@ -0,0 +1,21 @@ +# HTTP og from + +[Fyrirlestur: HTTP og form](1.http-form.md), [vídeó (16:24)](https://youtu.be/f0-GN_M67lc) + +## Lesefni + +* [Eloquent JavaScript, kafli 18: HTTP and Forms](https://eloquentjavascript.net/18_http.html) + +## Dæmi + +* [form](daemi/01.form.html) + +## Aukaefni + +* [Everyone has JavaScript, right?](https://kryogenix.org/code/browser/everyonehasjs.html) + +## Ítarefni + +* [RFC 1945](http://tools.ietf.org/html/rfc1945) +* [RFC 2616](http://tools.ietf.org/html/rfc2068) +* [HTTP 1.1](http://tools.ietf.org/html/rfc2068) diff --git a/namsefni/33.ajax/1.ajax.md b/namsefni/33.ajax/1.ajax.md new file mode 100644 index 0000000..e106b30 --- /dev/null +++ b/namsefni/33.ajax/1.ajax.md @@ -0,0 +1,318 @@ +--- +title: Fyrirlestur – Ajax +--- + +# Fyrirlestur – Ajax + +## Vefforritun 1 — TÖL107G + +### Ólafur Sverrir Kjartansson, [osk@hi.is](mailto:osk@hi.is) + +--- + +## JSON + +* JavaScript Object Notation +* Létt gagna format sem er auðvelt að lesa og skrifa, bæði fyrir menn og vélar +* Byggir á almennum gagnastrúktúrum + * Heiti/gildi pörum (objects, dictionary, hash table o.s.fr.) + * Röðuðum listum (array, vector o.s.fr.) + +*** + +## Munur á JSON og JS hlutum + +* Lyklar verða að vera strengir, vegna frátekinna orða +* Strengir verða að vera skilgreindir með `"`, ekki `'` +* Takmarkanir á tölum, t.d. hex form ekki leyft (`0xea`) +* Búið að takmarka týpur, t.d. ekki `undefined` eða `RegExp` + +*** + +## JSON dæmi + +```json +{ + "firstName": "John", + "lastName": "Smith", + "isAlive": true, + "age": 25, + "address": { + "streetAddress": "21 2nd Street", + "city": "New York", + "state": "NY", + "postalCode": "10021-3100" + } +} +``` + +*** + +## JSON útfærslur + +* Höfum `JSON` hlut í vöfrum, node.js og í fleiri umhverfum gegnum forritasöfn +* `stringify` – breytir gagnahlut í JSON streng +* `parse` – breytir JSON streng í gagnahlut + * Ef við reynum að breyta ólöglegum streng fáum við exception + +*** + + + +```javascript +const obj = { + a: 1, + string: 'Halló, heimur', + obj: { + c: [1, 2, 3], + }, +}; +const json = JSON.stringify(obj); +// "{"a":1,"string":"Halló, heimur","obj":{"c":[1,2,3]}}" +const back = JSON.parse(json); +``` + +*** + +```javascript +try { + JSON.parse('{'); +} catch (e) { + console.log(e); +} + +// SyntaxError: Unexpected end of JSON input +``` + +*** + +* [json dæmi](daemi/01.json.js) + +--- + +## Ajax + +* _Asynchronous JavaScript and XML_ +* Skilgreint 2005 + * [Ajax: A New Approach to Web Applications](https://immagic.com/eLibrary/ARCHIVES/GENERAL/ADTVPATH/A050218G.pdf) +* Í dag ekki ein tækni heldur hugtakið að sækja gögn ósamstillt (async) til að koma í veg fyrir að hlaða allri síðunni aftur + +*** + +![Ajax skýringarmynd](img/ajax-fig1_small.png) + +*** + +## XMLHttpRequest + +* Upprunalega framkvæmtmeð `XMLHttpRequest` hlutnum + * Fyrst skilgreindur í IE5! +* Þungt og flókið API, notar ekki promises +* Notum `fetch` í dag + +--- + +## `fetch` + +* [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) er API til að eiga ajax samskipti +* Einfalt fyrir einfaldar fyrirspurnir, en getum gert flóknari með góðu API +* Notar promises + +*** + +## fetch notkun + +* Búum til request, einfaldasta leiðin er einfaldlega `fetch(url)` sem framkvæmir `GET` á `url` og skilar Promise +* Getum líka sent inn `options` hlut sem annað viðfang og gert þá t.d. `POST` +* Fáum til baka `response` hlut sem við athugum `status` á eða hvort `response.ok` sé `true` (ef status er 200–299) + +*** + +* Eftir að við fáum response þurfum við að ákveða hvernig við fáum gögnin + * `JSON` með `response.json()` + * Texta með `response.text()` + * Binary gögn með `response.blob()` +* Skilar allt Promise + +*** + +```javascript +fetch('url') + .then((result) => { + if (!result.ok) { + throw new Error('Non 200 status'); + } + return result.json(); + }) + .then(data => console.log(data)) + .catch(error => console.error(error)); +``` + +*** + +eða með `async await` + + + +```javascript +async function fetchData() { + try { + const result = await fetch(url); + + if (!result.ok) { + throw new Error('result not ok'); + } + + return await result.json(); + } catch (e) { + console.warn('unable to fetch', e); + return null; + } +} +``` + +*** + +```javascript +const options = { + body: { /* object af post data */ }, + cache: '', /* cache header */ + headers: { /* auka headers */ }, + method: 'POST', +}; + +fetch('url', options); +``` + +*** + +* [fetch dæmi](daemi/ajax/02.fetch.html) + +--- + +## Vefþjónustur + +* Margt fellur undir hugtakið _vefþjónusta_ +* Í grunninn einhver samskipti milli tölva yfir net +* Verið til í einhverri mynd síðan farið var að tengja saman tölvur + +*** + +* Geta verið á ýmsu formi +* Algengast eru _REST_ eða _RESTful_ þjónustur +* Líka SOAP (eldri tækni) og GraphQL (nýrri tækni) + +*** + +## REST + +* REST er arkitektúrsstíll sem hunsar útfærslu og samskipti +* Frekar heimspekilegt +* Oftast notar það HTTP (methods og status codes) fyrir samskipti og JSON fyrir gögn + +--- + +## Same-origin og CORS + +* Same-origin policy segir til um að ekki megi hlaða gögnum frá annari síðu nema protocol, port og host sé það sama +* Megum þó vísa í og nota JavaScript, CSS, myndir o.fl. + +*** + +* `https://foo.example.org/` má... + * sækja `https://foo.example.org/data.json` + * ekki sækja `http://bar.example.org/data.json` + +*** + +## Cross-origin resource sharing (CORS) + +* Þar sem same-origin policy bannar sjálfgefið að sækja gögn _cross-origin_ þurfum við leið til að geta sótt gögn á milli þjóna + * Hvað ef við vitum af skrá á `banki.is` og gerum fetch request í client á hana í nafni notanda..? + +*** + +* Cross-origin resource sharing (CORS) skilgreinir leið til að leyfa það + * Verðum að ákveða að leyfa gögnum að vera aðgengileg og með hvaða aðferðum + +*** + +* Setjum _headera_ í HTTP svör (á bakenda) sem segja til um hvað má + * `Access-Control-Allow-Origin: http://example.com` eða `*` + * `Access-Control-Allow-Methods: GET` + +*** + +* [cors dæmi](daemi/03.cors.html) + +---- + +## Að vinna með URL + +* [`url standard`](https://url.spec.whatwg.org/) skilgreinir hvernig URL virkar og API tengt því +* Skilgreinir `URL` og `URLSearchParams` API + +*** + +```javascript +const s = ` + http://user:pass@www.example.org/a/b + ?foo=bar&bar=baz#hash`; +const url = new URL(s); +console.log(url); +``` + +```json +{ + "origin": "http://www.example.org", + "protocol": "http:", + "username": "user", + "host": "www.example.org", + "pathname": "/a/b", + "search": "?foo=bar&bar=baz", + "hash": "#hash" + // … +} +``` + +*** + +```javascript +const qs = 'category=teaching&foo=bar'; +const params = new URLSearchParams(qs); + +params.set('name', 'Óli'); +params.delete('foo'); + +console.log(params.toString()); +// category=teaching&nafn=%C3%B3li +``` + +*** + +* Þegar við viljum gera köll í vefþjónustur getum við verið að eiga við og breyta einhverjum URLum + * ``const url = `${API_URL}/post`;`` +* Getum gert með strengjum, en fyrir flóknari slóðir, notum við `URL` og `URLSearchParams` API + +*** + +* Viljum ekki þurfa að muna hvort við enduðum á `/` eða ekki + * `https://example.orgpost` + * `https://example.org//post` +* `URL` og `URLSearchParams` leyfa okkur að setja saman slóðir + * `const url = new URL('post', API_URL).href;` + +--- + +## Stöður + +Þegar gögn eru sótt yfir vefþjónustu getum við lent í mismumandi stöðum: + +* `loading`, hvað sýnum við meðan við erum að sækja gögn? Það getur tekið allt frá örfáfum `ms` uppí fleiri `sek` +* `error`, hvað sýnum við ef þjónustan skilar villu? +* `empty`, þjónustan svaraði en við fáum „tóma“ svarið +* `data`, allt gekk upp + +*** + +* [fetch stöðu dæmi](daemi/ajax/04.fetch-states.html) diff --git a/namsefni/33.ajax/daemi/.eslintrc.js b/namsefni/33.ajax/daemi/.eslintrc.js new file mode 100644 index 0000000..7e52774 --- /dev/null +++ b/namsefni/33.ajax/daemi/.eslintrc.js @@ -0,0 +1,6 @@ +module.exports = { + rules: { + // leyfum for of + 'no-restricted-syntax': 0, + }, +}; diff --git a/namsefni/33.ajax/daemi/01.json.js b/namsefni/33.ajax/daemi/01.json.js new file mode 100644 index 0000000..231dd03 --- /dev/null +++ b/namsefni/33.ajax/daemi/01.json.js @@ -0,0 +1,19 @@ +const obj = { + a: 1, + string: 'Halló, heimur', + obj: { + b: 'foo', + c: [1, 2, 3], + }, +}; + +const json = JSON.stringify(obj); +const back = JSON.parse(json); + +console.log(back); + +try { + JSON.parse('{'); +} catch (e) { + console.error(e); +} diff --git a/namsefni/33.ajax/daemi/02.fetch.html b/namsefni/33.ajax/daemi/02.fetch.html new file mode 100644 index 0000000..14fccbf --- /dev/null +++ b/namsefni/33.ajax/daemi/02.fetch.html @@ -0,0 +1,71 @@ + + + + + fetch + + + + + + diff --git a/namsefni/33.ajax/daemi/03.cors.html b/namsefni/33.ajax/daemi/03.cors.html new file mode 100644 index 0000000..e267594 --- /dev/null +++ b/namsefni/33.ajax/daemi/03.cors.html @@ -0,0 +1,17 @@ + + + + + cors + + + + + + diff --git a/namsefni/33.ajax/daemi/04.fetch-states.html b/namsefni/33.ajax/daemi/04.fetch-states.html new file mode 100644 index 0000000..0feeee4 --- /dev/null +++ b/namsefni/33.ajax/daemi/04.fetch-states.html @@ -0,0 +1,100 @@ + + + + + fetch + + + + + + diff --git a/namsefni/33.ajax/daemi/straeto.json b/namsefni/33.ajax/daemi/straeto.json new file mode 100644 index 0000000..68ee260 --- /dev/null +++ b/namsefni/33.ajax/daemi/straeto.json @@ -0,0 +1,433 @@ +{ + "status": 0, + "message": "", + "areas": [ + { + "id": 1, + "area": "Höfuðborgarsvæðið", + "isRural": false, + "buses": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "21", + "22", + "22", + "23", + "24", + "27", + "28", + "29", + "31", + "35", + "36" + ], + "detailedBuses": [ + { + "number": "1", + "name": "Hlemmur » Kópavogur » Garðabær » Fjörður » Vellir" + }, + { + "number": "2", + "name": "Hlemmur » Grensás » Hamraborg » Smáralind » Salir » Mjódd" + }, + { + "number": "3", + "name": "Hlemmur » Kringlan » Mjódd » Sel » Fell » Hólar » Mjódd" + }, + { + "number": "4", + "name": "Hlemmur » Kringlan » Hamraborg » Mjódd » Hólar » Fell » Sel » Mjódd" + }, + { + "number": "5", + "name": "(Nauthóll) » BSÍ » Hlemmur » Ártún » Norðlingaholt" + }, + { + "number": "6", + "name": "Hlemmur » Kringlan » Ártún » Egilshöll" + }, + { + "number": "7", + "name": "Egilshöll » Staðahverfi » Helgafellsland » Leirvogstunga" + }, + { + "number": "8", + "name": "Nauthóll » BSÍ/Landspitalinn" + }, + { + "number": "11", + "name": "Mjódd » Hlemmur » Seltjarnarnes" + }, + { + "number": "12", + "name": "Skerjafjörður » Hlemmur » Mjódd » Ártún" + }, + { + "number": "13", + "name": "Sléttuvegur » Hlemmur » Lækjartorg » Öldugrandi" + }, + { + "number": "14", + "name": "Grandi » Hlemmur » Vogar » Verzló" + }, + { + "number": "15", + "name": "Mosfellsbær » Ártún » Hlemmur » Vesturbær" + }, + { + "number": "16", + "name": "Hlemmur » Sæbraut » Árbær » Hádegismóar" + }, + { + "number": "17", + "name": "Hlemmur » Sogavegur » Mjódd » Breiðholt" + }, + { + "number": "18", + "name": "Spöngin » Grafarholt » Ártún » Bústaðav. » Hlemmur" + }, + { + "number": "19", + "name": "Kaplakriki » Hjallabraut » Fjörður » Ásland » Ásvallalaug" + }, + { + "number": "21", + "name": "Háholt » Fjörður » Kauptún » Smáralind » Mjódd" + }, + { + "number": "22", + "name": "Ásgarður » Urriðaholt » Ásgarður" + }, + { + "number": "22", + "name": "Ásgarður » Urriðaholt » Ásgarður" + }, + { + "number": "23", + "name": "Ásgarður » Álftanes » Ásgarður" + }, + { + "number": "24", + "name": "Spöngin » Ártún » Mjódd » Smáralind » Garðabær" + }, + { + "number": "27", + "name": "Háholt » Laxnes » Háholt" + }, + { + "number": "28", + "name": "Hamraborg » Lindir » Salahverfi » Dalaþing" + }, + { + "number": "29", + "name": "Háholt » Kjalarnes" + }, + { + "number": "31", + "name": "Gufunesbær » Hamrar » Fjallkonuvegur » Hús » Egilshöll" + }, + { + "number": "35", + "name": "Hamraborg » Kársnes » Engihjalli » Hamraborg" + }, + { + "number": "36", + "name": "Hamraborg » Engihjalli » Kársnes » Hamraborg" + } + ] + }, + { + "id": 2, + "area": "Suðurland", + "isRural": true, + "buses": [ + "51", + "51", + "51", + "52", + "52", + "71", + "72", + "73" + ], + "detailedBuses": [ + { + "number": "51", + "name": "Höfn » Skaftafell » Vík »Hvolsvöllur » Selfoss » Hveragerði » Reykjavík" + }, + { + "number": "51", + "name": "Höfn » Skaftafell » Vík »Hvolsvöllur » Selfoss » Hveragerði » Reykjavík" + }, + { + "number": "51", + "name": "Höfn » Skaftafell » Vík »Hvolsvöllur » Selfoss » Hveragerði » Reykjavík" + }, + { + "number": "52", + "name": "Reykjavík » Hveragerði » Selfoss » Hella » Hvolsvöllur » Landeyjahöfn" + }, + { + "number": "52", + "name": "Reykjavík » Hveragerði » Selfoss » Hella » Hvolsvöllur » Landeyjahöfn" + }, + { + "number": "71", + "name": "Þorlákshöfn » Hveragerði" + }, + { + "number": "72", + "name": "Selfoss » Borg » Reykholt » Flúðir » Selfoss" + }, + { + "number": "73", + "name": "Selfoss » Flúðir » Reykholt » Laugarvatn » Grímsnes » Selfoss" + } + ] + }, + { + "id": 3, + "area": "Vestur- og Norðurland", + "isRural": true, + "buses": [ + "57", + "57", + "57", + "57", + "58", + "59", + "63", + "64", + "81", + "81", + "82", + "84" + ], + "detailedBuses": [ + { + "number": "57", + "name": "Akureyri » Sauðárkrókur » Blönduós » Borgarnes » Akranes » Reykjavík" + }, + { + "number": "57", + "name": "Akureyri » Sauðárkrókur » Blönduós » Borgarnes » Akranes » Reykjavík" + }, + { + "number": "57", + "name": "Akureyri » Sauðárkrókur » Blönduós » Borgarnes » Akranes » Reykjavík" + }, + { + "number": "57", + "name": "Akureyri » Sauðárkrókur » Blönduós » Borgarnes » Akranes » Reykjavík" + }, + { + "number": "58", + "name": "Stykkishólmur » Borgarnes" + }, + { + "number": "59", + "name": "Borgarnes » Búðardalur » Hólmavík" + }, + { + "number": "63", + "name": "Varmalandsskóli » Baula » Borgarnes" + }, + { + "number": "64", + "name": "Kleppjárnsreykir » Hvanneyri » Borgarnes" + }, + { + "number": "81", + "name": "Borgarnes » Hvanneyri » Reykholt » Borgarnes" + }, + { + "number": "81", + "name": "Borgarnes » Hvanneyri » Reykholt » Borgarnes" + }, + { + "number": "82", + "name": "Hellissandur » Grundarfjörður » Stykkishólmur" + }, + { + "number": "84", + "name": "Skagaströnd » Blonduós" + } + ] + }, + { + "id": 4, + "area": "Norður- og Norðausturland", + "isRural": true, + "buses": [ + "56", + "78", + "79" + ], + "detailedBuses": [ + { + "number": "56", + "name": "Akureyri » Reykjahlíð » Egilsstaðir" + }, + { + "number": "78", + "name": "Siglufjörður » Ólafsfjörður » Dalvík » Akureyri" + }, + { + "number": "79", + "name": "Húsavík » Akureyri" + } + ] + }, + { + "id": 5, + "area": "Reykjanesbær innanbæjarvagnar", + "isRural": false, + "buses": [ + "R1", + "R3", + "R4" + ], + "detailedBuses": [ + { + "number": "R1", + "name": "Miðstöð » Vatnsholt » Heiðarsel » Myllubakkaskóli » Nesvellir » Miðstöð" + }, + { + "number": "R3", + "name": "Miðstöð » Skógartorg » Keilir » Virkjun » Grænás » Miðstöð" + }, + { + "number": "R4", + "name": "Miðstöð » Grænás » Hafnir» Grænás » Miðstöð" + } + ] + }, + { + "id": 6, + "area": "Akureyri innanbæjarvagnar", + "isRural": false, + "buses": [ + "A1", + "A2", + "A3", + "A4", + "A5", + "A6" + ], + "detailedBuses": [ + { + "number": "A1", + "name": "" + }, + { + "number": "A2", + "name": "" + }, + { + "number": "A3", + "name": "" + }, + { + "number": "A4", + "name": "" + }, + { + "number": "A5", + "name": "" + }, + { + "number": "A6", + "name": " " + } + ] + }, + { + "id": 7, + "area": "Suðurnes", + "isRural": true, + "buses": [ + "55", + "55", + "55", + "88", + "89" + ], + "detailedBuses": [ + { + "number": "55", + "name": "KEF Airport » Reykjanesbær » Keilir » Fjörður » Reykjavík/HÍ" + }, + { + "number": "55", + "name": "KEF Airport » Reykjanesbær » Keilir » Fjörður » Reykjavík/HÍ" + }, + { + "number": "55", + "name": "KEF Airport » Reykjanesbær » Keilir » Fjörður » Reykjavík/HÍ" + }, + { + "number": "88", + "name": "Grindavík » Grindavíkurafleggjari » Reykjanesbær" + }, + { + "number": "89", + "name": "Reykjanesbær » Garður » Sandgerði" + } + ] + }, + { + "id": 9, + "area": "Austurland", + "isRural": false, + "buses": [ + "E1", + "E2", + "E3", + "E2", + "E4", + "E5" + ], + "detailedBuses": [ + { + "number": "E1", + "name": "Egilsstaðir » Reyðarfjörður » Eskifjörður » Norðfjörður (Neskaupsstaður)" + }, + { + "number": "E2", + "name": "Reyðarfjörður » Fáskrúðsfjörður » Stöðvarfjörður » Breiðdalsvík" + }, + { + "number": "E3", + "name": "Seyðisfjörður » Egilsstaðir" + }, + { + "number": "E2", + "name": "Reyðarfjörður » Fáskrúðsfjörður » Stöðvarfjörður » Breiðdalsvík" + }, + { + "number": "E4", + "name": "Höfn » Djúpivogur" + }, + { + "number": "E5", + "name": "Borgarfjörður » Egilsstaðir" + } + ] + } + ] +} diff --git a/namsefni/33.ajax/img/ajax-fig1_small.png b/namsefni/33.ajax/img/ajax-fig1_small.png new file mode 100644 index 0000000000000000000000000000000000000000..d73717a317f87e8583a24dad61de02b7130018bb GIT binary patch literal 96444 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

}%Z+3~ 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%0AC^FSH{(hycdf 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 YQ6HYyizTN{h=3n?X=SOe5(a+%4?hWfHUIzs literal 0 HcmV?d00001 diff --git a/namsefni/33.ajax/readme.md b/namsefni/33.ajax/readme.md new file mode 100644 index 0000000..ec4fd14 --- /dev/null +++ b/namsefni/33.ajax/readme.md @@ -0,0 +1,18 @@ +# Ajax + +[Fyrirlestur: Ajax](1.ajax.md), [vídeó (47:57)](https://youtu.be/y2J8E-hqJrc) + +## Dæmi + +* [json dæmi](daemi/01.json.js) +* [fetch dæmi](daemi/02.fetch.html) +* [cors](daemi/03.cors.html) +* [fetch stöðu dæmi](daemi/04.fetch-states.html) + +## Ítarefni + +* [JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON) +* [Ajax: A New Approach to Web Applications](https://immagic.com/eLibrary/ARCHIVES/GENERAL/ADTVPATH/A050218G.pdf) +* [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) +* [Same-origin policy](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy) +* [URL standard](https://url.spec.whatwg.org/) diff --git a/namsefni/34.eslint/1.eslint.md b/namsefni/34.eslint/1.eslint.md new file mode 100644 index 0000000..43afa5d --- /dev/null +++ b/namsefni/34.eslint/1.eslint.md @@ -0,0 +1,142 @@ +--- +title: Fyrirlestur – eslint & prettier +--- + +# Fyrirlestur – eslint & prettier + +## Vefforritun 1 — TÖL107G + +### Ólafur Sverrir Kjartansson, [osk@hi.is](mailto:osk@hi.is) + +--- + +## Lint á JavaScript kóða + +* Hafa verið nokkur tól í gegnum tíðina +* [jslint.com](http://jslint.com/) frá Douglas Crockford árið 2002 +* [jshint](https://jshint.com/) sem stillangur linter sem hægt var að keyra sem CLI tól árið 2011 +* [`strict mode`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode) sem viðbót við JavaScript í ECMAScript 5 + +*** + +## strict mode + +* Opt-in á að JavaScript túlkur leyfi ekki kóða sem getur valdið villum +* T.d. að skilgreina breytu án `var`, `let`, eða `const` +* Setjum strenginn `strict mode;` efst í skrá, eða efst í fall +* Þegar við notum JavaScript modules er allur kóði í strict mode + +*** + +```javascript +function strictfail() { + 'use strict'; + foo = 1; +} +strictfail(); +// ReferenceError: assignment to undeclared +// variable foo +``` + +*** + +## eslint + +* [eslint](https://eslint.org/) er mest notaði JavaScript linter í dag og sá sem við munum nota +* Skrifaður með það í huga að vera almennur og bjóða upp á _plugins_ +* Skilgreinum reglur í `.eslintrc` skrá í rót verkefnis + +*** + +## eslint uppsetning + +* Setjum upp `eslint` fyrir verkefni + * `npm install eslint --save-dev` +* Notum `eslint --init` til að útbúa `.eslintrc` skrá (eða `.eslintrc.js`) + * Þurfum að keyra með `npx eslint --init` ef `eslint` er ekki uppsett global + +*** + +* [`npx`](https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b) er skipun sem kemur með NPM og keyrir forrit uppsett með `npm` án þess að nota `script` innan `package.json` + +*** + +* Svörum spurningum um hvernig við viljum nota `eslint` +* Best að fylgja stöðlum + * Við ætlum að fylgja [airbnb JavaScript Style Guide](https://github.com/airbnb/javascript) + +*** + +```javascript +module.exports = { + extends: 'airbnb-base', +}; +``` + +*** + +* Búum til script í `package.json` + * `"test": "eslint *.js **/*.js"` + * Keyrum og skoðum allar .js skrár í rót _og öllum_ möppum + * `npm test` keyrir skipun (sama og `npm run test`) + +*** + +## Reglur stilltar + +* Viljum láta eslint vita að við séum að vinna í vafra + * Fáum ekki villur ef við vísum í `document` eða `window` +* Bætum við í `.eslintrc` +* Getum líka stillt sérstaklega [hverja reglu](https://eslint.org/docs/rules/) innan `rules` + +*** + +```javascript +module.exports = { + env: { + browser: true, + es2021: true, + }, + extends: [ + 'airbnb-base', + ], + parserOptions: { + ecmaVersion: 12, + }, + rules: { }, +}; +``` + +*** + +## Slökkt á reglum + +* Getum slökkt á ákveðnum reglum í kóða +* Per skrá: `/* eslint-disable */` +* Per línu: `/* eslint-disable-line */` +* Þurfum stundum en ættum almennt að forðast, lögum villur frekar + +--- + +## prettier + +* [prettier](https://prettier.io/) er „opinionated code formatter“ +* Sér um að móta kóðann okkar skv. reglum +* Getum notað þær sem við skilgreinum með eslint + +*** + +* [Setjum upp](https://prettier.io/docs/en/install.html) +* Ákveðum hvort við viljum að keyri þegar við viljum (með script) +* Eða í hvert skipti sem við vistum! + * Skrítið í byrjun en getur orðið partur af vinnuflæði okkar + +*** + +* Þurfum [`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier#installation) til að eslint virki með prettier +* Getur orðið vesen að eltast við réttar útgáfur og nákvæmlega réttar stillingar á öllum stöðum +* T.d. þurfum `quote_type = single` í `.editorconfig` til að prettier virði að við viljum single quote yfir double + +--- + +* [eslint & prettier dæmi](./daemi/) diff --git a/namsefni/34.eslint/daemi/.editorconfig b/namsefni/34.eslint/daemi/.editorconfig new file mode 100644 index 0000000..85a6124 --- /dev/null +++ b/namsefni/34.eslint/daemi/.editorconfig @@ -0,0 +1,18 @@ +# Samræmir skrár milli stýrikerfa +# Í ritli ætti að sækja plugin sem passar upp á þetta, t.d. EditorConfig for VS Code + +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +# vscode specific, annars mun prettier formata með double quotes +quote_type = single + +[*.md] +trim_trailing_whitespace = false diff --git a/namsefni/34.eslint/daemi/.eslintrc.js b/namsefni/34.eslint/daemi/.eslintrc.js new file mode 100644 index 0000000..223b67a --- /dev/null +++ b/namsefni/34.eslint/daemi/.eslintrc.js @@ -0,0 +1,13 @@ +module.exports = { + env: { + browser: true, + es2021: true, + }, + extends: ['airbnb-base'], + plugins: [], + parserOptions: { + ecmaVersion: 12, + sourceType: 'module', + }, + rules: {}, +}; diff --git a/namsefni/34.eslint/daemi/.vscode/settings.json b/namsefni/34.eslint/daemi/.vscode/settings.json new file mode 100644 index 0000000..73a9b3a --- /dev/null +++ b/namsefni/34.eslint/daemi/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + // virkar aðeins ef í rót verkefnis + "editor.formatOnSave": true, + + // Lagar sjálfkrafa öll „auto-fixable“ atriði frá eslint + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } +} diff --git a/namsefni/34.eslint/daemi/main.js b/namsefni/34.eslint/daemi/main.js new file mode 100644 index 0000000..f874534 --- /dev/null +++ b/namsefni/34.eslint/daemi/main.js @@ -0,0 +1,5 @@ +function test() { + const indent = ' alot' + return + 1; +} diff --git a/namsefni/34.eslint/daemi/package.json b/namsefni/34.eslint/daemi/package.json new file mode 100644 index 0000000..71ddb26 --- /dev/null +++ b/namsefni/34.eslint/daemi/package.json @@ -0,0 +1,20 @@ +{ + "name": "4.eslint", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "eslint *.js **/*.js", + "prettier": "npx prettier --write ./**/*.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-airbnb-base": "14.2.1", + "eslint-config-prettier": "8.3.0", + "eslint-plugin-import": "2.25.2", + "prettier": "2.4.1" + } +} diff --git a/namsefni/34.eslint/daemi/readme.md b/namsefni/34.eslint/daemi/readme.md new file mode 100644 index 0000000..e73ecba --- /dev/null +++ b/namsefni/34.eslint/daemi/readme.md @@ -0,0 +1,11 @@ +# eslint & prettier dæmi + +Færa þarf dæmið út úr repo til að allt virki sem skildi. + +```bash +npm install +npm test +npm run prettier +``` + +Eða vista `main.js` í vscode og sjá prettier laga sjálfkrafa. diff --git a/namsefni/34.eslint/readme.md b/namsefni/34.eslint/readme.md new file mode 100644 index 0000000..dc60469 --- /dev/null +++ b/namsefni/34.eslint/readme.md @@ -0,0 +1,20 @@ +# eslint + +[Fyrirlestur: Eslint & prettier](1.eslint.md), [vídeó (18:09)](https://youtu.be/VkYCfQDVxYE) + +Eftir útgáfu af 9 af Eslint hefur uppsetning og reglur breyst, [lesa skal leiðbeiningar á eslint.org](https://eslint.org/docs/latest/use/getting-started). + +## Dæmi + +* [eslint & prettier dæmi](./daemi/4.eslint) + +## Aukaefni + +* [eslint](https://eslint.org/) +* [prettier](https://prettier.io/) + +## Ítarefni + +* [jslint.com](http://jslint.com/) +* [jshint](https://jshint.com/) +* [`strict mode`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode) diff --git a/readme.md b/readme.md index e3c26c0..e14415f 100644 --- a/readme.md +++ b/readme.md @@ -81,6 +81,8 @@ Til að sækja dæmi er hægt að sækja allt efni frá þessu GitHub repo með - JavaScript: stýriskipanir, föll, fylki, hlutir - [Vika 9, 14.—20. október 2024](vikur/vika-09.md) - Einingar; forritun á vef: DOM og atburðir +- [Vika 10, 21.—27. október 2024](vikur/vika-10.md) + - Ósamstillt forritun; HTTP & form; ajax; eslint ## Verkefni @@ -108,6 +110,8 @@ Verkefni eru sett fyrir formlega í fyrirlestri á mánudegi (þau gætu verið - [Sýnilausn](https://github.com/vefforritun/vef1-2024-v6-synilausn) - [Verkefni 7 (JavaScript #1)](https://github.com/vefforritun/vef1-2024-v7), JavaScript grunnur. - Sett fyrir 7. október, skilist 17. október +- [Verkefni 8 (JavaScript #2)](https://github.com/vefforritun/vef1-2024-v8), JavaScript, DOM og eslint. + - Sett fyrir 14. október, skilist 24. október ### Hópverkefni diff --git a/vikur/vika-10.md b/vikur/vika-10.md new file mode 100644 index 0000000..df8d733 --- /dev/null +++ b/vikur/vika-10.md @@ -0,0 +1,44 @@ +# Vika 10, 21.–27. október 2024 + +## Fyrirlestrar + +Fyrirlestrar koma inn eftir fyrirlestur mánudaginn 21. október. + +## Námsefni + +### Lesefni + +- [Eloquent JavaScript](https://eloquentjavascript.net/) + - [Eloquent JavaScript, kafli 11: Asynchronous Programming](https://eloquentjavascript.net/11_async.html) + - [Eloquent JavaScript, kafli 18: HTTP and Forms](https://eloquentjavascript.net/18_http.html) + +### Uppteknir fyrirlestrar + +- [Ósamstillt forritun](../namsefni/31.async/) +- [HTTP og form](../namsefni/32.http-form/) +- [Ajax og fetch](../namsefni/33.ajax/) +- [eslint](../namsefni/34.eslint/) + +### Lykilhugtök + +- Ósamstillt forritun (async) +- Promises og stöður þeirra +- `then` og `catch` +- `async` og `await` +- HTTP +- `GET` og `POST` +- HTTP stöðukóðar +- `URL` og `URLSearchParams` +- JSON +- `fetch` +- Stöður á ósamstilltum köllum / vefþjónustuköllum: + - `loading` + - `error` + - `empty` + - `data` +- eslint + +## Verkefni vikunnar + +- [ ] Skila [verkefni 8](https://github.com/vefforritun/vef1-2024-v8) +- [ ] Skila [hópverkefni 1](https://github.com/vefforritun/vef1-2024-h1)