joeni

Add new elements to thesis

Author
Maarten Vangeneugden
Date
July 22, 2018, 9:03 p.m.
Hash
02c51992c9908cc62f4bc5da1fee6bf1516ac055
Parent
575c21ede14ec5f0daeefb7ef4deadd1a9383629
Modified files
docs/mail.md
docs/thesis/client-side-scripting.org
docs/thesis/huisstijl.org
docs/thesis/softwarekeuzes.org

docs/mail.md

0 additions and 33 deletions.

View changes Hide changes
1
-
2
-
Zoals besproken bij onze laatste ontmoeting, stuur ik bij deze een e-mail met
3
-
vragen die ik aan u wilde stellen:
4
-
5
-
- Huidige infrastructuur UHasselt: Welke servers staan waar opgesteld, en wat is
6
-
  hun taak? Voornamelijk doel ik hierbij op de servers die de gegevens van
7
-
  studenten bevatten, de software draaien die voor de studenten bedoeld is (bv.
8
-
  Studentendossier).
9
-
- Welke software wordt gebruikt voor de verschillende databanken? Ik heb
10
-
  opgevangen dat hier mogelijk DB2 voor gebruikt wordt, maar om zeker te zijn
11
-
  vraag ik het toch even. Wat is de reden achter de keuze van die databank?
12
-
  Voldoet de databank nog aan de vereisten die de universiteit stelt aan de
13
-
  data?
14
-
- Welke mensen staan in voor het onderhoud van het Studentendossier? Ik zou
15
-
  graag met deze mensen contact opnemen met technische vragen i.v.m. broncode,
16
-
  gebruikte technologieën en software, ...
17
-
- Misschien een iets persoonlijkere vraag: Ik heb de indruk dat er **enorm**
18
-
  veel software wordt gebruikt, soms van derde partijen, ... Ik ben niet
19
-
  overtuigd dat _alles_ zijn eigen applicatie nodig heeft, omdat het zo'n
20
-
  "niche"-taken zijn, dat het misschien makkelijker is om het gewoon af te
21
-
  schaffen en onderling erover te communiceren. Heeft u weet van software die
22
-
  gebruikt wordt op de UHasselt die (ook al is dat maar een subjectieve
23
-
  opvatting) taken vervult die net zo goed via e-mail of op papier kunnen worden
24
-
  afgehandeld?
25
-
- Waar worden de meldingen van de verschillende diensten van de universiteit
26
-
  opgesteld (bv. dienst onderwijs)? Waar wordt dat dan opgeslagen?
27
-
28
-
Alvast bedankt voor de moeite.
29
-
30
-
Met vriendelijke groeten
31
-
32
-
Maarten Vangeneugden
33
-

docs/thesis/client-side-scripting.org

21 additions and 10 deletions.

