Heb alles nog een keer bij langs gegaan en heb de conclusie geschreven

This commit is contained in:
Bram van der Veen 2016-01-13 19:54:20 +01:00
parent a63552993c
commit 703f181065
12 changed files with 35 additions and 45 deletions

View file

@ -0,0 +1,14 @@
## Conclusie en samenvatting
---
Nou dat was een kleine reisje wat we gemaakt hebben. We begonnen bij een broodjeszaak en we eindigen met het maken van onze eigen data gedreven applicatie. Heel veel termen, concepten en andere dingen zijn langsgekomen. We hebben ook verschillende nieuwe dingen geleerd: hoe het internet werkt, wat data gedreven applicaties zijn en hoe Werkmanrooster werkt.
<sup>Elk hoofdstuk heeft een aparte conclusie en het herhalen van al die conclusie is een samenvatting, vandaar dat deze onderdelen zijn samengevoegd.</sup>
---
##### Summary
Werkmanrooster or [rooster.io](http://github.com/96aa48/rooster.io) is a data-driven webapplication. This application works by [extracting information](/database) from the school [schedule website](http://roosters5.gepro-osi.nl/roosters/rooster.php?school=934). The extracted information is put into a [database](/opzoek) for storage and easy access.
When a user connects to the website, multiple processes are at work to make sure that the information from the Werkmanrooster servers reaches the user. One of these processes is [`DNS`](/telefoonboek) or "Domain Name System", it translates domain names (`werkmanrooster.nl`) into an IP address so that the user can connect to the preferred server.
When the user gets to the website and types in his or her name, rooster.io starts a set of processes in order to supply the user with his or her schedule. First, the name typed into the search bar is used to [go through](/opzoek) the previously [established database](/database). When a match is found, the matched [database information](/opzoek) is used to acquire a link to the schedule on the school [schedule website](http://roosters5.gepro-osi.nl/roosters/rooster.php?school=934). The link is then used to download the user's schedule information. The downloaded information is then sorted to make it computer readable. The now computer readable information is then put into a [template](/templates) for design and consistency.

View file

@ -1,6 +1,6 @@
# Leerlingen, Lokalen en Docenten
---
We weten al hoe werkmanrooster jouw informatie gebruikt om het zoeken naar je rooster makkelijker te maken. Maar hoe komt werkmanrooster eigenlijk aan die informatie? Dat gaan we bespreken in dit hoofdstuk.
We weten al hoe Werkmanrooster jouw informatie gebruikt om het zoeken naar je rooster makkelijker te maken. Maar hoe komt Werkmanrooster eigenlijk aan die informatie? Dat gaan we bespreken in dit hoofdstuk.
Werkmanrooster maakt gebruik van een zelfgeschreven script genaamd een "`crawler`". Deze crawler kan meerdere webpagina's afgaan om informatie te verkrijgen en deze opslaan. Dit doet hij door bepaalde patronen te herkennen in de webpagina's en daarmee de benodigde informatie herkennen. Het script heet in `spider.js` in het project.
@ -44,7 +44,7 @@ De eerste stap die je ziet, is dat er een variabele wordt verklaard genaamd `lis
Bij de declaratie van `name` bijvoorbeeld : `var name = student.split(' - ')[1]`, wat betekent dat? Het eerste gedeelte is nog wel te verklaren met wat je weet. Het variabele `name` is gelijk aan `student.split(' - ')[1]`, maar wat `.split(' - ')[1]` nou weer betekent, is je waarschijnlijk onbekend. De functie `split()` kun je zien als een soort schaar. Hij knipt namelijk op een gegeven punt (dat word doorgegeven tussen de haakjes) en geeft een dataobject terug waar een zin in stukjes zit. Dit is heel erg handig als je kijkt naar de lijst aan de linker kant. Je ziet dat elke keer als we een `student` nemen uit `listOfStudents` dat we dan iets krijgen zoals `A6A - Bram van der Veen`. We krijgen dus de naam er uit door dit te knippen met `.split()`. Dit doen we dan met door `' - '` door te geven. Want als we zo knippen, houden we een dataobject over met `A6A` en `Bram van der Veen`. Het enige wat we dan nog moeten doen is dan de goede selecteren. Dus doen we er een `[1]` achter. Waarom `1` en niet `0`? De manier waarop computers werken, is dat ze beginnen met tellen bij `0`, en dus is `0` het eerste wat we kunnen krijgen uit een object en `1` het tweede.
Daar onder zien we een variabele genaamd `databaseEntry`, wat heel erg veel lijkt op het [dataobject](http://werkmanrooster.nl/api/search?name=Bram van der Veen) uit het [archiefkast hoofdstuk](/opzoek). Dat komt omdat het gaat over hetzelfde object! De code die hier boven staat is dus verantwoordelijk voor het functioneren van rooster.io. Waar rooster.io een data gedreven applicatie is, is dit de data.
Daar onder zien we een variabele genaamd `databaseEntry`, wat heel erg veel lijkt op het [dataobject](http://Werkmanrooster.nl/api/search?name=Bram van der Veen) uit het [archiefkast hoofdstuk](/opzoek). Dat komt omdat het gaat over hetzelfde object! De code die hier boven staat is dus verantwoordelijk voor het functioneren van rooster.io. Waar rooster.io een data gedreven applicatie is, is dit de data.
---
[Volgende >>](/handenuitdemouwen)

View file

@ -72,4 +72,4 @@ Herhaal het stappenplan net zoals bij de eerste keer en bekijk de resultaten. Je
Bedenk ook een keer zelf een manier waarop je de informatie kan sorteren of verwerken, hoe je dit wil doen en pas de code aan. Herhaal de stappen van het stappenplan, blijf de code zo vaak aan passen als je wil en speel er gewoon wat mee. Weet gewoon dat je vandaag heb geprogrameerd, op een manier waarop ik ook ooit begon, met kleine stapjes. Ik hoop dat je het leuk vond!
---
[Volgende >>](#)
[Volgende >>](/conclusie)

View file

@ -6,22 +6,4 @@ Door B. van der Veen, Atheneum 6 2016, begeleidt door B. Gelling, N&G Profiel Wi
Welkom bij mijn profielwerkstuk. Dit werkstuk bestaat uit een serie webpagina's die stap voor stap laten zien hoe Werkmanrooster werkt. Klik op de link aan de onderkant van de pagina om naar de volgende pagina te gaan.
Bedankt voor het lezen!
---
<!--
Ik ben in de laatste paar weken druk bezig geweest met het maken van het nieuwe Werkmanrooster.
Ik wil dit nu opnieuw gemaakte project gaan onderzoeken en aan de hand daarvan mensen uit leggen hoe de website achter de schermen werkt. (onderzoek)
Ik ben hier aan toegekomen in de PWS week maar heb niet een geschreven deel waarvan er al uitleg is, ik heb het voorwerk gedaan om mijn uitleg zo begrijpbaar mogelijk te houden.
Ik heb volgens mijn logboek nu 55 uur in mijn PWS zitten, dit is het meeste uitgegaan naar het maken van de nieuwe Werkmanrooster en de documentatie daarvan.
In de zomervakantie ga ik bezig met het maken van een uitleg die voor iedereen te begrijpen is, dit zal dan ook de grond van mijn PWS worden.
Je kunt de [Werkmanrooster site](http://werkmanrooster.nl) zien als het werk wat ik tot nu toe gedaan heb.
Voor een "logboek" van mijn veranderingen en werk kun je [hier](http://git.werkmanrooster.nl/werkmanrooster/rooster-io/commits/master) terecht.
Op deze website is alles wat ik heb gedaan bijgehouden met datum, tijd en de verandingen die ik gedaan heb.
Daarnaast is het project zelf (de code) [hier](http://git.werkmanrooster.nl/werkmanrooster/rooster-io) te vinden.
Mijn geschreven PWS is deze website waar je nu op zit.
Voor het project van deze website kun je [hier terecht](http://git.werkmanrooster.nl/werkmanrooster/hoewerkt) en voor het [logboek hier](http://git.werkmanrooster.nl/werkmanrooster/hoewerkt/commits/master).
De resultaten van de enquête die ik heb gedaan is [hier](https://docs.google.com/spreadsheets/d/1aFATRxpZHEEclkP5N8JychHlphkcezI4vAAl2nWqXe0/edit#gid=547327911) te vinden. -->
[Naar de inleiding >>](/inleiding)

View file

@ -5,16 +5,16 @@ Laten we beginnen. Hoe Werkmanrooster werkt is vergelijkbaar met een broodjeszaa
Dit lijkt allemaal vrij triviaal. Tuurlijk zou je zeggen, dat is inderdaad hoe een broodjeszaak werkt, dat hoef je me niet uit te leggen. Meeste mensen zullen ook vragen wat dit nou te maken heeft met Werkmanrooster. Een goede vraag om te stellen. Het is namelijk zo dat Werkmanrooster en heel veel andere websites, apps en programma's op een soortgelijke manier werken. Laten we kort kijken wat je doet bij Werkmanrooster om je rooster te krijgen.
Je gaat naar [werkmanrooster.nl](http://werkmanrooster.nl) en typt je naam in bij de zoekbalk die je ziet. Werkmanrooster zoekt het rooster voor je op, en verwerkt de informatie tot een leesbaar rooster. Je ziet dat de webpagina voor je geladen wordt en je rooster verschijnt zo voor je neus met wat stijlvol webdesign.
Je gaat naar [Werkmanrooster.nl](http://Werkmanrooster.nl) en typt je naam in bij de zoekbalk die je ziet. Werkmanrooster zoekt het rooster voor je op, en verwerkt de informatie tot een leesbaar rooster. Je ziet dat de webpagina voor je geladen wordt en je rooster verschijnt zo voor je neus met wat stijlvol webdesign.
Laten we nu de broodjeszaak met Werkmanrooster vergelijken.
| Stap | Broodjeszaak | Werkmanrooster |
| :--: | ------------ | -------------- |
|1| Je vraagt naar je broodje | Je vraagt naar je naam
|2| Ingredienten worden verwerkt (klaargemaakt) | [Je rooster informatie wordt verwerkt](http://werkmanrooster.nl/api/search?name=Bram%20van%20der%20Veen)|
|2| Ingredienten worden verwerkt (klaargemaakt) | [Je rooster informatie wordt verwerkt](http://Werkmanrooster.nl/api/search?name=Bram%20van%20der%20Veen)|
|3| De ingredienten worden op je broodje gedaan| Je rooster informatie wordt gesorteerd in een leesbaar rooster|
|4| Je broodje word ingepakt in wat papier en wat servetten| [Je rooster verschijnt voor je neus met wat stijlvol webdesign](http://werkmanrooster.nl/rooster/Bram%20van%20der%20Veen)|
|4| Je broodje word ingepakt in wat papier en wat servetten| [Je rooster verschijnt voor je neus met wat stijlvol webdesign](http://Werkmanrooster.nl/rooster/Bram%20van%20der%20Veen)|
Je ziet dat er in beide gevallen sprake is van opvragen.
Er is beide gevallen sprake van het verwerken van grondstoffen, of het nou ingredienten zijn of informatie van een rooster.
@ -27,8 +27,8 @@ Het uiteindelijk geheel word ingepakt om het gebruiksvriendelijker te maken.
Tijd om ons los te maken van de broodjes en de lekkere dingen. Tijd voor wat details, we gaan nu elke stap weer langs van rooster.io. Klik op de kopjes om alvast naar het bijhorende hoofdstuk te gaan.
## [Je gaat naar werkmanrooster.nl](/intypen)
Voordat je naar de website gaat zijn er een paar dingen die gebeuren tussen jouw computer en het internet. Je typt `werkmanrooster.nl` in, in je adresbalk. Vervolgens word je gestuurd naar de website. Wat de meeste mensen niet weten is dat er aardig wat processen zijn verlopen in de tijd dat jij op enter hebt gedrukt en wanneer de webpagina voor jou laadt.
## [Je gaat naar Werkmanrooster.nl](/intypen)
Voordat je naar de website gaat zijn er een paar dingen die gebeuren tussen jouw computer en het internet. Je typt `Werkmanrooster.nl` in, in je adresbalk. Vervolgens word je gestuurd naar de website. Wat de meeste mensen niet weten is dat er aardig wat processen zijn verlopen in de tijd dat jij op enter hebt gedrukt en wanneer de webpagina voor jou laadt.
## [Rooster.io gaat een match zoeken van je zoekopdracht.](/opzoek)
Nadat je naam is opgevraagd bij rooster.io gaat de webapplicatie bezig met het vergelijken van jou zoekopdracht met een database vol met informatie van leerlingen, docenten, klassen en lokalen. Als het een overeenkomst vind met jouw zoekopdracht en een stuk informatie in de database, dan wordt die informatie vervolgens gebruikt voor het maken van een rooster.
@ -37,7 +37,7 @@ Nadat je naam is opgevraagd bij rooster.io gaat de webapplicatie bezig met het v
In deze stap gaat rooster.io bezig met het gebruiken van de gevonden informatie om een rooster op te halen. Hij doet dit door het downloaden van een rooster aan de hand van de informatie die hij heeft verkregen in de database. Vervolgens wordt deze informatie verwerkt zodat het laten zien kan worden op een webpagina.
## [Het renderen van het rooster](/renderen).
Maar hoe zorgen we ervoor dat [dit](http://werkmanrooster.nl/api/schedule?name=Bram%20van%20der%20veen) er uit gaat zien als [dat](http://werkmanrooster.nl/rooster/Bram van der Veen)?
Maar hoe zorgen we ervoor dat [dit](http://Werkmanrooster.nl/api/schedule?name=Bram%20van%20der%20veen) er uit gaat zien als [dat](http://Werkmanrooster.nl/rooster/Bram van der Veen)?
Het laatste deel van de rooster.io weg is het geven van de informatie in de vorm van een webpagina. Het verwerkte rooster uit de vorige stap word gestopt in een voorontworpen templaat en word vervolgens gestuurd naar de gebruiker.
[Volgende](/intypen)

View file

@ -1,10 +1,10 @@
# Inleiding
---
Heel veel mensen op het Werkmancollege locatie Stadslyceum gebruiken een alternatieve manier om hun rooster bekijken. Dit doen ze via Werkmanrooster, een door leerlingen opgerichte website voor het bekijken van je eigen rooster. [Het eerste initiatief](http://web.archive.org/web/20101216064457/http://werkmanrooster.nl/) was van een paar leerlingen, later [overgenomen](http://web.archive.org/web/20140103031959/http://werkmanrooster.nl/) door Daniël Koster & Friso Wobben. Sinds December 2014 was het mijn beurt om het domein te beheren.
Heel veel mensen op het Werkmancollege locatie Stadslyceum gebruiken een alternatieve manier om hun rooster bekijken. Dit doen ze via Werkmanrooster, een door leerlingen opgerichte website voor het bekijken van je eigen rooster. [Het eerste initiatief](http://web.archive.org/web/20101216064457/http://Werkmanrooster.nl/) was van een paar leerlingen, later [overgenomen](http://web.archive.org/web/20140103031959/http://Werkmanrooster.nl/) door Daniël Koster & Friso Wobben. Sinds December 2014 was het mijn beurt om het domein te beheren.
Mijn passie voor programeren en dingen uitzoeken heeft me de laatste paar jaar bezig gehouden met het steeds beter worden in het ontwikkelen van websites, applicaties en andere technische snufjes. Werkmanrooster is daar geen uitzondering op. Dit is dan ook de reden dat ik mijn profielwerkstuk hierover schrijf. Ik vind het heel leuk vind om uit te leggen hoe programeren te werk gaat en misschien mensen iets nieuws laten leren.
Toen het mijn beurt was om Werkmanrooster te beheren, zijn er al veel versies van Werkmanrooster langsgekomen. Dit profielwerkstuk gaat over mijn tweede versie van Werkmanrooster, genaamd [rooster.io](http://github.com/96aa48/rooster.io). Dit is de versie van werkmanrooster die iedereen heeft gebruikt voor de laatste twee jaar. Ik ga in dit profielwerkstuk aan jou uitleggen hoe het internet werkt, hoe Werkmanrooster werkt, wat data-gedreven applicaties zijn en nog veel meer.
Toen het mijn beurt was om Werkmanrooster te beheren, zijn er al veel versies van Werkmanrooster langsgekomen. Dit profielwerkstuk gaat over mijn tweede versie van Werkmanrooster, genaamd [rooster.io](http://github.com/96aa48/rooster.io). Dit is de versie van Werkmanrooster die iedereen heeft gebruikt voor de laatste twee jaar. In dit profielwerkstuk gaan we samen opzoek naar de antwoorden op vragen zoals: hoe werkt het internet en hoe werken data gedreven applicaties? Maar ook vooral waar het hele profielwerkstuk over gaat: hoe werkt Werkmanrooster?
---
[Volgende >>](/moeilijkheidsgraad)

View file

@ -2,7 +2,7 @@
---
Iedereen gebruikt het internet dagelijks, en vaak zonder te weten wat er eigenlijk allemaal gebeurd achter de schermen. Een van de dingen die vrijwel het vaakste word uitgevoerd is het gaan naar een website. Wat veel mensen niet weten is dat het internet net zo werkt als dat wij onze telefoons gebruiken.
Wanneer jij je beste vriend of vriendin wil bellen toets je niet hun naam in je telefoon in, maar hun telefoonnummer. Het internet bestaat uit vergelijkbare nummers genaamd `ip`-addressen. `ip`-addressen zijn het fundament van hoe computers met elkaar communiceren. Elke computer, smartphone en laptop die verbonden is met een netwerk heeft een `ip` adres. Websites hebben ook een `ip` adres. Een `ip` adres kan van `0.0.0.0` tot `255.255.255.255` varieren. Maar hoe weet jouw computer nou welk ip adres hij moet hebben? Dat gaat via het `DNS` systeem. `DNS` staat voor 'Domain Name System', wat dat systeem doet is het vertalen van een 'domain name', zoals `werkmanrooster.nl`, naar een `ip` adres (`85.214.232.210`).
Wanneer jij je beste vriend of vriendin wil bellen toets je niet hun naam in je telefoon in, maar hun telefoonnummer. Het internet bestaat uit vergelijkbare nummers genaamd `ip`-addressen. `ip`-addressen zijn het fundament van hoe computers met elkaar communiceren. Elke computer, smartphone en laptop die verbonden is met een netwerk heeft een `ip` adres. Websites hebben ook een `ip` adres. Een `ip` adres kan van `0.0.0.0` tot `255.255.255.255` varieren. Maar hoe weet jouw computer nou welk ip adres hij moet hebben? Dat gaat via het `DNS` systeem. `DNS` staat voor 'Domain Name System', wat dat systeem doet is het vertalen van een 'domain name', zoals `Werkmanrooster.nl`, naar een `ip` adres (`85.214.232.210`).
Op deze manier weet jouw computer waar hij moet zijn voor Werkmanrooster. Dit is handiger dan het `ip` adres uit je hoofd leren!

View file

@ -3,7 +3,7 @@
## De Werkmanrooster archiefkast
Nadat je computer werkmanrooster.nl heeft gevonden via het [`DNS` telefoonboek](/intypen), maakt hij verbinding met de website. Je ziet de hoofdpagina van de website en typt je naam in. Je drukt op enter en de je rooster laadt in minder dan een seconde.
Nadat je computer Werkmanrooster.nl heeft gevonden via het [`DNS` telefoonboek](/intypen), maakt hij verbinding met de website. Je ziet de hoofdpagina van de website en typt je naam in. Je drukt op enter en de je rooster laadt in minder dan een seconde.
In die ene seconden zijn heel wat processen aan de gang om ervoor te zorgen dat jij je rooster te zien krijgt. We gaan ons nu bezighouden met hoe Werkmanrooster bijhoudt wie welk rooster heeft. Je hebt vast wel gehoord van een `database`, in een film of je favoriete serie. De nerd met een bril zit achter de computer terwijl hij iets met een `database` doet. Maar wat is een database eigenlijk? Een `database` is een groot digitaal archief waar informatie in zit. Laten we kijken naar een voorbeeld met een archiefkast.
@ -24,7 +24,7 @@ Wat de secretaresse doet is elk bestand bij langs gaan en dit vergelijken met jo
---
## Zoeken naar een naald in een naaldberg
Bij het intypen van `Bram van der Veen` zal rooster.io [de informatie](http://werkmanrooster.nl/api/search?name=Bram van der Veen) vinden die daar bij hoort. Je ziet een duidelijke overeenkomst tussen het onder weergeven database bestand en het bestand van de archiefkast. Het verschil zijn wat vreemde tekens in en rond de informatie. Wat betekent dit allemaal?
Bij het intypen van `Bram van der Veen` zal rooster.io [de informatie](http://Werkmanrooster.nl/api/search?name=Bram van der Veen) vinden die daar bij hoort. Je ziet een duidelijke overeenkomst tussen het onder weergeven database bestand en het bestand van de archiefkast. Het verschil zijn wat vreemde tekens in en rond de informatie. Wat betekent dit allemaal?
```javascript
//In dit voorbeeld heeft naam_voor_de_data, de waarde "data".
@ -54,7 +54,7 @@ rooster.io werkt hier net zoals de secretaresse. Hij gaat alle bestanden bij lan
"url": "roosters5.gepro-osi.nl/?school=934&type=Leerlingrooster&afdeling=l_atheneum 6&leerling=16374"
}
```
Het bestand is eigenlijk een groep variabeles die het systeem bij langs gaat. In dit geval komt `Bram van der Veen` overeen met de waarde van het variabele `name`. Maar hetzelfde geld als ik bijvoorbeeld alleen `Bram` of `van der Veen` intyp, het systeem zal alleen [meerdere ](http://werkmanrooster.nl/api/search?name=Bram)[mensen](http://werkmanrooster.nl/api/search?name=van der Veen) vinden met dezelfde waardes.
Het bestand is eigenlijk een groep variabeles die het systeem bij langs gaat. In dit geval komt `Bram van der Veen` overeen met de waarde van het variabele `name`. Maar hetzelfde geld als ik bijvoorbeeld alleen `Bram` of `van der Veen` intyp, het systeem zal alleen [meerdere ](http://Werkmanrooster.nl/api/search?name=Bram)[mensen](http://Werkmanrooster.nl/api/search?name=van der Veen) vinden met dezelfde waardes.
Als rooster.io meerdere mensen vindt voor dezelfde zoekopdracht dan maakt hij een lijst zodat de gebruiker kan kiezen uit welk van de mensen hij of zij het rooster wil zien. Als er maar één persoon gevonden wordt dan gaat rooster.io verder met de volgende stap, het rooster verkrijgen en verwerken.
[Volgende >>](/verkrijgen)

View file

@ -40,10 +40,10 @@ Ik voer dan voor het variabele `naam` dan de naam van de rooster opvrager. Op di
a(href="/login") Login
li |
li
a(href="http://hoewerkt.werkmanrooster.nl", target="_blank") Hoe werkt Werkmanrooster?
a(href="http://hoewerkt.Werkmanrooster.nl", target="_blank") Hoe werkt Werkmanrooster?
ul.right
li
a(href="http://git.werkmanrooster.nl/werkmanrooster/rooster-io.git", target="_blank") Recente ontwikkelingen
a(href="http://git.Werkmanrooster.nl/Werkmanrooster/rooster-io.git", target="_blank") Recente ontwikkelingen
```
Dit template zorgt voor de kleine rode of blauwe bar aan de bovenkant van elke Werkmanrooster pagina. Wat hier belangrijk is, is de evalutatie van het variabele `user`. Dit variabele bepaald namelijk hoe de pagina er uit gaat zien. Als het variabele `user` niet bestaat, en er dus niet is ingelogd dan word de gebruiker een login knopje laten zien. Als de gebruiker wel is ingelogd (het variabele `user` bestaat) dan wordt dat variabele gebruikt om een groet aan de gebruiker te laten zien.

View file

@ -16,8 +16,8 @@ Hij bekijkt het bestand en richt zich gelijk op de laatste waarde van het bestan
---
## Data verkrijgen en algoritmes
rooster.io gaat ook verder, door het bestand uit de database te verwerken. Hij doet hetzelfde als de collega in het verhaal hierboven. Hij knipt en plakt het rooster in een nieuw jasje. Maar dan op een geprogrameerde en effici"ente manier.
Rooster.io gaat ook verder, door het bestand uit de database te verwerken. Hij doet hetzelfde als de collega in het verhaal hierboven. Hij knipt en plakt het rooster in een nieuw jasje. Maar dan op een geprogrameerde en effici"ente manier.
Hij gaat naar de link die is gegeven in het bestand en download het daar gevonden rooster als tekstbestand. Vervolgens gaat hij door dit tekstbestand heen om het rooster uit te vissen. Hij leest dit bestand volgens een bepaald algoritme. Dit algoritme is voorgeprogrameerd om bepaalde informatie er uit te halen. De informatie die verkregen word uit de webpagina is bijvoorbeeld de rooster informatie. Dit zijn dingen zoals welke uren je welke lessen hebt met welke docenten en in welk lokaal. Het algoritme verkrijgt ook informatie zoals het naam van het rooster. Hij vertaalt dan deze door mensen te lezen informatie, in een soortgelijk [database bestand](http://werkmanrooster.nl/api/schedule?name=16374) zodat een computer het kan lezen. Het verschil in database bestanden tussen een rooster en die van een leerling, is het verschil van inhoud. Een database bestand van een leerling houdt informatie vast over de leerling, terwijl een database bestand van een rooster informatie vasthoud over een specifiek rooster. Nu moet er van dit database bestand een webpagina gemaakt worden.
Hij gaat naar de link die is gegeven in het bestand en download het daar gevonden rooster als tekstbestand. Vervolgens gaat hij door dit tekstbestand heen om het rooster uit te vissen. Hij leest dit bestand volgens een bepaald algoritme. Dit algoritme is voorgeprogrameerd om bepaalde informatie er uit te halen. De informatie die verkregen word uit de webpagina is bijvoorbeeld de rooster informatie. Dit zijn dingen zoals welke uren je welke lessen hebt met welke docenten en in welk lokaal. Het algoritme verkrijgt ook informatie zoals het naam van het rooster. Hij vertaalt dan deze door mensen te lezen informatie, in een soortgelijk [database bestand](http://Werkmanrooster.nl/api/schedule?name=16374) zodat een computer het kan lezen. Het verschil in database bestanden tussen een rooster en die van een leerling, is het verschil van inhoud. Een database bestand van een leerling houdt informatie vast over de leerling, terwijl een database bestand van een rooster informatie vasthoud over een specifiek rooster. Nu moet er van dit database bestand een webpagina gemaakt worden.
[Volgende >>](/templates)

View file

@ -10,7 +10,8 @@ var articles = [
'verkrijgen:Verkrijgen en verwerken',
'templates:Templaten',
'database:De database',
'handenuitdemouwen:Handen uit de mouwen'
'handenuitdemouwen:Handen uit de mouwen',
'conclusie:Conclusie'
]
module.exports = function (req, res, next) {

View file

@ -10,13 +10,6 @@ html
.container
.row
.sidebar.five
div
h5 Profielwerkstuk
p Hoe werkt Werkmanrooster?
//- sup Door :
a(href="http://96aa48.github.io")
img(src="/images/face.png")
sup Bram van der Veen
ul
for article in articles
li