Jamy Timmermans 6de jaar industriële wetenschappen Schooljaar Mentor: D. De Koker
|
|
- Jonas Bosmans
- 8 jaren geleden
- Aantal bezoeken:
Transcriptie
1 SpaceCP Jamy Timmermans 6de jaar industriële wetenschappen Schooljaar Mentor: D. De Koker
2 Literatuurstudie SpaceCP Jamy Timmermans 6de jaar industriële wetenschappen VTI Aalst Mentor: Daniel De Koker Industriële wetenschappen, informatica
3 Voorwoord SpaceCP Ik ben Jamy Timmermans en computers zijn mijn passie. Vooral de snelheid waaraan ze evolueren boeit me. Nadat ik circa 2011 mijn eigen website en eigen gameserver had, merkte ik dat het vrij vervelend en tijdrovend is om deze systemen online te zetten en te beheren. Toen kreeg ik een idee. Mijn visie: Een programma dat het instellen en vooral beheren van deze systemen pijnloos zou maken. Na in contact te komen met een zeer getalenteerde programmeur die dezelfde visie had vormden we een team en startte we ons eerste prototype: SpaceBukkit. Dit prototype werd een succes na de lancering in 2012 en werd een van de beste gratis programma s voor het beheer van Bukkit-gebaseerde servers. Omdat het een prototype was, waren er wel bepaalde beperkingen en was het ook enkel gericht naar Bukkit-servers. Hieruit kwam SpaceCP, eerst SpaceBukkit 2.0 geheten. SpaceCP zou de opvolger worden van SpaceBukkit en zou toelaten voor nog gemakkelijker beheer en nog meer flexibiliteit voor ons. Deze geïntegreerde proef gaat over de keuzes die we gemaakt hebben om SpaceCP op te bouwen. Van front-end design tot communicatie met de servers. Ik zou graag Luca Rager bedanken voor de ondersteuning bij het ontwerp van SpaceBukkit en SpaceCP. Ook wil ik alle mensen die ons geholpen hebben bij de ontwikkeling van SpaceCP bedanken voor hun constructieve input. En ten slotte zou ik mijn mentor meneer De Koker willen bedanken voor de goede opvolging en tips. De ontwikkeling van SpaceCP heeft mij veel bijgeleerd en ik hoop dat de lezer geboeid mag worden met dit werkstuk.
4 Inhoudsopgave Lijst van figuren iv Inleiding 1 1 Het ontwerp Een verbeterde versie van SpaceBukkit Wat is SpaceBukkit? Wat ontbreekt er in SpaceBukkit? SaaS: SpaceCP as a service Modulair Games Addons Volledig aanpasbaar De uitwerking van SpaceCP Keuze van de programmeertaal Wat is Node.JS? Gebaseerd op de V8 Javascript engine Evented IO Modulair WebSockets Database SQL SQL versus NoSQL UI: De user interface of gebruikersinterface Het Compound MVC framework ii
5 INHOUDSOPGAVE Model Controller View Het opbouwen van het modulaire systeem De module repository De module loader De front-end code RequireJS AngularJS jquery en jquery UI Communicatie met de gameserver Wat is RemoteToolkit? De RemoteToolkit API De SpaceCP RTK module Besluit Gebruiksscenarios De server met een klein aantal spelers De matig populaire server Het grote server netwerk Het server hosting bedrijf Besluit 23 Appendices 24 A Pakket definitie 25 B Pakket lengte 26 Bibliografie 27 iii
6 Lijst van figuren 1.1 Het SpaceBukkit logo Het SpaceCP logo Het Node.JS logo Twee oude SpaceCP designs Oude versie van het SpaceCP design Het uiteindelijke SpaceCP design Een typisch MVC schema Het RequireJS logo Het AngularJS logo Het jquery logo iv
7 Inleiding Serverbeheer is lang een zware taak geweest die enkel uitgevoerd werd door mensen met een speciale opleiding. Met de komst van online spelletjes zoals Minecraft en Team Fortress 2 willen nu ook minder technisch aangelegde mensen hun eigen servers online zetten. Dit proces gaat vaak gepaard met nachten lang op forums zoeken om een bepaalde functie te activeren of om een foutmelding op te lossen. XereoNet is een internationaal team van software ontwikkelaars, waaronder ik, die vinden dat serverbeheer gemakkelijker kan. Ons eerste project was een webapplicatie 1 die het beheer van Minecraft servers omzet naar een gemakkelijk te gebruiken website. Dit hebben we SpaceBukkit gedoopt. Als eerste project was SpaceBukkit wel vrij gelimiteerd in functionaliteit en uitbreidbaarheid. Als tweede project zijn we begonnen aan SpaceCP, waarover ik het ga hebben in deze scriptie. SpaceCP is de opvolger van SpaceBukkit en is volledig herschreven om modulair en uitbreidbaar te zijn. Deze nieuwe webapplicatie heeft als voordeel dat je meerdere spellen kan beheren vanuit dezelfde interface. Ook het gebruik van nieuwe technologieën zoals WebSockets en NodeJS laten toe dat gegevens volledig automatisch worden geüpdatet. Mijn onderzoeksvraag luidt: Hoe is SpaceCP opgebouwd en ontworpen?. Ik ga het vooral hebben over de verschillende elementen die van SpaceCP een zeer krachtig framework 2 maken. In het eerste deel leg ik het ontwerp van SpaceCP uit. In het tweede deel wordt dit ontwerp dan uitgewerkt in verschillende onderdelen. Uiteindelijk geef ik in het laatste deel nog enkele gebruiksscenarios 3 voor SpaceCP. 1 Een webapplicatie is een programma dat je kan gebruiken vanuit je webbrowser. Je hoeft deze dus niet te installeren op je pc. 2 Raamwerk: Een schematisch plan dat nog verder moet worden ingevuld. 3 Een voorbeeld van hoe een product gebruikt wordt. 1
8 LIJST VAN FIGUREN Het geheel van mijn GIP is online te vinden op Daar zijn foto s te vinden op volledige grootte, een video van SpaceCP in gebruik en ook verwijzingen naar al mijn bronnen. 2
9 Hoofdstuk 1 Het ontwerp 1.1 Een verbeterde versie van SpaceBukkit Figuur 1.1: Het SpaceBukkit logo - SpaceBukkit, zie (21) Wat is SpaceBukkit? SpaceBukkit is een controlepaneel voor Bukkit 1 servers. Het doel was om een gratis controlepaneel te ontwikkelen te dat professioneel oogt en alle belangrijke functies bevat om een server te beheren. Samen met teamleden heb ik in 2012 dit controlepaneel gerealiseerd. SpaceBukkit is heel onverwachts snel gegroeid. De vraag naar extra functies was zeer groot, waaronder een simpelere installatie en verbeteringen voor server hosting providers. SpaceBukkit was niet geschreven met deze functies in het achterhoofd dus leek de beste oplossing alles te herschrijven. Er is dan besloten om ontwikkeling aan SpaceBukkit stop te zetten en volledig te gaan voor de herschreven versie, SpaceCP. 1 Bukkit is een verbeterde versie van de server die gebruikt wordt voor het spel Minecraft. 3
10 1.2 SaaS: SpaceCP as a service Wat ontbreekt er in SpaceBukkit? SpaceBukkit was een proof-of-concept en was niet fantastisch georganiseerd. Vele onderdelen werden er tussendoor bijgevoegd en hierdoor had hele controlepaneel geen structuur. Door gebrek aan die structuur werd het onderhouden van SpaceBukkit een zware taak. Hierdoor zijn belangrijke onderdelen achterwege gebleven. De meest prominente staan in de onderstaande lijst. Real-time data Meer gericht naar hosting providers 1 Berichten Meldingen Een API Uitbreidingen 1.2 SaaS: SpaceCP as a service SpaceCP moet meer gericht zijn naar hosting providers dan SpaceBukkit. Er is wat rondgevraagd, en vele hosting providers willen gemakkelijk aan het paneel en de server van hun klanten kunnen om hulp te leveren. Om dit het gemakkelijkste te verwezenlijken werd er beslist om het SpaceCP paneel te laten uitvoeren van één centrale server van de host. Zo kunnen ook statistieken over het gebruik van de servers bijgehouden worden en kan er rechtstreeks gecommuniceerd worden met de klant. SaaS staat eigenlijk voor Software as a Service, deze term wordt gebruikt als software wordt gehosting provider in de cloud 2. 1 Een hosting provider is iemand die servers verhuurt. 2 Software in de cloud zijn programma s die niet worden uitgevoerd op de computer van de gebruiker, maar op servers van de ontwikkelaar. 4
11 1.3 Modulair 1.3 Modulair SpaceCP moet modulair zijn. Dit om andere ontwikkelaars toe te laten extra pagina s of games toe te voegen. Om dit te verwezenlijken zijn er 2 categorieën van modules voor het paneel: Games In SpaceCP kunnen er extra games of spelen toegevoegd worden. Zo differentieert het paneel zich van andere controle panelen die zich vaak focussen op één game. De ontwikkeling van het paneel start met Minecraft, maar wordt, nadat er een goede fundering is, ook uitgebreid naar andere spelen zoals Team Fortress 2, Garrys Mod, en vele anderen Addons Addons zijn onderdelen van games, een game kan meerdere addons bevatten. Een addon is best te zien als een pagina van een game. Zo is de pagina waar de spelers van een Minecraft server zichtbaar zijn, de addon players van de game bukkit Volledig aanpasbaar Gebruikers kunnen voor hun server modules gemakkelijk in en uitschakelen en enkel de pagina s tonen die voor hun belangrijk zijn, zo kunnen ze ook nieuwe addons downloaden voor hun server. 5
12 Hoofdstuk 2 De uitwerking van SpaceCP Figuur 2.1: Het SpaceCP logo - SpaceCP, zie (22) Een webapplicatie ontwikkelen is niet eenvoudig. Er moet rekening gehouden worden met verscheidene aspecten. Veel van deze aspecten hebben rechtstreeks impact op hoe de gebruiker de applicatie ervaart. Anderen zijn volledig onzichtbaar voor de gebruiker maar gaan wel gepaard met een snelheidswinst. In dit hoofdstuk wordt uitgelegd welke beslissingen er gemaakt zijn en waarom. 2.1 Keuze van de programmeertaal Bij SpaceBukkit leek PHP de enige logisch keuze, vele sites gebruiken het en het had een goede reputatie. Maar recent zijn er nog andere programmeertalen bijgekomen die web ontwikkeling toelaten, waaronder Node.JS, Ruby, Python en nog vele anderen. Bij SpaceCP is er gekozen om Node.JS te gebruiken als programmeertaal. In de onderstaande tabel staan de grootste verschillen tussen PHP en Node.JS. 6
13 2.2 Wat is Node.JS? PHP Client en server gebruiken verschillende programmeertalen Code wordt synchroon uitgevoerd Code wordt enkel uitgevoerd bij een request Een verbinding per instantie Node Client en server gebruiken dezelfde programmeertaal Code wordt asynchroon uitgevoerd Code wordt altijd uitgevoerd Duizenden verbindingen per instantie 2.2 Wat is Node.JS? Figuur 2.2: Het Node.JS logo - Node.JS, zie (11) Gebaseerd op de V8 Javascript engine Javascript is de programmeertaal die gebruikt wordt om webpaginas dynamischer te maken. Om een paar voorbeelden te geven, in Hotmail of Gmail wordt Javascript gebruikt om s te openen en te verzenden en op Facebook wordt het verzenden van berichten afgehandeld door Javascript. Javascript is niet meer weg te denken van het internet. Hierdoor zijn vele webbrowsers bezig met het verbeteren van hun Javascript engines 1. De V8 Javascript engine wordt gebruikt in de Chrome webbrowser van Google. Bij het maken van V8 is er veel aandacht gegaan naar de snelheid. Omdat het V8 project open-source 2 is, is het gebruikt om Node op te bouwen. Het grote voordeel van deze keuze is dat er veel code van de server kan worden hergebruikt op de client. Dit spaart veel tijd uit. Ook moet er maar één programmeertaal gekend zijn om te kunnen programmeren op zowel de server als op de client, beide gebruiken Javascript. 1 De Javascript engine in een browser is het deel dat de Javascript code op de pagina leest en uitvoert. 2 Open source software is software dat door iedereen gratis gebruikt, gemodificeerd en gedeeld mag worden. 7
14 2.2 Wat is Node.JS? Evented IO Node is gebouwd op het principe dat alle input en output tijd in beslag neemt. Gegevens die van het netwerk komen kunnen langer duren om aan te komen dan gegevens die van de harde schijf afkomstig zijn, zoals te zien is op de bovenstaande afbeelding. In conventionele programmeertalen wacht de code dan met verder uit te voeren en blokkeert heel het proces. Als er nog een request aankomt maakt de server gewoon een nieuw proces aan om deze nieuwe request te beantwoorden. In Node is er maar één proces, dus als er een request aankomt dat wat langer duurt kunnen er geen andere request worden beantwoord. Node lost dit op door gebruik te maken van callback functies. Dit zijn functies die worden opgeroepen wanneer een opdracht voltooid is. Dit heet men non-blocking of asynchrone IO. Anders gezegd, input/output die het hoofdproces niet blokkeert. Stel dat gebruiker A een bestand aanvraagt, dan zal Node in de achtergrond beginnen dat bestand te lezen in een ander proces. Als ondertussen gebruiker B wat info aanvraagt dat al in het geheugen staat kan Node onmiddellijk reageren op gebruiker B terwijl het bestand voor gebruiker A nog geladen wordt. Als dan uiteindelijk het bestand geladen is zal Node de callback functie uitvoeren voor gebruiker A en dan zal gebruiker A zijn bestand ontvangen. Dit is een heel goed systeem om geheugen te besparen, in tegenstelling tot Apache 1 die voor elke request een nieuw proces creëert en daarmee heel veel geheugen gebruikt. Asynchroon programmeren vergt wel een verandering in denkpatroon omdat instructies niet opeenvolgend uitvoeren. Hieronder heb ik een codevoorbeeld om het bestand contactenlijst.txt op te halen met Node. Het commando console.log schrijft de tekst tussen de haakjes uit naar het scherm. // In Node var bestand = "contactenlijst.txt"; console.log("we gaan een bestand laden..."); fs.open(bestand, "r", function (fout, inhoud) { if (fout) throw fout; // Doe iets met het bestand console.log("het bestand is geladen!"); }); 1 Een server die PHP code kan uitvoeren. 8
15 2.2 Wat is Node.JS? console.log("de code wordt verder uitgevoerd zonder onderbreking."); Dit wordt weergegeven op het scherm: > We gaan een bestand laden... > De code wordt verder uitgevoerd zonder onderbreking. > Het bestand is geladen! De functie in het commando fs.open wordt pas uitgevoerd als het bestand geladen is, de rest van de code kan dus gerust verdergaan. In het volgende voorbeeld doen we hetzelfde met PHP. Hier kan je iets naar het scherm schrijven door middel van het echo commando. <?php // In PHP echo We gaan een bestand laden... ; $inhoud = file_get_contents( contactenlijst.txt ); echo Het bestand is geladen! ; echo De code voert echter niet verder uit tijdens het laden. ;?> Hier zal het volgende zichtbaar zijn op het scherm: > We gaan een bestand laden... > Het bestand is geladen! > De code voert echter niet verder uit tijdens het laden. Hier stopt het programma volledig wanneer het bestand geladen wordt. Het asynchrone systeem houdt deze tussenpozen bruikbaar Modulair Node is ook modulair opgebouwd, dit om uitgebreide taken op te delen in kleinere sub-modules. Hierdoor is de code veel leesbaarder en veel beter onderverdeeld. Om het nog te verbeteren heeft Node ook een package repository 1. Deze repository heet NPM 2 en is zeer krachtig. Dankzij NPM is het zeer gemakkelijk om modules te installeren en te gebruiken. 1 Een plaats waar modules worden opgeslagen en van gedownload kunnen worden. 2 NPM: Node Package Manager. 9
16 2.3 Database WebSockets WebSockets is een geavanceerde technologie die toe laat om een interactieve verbinding te openen tussen de browser van de gebruiker en de server. Met deze verbinding kunnen er berichten en events van en naar de server gestuurd worden, zonder dat de client hier de hele tijd achter moet vragen. Dit in tegenstelling tot HTTP 1 dat gebaseerd is op requests. Dit is zeer goed voor realtime applicaties en games. Met deze WebSockets kunnen er gegevens zoals een chat of statistieken in realtime worden weergegeven op de client. Iets wat met AJAX 2 anders tot een hele seconde vertraagt zou zijn. WebSockets werken niet alleen met Node en zijn ook bruikbaar in PHP, maar dit werkt niet zo gemakkelijk omdat PHP scripts gebaseerd zijn op requests, en niet op events zoals Node. 2.3 Database Een database is een programma dat gegevens bijhoudt voor de applicatie. Om gegevens correct op te kunnen slaan in een database moet er op voorhand bepaald worden welke gegevens er worden opgeslagen in de database. Het opbouwen van een database is geen eenmalige taak. Naarmate de applicatie groeit en er extra functies worden aan toegevoegd, zal de database ook aangepast moeten worden om deze extra gegevens op te slaan. Er zijn veel verschillende databaseprogramma s die allemaal hun eigen karakteristieken en toepassingen hebben. Ze kunnen wel opgedeeld worden in twee categorien: SQL en NoSQL SQL SQL staat voor Structured Query Language en is de taal waarmee je met een SQL database communiceert. Een van de meest gekende voorbeelden van een SQL database is MySQL. MySQL is de meest gebruikte database voor web ontwikkeling. 1 HTTP is het protocol dat gebruikt wordt om webpagina s, foto s etc. te laden van een server. 2 Een systeem om HTTP requests uit te voeren zonder de pagina opnieuw te moeten laden. 10
17 2.4 UI: De user interface of gebruikersinterface SQL versus NoSQL Met de opkomst van NoSQL databases is er veel debat rond welk type database beter is. Als men het heeft over SQL versus NoSQL wordt er eigenlijk bedoeld, relationele databases versus niet-relationele databases. Elk van beide heeft zijn voor- en nadelen. Bij niet-relationele databases wordt er niet gecontroleerd of gegevens van een bepaald datatype zijn wanneer ze worden opgeslagen, dit gebeurt wel bij relationele databases. Deze controle is niet noodzakelijk, maar als er een fout is in de programmacode die de database uitleest zou er wel eens een probleem kunnen ontstaan. De relationele databases zijn vaak opgedeeld in meerdere tabellen die aan elkaar gelinkt zijn aan de hand van relaties. In niet relationele databases staat alle informatie in een document. Dit heeft als resultaat dat de relationele databases vaak properder ogen, maar snel heel onoverzichtelijk worden als er veel informatie wordt in opgeslagen. In niet-relationele databases staat alle informatie in één document. Op het eerste zicht oogt die niet even proper, maar alle informatie is in een oogopslag terug te vinden. Voor SpaceCP is er gekozen voor een niet-relationele database, voornamelijk omdat het makkelijker werkt vanuit Javascript. 2.4 UI: De user interface of gebruikersinterface De gebruikersinterface is één van de belangrijkste elementen van een webapplicatie. Het is het onderdeel waar de gebruiker rechtstreeks in contact mee komt. Als deze niet proper en overzichtelijk oogt zal de gebruiker minder neiging hebben om de applicatie verder te gebruiken. Bij SpaceCP is er veel tijd gestoken in het creëren van een goede gebruikersinterface die, proper en professioneel oogt, in het ruimte thema past en flexibel genoeg is om de addons in te verwerken. De volgende afbeeldingen laten zien hoe er van twee uitersten uiteindelijk een professioneel ogende gebruikersinterface is gekomen. Vergrootte versies van deze foto s zijn ook te vinden op mijn website: 11
18 2.4 UI: De user interface of gebruikersinterface Figuur 2.3: Twee oude SpaceCP designs - Het linkse design is iets wat meer speels en het rechtse iets wat professioneler. Figuur 2.4: Oude versie van het SpaceCP design - Door plaatsgebrek is voor dit design niet geopteerd. 12
19 2.5 Het Compound MVC framework Figuur 2.5: Het uiteindelijke SpaceCP design - Het resultaat van één jaar lang het design aan te passen. 2.5 Het Compound MVC framework Om het ontwikkelen van een webapp iets te vergemakkelijken kan er gebruik gemaakt worden van een zogenaamd MVC framework. Dit is een stukje software dat web requests omzet naar een vooraf bepaald systeem. MVC staat voor Model-View-Controller en bepaald de 3 belangrijkste componenten. Op de onderstaande afbeelding zie je ook een dispatcher staan, deze zorgt ervoor dat de opgevraagde pagina door de juiste controller verwerkt wordt Model Het model is de gegevenslaag van een MVC framework. Hierin worden gegevens zoals gebruikersgegevens, servergegevens, etc. opgeslagen Controller De controller voert acties uit die de gebruiker heeft opgevraagd. De controller heeft toegang tot het model om gegevens op te vragen. 13
20 2.6 Het opbouwen van het modulaire systeem Figuur 2.6: Een typisch MVC schema - Een schema van hoe een request afgehandeld word door een MVC framework. Nadat de gegevens zijn verwerkt zal de controller de respectievelijke view updaten View De view is een sjabloon van een webpagina, de controller vult bepaalde variabelen in in de view, die dan wordt weergegeven aan de gebruiker. 2.6 Het opbouwen van het modulaire systeem Om ervoor te zorgen dat SpaceCP uitgebreid kan worden is er een modulair systeem opgebouwd geweest. Dit modulair systeem moet de installatie van modules vergemakkelijken en ook automatisch updates installeren. Het is opgedeeld in twee stukken, de module repository en de module loader De module repository Modules zijn eigenlijk kleine pakketten in een gecomprimeerd formaat dat alle benodigde bestanden bevat. Zoals kort aangehaald in het vorige hoofdstuk, zijn er twee types modules, de games en de addons. Een game kan op zichzelf geen pagina s toevoegen aan het paneel, maar voegt wel een 14
21 2.7 De front-end code API toe om te communiceren met dat type server. Optioneel kunnen er ook een paar acties worden toegevoegd om het gebruik van de API te vergemakkelijken. Een addon is afhankelijk van een game, dit wordt bepaald in een van de configuratiebestanden in het pakket. In de addon staat een bepaalde pagina, die pagina heeft een controller en één of meerdere views. Deze views bepalen een enkele pagina in SpaceCP. De modules en games worden opgeslagen op een centrale repository waar iedereen van kan downloaden. De modules die op de repository komen worden wel eerst gecontroleerd door het SpaceCP team om ervoor te zorgen dat de modules geen risico vormen voor het paneel De module loader Dit onderdeel van SpaceCP is geschreven zodat we games en addons kunnen installeren en updaten zonder SpaceCP uit te moeten schakelen. Dit doen we door wat aanpassingen te maken aan het MVC framework. 2.7 De front-end code SpaceCP heeft redelijk veel front-end code, dit is Javascript code die op de browser van de gebruiker wordt uitgevoerd. Deze code is vooral voor de verbinding met de server via WebSockets, het plaatsen van de ontvangen gegevens op de pagina, de animaties etc. Er worden veel aparte libraries gebruikt in SpaceCP. Deze libraries versnellen de ontwikkeling door veelgebruikte functies te versimpelen, of door nieuwe functies toe te voegen. In dit deel ga ik het hebben over de meest prominente libraries gebruikt in SpaceCP RequireJS RequireJS is een Javascript bestand lader. Het verschil tussen het gewoon laden van Javascript bestanden en het laden via RequireJS is dat RequireJS alles asynchroon laadt. Dit heeft als resultaat dat de pagina niet blokkeert bij het laden van de bestanden. Ook zijn alle bestanden geïsoleerd van elkaar, dit maakt het hele systeem veiliger 15
22 2.7 De front-end code Figuur 2.7: Het RequireJS logo - RequireJS, zie (2) en meer gestructureerd. Het idee van RequireJS is om de applicatie op te delen in modules die andere modules laden om taken uit te voeren. Uiteindelijk zijn er dan 20 bestanden in plaats van 1, wat niet optimaal is om te laden. Hiervoor is een een onderdeel in RequireJS dat alle deel-modules compileert tot één module en dat uiteindelijke bestand wat kleiner maakt AngularJS Figuur 2.8: Het AngularJS logo - AngularJS, zie (6) HTML is een zeer goede taal om statische pagina s op te bouwen, maar er is geen ingebouwd systeem om de gegevens op de pagina s dynamisch te maken. AngularJS is een Javascript library dat dit mogelijk maakt aan de hand van directives. Deze attributen kan je in de pagina invoegen en zo de pagina dynamisch te maken. Angular staat bekend als een model-view-view-model framework, wat gelijkaardig is aan een MVC framework, enkel dat hierbij 2-way data binding is toegevoegd en de controllers eruit gehaald zijn. Bij een MVC framework zet de controller de gegevens in de view en toont dan de view aan de client. Als gegevens aangepast worden moeten we die op een andere manier terugsturen naar het model. Dit is een heel omslachtig systeem. Het MV-VM systeem van Angular werkt op een manier zodat gegevens die op de pagina worden aangepast automatisch ook worden geüpdated in het model. dit noemt men 16
23 2.8 Communicatie met de gameserver 2-way data binding, omdat de gegevens in beide richtingen aan elkaar verbonden zijn jquery en jquery UI Figuur 2.9: Het jquery logo - jquery, zie (12) jquery is een veel gebruikte library die het makkelijker maakt om DOM 1 manipulatie, animaties, AJAX en andere veelgebruikte functies uit te voeren. Dit door alles te organiseren in een makkelijk bruikbare API die universeel is in alle browsers. jquery is uitbreidbaar met allerhande plug-ins die kleine en grote zaken simpeler maken. jquery UI is een van deze plug-ins die veel interface elementen toevoegen aan je applicatie. 2.8 Communicatie met de gameserver Om gegevens van en naar de gameserver te sturen moet er een plug-in of module genstalleerd worden dat gegevens kan sturen en ontvangen. Hiervoor wordt gebruik gemaakt van RemoteToolkit Wat is RemoteToolkit? RTK is een server wrapper 2 en plug-in waarmee via een API 3 opdrachten en gegevens kunnen worden gestuurd naar de server. Ook kan de server hiermee vanop afstand op en afgezet worden. De ontwikkelaar van RTK werkt ook mee aan SpaceCP en is al even bezig met het 1 DOM: Document Object Model, dit is de interne interpretatie van de pagina, gebruikt om de pagina te renderen. 2 Een server wrapper is een programma dat server software uitvoert en beheert. 3 API: Application programming interface 17
24 2.8 Communicatie met de gameserver maken van een nieuwe versie van RTK, versie 11. Deze nieuwe versie wordt gebruikt voor SpaceCP omdat er een nieuwe API beschikbaar is die toelaat om events die op de gameserver gebeuren, door te sturen. Dit is niet mogelijk in de vorige versie van RTK De RemoteToolkit API De API in RTK is een zogenaamde persistence, evented API. Persistence wil zeggen dat het communicatiekanaal openblijft voor extra gegevens zoals events. De communicatie gaat over een TCP socket verbinding. Pakketten die over deze verbinding gaan hebben een bepaalde vorm, dit noemt men de pakket definitie. Als pakketten zich niet aan deze vorm houden kunnen we ze niet lezen. Deze definitie is te vinden in bijlage A. De eerste 2 delen zijn constanten om de integriteit van het pakket te controleren. De eerste 4 bytes zijn altijd 0x of omgezet naar tekst IPCR. Als dit niet zo is kunnen we aannemen dat het pakket ofwel niet compleet is ofwel nog een deel bevat van het vorige pakket. Hierna komt de endianness constant, dit is 1 byte 1. De endianness van een waarde bepaald hoe deze is opgeslagen in het geheugen, bij little-endian is de minst significante byte opgeslagen in het laagste geheugen adres. Bij big-endian is het dan het omgekeerde, de meest significante byte is opgeslagen in het laagste geheugen adres. De beste manier om meest en minst significante byte te begrijpen is door een nummer te nemen, bijvoorbeeld 123. Hierbij weten we dat de 1 het meeste impact heeft op de waarde van het nummer. Dit is dan het meest significante nummer. 123 wordt dus in het alledaagse leven geschreven als big-endian, omdat het meest significante nummer eerst staat. Als je dit als little-endian wilt schrijven zou dit resulteren in 321 waar het minst significante nummer eerst wordt geschreven, hier het nummer 3. In de volgende byte staan gegevens over het pakket zelf, de eerste bit 2 is een bit die weergeeft of het pakket geëncrypteerd is. De tweede bit is een waarde om weer te geven of de sessie mag beëindigd worden, als deze op 1 staat zal RTK die sessie afsluiten. de volgende 6 bits is de waarde die weergeeft met welke versie van de API dit pakket gemaakt is. 1 1 byte is 8 bits. 2 Een bit is een computerterm voor waarde in het 2-delig talstelsel. Die waarde kan ofwel 0 (onwaar) ofwel 1 (waar) zijn. 18
25 2.8 Communicatie met de gameserver Hierna komen we aan de access key. Dit is de sleutel die bij een ongeëncrypteerd pakket controleert of het wel van een geautoriseerde bron komt. Dit is de SHA256 1 van de gebruikersnaam, het wachtwoord en de salt. De volgende twee variabelen zijn enkel voor geëncrypteerde pakketten, om ervoor te zorgen dat de pakketten correct geëncrypteerd worden. Hieronder komt het belangrijke gedeelte. De gegevens van het pakket. Eerst en vooral, de session id, elk verzonden pakket heeft een andere session id om ervoor te zorgen dat geen dubbele pakketten worden verzonden. Hierna is er de lengte van het data block, dit komt later aan bod. Het volgende onderdeel is de lengte van de methode en de methode zelf, die bepaalt welke actie je wilt uitvoeren. Hierop volgen de parameters, dit zijn gegevens om instellingen mee te sturen met het pakket. Ten laatste is er dan het data blok, dit is waar extra gegevens worden in opgeslagen. Met deze definitie kan iedereen een programma schrijven dat kan communiceren met RemoteToolkit. Voor SpaceCP is eer ook een stuk code geschreven om met RTK te communiceren. Deze code is te vinden op NPM (28). Om deze pakketten te lezen kan er op twee manieren te werk gegaan worden: Aannemen dat het pakket al compleet is aangekomen en één voor één de gegevens uitlezen, of eerst controleren of het pakket volledig is door de lengte te berekenen. Hieronder wordt de berekeningen beschreven die nodig zijn on de lengte te berekenen. De Javascript code die deze berekening uitvoert is te vinden in bijlage B. Als de eerste manier gekozen wordt zal er voor elke lijn code ook een controle moeten zijn opdat er niet te veel gelezen wordt 2. Voor de tweede manier is er een functie nodig die de lengte van het pakket berekent. Deze functie moet rekening houden dat bepaalde gegevens in het pakket niet altijd dezelfde lengte hebben, waaronder de methode, de parameters en de data. Juist voor deze reden zijn er speciale plaatsen waar de lengte van die variabelen worden gegeven. Eerst wordt de lengte van de methode opgeslagen. Deze bevindt zich steeds op positie 44 in het pakket 3. Dit is te achterhalen door het aantal bytes te tellen die de methode vooraf gaan. 1 SHA256: Secure Hashing Algorithm, 256bit. Dit is een functie die een hash creëert van een bepaalde waarde. 2 Als dit gebeurt zal de server een foutmelding geven dat er meer gegevens worden opgevraagd dan er aanwezig zijn. 3 Deze posities worden bepaald vanaf positie nul, dus dit is de 45ste byte van het pakket. 19
26 2.9 Besluit Ten tweede wordt het aantal parameters opgeslagen. Deze bevindt zich na de methode, maar aangezien de methode ook een bepaalde lengte inneemt (die we hiervoor bepaald hebben), moet die lengte er ook bijgeteld worden. Het aantal parameters bevindt zich dus op positie 45 plus de lengte van de methode. Verder moet voor elke parameter ook een lengte berekend worden. In het begin van elke parameter staat zijn lengte gegeven, de som van al deze lengtes plus het aantal parameters geeft dan de lengte van het parameter gedeelte. Als laatste moet de lengte van de data nog bijgeteld worden. Deze lengte is te vinden op positie 42 van het pakket. De som van al deze lengtes bepalen de lengte van het pakket, hieruit kan worden afgeleid of er te weinig, genoeg, of te veel gegevens zijn doorgestuurd. Indien er te weinig is doorgestuurd wordt de data tijdelijk opgeslagen tot er meer data toekomt De SpaceCP RTK module Om extra acties of methodes toe te voegen aan RTK moet er een extra module geïnstalleerd worden op RTK. Voor SpaceCP wordt er een module ontwikkeld die toelaat om gegevens zoals de online spelers op de server door te sturen naar SpaceCP. 2.9 Besluit Al deze onderdelen zijn al geheel of gedeeltelijk geïmplementeerd in SpaceCP. Wat er verder nog moet worden afgewerkt zijn de addons voor Bukkit. Als deze af zijn en volledig werken kan er een bèta release worden uitgerold. Hierbij wordt dan veel aandacht besteedt aan hoe een webapplicatie best wordt uitgerold. Met de bèta kunnen we dan alle bugs 1 eruit halen zodat we een stabiel en volledig werkend product kunnen uitbrengen. Hierna kan er dan verdere aandacht besteedt worden aan uitrollen bij verschillende hosting providers. 1 bugs is een term voor fouten in computerprogramma s. 20
27 Hoofdstuk 3 Gebruiksscenarios 3.1 De server met een klein aantal spelers Een kleine server 1 kan gemakkelijk nieuwe plugins toevoegen, de spelers beheren en zien hoeveel spelers er dagelijks online zijn. Dit alles zonder veel moeite en vanop eender welke plek. 3.2 De matig populaire server Een ietwat populairdere server 2 kan met SpaceCP zijn server vlot beheren via de plugin configuratie pagina. Ook reservekopieën en het schema met geplande taken nemen veel druk van de administrator zijn schouders. De administrator kan ook extra gebruikers toevoegen. Deze extra gebruikers kunnen worden gelimiteerd tot bepaalde functies. 3.3 Het grote server netwerk In een groot server netwerk 3 is het heel belangrijk dat alle servers online blijven. Ons geïntegreerd notificatie systeem laat de administrators en de gebruikers iets weten als er zich een probleem voordoet. 1 Tussen 0 en 20 spelers. 2 Tussen 21 en 100 spelers. 3 Meerdere servers met vele spelers, meestal gebruikt om de hoeveelheid spelers te balanceren. 21
28 3.4 Het server hosting bedrijf Ook een goed overzicht hebben is zeer belangrijk. De SpaceCP backend laat toe om alle servers te sorteren op naam, adres, statistieken etc. Op deze manier kunnen de werkende servers er uit worden gefilterd en is alleen het belangrijke nog zichtbaar. 3.4 Het server hosting bedrijf Een server hosting bedrijf heeft vele servers en vele gebruikers. SpaceCP maakt het gemakkelijk voor de support teams om even een server te beheren en de fouten op te lossen. Dit zonder één keer de webbrowser te verlaten. Ook de automatisering en koppeling met verscheidene commerciële pakketten laat veel werk voor het hosting bedrijf achterwege. 22
29 Besluit Uiteindelijk komen we dan terug bij de onderzoeksvraag, hoe is SpaceCP opgebouwd en ontworpen? Heel belangrijk is het ontwerp. [zie deel 1] Als het ontwerp niet goed uitgedacht is komt er een moment dat er aanpassingen nodig zijn die veel dubbel werk opleveren voor de programmeurs. Het ontwerp loopt nauw samen met de keuze van programmeertaal omdat bepaalde interacties mogelijk verschillend verlopen in bepaalde programmeertalen. Denk aan het verschil tussen synchroon en asynchroon programmeren [zie 2.2.1]. Deze keuze beperkt ook het aantal software-bibliotheken die beschikbaar zijn. Net om deze reden is voor Javascript gekozen bij het ontwerp van SpaceCP. Met AngularJS als belangrijkste front-end bibliotheek, en CompoundJS als backend server is er veel flexibiliteit en vrijheid in de code. [zie deel 2] Het is ook duidelijk dat SpaceCP de amateurs en de server hosts helpt bij het opzetten en het beheer van hun servers en gebruikers. Maar dat SpaceCP ook een krachtig hulpmiddel is voor de doorgewinterde beheerder die zijn team van moderators toegang wil geven tot een gemakkelijk systeem. [zie deel 3] SpaceCP heeft veel potentieel en kan uitgroeien tot een heus platform voor serverbeheer van alle soorten. 23
30 Appendices 24
31 Bijlage A Pakket definitie Magic number: 4 bytes (0x for raw packets) Endianness constant: 0xAB Encrypted: bool (1 bit) Kill session flag: bool (1 bit) Packet revision: 6 bits Access key: 32 bytes == ==IF ENCRYPTION IS ON, ALL BELOW IS ENCRYPTED== == --ONLY IF ENCRYPTED-- Access key: 32 bytes Next initialization vector: 16 bytes --END-- SessionID: 4 bytes (int32) data block length: 2 bytes (unsigned short) Method name length: 1 byte Method name: n bytes Parameter count: 1 byte Parameters: Parameter length: 1 byte Parameter: n bytes Data block: n bytes (up to 65535) 25
32 Bijlage B Pakket lengte function getlength (buffer) { var a,b,c=0,d,x=0; if (buffer.length < 45) return buffer.length+1; a = buffer[44]; if (buffer.length < 46+a) return buffer.length+1+a; b = buffer[45+a]; for (var i = 0; i < b; i++) { if (buffer.length < 46+a+i+c) return buffer.length+1+a+i+c; x = buffer[46+a+i+c]; c += x; } d = buffer.readint16be(42); return 46+a+b+c+d; }; Deze code is een onderdeel van de NodeJS module voor RTK. De volledige code is te vinden op Github: 26
33 Bibliografie [1] Bolton, D., (2010). What is SQL? Geraadpleegd op 17 november 2013 via od/thebusinessofsoftware/a/whatissql.htm. [2] Burke, J., (2011). RequireJS. Geraadpleegd op 17 november 2013 via 16 [3] Cogswell, J., (2011). SQL vs. NoSQL: Which Is Better? Geraadpleegd op 17 november 2013 via [4] Cois, C. A., (2010). Understanding The Node.js Event Loop Udemy. Geraadpleegd op 16 november 2013 via [5] Foundation, M., (2012). WebSockets MDN. Geraadpleegd op 17 november 2013 via developer.mozilla.org/en/docs/websockets. [6] Google, (2010). AngularJS by Google. Geraadpleegd op 18 november 2013 via 16 [7] Hemel, Z., (2012). Node.js and The Case of the Blocked Event Loop - Zef.me. Geraadpleegd op 16 november 2013 via [8] Impact, L., (2013). Node.js vs PHP using Load Impact to visualize node.js efficiency Load Impact Blog. Geraadpleegd op 16 november 2013 via node-js-vs-php-using-load-impact-to-visualize-node-js-efficency/. [9] Initiative, O. S., (2005). The Open Source Initiative. Geraadpleegd op 22 november 2013 via http: //opensource.org/. [10] International, E., (2011). ECMAScript. Geraadpleegd op 16 november 2013 via ecma-international.org/publications/files/ecma-st/ecma-262.pdf. [11] Joyent, (2010). Node.JS. Geraadpleegd op 17 november 2013 via 7 [12] jquery Foundation, (2013). jquery. Geraadpleegd op 18 november 2013 via 17 [13] Mardanov, A., (2013). PHP vs. Node.js webapplog. Geraadpleegd op 16 november 2013 via [14] Meerdere, (2011). javascript - How to decide when to use NodeJS? - Stack Overflow. Geraadpleegd op 16 november 2013 via how-to-decide-when-to-use-nodejs. [15] Meerdere, (2013). Node.js, PHP, Javascript Confusion - Stack Overflow. Geraadpleegd op 16 november 2013 via 27
34 BIBLIOGRAFIE [16] Microsoft, (2003). Model-View-Controller. Geraadpleegd op 20 november 2013 via microsoft.com/en-us/library/ff aspx. [17] Mikoluk, K., (2013). NoSQL vs SQL - A Time for Change? Geraadpleegd op 17 november 2013 via [18] MongoDB, (2013). NoSQL Databases Explained MongoDB. Geraadpleegd op 17 november 2013 via [19] Nuzum, M., (2013). Why I switched to Node.js Bearfruit. Geraadpleegd op 16 november 2013 via [20] Persson, M., (2010). Minecraft. Geraadpleegd op 17 november 2013 via [21] Rager, L., (2011). Home - SpaceBukkit by XereoNet. Geraadpleegd op 20 november 2013 via 3 [22] Rager, L., (2013). Home - SpaceCP by XereoNet. Geraadpleegd op 20 november 2013 via http: //spacecp.xereo.net/. 6 [23] Rager, L. and Timmermans, J., (2012). SpaceBukkit Beta Web Administration the awesome way! Geraadpleegd op 20 november 2013 via web-admin-spacebukkit-beta-1-2-web-administration-the-awesome-way.58252/. [24] Resin.io, T., (2013). JavaScript, The Final Frontier. Geraadpleegd op 19 november 2013 via http: //resin.io/javascript-the-final-frontier/. [25] Shawwa, N. E., (2011). Scripting vs. Coding vs. Programming A Software Engineer s thoughts and rantings. Geraadpleegd op 16 november 2013 via scripting-coding-programming/. [26] Stones-Havas, N., ( ). RemoteToolkit - Restarts + crash detection + auto saves + remote console! Geraadpleegd op 17 november 2013 via admn-remotetoolkit-r10-a15-restarts-crash-detection-auto-saves-remote-console /. [27] Takada, M., (2011). Understanding the node.js event loop Mixu s tech blog. Geraadpleegd op 16 november 2013 via [28] Timmermans, J., (2013). RTKAPI. Geraadpleegd op 22 november 2013 via rtkapi
icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous
icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous 2006-2007 Inhoudsopgave 1 2 1.1 Programmeertaal PHP5..................... 2 1.2 MySQL database......................... 3 1.3 Adobe Flash...........................
Nadere informatieSoftware Design Document
Software Design Document Mathieu Reymond, Arno Moonens December 2014 Inhoudsopgave 1 Versiegeschiedenis 2 2 Definities 3 3 Introductie 4 3.1 Doel en Scope............................. 4 4 Logica 5 4.1
Nadere informatieInhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op
1 Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP.... 8 Joomla installeren op XAMPP... 15 Handige links... 16 2 Disclaimer Bij de samenstelling
Nadere informatieTechnisch Ontwerp W e b s i t e W O S I
Technisch Ontwerp W e b s i t e W O S I WOSI Ruud Jungbacker en Michael de Vries - Technisch ontwerp Website Document historie Versie(s) Versie Datum Status Omschrijving / wijzigingen 0.1 20 nov 2008 Concept
Nadere informatieTechnisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april 2009. Versie 2.1.0
Projectteam 6 Faculteit Natuur en Techniek Hogeschool Utrecht Projectleider: Hans Allis, hans.allis@student.hu.nl Technisch ontwerp Project "Web Essentials" 02 april 2009 Versie 2.1.0 Teamleden: Armin
Nadere informatieOpdrachtformulering (pagina 3 van 7)
Afstudeerovereenkomst van Tim Wils Bijlage 1 Opdrachtformulering (pagina 3 van 7) Dit project betreft een eigen framework (soort API) waarmee relatief gemakkelijk en in korte tijd eindproducten opgezet
Nadere informatieBeschrijving functioneel en technisch design van de website
Bespreking Punten: Beschrijving functioneel en technisch design van de website Nr. Punt 1 Student 2 Bedrijf 3 Algemene lay out 4 Technologieën 5 Webruimte en datatrafiek 1. Student Registratie Bij de registratie
Nadere informatieInhoudsopgave... 1 Disclaimer... 3 Voorwoord... 3 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op
1 Inhoudsopgave... 1 Disclaimer... 3 Voorwoord... 3 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op XAMPP... 14 Handige links... 15 2 Disclaimer Bij de
Nadere informatiePHP-OPDRACHT SITE BOUWEN
PHP-OPDRACHT SITE BOUWEN PERIODE 4 LEERJAAR 1 Opleiding: Duur: Applicatieontwikkelaar 1 onderwijsperiode (4-8 weken) Voorkennis: Basiscursus PHP 5.4 Victor Peters (978 90 125 8499 9) Basiscursus XHTML,
Nadere informatieProject plan. Erwin Hannaart Sander Tegelaar 61849 62407
Project plan Erwin Hannaart Sander Tegelaar 61849 62407 I4C2 I4C1 1 Inhoudsopgave Doel en doelgroep van het project... 3 Beschrijving van het project... 4 Benodigde materialen... 5 Te verwachten resultaten,
Nadere informatieConnect Social Business. Plan van Aanpak voor mijn stage bij ConnectSB
Connect Social Business Plan van Aanpak voor mijn stage bij ConnectSB Joey Kaan September 28, 2014 Inhoudsopgave 1 Achtergronden 1 2 Probleemstelling & Doelstelling 2 2.1 Leren Professioneel Functioneren..................
Nadere informatieConnect Social Business
Connect Social Business Joey Kaan September 2014 Inhoudsopgave 1 Achtergronden 4 2 Probleemstelling & Doelstelling 5 2.1 Leren Professioneel Functioneren.................. 5 2.2 Facebook API leren door
Nadere informatieConnect Social Business. Plan van Aanpak voor mijn stage bij ConnectSB
Connect Social Business Plan van Aanpak voor mijn stage bij ConnectSB Joey Kaan September 21, 2014 Inhoudsopgave 1 Achtergronden 4 2 Probleemstelling & Doelstelling 5 2.1 Leren Professioneel Functioneren..................
Nadere informatieInstallatiehandleiding King Webservices 2.0
Inhoud Inleiding... 2 Installatie en configuratie King Webservices... 2 King Webservices systeemeisen... 2 King Webservices installatie-eisen... 2 King Webservices installeren... 2 King Webservices inrichten
Nadere informatieIn dit hoofdstuk maak je kennis met PHP. Hoe werkt deze. programmeertaal? En hoe is het ontstaan? Ook leer je welke editors
1. Over PHP 1.1 Inleiding In dit hoofdstuk maak je kennis met PHP. Hoe werkt deze programmeertaal? En hoe is het ontstaan? Ook leer je welke editors je kunt gebruiken om PHP-scripts te maken en hoe je
Nadere informatieOver PHP. PHP en MySQL. 1.1 Inleiding. In dit hoofdstuk maak je kennis met PHP. Hoe werkt deze
Over PHP 1.1 Inleiding In dit hoofdstuk maak je kennis met PHP. Hoe werkt deze programmeertaal? En hoe is het ontstaan? Ook leer je welke editors je kunt gebruiken om PHP-scripts te maken en hoe je eenvoudig
Nadere informatieVakinhoudelijke uitwerking Keuzevak Applicatieontwikkeling van het profiel MVI vmbo beroepsgericht
Vakinhoudelijke uitwerking Keuzevak Applicatieontwikkeling van het profiel MVI vmbo beroepsgericht Deze vakinhoudelijke uitwerking is ontwikkeld door het Redactieteam van de Schooleamenbank vmbo voor dit
Nadere informatieLES 1: AAN DE SLAG MET WORDPRESS. Lesoverzicht: Aan de slag Wat is WordPress CMS Front-end Back-end Samenvatting. Tijd: 5 minuten
LES 1: AAN DE SLAG MET WORDPRESS Lesoverzicht: Aan de slag Wat is WordPress CMS Front-end Back-end Samenvatting Tijd: 5 minuten Doel: Aan het einde van deze les weet je wat WordPress is en kun je benoemen
Nadere informatieDrICTVoip.dll v 2.1 Informatie en handleiding
DrICTVoip.dll v 2.1 Informatie en handleiding Nieuw in deze versie : Koppeling voor web gebaseerde toepassingen (DrICTVoIPwebClient.exe) (zie hoofdstuk 8) 1. Inleiding Met de DrICTVoIP.DLL maakt u uw software
Nadere informatieReact en React Native voor websites en apps
React en React Native voor websites en apps H A N S-PE T E R H ARMSEN HEEFT DI T GE SCH R E V EN IN APRI L 2017 Deze whitepaper is bedoeld voor product owners en beslissers. Hij gaat over React, een JavaScript
Nadere informatiePlanbord installatie instructies
Planbord installatie instructies Uit Comprise Wiki Inhoud 1 Basis installatie 1.1 Installeren 1.1.1 Microsoft Data Access Components 1.2 De eerste keer starten 2 Veelgestelde vragen 2.1 "Network resource
Nadere informatieWerking van de Office Connector, en het oplossen van fouten.
Werking van de Office Connector, en het oplossen van fouten. De Office Connector zorgt ervoor dat de Microsoft Officeomgeving gebruikt kan worden als ontwerp en genereeromgeving voor documenten waarbij
Nadere informatieTest Joomla op je PC 1
1 Disclaimer Bij de samenstelling van dit ebook is de grootst mogelijke zorg besteed aan de juistheid en correctheid van de informatie die in dit ebook wordt verstrekt. De auteur van dit ebook kan op geen
Nadere informatieDe Kleine WordPress Handleiding
Introductie Dit is geen uitgebreide handleiding om een WordPress website of blog mee te bouwen. Het is ook geen overzicht van alle aspecten die een WordPress website zo bijzonder maken en geen verhandeling
Nadere informatieWordPress in het Kort
WordPress in het Kort Een website maken met Wordpress. In minder dan één uur online! Inclusief installatie van een thema en plugins Alle rechten 2013, Rudy Brinkman, BrinkhostDotCom, http://www.brinkhost.nl
Nadere informatieicafe Een digitaal bestelsysteem voor de horeca Joeri Verdeyen Stefaan De Spiegeleer Naim Ben Tanfous
icafe Een digitaal bestelsysteem voor de horeca Joeri Verdeyen Stefaan De Spiegeleer Naim Ben Tanfous 2006-2007 Voorwoord 1 Inhoudsopgave 2 Hoofdstuk 1 Inleiding 3 Hoofdstuk 2 icafe 2.1 Het idee 2.2 Mogelijkheden
Nadere informatie10. Single Page Applications
WHITEPAPER IN 5 MINUTEN M E I 2 0 1 4 10. Single Page Applications Introductie De wereld verandert snel en gebruikers openen je site of applicatie steeds minder met een traditionele browser. Een site of
Nadere informatie01/05. Websites Nederland over. Mobile marketing. Whitepaper #03/2013. Mabelie Samuels internet marketeer
01/05 Websites Nederland over Mobile marketing Mabelie Samuels internet marketeer 02/05 Mobile marketing Kunt u zich uw eerste mobiele telefoon nog herinneren? Die van mij was een Motorola, versie onbekend,
Nadere informatieAnalyse Programmeertalen
Analyse Programmeertalen De keuze van een programmeertaal mag niet onderschat worden. Het is dankzij deze taal dat de gebruiker interactie heeft met het complete systeem. Het is dus vanzelfsprekend dat
Nadere informatieSoftware Test Plan. Yannick Verschueren
Software Test Plan Yannick Verschueren November 2014 Document geschiedenis Versie Datum Auteur/co-auteur Beschrijving 1 November 2014 Yannick Verschueren Eerste versie 1 Inhoudstafel 1 Introductie 3 1.1
Nadere informatieLearnOSM. PostgreSQL & PostGIS. PostgreSQL en PostGIS installeren. Bijgewerkt
PostgreSQL & PostGIS Bijgewerkt 10-09-2016 LearnOSM In dit hoofdstuk zullen we laten zien hoe PostgreSQL in te stellen op Windows en hoe een database te maken waarin u geografische gegevens kunt opslaan.
Nadere informatieXAMPP Web Development omgeving opzetten onder Windows.
XAMPP Web Development omgeving opzetten onder Windows. Inhoudsopgave 1. Lees dit eerst... 2 2. Inleiding... 2 1 Xampp downloaden... 2 2 Installatie Xampp 1.7.4 op externe harddisk... 3 3 XAMPP herconfiguren...
Nadere informatieKleine cursus PHP5. Auteur: Raymond Moesker
Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven
Nadere informatieINSTALLATIE NIS UPDATE Q3-2014-03 Q3-2014-03
INSTALLATIE NIS UPDATE Q3-2014-03 Q3-2014-03 2014 Van Brug Software B.V. Hoewel deze handleiding met zeer veel zorg is samengesteld, aanvaardt Van Brug Software B.V. geen aansprakelijkheid voor enige schade
Nadere informatie4 ASP.NET MVC. 4.1 Controllers
4 ASP.NET MVC ASP.NET is het.net raamwerk voor het bouwen van webapplicaties. De MVC variant hiervan is speciaal ontworpen voor het bouwen van dergelijke applicaties volgens het Model-View-Controller paradigma.
Nadere informatieLes 10 : Aanmaken van een database (deel2).
Les 10 : Aanmaken van een database (deel2). Wat is een database? Een centrale opslagruimte voor gegevens. Alle informatie wordt centraal opgeslagen en kan door iedereen geraadpleegd worden. Voordelen van
Nadere informatieWaarom gebruiken web- ontwikkelaars Wordpress als CMS?
Waarom gebruiken webontwikkelaars Wordpress als CMS? Figuur 1 Naam: René Sasbrink Klas: IS106 Studentnummer: 500729630 Opleiding: ICT voltijd, Software Engineer Instelling: Hogeschool van Amsterdam Vak:
Nadere informatieAngular Best Practices Door Alex en Chris van Beek
Angular Best Practices Door Alex en Chris van Beek Over ons Enthousiastelingen Software Architecten bij Luminis Arnhem B.V. Gespecialiseerd in Microsoft technologie:.net, Azure en Windows Twitter: @Beekje
Nadere informatieMicrosoft Office 365 voor bedrijven. Remcoh legt uit
Microsoft Office 365 voor bedrijven Remcoh legt uit Beter samenwerken, ook onderweg Starten met Office 365 is starten met het nieuwe werken. Met Office 365 heeft u namelijk de mogelijkheid om altijd en
Nadere informatieVoordat er optimaal gebruik gemaakt kan worden gemaakt van Magister 5 via het web, kan deze FAQ mogelijk van pas komen.
Silverlight FAQ t.b.v. Magister 5 Voordat er optimaal gebruik gemaakt kan worden gemaakt van Magister 5 via het web, kan deze FAQ mogelijk van pas komen. Zie de algemene Microsoft Silverlight FAQ op: http://www.microsoft.com/silverlight/faq/
Nadere informatieOpenX Hosting. Opties en Alternatieven
OpenX Hosting Opties en Alternatieven Versie 1.0 Groningen, 9 juni 2009 Opgesteld door: Copyright 2009 ErikGeurts.com B.V. Niets uit dit document mag worden verveelvoudigd, opgeslagen in een geautomatiseerd
Nadere informatieAls eerste bedankt voor het aanschaffen van deze PDF waarin ik je handige tips en trucs zal geven over het schrijven van een handleiding.
Bedankt! Als eerste bedankt voor het aanschaffen van deze PDF waarin ik je handige tips en trucs zal geven over het schrijven van een handleiding. Graag zou ik je willen vragen mij een email te sturen
Nadere informatie1 "log-file": "/var/log/pilight.log" 2 "log-file": "c:/pilight/pilight.log"
Instellingen Instellingen...1 Introductie...2 Basis...2 port...2 standalone...2 pid-file...2 log-file...2 log-level...2 whitelist...3 stats-enable...3 watchdog-enable...3 Module paden...4 action-root...4
Nadere informatieXampp Web Development omgeving opzetten onder Windows.
Xampp Web Development omgeving opzetten onder Windows. Inhoudsopgave 1. Lees dit eerst... 2 2. Inleiding... 2 3. Installatie Xampp... 3 1.1 Installatie Xampp Launcher... 7 1.2 Controle geïnstalleerde bestanden...
Nadere informatieAppendix 1 Teamplayers
Appendix 1 Teamplayers (vaardigheden worden aangegeven qua niveau in starter/redelijk/) Teamlid Programmeur/ontwikkelaar 1 Programmeertalen PHP Algemeen (Object Oriented) PHP Zend Framework (1&2) PHP Symfony
Nadere informatieBeginnen met businessdesk
Beginnen met businessdesk Inleiding De businessdesk oplossingen van Desk Solutions zijn specifieke oplossingen die u een flexibele desktop omgeving leveren zonder dat u zich zorgen hoeft te maken over
Nadere informatieHTML. Media. Hans Roeyen V 3.0
Media Hans Roeyen V 3.0 12 maart 2015 Inhoud 1. (Multi)Media op websites... 3 2. Flash en Websites... 4 3. Video op je website... 4 3.1. YouTube insluiten op de pagina... 4 3.2. Video zonder YouTube...
Nadere informatieEen database gebruiken
Een database gebruiken In een vorige handleiding heb ik laten zien hoe je met Scratch soortgelijke gegevens kunt opslaan in een lijst om deze op een later moment weer op te halen. Als voorbeeld las ik
Nadere informatie9. MYSQL. Daarin zien we het administratie paneel van mysql.
9. MYSQL We kunnen ook in dit systeem gebruik maken van de gekende ACCESS databanken. Zolang het maar relationale databanjken zijn kunnen we er gebruik van maken. In PHP echter maakt men meestal gebruik
Nadere informatiei ll take off to the cloud
i ll take off to the cloud Webbased applicaties gebouwd door ILE programmeurs Gepresenteerd door: Drs. Martijn van Breden Lead software architect Pantheon Automatisering 26-4-2017 1 Historie Pantheon Ontstaan
Nadere informatieHandleiding voor het installeren van Tomcat7
Handleiding voor het installeren van Tomcat7 Brondocument C:\WebServer\Handleiding\Tomcat\InstallerenTomcat.odt Versiebeheer Versie Datum Uitleg 1.0v 22-05-06 1e versie Tomcat 5.5 1.1v 24-05-06 Aanpassingen
Nadere informatieINSTALLATIE NIS UPDATE Q2-2014-02 Q2-2014-02
INSTALLATIE NIS UPDATE Q2-2014-02 Q2-2014-02 2014 Van Brug Software B.V. Hoewel deze handleiding met zeer veel zorg is samengesteld, aanvaardt Van Brug Software B.V. geen aansprakelijkheid voor enige schade
Nadere informatieAnalyse probleem remote execution
Analyse probleem remote execution Karel Nijs 2005-09-28 1.1 Beschrijving van het project De bedoeling van de GUI is een gemakkelijke uitvoering van verschillende checks van ICs. De GUI moet in Tcl/Tk ontworpen
Nadere informatieInstallatiehandleiding. Facto minifmis
Installatiehandleiding Facto minifmis 1. Installatie Facto MiniFMIS 1.1 Achtergrond Facto MiniFMIS biedt facilitaire organisaties een eenvoudige en gebruikersvriendelijke hulpmiddel bij het uitvoeren van
Nadere informatieSoftware Design Document
Software Design Document PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar 2014-2015 Jens Nevens - Sander Lenaerts - Nassim Versbraegen Jo De Neve - Jasper Bevernage Versie
Nadere informatieINSTALLATIE NIS UPDATE 2014-Q4-01 2014-Q4-01
INSTALLATIE NIS UPDATE 2014-Q4-01 2014-Q4-01 2014 Van Brug Software B.V. Hoewel deze handleiding met zeer veel zorg is samengesteld, aanvaardt Van Brug Software B.V. geen aansprakelijkheid voor enige schade
Nadere informatieBeveiligingsbeleid. Online platform Perflectie
Beveiligingsbeleid Online platform Perflectie 2018 Beveiligingsbeleid Perflectie Versiebeheer Naam Functie Datum Versie Dimitri Tholen Software Architect 12 december 2014 1.0 Dimitri Tholen Software Architect
Nadere informatieMamut Business Software
Mamut Business Software Eenvoudige installatiehandleiding Inhoud Voor de installatie 3 Over het programma 3 Over de installatie 3 Tijdens de installatie 5 Voorwaarden voor installatie 5 Zo installeert
Nadere informatieSCENARIO ADVIES INSTALLATIEHANDLEIDING. Versie 1.3
SCENARIO ADVIES INSTALLATIEHANDLEIDING Versie 1.3 1 Handleiding Installatie Scenario Advies... 1 2 Voorbereiding installatie Scenario Advies... 1 2.1 Downloaden programmatuur... 2 3 Serverinstallatie Scenario
Nadere informatieInformatie & Databases
Informatie Wat is informatie en waaruit het bestaat? Stel op een kaart staat het getal 37 geschreven. Wat kun je dan zeggen van het cijfer 37? Niets bijzonders, toch? Alleen dat het een getal is. Gaat
Nadere informatieWaarom automatiseren?
Chris De Clercq Waarom automatiseren? Wanneer u uw manier van werken hebt geautomatiseerd, zal u zich afvragen hoe u het vroeger zonder heeft gedaan Automatiseren helpt u bij: - communicatie efficiënter
Nadere informatieProfessionele Direct Mail Software. Database Engine Ontwerpen & Printen Bestandsonderhoud Ontdubbelen Scripting Adrescorrectie Postale Sortering
Professionele Direct Mail Software Database Engine Ontwerpen & Printen Bestandsonderhoud Ontdubbelen Scripting Adrescorrectie Postale Sortering Een Compleet en Modulair Direct Mail Systeem FlexMail is
Nadere informatieObject Oriented Programming
Object Oriented Programming voor webapplicaties Door Edwin Vlieg Waarom OOP? Basis uitleg over OOP Design Patterns ActiveRecord Model View Controller Extra informatie Vragen OOP Object Oriented Programming
Nadere informatieLes 9: formulier controle met javascript.
Les 9: formulier controle met javascript. Javascript is erg veel gebruikt bij internet toepassingen. In tegenstelling tot PHP, wat een server side scripting is, is java client side scripting. Dwz, niet
Nadere informatieINSTALLATIE NIS UPDATE 2014-Q4 2014-Q4
INSTALLATIE NIS UPDATE 2014-Q4 2014-Q4 2014 Van Brug Software B.V. Hoewel deze handleiding met zeer veel zorg is samengesteld, aanvaardt Van Brug Software B.V. geen aansprakelijkheid voor enige schade
Nadere informatieInstallatiehandleiding SCENARIO ADVIES. Oktober Versie 1.3
Installatiehandleiding SCENARIO ADVIES Oktober 2015 Versie 1.3 Hoofdstuk 1, Installatiehandleiding Scenario Advies Inhoud 1 Installatiehandleiding Scenario Advies... 1 2 Voorbereiding installatie Scenario
Nadere informatieProjectHeatmap. Onderzoeksrapport v0.5 11-03-11 Dennis Wagenaar
ProjectHeatmap Onderzoeksrapport v0.5 11-03-11 Dennis Wagenaar 1 Inhoudsopgave Inleiding...3 Gheat...4 Info...4 Voordelen...4 Nadelen...4 Google Fusion Tables...5 Info...5 Voordelen...5 Nadelen...5 OLHeatmap...6
Nadere informatie// Mamut Business Software
// Mamut Business Software Eenvoudige installatiehandleiding Inhoud Voor de installatie 3 Over het programma 3 Over de installatie 4 Tijdens de installatie 5 Voorwaarden voor installatie 5 Zo installeert
Nadere informatieRemote Back-up Personal
handleiding Remote Back-up Personal Versie 4 1 INLEIDING... 3 1.1 SYSTEEMEISEN... 3 1.2 BELANGRIJKSTE FUNCTIES... 3 2 INSTALLATIE BACK-UP MANAGER... 4 2.1 VOLLEDIGE DATA BESCHIKBAARHEID IN 3 STAPPEN...
Nadere informatieProblemen met de stand-by tijd van uw iphone met ios 7.
Problemen met de stand-by tijd van uw iphone met ios 7. versie 1.2 - februari 2014 Inleiding Voor u ziet u nu het document Problemen met de stand-by tijd van uw iphone met ios 7. Dit document is u aangeleverd
Nadere informatieTinus Plotseling 29-12-2002. MySQL
Tinus Plotseling 29-12-2002 MySQL Inhoudsopgave Inleiding... 3 MySQL Geschiedenis... 3 MySQL Toepassingen... 3 MySQL Voordelen... 4 MySQL Nadelen... 4 MySQL bij ASCI... 4 PostgreSQL... 5 ORACLE... 6 MS
Nadere informatieZIEZO Remote Back-up Personal
handleiding ZIEZO Remote Back-up Personal Versie 4 1 INLEIDING... 3 1.1 SYSTEEMEISEN... 3 1.2 BELANGRIJKSTE FUNCTIES... 3 2 INSTALLATIE BACK-UP MANAGER... 4 2.1 VOLLEDIGE DATA BESCHIKBAARHEID IN 3 STAPPEN...
Nadere informatieTerminal Services. Document: Terminal Services T.b.v. relatie: Isaeus Auteur: Martin Waltmans Versie: 2.3 Datum: 20-3-2007 KB nummer: 100010
Terminal Services Dit document beschrijft hoe op afstand kan worden ingelogd op een Terminal Server. Lees dit document zorgvuldig, voordat u voor het eerst hiervan gebruik maakt! Isaeus Solutions Tel:
Nadere informatieTechnische implementatie De infrastructuur rondom Transit kent de volgende rollen:
Transit Herkent u het? Steeds dezelfde uitdagingen in migratieprojecten; meerdere variabelen, in verschillende stadia en in een blijvend veranderende omgeving, managen. Grote hoeveelheden gegevens over
Nadere informatieGrafisch ontwerp. Referenties. https://developers.google.com/webmasters/mobile-sites/ http://www.bluetrainmobile.com/mobile-showcase
Mobiel Datanose Op dit moment is mobiel datanose niet goed gedaan; je krijgt gewoon de site te zien zoals je het te zien krijgt op pc's of laptops. Maar vaak heb je het probleem dat je op je mobiel moet
Nadere informatieInstallatiehandleiding FWG 3.0/2011-2012. Stand-alone / Netwerkversie. Nieuwe Installatie van FWG 3.0/2011-2012 met een MS Access database
Installatiehandleiding FWG 3.0/2011-2012 Stand-alone / Netwerkversie Nieuwe Installatie van FWG 3.0/2011-2012 met een MS Access database Wij willen u er op wijzen dat ons systeem FWG3.0 Cd-rom versie dit
Nadere informatie(Versie 1.4) THUISWERKPLEK INSTELLEN
(Versie 1.4) THUISWERKPLEK INSTELLEN Inhoud thuiswerkomgeving... 3 Installeren software op thuiswerkplek(eenmalig)... 5 Verbinding maken met de werkplek vanaf thuis... 9 Verbinding maken met de werkplek
Nadere informatieHandleiding OpenCart - factuursturen.nl
Handleiding OpenCart - factuursturen.nl www.webwinkelfacturen.nl Samenvatting Dit is de handleiding voor de koppeling van OpenCart naar Factuursturen.nl. De koppeling zorgt dat voor bestellingen in OpenCart
Nadere informatieInstallatiehandleiding Business Assistent
Installatiehandleiding Business Assistent Wijzigingsgeschiedenis Versie Datum Omschrijving Status 0.1 25-09-2014 Eerste opzet van het installatie Concept document. 1.0 04-11-2014 Geen: Commercieel maken
Nadere informatieINSTALLATIE EXCHANGE CONNECTOR
HANDLEIDING INSTALLATIE EXCHANGE CONNECTOR INSTALLATIE EXCHANGE CONNECTOR 0 0 HANDLEIDING INSTALLATIE EXCHANGE CONNECTOR INSTALLATIE EXCHANGE CONNECTOR HANDLEIDING datum: 10-08-2018 1 Inleiding... 1 2
Nadere informatieKoppeling met een database
PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt
Nadere informatieJavascript oefenblad 1
Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de
Nadere informatieTHUISWERKEN INSTELLEN VERSIE 1.2
THUISWERKEN INSTELLEN VERSIE 1.2 Inhoud thuiswerkomgeving... 3 Installeren software op thuiswerkplek(eenmalig)... 5 Verbinding maken met de werkplek vanaf thuis... 9 Verbinding maken met de werkplek via
Nadere informatieNaam: Sander van Schie Datum: 28-03-2014 Klas: SBICO-IB2 Doel: Uitleg Toegang tot vcloud Doelgroep: Nieuwe cursisten Versie: 1.0.0
Naam: Sander van Schie Datum: 28-03-2014 Klas: SBICO-IB2 Doel: Uitleg Toegang tot vcloud Doelgroep: Nieuwe cursisten Versie: 1.0.0 1 Inhoudsopgave Inleiding... 3 Stap 1: Inloggegevens en wachtwoord...
Nadere informatieHTML Graphics. Hans Roeyen V 3.0
HTML Graphics Hans Roeyen V 3.0 19 maart 2015 Inhoud 1. HTML5 Canvas... 3 1.1. Het Canvas element... 3 2. SVG Element... 9 2.1. SVG vergeleken met Canvas... 9 2.2. Een cirkel tekenen met SVG... 10 2.2.1.
Nadere informatieGeert Dekkers Web Studio info@nznl.net +31(0)6 27 224 301
Geert Dekkers Web Studio info@nznl.net +31(0)6 27 224 301 Persoonlijk Geert Dekkers, geb 1955, opleidingen in educatie en de kunsten. Programmeert websites sinds 1998. Als programmeur grotendeels autodidact,
Nadere informatieSparse columns in SQL server 2008
Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : info@dla-os.nl www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG
Nadere informatieInteractief, real time security management
P2000 en P2000LE SECURITY MANAGEMENT SYSTEEM Interactief, real time security management P2000 Security Management Systeem Schaalbaar, intuïtief en eenvoudig in gebruik Het Johnson Controls P2000 security
Nadere informatieSURFconext Cookbook. Het koppelen van Alfresco aan SURFconext. Versie: 1.0. Datum: 8 december 2013. 030-2 305 305 admin@surfnet.nl www.surfnet.
SURFconext Cookbook Het koppelen van Alfresco aan SURFconext Auteur(s): Frank Niesten Versie: 1.0 Datum: 8 december 2013 Radboudkwartier 273 3511 CK Utrecht Postbus 19035 3501 DA Utrecht 030-2 305 305
Nadere informatieWebapplication Security
Webapplication Security Over mijzelf 7 jaar in websecurity Oprichter van VirtuaX security Cfr. Bugtraq Recente hacks hak5.org wina.ugent.be vtk.ugent.be... Aantal vulnerable websites Types vulnerable
Nadere informatieMeehelpen met de ontwikkeling van nieuwe of verbetering van bestaande spellen. Pag. 1 www.edubas.nl
Meehelpen met de ontwikkeling van nieuwe of verbetering van bestaande spellen. Pag. 1 Versie 1.0 februari 2015 Start-versie Over dit document In dit document probeer is duidelijk te maken hoe de spellen
Nadere informatieDe voordelen van Drupal
Drupal is een open source Content Management System (CMS). Daarnaast kun je Drupal zien als een framework, dit betekent dat je modules (oftewel mini-applicaties) kunt implementeren in je installatie van
Nadere informatieHoe stel ik mijn favorieten en wachtwoorden veilig met LastPass en Xmarks?
Hoe stel ik mijn favorieten en wachtwoorden veilig met LastPass en Xmarks? Handleiding van Auteur: Jan Stedehouder Februari 2012 Hoeveel favorieten heb je in de webbrowser opgeslagen? En wachtwoorden?
Nadere informatie