View changes Hide changes
1
1
Ingewijden zijn bekend met het feit dat JavaScript een Turing-complete
2
2
programmeertaal is; je kunt er dus daadwerkelijk programma's mee schrijven.
3
3
Een prominent voorbeeld hiervan is Google met haar Google Docs, Sheets,
4
4
Presentations, GMail, ...
5
5
6
6
Het valt dan natuurlijk op dat binnen Joeni *geen enkele lijn JavaScript
7
7
geschreven is*. En dat is ook expres gedaan.
8
8
Dat klinkt misschien nogal contra-intuïtief; een volledig programma, dat
9
9
hoofdzakelijk gebruikt zal worden via de browser, dat client-side scripting
10
10
expres aan zijn neus voorbij laat gaan.
11
11
12
12
Hier zijn meerdere redenen voor. Eén van de voornaamste redenen (en eentje die
13
13
Google, Facebook, ... allemaal klaarblijkelijk vergeten zijn) is dat een
14
14
grondregel van /web development/ is dat je er niet van mag uitgaan dat de
15
15
gebruiker JavaScript ondersteunt.
16
16
17
17
*Client-side scripting (Css* (niet te verwarren met Cascading Style Sheets, CSS))
18
18
*mag enkel een strikt cosmetisch effect hebben op
19
19
een website.* De functionaliteit gaat namelijk compleet verloren als de
20
20
gebruiker geen ondersteuning biedt.
21
21
22
22
Alhoewel het in de praktijk steeds neerkomt op "JavaScript (JS) dient vermeden te
23
23
worden op het web", ga ik enkel spreken over "Client side scripting" (Css),
24
24
omdat veel van de problemen die zich met JS zouden voordoen, zich eveneens
25
25
zouden voordoen bij eender welke andere taal (Python, Clojure, ...),
26
26
als die voor Css gebruikt zou worden. JS is sinds [[http://es6-features.org/][ES6]] een betere taal geworden,
27
27
maar de "kwaliteit" van een taal is volledig irrelevant in deze discussie. Het
28
28
bespreken van de faciliteiten die JS als programmeertaal biedt wordt in dit
29
29
hoofdstuk dus achterwege gelaten.
30
30
31
31
** Verschillende versies
+
32
functionaliteit te laten werken. Css die enkel een cosmetisch effect heeft is
+
33
niet het onderwerp van dit stuk, maar wordt eveneens vermeden om aan te tonen
+
34
dat een bruikbare web-applicatie ook mooi kan zijn met enkel HTML en CSS.
+
35
+
36
** Verschillende versies
32
37
Alles wat netwerkgerelateerd is, moet zich houden aan vooraf opgelegde
33
38
standaarden om correct te kunnen communiceren, en met het WWW is dat niet
34
39
anders.
35
40
36
41
Dit geeft opnieuw een reden om geen Css te gebruiken; op dit moment moet ik
37
-
rekening houden met
+
42
rekening houden met
38
43
39
44
- De standaard van HTML(5) en welke tags ondersteund worden
40
45
- De standaard van CSS(3) en de ondersteunde /properties/ binnen browsers
41
46
42
47
Dit op zich is al een hele klus, en vereist *continu onderhoud van de software*.
43
48
44
49
Stel dat men geen website ontwerpt, en /native software/ ontwikkelt, dan hoeft
45
50
men enkel rekening te houden met de syntax van de programmeertaal; als het
46
51
compileert kan het bij wijze van spreken gebruikt worden.
47
-
+
52
48
53
Met Css moet men rekening houden met welke onderdelen van de gebruikte
49
54
programmeertaal door de browsers wordt ondersteund, en dat is van vitaal belang,
50
55
want als het script niet ondersteund wordt, wordt het simpelweg niet uitgevoerd,
51
56
met als gevolg dat de website aan functionaliteit moet inboeten.
52
57
53
58
Als dit bij HTML of CSS gebeurt (bv. gebruik van [[https://developer.mozilla.org/en-US/docs/Web/HTML/Element/marquee][]]), dan kan de browser
54
59
nog terugvallen op een standaardwaarde. Dit is ook mogelijk, omdat geen van
55
60
beide een programmeertaal is; men kán onderdelen vervangen zonder een al te
56
61
groot risico te lopen om de site kapot te maken.
57
62
58
63
** Turing-compleetheid
+
64
telefoonnummer aan te duiden op een webpagina. Op mobiele browsers wordt een
+
65
klik hierop behandeld als een telefoongesprek. Op (oudere) desktopbrowsers wordt
+
66
dit als gewone tekst weergegeven.
+
67
+
68
** Turing-compleetheid
59
69
De kracht van Css schuilt in de [[https://nl.wikipedia.org/wiki/Turingvolledigheid][Turing-compleetheid]]. Dit maakt het tot een
60
-
programmeertaal waarin elk mogelijk computerprogramma geprogrammeerd kan worden.
+
70
programmeertaal waarin elk mogelijk computerprogramma geprogrammeerd kan worden.
61
71
62
72
De grote máár in deze kracht, is dat dat ook een hoop verantwoordelijkheid met
63
73
zich meebrengt. Er kunnen fouten in de code sluipen, die de hele website kunnen
64
74
doen vastlopen.
65
75
66
76
JavaScript heeft dan ook nog de ongelukkige eigenschap dat het een enorm
67
77
[[https://en.wikipedia.org/wiki/Strong_and_weak_typing][zwak getypeerde programmeertaal]] is; de taal doet in de achtergrond stille
68
78
conversies tussen verschillende types, en geeft liever foute resultaten terug
69
79
dan de programmeur te vertellen dat er een fout in de code zit.
70
80
71
81
Deze punten gelden natuurlijk ook voor de /server-side/, maar dit is (in
72
82
tegenstelling tot Css) absoluut onvermijdelijk om een dergelijke website te
73
83
creëren.
74
84
Daarnaast zijn er ook een hoop voordelen die men niet heeft bij Css:
75
85
76
86
- Vrije keuze van programmeertaal (en mogelijkheid om te linken met andere
77
87
  software)
78
88
- Zekerheid dat, als de software werkt op de ene /client/, die ook voor de
79
89
  andere /client/ werkt (zie [[Verschillende versies]])
80
90
81
91
HTML en CSS zijn geen "volwaardige programmeertalen". HTML is een opmaaktaal,
82
92
men beschrijft er dus mee hoe bepaalde onderdelen van de website moeten worden
83
93
voorgesteld; als een hyperlink, een paragraaf, ...
84
94
CSS laat toe om de stijl van deze opmaak te definiëren, hoe moet een hyperlink
85
95
uitzien, ...
86
96
87
97
Een fout hierin heeft hoogstens een estetisch vervelend effect tot gevolg; veel
88
-
browsers negeren fouten, en vervangen deze door /fallbacks/. Dit is niet
+
98
browsers negeren fouten, en vervangen deze door /fallbacks/. Dit is niet
89
99
mogelijk met een programmeertaal, een fout is een fout, en computers zijn niet
90
-
in staat om een fout programma zelf te repareren.
+
100
in staat om een fout programma zelf te repareren.
91
101
92
102
** Onbeschikbaarheid
93
103
Er zijn talloze manieren waarop de aangereikte code niet beschikbaar kan zijn
94
104
voor de gebruiker, waardoor een website die afhangt van Css plots zonder
95
105
waarschuwing niet meer werkzaam is. Een wilde greep uit de mogelijkheden:
96
106
97
107
- De gebruiker heeft een zwakke computer
98
108
- De computer heeft een slechte verbinding
99
109
- De gebruiker surft via de GSM (een zwakke computer met een slechte verbinding)
100
110
- De gebruiker heeft [[https://noscript.net][NoScript]], [[https://www.gnu.org/software/librejs/][GNU LibreJS]], of een andere extensie die Css blokkeert
101
111
- De verbinding wordt onderbroken tijdens het inladen, en de pagina blokkeert
102
112
  terwijl het tevergeefs wacht op de rest van het script
103
113
- De browser van de gebruiker ondersteunt simpelweg geen Css
104
114
- De browser van de gebruiker ondersteunt niet de Css-implementatie die op de
105
115
  website gebruikt wordt (zie [[Verschillende versies]])
106
116
- De website laadt Css in van een externe website, maar er is een fout in het
107
117
  certificaat, en de browser weigert om de verbinding op te zetten
108
118
+
119
109
120
Er hoeft maar één (en slechts één) van deze mogelijkheden op te treden, en *de
110
121
volledige website is onbruikbaar*.
111
-
+
122
112
123
Voor elk van deze mogelijkheden zou met Css een controle moeten worden
113
124
ingebouwd, en dan weer voor elke mogelijkheid een oplossing bedacht (want "Het
114
125
werkt niet en dat is de schuld van de gebruiker" is geen oplossing).
115
126
116
127
Daarentegen, wat als er server-side een fout optreedt? \\
117
128
Veel webframeworks hebben ingebouwde /debugging tools/ die bij fouten direct de
118
129
programmeur wijzen op de fout. Django is hier een goed voorbeeld van.
119
130
120
131
Daarnaast biedt de betere webserver ook ingebouwde oplossingen om vaak
121
132
voorkomende fouten af te handelen (zoals een HTTP 404). In dat geval kan er
122
133
gemakkelijk een e-mail naar de ontwikkelaar gestuurd worden, of kan een log
123
134
aangemaakt worden. En dit is vaak allemaal /ingebouwd/.
124
135
125
136
** Uitgesteld resultaat
126
137
Bestanden over het WWW worden quasi altijd verzonden via [[https://nl.wikipedia.org/wiki/Hypertext_Transfer_Protocol][HTTP]]([[https://nl.wikipedia.org/wiki/HyperText_Transfer_Protocol_Secure][S]]), en de browser
127
138
is daarna verantwoordelijk voor het in elkaar steken van alle ontvangen
128
139
onderdelen.
129
140
130
141
Het handige hieraan, is dat elke browser zelf kan bepalen hoe, en in welke volgorde dit
131
142
moet gebeuren, al dan niet in functie van bepaalde instellingen die de gebruiker
132
143
zelf kan aanpassen (bv. geen afbeeldingen laden via 4G).
133
144
134
145
Css interfereert op haast elk mogelijk niveau met deze werkwijze. Net omdat het
135
146
niet op voorhand geweten is wat er zal worden aangepast, of wanneer de code
136
147
ingeladen moet worden, is een browser verplicht om vanaf het eerste moment dat
137
148
een script gedetecteerd wordt (bv. via de ~~-tags), direct de
138
149
code te evalueren en uit te voeren, ongeacht hoe lang het duurt of hoe zwaar het is.
139
150
140
151
Css breekt ook met het gebruikelijke mantra dat de browser/gebruiker bepaalt hoe
141
152
en wat wordt ingeladen.
142
153
Vaak betekent dit ook dat de code geëvalueerd moet worden, op dat exacte moment,
143
154
vooraleer de rest van de pagina getoond kan worden. \\
144
155
Dit is minder een probleem als Css gebruikt wordt voor het enige waarvoor het
145
156
zou gebruikt moeten worden (cosmetische elementen), omdat alle code dan expres
146
-
op het einde van het HTML-document kan worden ingeladen. De website is dan al
+
157
op het einde van het HTML-document kan worden ingeladen. De website is dan al
147
158
bruikbaar vooraleer de code ingeladen moet worden. \\
148
159
(Een groeiend aantal gebruikers blokkeert ook expres Css tijdens het surfen op
149
-
het web, omdat de snelheidswinsten en sterk verhoogde privacy een waardige
+
160
het web, omdat de snelheidswinsten en sterk verhoogde privacy een waardige
150
161
afweging is voor een ietwat minder cosmetisch aangeklede website. Met andere
151
162
woorden; zij stellen het resultaat uit voor onbepaalde duur.)
152
-
+
163
153
164
Dit geeft vanzelfsprekend ook problemen als de code niet geoptimaliseerd is, en
154
165
daar elke browser de aangereikte Css op een andere manier kan evalueren, is het
155
166
onbegonnen werk om voor alle mogelijke implementaties handige optimalisaties
156
167
door te voeren. Men beperkt zich natuurlijk meestal tot de populairste
157
168
implementaties ([[https://en.wikipedia.org/wiki/WebKit][WebKit]] en [[https://en.wikipedia.org/wiki/Gecko_(software)][Gecko]]).
158
169
159
170
_Maar je hoeft vanzelfsprekend niet te optimaliseren, als er geen code is om te optimaliseren._
160
171
161
172
Je zou kunnen zeggen dat deze redenering ook opgaat voor Joeni zelf, wat van
162
173
Python gebruik maakt. Maar het gebruikte framework ondersteunt het
163
174
[[https://docs.djangoproject.com/en/2.0/topics/cache/][cachen van pagina's]]. Dus eerder geëvalueerde code zal al op voorhand beschikbaar
164
175
zijn. Daarbij komt dat de snelheid van een server naar wens kan worden vergroot,
165
176
terwijl je bij de gebruiker er van moet uitgaan dat zijn/haar toestel traag is.
166
177
De code van de server hoeft ook slechts voor één platform geoptimaliseerd te
167
178
worden, dat van de server.
168
179
169
180
Uiteindelijk is het resultaat van (foutief) Css-gebruik 
170
181
sowieso: *Een traag werkende website.*
171
182
172
183
** Verlies van betekenis
173
184
Een bepaalde /tag/ in HTML draagt een bepaalde betekenis. ~~ betekent dat dit
174
185
een hyperlink is, ~~ betekent dat wat volgt getoond moet worden als de
175
186
'inhoud' van de pagina, ~

~ duidt op een paragraaf, ...

176
187
177
188
Deze betekenis wordt vaak door de browser ten volle benut; Alle links kunnen makkelijk
178
189
op voorhand verzameld worden (i.e. Alles wat tussen ~~ staat), wat tussen
179
190
~~ staat wordt niet getoond, ...
180
191
181
192
*Betekenis opent deuren voor het impliciet infereren van informatie.* Dit is de
182
193
reden waarom de tags in HTML (en vooral sinds HTML5) een aanduiding zijn voor
183
194
wat de ingesloten data /betekent/; ~
~ is een artikel en kan dus los
184
195
weergegeven worden van de rest van de pagina, ~~ is data die niet
185
-
meer relevant is, maar waarschijnlijk toch wel weergegeven moet worden. ~
    ~
+
196
meer relevant is, maar waarschijnlijk toch wel weergegeven moet worden. ~
    ~
186
197
is een geordende lijst, dus de volgorde van de data is van belang, in
187
198
tegenstelling tot ~
    ~. Er zijn ontelbare voorbeelden te vinden.
188
199
189
200
Deze betekenis gaat volledig verloren als onderdelen van de website met Css
190
201
worden "nagemaakt". ~
~ zal waarschijnlijk wel
191
202
doorlinken naar een website, maar waar dat je in bv. FireFox met een
192
203
middelmuisklik een ~~ in een nieuw tabblad kunt openen, zal dit niet werken
193
204
met Css.
194
205
195
206
** Conclusie
196
207
Het moge duidelijk zijn dat het gebruik van Css om zogenaamde /web apps/ te
197
208
maken, fundamenteel een slecht idee is, dat meer problemen voortbrengt dan het
198
209
oplost. Alle problemen die sommige websites proberen op te lossen met Css, zijn
199
210
makkelijker op te lossen met slechts HTML en CSS (Cascading Style Sheets), en
200
211
Client side scripting maakt soms de problemen zelfs erger.
201
212
202
213
En zelfs al zouden alle bovenstaande punten onwaar zijn, dan nog is Joeni
203
214
het bewijs dat Css geen vereiste is om werkende software te schrijven, die
204
215
hoofdzakelijk via het WWW beschikbaar wordt gesteld.

docs/thesis/huisstijl.org

76 additions and 0 deletions.

View changes Hide changes
+
1
Een mooi uitgewerkte huisstijl is essentieel voor het creëren van een gevoel van
+
2
samenhorigheid met verschillende entiteiten: Ze dienen ter onderscheiding van de
+
3
rest, en 
+
4
In Joeni wordt de huisstijl van de UHasselt verder uitgewerkt en gebruikt. In
+
5
dit hoofdstuk wordt dit in detail uitgelegd, zodat het als basis kan dienen voor
+
6
andere software.
+
7
** Logo
+
8
Joeni heeft tot doel als vervanging te dienen voor het Studentendossier en
+
9
BlackBoard. In combinatie met de relatie tot de UHasselt, wordt voor Joeni het
+
10
volgende logo gebruikt:
+
11
+
12
#+CAPTION: Logo van Joeni
+
13
#+NAME:   fig:joeni-logo
+
14
[[./images/joeni-logo.png]]
+
15
+
16
Het logo is duidelijk afgeleid van het logo van de UHasselt. De driehoekjes zijn
+
17
zo geplaatst dat het geheel lijkt op een HTML-element, om het verband als
+
18
webapplicatie aan te duiden.
+
19
+
20
*** UHasselt
+
21
Het logo van de UHasselt is op verschillende plaatsen te vinden op de website.
+
22
De meest prominente locatie is de titelbalk.
+
23
+
24
#+CAPTION: Afbeelding van hoe het logo van de UHasselt in de titelbalk verwerkt is
+
25
#+NAME: fig:uhasselt-titlebar
+
26
[[./img/a.jpg]]
+
27
+
28
Alhoewel de vorm van de driehoekjes lichtjes afwijkt van het echte logo, valt
+
29
dit nauwelijks op. Het logo verwerken in de titel is mogelijk, omdat dit gewoon
+
30
tekst is, meer specifiek, ▶ ~U+25B6 BLACK RIGHT-POINTING TRIANGLE~.
+
31
+
32
Het voordeel hieraan is niet louter een besparing op bytes.[fn:utf-8] Omdat dit
+
33
tekst is, zal de betere webbrowser in staat zijn om, afhankelijk van de
+
34
achtergrond, het logo de juiste kleur te geven. Op de volgende afbeelding is dit
+
35
effect duidelijk te zien, zeker in contrast met het logo dat de
+
36
UHasselt-bibliotheek gebruikt.
+
37
+
38
[fn:utf-8] Meestal wordt een logo meegestuurd die langs de titel wordt
+
39
weergegeven in de titelbalk. Dat is niet fout, maar ze zijn wel een stuk groter in het
+
40
aantal bytes. [[https://bibliotheek.uhasselt.be/sites/default/files/favicon.ico][Het logo dat UHasselt gebruikt op haar eigen website]] is 1,150
+
41
bytes groot, [[https://www.fileformat.info/info/unicode/char/25b6/index.htm][▶(×2) is slechts 3(×2) bytes groot]], dus een aanzienlijke verkleining van de
+
42
benodigde ruimte.
+
43
+
44
#+CAPTION: Vergelijking tussen logo via UTF-8/tekst en als afbeelding. Merk op hoe het logo van de bibliotheek praktisch onzichtbaar is bij de zwarte achtergrond.
+
45
#+NAME: fig:utf8-better
+
46
[[./img/a.jpg]]
+
47
+
48
** Lettertype
+
49
Op de website wordt als [[https://www.uhasselt.be/UH/Help-Studenten-Algemene_Help-Huisstijl/Lettertype.html][lettertype]] Verdana aangereikt. Dit strookt echter niet
+
50
met het lettertype dat wordt gebruikt in de vele documenten die de UHasselt
+
51
verspreidt, gaande van informatieboekjes over de studierichtingen tot de
+
52
spandoeken die buiten aan het universiteitsgebouw worden opgehangen.
+
53
+
54
Het wordt nergens vermeld, maar dit lettertype gelijkt volledig op
+
55
[[https://design.ubuntu.com/font/][het Ubuntu-lettertype]], zoals de volgende vergelijking duidelijk aantoont.
+
56
+
57
#+CAPTION: Vergelijking tussen lettertype gebruikt door UHasselt en Ubuntu-lettertype op voorbeeldtekst
+
58
#+NAME: fig:font-comparison
+
59
[[./images/font-comparison.png]]
+
60
+
61
Dit lettertype wordt doorheen Joeni gebruikt voor het aanduide van belangrijke
+
62
(kop)teksten.
+
63
+
64
** Kleuren
+
65
De UHasselt gebruikt in de informatiebrochures wel een kleurenpalet dat eigen
+
66
lijkt te zijn aan de bepaalde faculteiten, maar verder wordt het haast nergens
+
67
anders gebruikt. Vermoedelijk komt dit omdat nergens in de huisstijl wordt
+
68
vermeld welke kleuren gebruikt kunnen worden voor wat.\\
+
69
Hieronder worden de verschillende kleurwaarden voor elke faculteit uiteengezet.
+
70
Ze geven een eigen gezicht aan de documentatie binnen elke faculteit, en kunnen
+
71
makkelijk gebruikt worden voor zowel voor- als achtergrondkleuren.
+
72
+
73
#+CAPTION: Een kleurenpalet dat gebruikt kan worden voor de huisstijl van de UHasselt verder uit te bouwen
+
74
#+NAME: fig:color-swatches
+
75
[[./images/color-swatches.png]]
+
76
[[./images/color-swatches.png]]

docs/thesis/softwarekeuzes.org

36 additions and 0 deletions.

View changes Hide changes
+
1
In dit hoofdstuk wordt dieper ingegaan op de verantwoording voor de gekozen
+
2
software, en worden de mogelijke alternatieven besproken.
+
3
** Softwareframework
+
4
*** Django
+
5
Voor het schrijven van Joeni heb ik uitgesproken gebruik gemaakt van
+
6
[[https://www.djangoproject.com/][het Django-framework]].
+
7
**** Webframework
+
8
Django is een framework gericht op het ontwikkelen van websites. Omdat Joeni
+
9
hoort te dienen als een directe vervanging voor het Studentendossier en
+
10
BlackBoard, zou een website bouwen de overgang het gemakkelijkst laten gebeuren.
+
11
+
12
*** Python (3)
+
13
Alhoewel er wel voor elke programmeertaal één of meerdere frameworks voor het
+
14
maken van websites bestaan, ging de voorkeur uit naar Python.
+
15
+
16
*** UTF-8
+
17
Joeni maakt uitsluitend gebruik van UTF-8 voor encodering van tekst.\\
+
18
Niet alleen is dit standaard voor strings in Python 3, het laat ook toe om het
+
19
logo van de UHasselt in de titelbalk te verwerken, en zorgt ervoor dat alle
+
20
teksten correct gespeld en opgeslagen kunnen worden.
+
21
+
22
* Andere mogelijkheden
+
23
Tegenover de gemaakte keuzes staan ook een hoop alternatieven die niet werden
+
24
gebruikt. 
+
25
** Ruby (on Rails)
+
26
Mijn ervaring met Ruby is simpelweg onbestaande; ik heb nooit in deze taal
+
27
geprogrammeerd. De beperkte tijd die ik had voor de bachelorproef stond niet toe
+
28
dat ik mij nog zou verdiepen in een nieuwe programmeertaal.
+
29
** PHP
+
30
Ongetwijfeld een van de meest gebruikte talen voor het schrijven van dynamische
+
31
websites.\\
+
32
Het probleem is compleet het tegenovergestelde van [[Ruby (on Rails][Ruby]]; PHP ken ik zeer goed.
+
33
Het is daarom dat ik dit niet beschouw als een goede keuze; de taal zit vol met
+
34
beveiligingslekken, vertoont extreem raar gedrag dat niet voorkomt in Python,
+
35
+
36