DEPARTEMENTBEDRIJFSINFORMATIEBINF OPLEIDINGTOEGEPASTEINFORMATICA Schoonmeersstraat GENT ACADEMIEJAAR STAGEDOSSIER

Maat: px
Weergave met pagina beginnen:

Download "DEPARTEMENTBEDRIJFSINFORMATIEBINF OPLEIDINGTOEGEPASTEINFORMATICA Schoonmeersstraat 52 9000 GENT ACADEMIEJAAR2006-2007 STAGEDOSSIER"

Transcriptie

1 DEPARTEMENTBEDRIJFSINFORMATIEBINF OPLEIDINGTOEGEPASTEINFORMATICA Schoonmeersstraat GENT ACADEMIEJAAR STAGEDOSSIER ONDERWERP:Ontwerpenbackup/sizing tool STUDENTEN: ThomasDebrayen Pieter Vercammen ADRES: Zavelstraat 72, B3071Kortenberg BEDRIJF: SourceNV-SA STAGEBEGELEIDERS: ChristopheChanteuxen Bart Verstreken STAGEMENTOR: Margot DeDonder

2 Inhoudsopgave VOORWOORD...2 SOURCE NV/SA... 3 DE OPDRACHT... 4 Inleiding... 4 Meetingverslag: de doelstellingen... 5 Meetingverslag: stroomlijnen van de doelstellingen... 6 ONDERZOEK...8 Inleiding... 8 HP StorageWorks Sizing Tool...10 Dell Storage Advisor Besluit OPSTELLEN OMGEVING Installatie Apache, PHP en Mysql Installatie SVN server Software Eclipse Adobe Photoshop en ImageReady Microsoft Visual Web Developer PuTTY...17 Gantt Project ONTWERP...18 De onderdelen Het framework De plugin...20 De administratortool De database De front-end Inleiding De template DIAGRAMMEN Het framework De statussen...32 De objecten De manager De XML Loader...35 De webservice Het laden van de plugins Het aanmaken van een sessie Een actie uitvoeren via de webservice De plugin...47 De objecten De database De opstartklasse De mapper De administratortool De actionlisteners De database De mappers

3 Het opbouwen van de tree...57 Het opbouwen van de gui...58 De nodes...59 De taalmanager De Front-end De web reference Het resetten van de tool...63 TESTEN JUnit testen Losse testen & debugging...65 Monkey testen...65 Eindgebruiker-testen USE CASES Use case: doorlopen storage/backup sizing tool op de website Use case: Administratortool - Aanmaken van een vraag...67 Use case: administratortool Verwijderen van een vraag Use case: Administratortool - Deactiveren van een vraag...69 Use case: Administratortool Vraagstelling wijzigen Use case: Administratortool Toevoegen van een antwoord Use case: Administratortool Antwoordstelling wijzigen...72 Use case: Administratortool Aanmaken van een solution Use case: Administratortool Wijzigen van een solution...74 Use case: Administratortool Verwijderen van een solution Use case: Administratortool - Deactiveren van een solution...76 Use case: Administratortool Activeren van een plugin Use case: Administratortool Deactiveren van een plugin...78 SLOTWOORD BIBLIOGRAFIE BIJLAGEN Planning Logboek

4 VOORWOORD Wij, Thomas Debray en Pieter Vercammen, zijn twee gedreven studenten Toegepaste Informatica aan de Hogeschool Gent die reeds samen aan verscheiden projecten hebben deelgenomen. Zo hebben we reeds een beheertool voor stages en een chatserver (en -client) op het TCP/IP protocol ontwikkeld, projecten die alle succesvol beëindigd zijn. Niet voor niets lag een degelijk stageproject aan de basis van een nieuwe uitdaging. Wij hebben deze opdracht gekozen omdat de firma Source ons een kans bood die wij nergens anders konden terugvinden. Weinig stageopdrachten hielden immers in dat er een tool ontwikkeld moest worden waarvoor er nog (bijna) geen alternatieven op de markt waren en nog steeds niet zijn. Bovendien zou de tool een belangrijke rol spelen in het verdere verloop van de communicatie van Source met de buitenwereld. Hoewel de afstand (Gent Kortenberg) enig discussiepunt was, hebben we dit nooit als hekelpunt gerekend. Het deelnemen aan een stageproject vraagt veel inzet en doorzettingsvermogen. Tijdens het tot stand komen van ons project konden we steeds rekenen op raad en daad van derden. We willen van deze gelegenheid dan ook gebruik maken om enkele mensen te bedanken. Eerst en vooral willen wij de heren Bart Verstreken en Christophe Chanteux, onze stagementoren bij Source, bedanken voor hun gedreven medewerking aan ons project. Zonder hun advies en ondersteuning was het voor ons onmogelijk geweest om deze klus te klaren. Graag hadden wij ook mevrouw Margot De Donder, onze stagementor, bedanken voor de adviezen en ondersteuning die wij van haar kregen. Tot slot wouden wij ook de mensen van Source bedanken voor hun steun en begeleiding en het management voor het verstrekken van de door ons genoten faciliteiten. 2

5 SOURCE NV/SA Source1 is al sinds 1991 actief op de Belgisch markt. Source is gestart als integrator voor UNIX oplossingen van Sun Microsystems. Al snel werden er storage en archiverings oplossingen aangeboden op dit unix platform. Storage kende reeds in de jaren 90 een sterke groei en er werd vooral gezocht naar veilige en stabiele oplossingen. Op die manier werd het product portfolio van Source reeds sterk in de richting van storage uitgebouwd. Source is toen gestart met het verkopen van Amass software (virtueel filesysteem voor optical en tape libraries) en Legato Networker (backup software). Voor deze 2 oplossingen waren het vooral de grotere klanten die interesse hadden. Klanten zoals Belgacom en Bacob bank waren al snel referenties voor dit type software. Om het klanten portfolio uit te breiden is Source toen beginnen samen werken met partners. Andere resellers hadden dikwijls een betere account management bij deze grotere klanten. Op die manier is Source uitgegroeid tot een volwaardige CDP (Channel Development Partner) Source heeft er toen ook voor gekozen om 100 % samen te werken met andere integrators en dus zelf niks meer rechtstreeks te verkopen. Dit is een vrij uniek principe in België en zal je waarschijnlijk niet in grotere landen terug vinden. Source is dan ook een verlengstuk van een reseller op technisch vlak. De reseller is sterk in account management en Source vult het technische luik in (pre en after-sales support). De laatste jaren heeft Source zich nog verder toegelegd om zijn kennis van de storage markt uit te breiden. Er is ook de keuze gemaakt om het aantal vendors drastisch te beperken, op die manier is er voldoende focus zodat de technische kennis optimaal is. De vendors die Source op een pro-actieve manier vertegenwoordigd zijn EMC, Sun Microsystems en Bakbone. Er zijn nog een aantal andere vendors die op het portfolio van Source staan, maar eerder op een passieve manier. Dit wil zeggen dat indien deze passen in een bepaald project ze verder zullen bekeken worden. Op deze manier heeft Source een unieke positie in de markt verkregen. Source heeft dan ook recent 2 awards gekregen als beste storage CDP. Verder heeft Source ook een training center uitgebouwd waar zowel op maat gemaakte als gecertifieerde storage trainingen worden gegeven. Sinds een aantal jaar is Source ook actief in Nederland. Het is de bedoeling dezelfde manier van werken uit te bouwen zoals in België. Vandaag zijn er maar weinig CDP s die zo gefocussed werken met een aantal vendors. Het is de bedoeling ook deze manier van werken te handhaven in de toekomst. Natuurlijk is het ook zo dat de hele IT markt steeds onderhevig is aan veranderingen. Het kan dus best zijn dat Source zijn strategie in de toekomst aanpast aan de behoeften van de markt. 1 3

6 DE OPDRACHT Inleiding Aangezien Source een heel nauw contact met de resellers heeft, houdt dit ook in dat er een drempel aanwezig is om Source te contacteren. Potentiële klanten en eindgebruikers bellen niet gemakkelijk met vragen over hun backup en storage noden. Dit komt enerzijds omdat ze dit contact langs te direct vinden. Anderzijds vrezen ze dat Source vragen gaat stellen waarop ze niet meteen een antwoord kunnen geven. Met andere woorden kan men stellen dat de huidige situatie zeer tijdrovend is voor de (potentiële) klant. Vanwege deze reden gaf Source de opdracht een marketingtool te ontwikkelen die een advies kan geven aan potentiële eindklanten wat betreft backupmogelijkheden. Het concept moet eenvoudig zijn en de gebruiker doen nadenken over zijn huidige omgeving. Om dit te bereiken moet de tool de klant een aantal gerichte vragen stellen en aan de hand van de ingevoerde antwoorden nieuwe relevante vragen stellen. Dit proces moet doorgaan totdat de tool voldoende informatie heeft om een rapport te genereren met daarin een advies. Dit advies moet algemeen blijven omdat het niet de bedoeling is de klant een offerte te tonen na het doorlopen van de vragenlijst, maar eerder te informeren over de producten van Source. Een andere vereiste was dat de tool modulair moest zijn. Het kan immers steeds interessant zijn de tool later uit te breiden met nieuwe functionaliteiten. In dat geval moeten deze op een snelle en eenvoudige manier in de huidige tool geïmplementeerd kunnen worden. De grootste eis was echter dat de tool gebruiksvriendelijk en portabel moest zijn. De portabiliteit houdt in dat de tool op elke computer moet werken, onafhankelijk welk platform er gebruikt wordt. Daarnaast moet het mogelijk zijn dat er meerdere vragenlijsten op de website beschikbaar zijn, elk afzonderlijk beheerbaar. De gebruiksvriendelijkheid houdt in dat het beheer en het doorlopen van de vragen op een eenvoudige en efficiënte manier gebeurt. Bovendien moeten aanpassingen eenvoudig aangebracht kunnen worden zonder dat de gebruiker enig inzicht in de geschreven code moet hebben. Tot slot moest alles ook voldoende gedocumenteerd worden opdat - indien dit later nodig zou blijken -aanpassingen op eenvoudige wijze doorgevoerd kunnen worden. Op de volgende bladzijde vindt u een samenvattend meetingverslag van 11 december 2006, waarin de doelstellingen van het project aangehaald werden. 4

7 Meetingverslag: de doelstellingen De doelstelling van de tool is het uitbrengen van een advies over backup mogelijkheden op basis van een vragenlijst. De sizing tool moet, via een webinterface, de mogelijkheid bieden aan de gebruiker om een aantal vragen, over zijn huidige omgeving (focus op open systemen dus geen mainframe), te beantwoorden. Op basis van deze antwoorden moet de sizing tool dan een rapport/advies uitbrengen over de huidige situatie en de mogelijke toekomstige omgevingen (via simulaties). Het resultaat kan ook zijn dat er consulting nodig is. De basis moet makkelijk aanpasbaar zijn (technologie verandert voortdurend) basis parameters: normen die niet vaak veranderen geavanceerde parameters: nodig voor een meer diepgaande analyse/advies Nice to have parameters: waar rekening mee gehouden moet worden naar de toekomst Niet uit het oog verliezen dat het om een commerciële tool gaat Niet te technisch invulbaar in een aanvaardbare tijdspanne (bv 10 minuten) evt werken in verschillende stappen en stelselmatig resultaat weergeven => motivatie Om de applicatie een duurzaam leven te bieden, dient er geprogrammeerd te worden volgens standaarden en normen. Er dient ook een help functie aangemaakt te worden (voor gebruikers, beheerders en ontwikkelaars) Data catalogeren: de gebruiker moet aangezet worden om hierover na te denken type data: naar belangrijkheid indelen indekken tegen: hardware defecten, software problemen, menselijke fouten, wetgeving back-up biedt oplossing in geval van disaster recovery applicaties: archiving, databases Datagroei bepalen: Via SRM (Storage Resource Management) is het mogelijk te bepalen hoeveel data er verandert/bijkomt (evt als dienst aanbieden) Backup noden bepalen Tape drives / technologie backup to disk Performance Netwerk, disk, tape, CPU, RAM 5

8 Meetingverslag: stroomlijnen van de doelstellingen Na een aantal weken onderzoek bleek dat een aantal doelstellingen moesten gestroomlijnd worden. Bart en Christophe bleken immers een andere mening te hebben over de uitwerking van de applicatite. Daarom hebben we gevraagd om een extra interne meeting te houden. Oorspronkelijk was het de bedoeling dat enkel Bart, Christophe en het management aanwezig waren op deze meeting, maar vermits Pieter nog aanwezig was op het bedrijf, werd hem halverwege de meeting gevraagd de vergadering te komen bijzitten. Aanwezig: Nico, Christophe, Bart en Pieter Verontschuldigd: Danny Er werd iedereen opnieuw hun visie over het project gevraagd: Nico verkoos een marketing tool die snel en eenvoudig beheerbaar is Bart vond het belangrijk dat de tool overzichtelijk zou worden, en dat alles duidelijk invulbaar zou zijn Christophe wou dat de vragenlijst gescheiden werd van de solutions Vervolgens werd gevraagd wat er precies technisch mogelijk was. Pieter stelde daarbij twee mogelijke oplossingen voor die uitgewerkt waren: Mogelijkheid 1: de vragenlijst wordt opgebouwd in een boomvorm, waarna men solutions kan aanmaken. Wanneer men een solution aanmaakt kan men vervolgens in de boom klikken waar men deze wil plaatsen. Christophe gaf hierbij aan dat dit onoverzichtelijk kon worden wanneer de tool ver uitgewerkt wordt. Bart gaf aan dat men met deze oplossing zeker is wat men uitkomt, vermits men manueel de solutions aan de boom gekoppeld heeft. Nico steunde Bart. Mogelijkheid 2: de vragenlijst wordt opgebouwd in een boomvorm, waarbij elke vraag aan een thema gekoppeld wordt. Een antwoord treedt dan op als een soort parameter. Wanneer men vervolgens een solution opstelt, kan men de parameters aanduiden die tot die solution leiden. Deze manier laat toe dat men de boom (vragenlijst) kan veranderen zonder dat men de solutions dient te wijzigen. Christophe gaf aan voorstander te zijn van deze oplossing, omdat het werk zou uitsparen. Bart was van mening dat deze oplossing een risico inhield, vermits men door het wijzigen van de boom onbewust solutions zou kunnen uitsluiten. Nico beargumenteerde Christophe dat deze oplossing juist meer werk zou betekenen. Men moet immers steeds heel de boom opnieuw controleren wanneer men een vraag of solution wijzigt opdat men zeker zou zijn dat men nergens iets verkeerds uitkomt. Verder gaf Nico ook aan dat hij ooit een dergelijk programma had gemaakt voor het catalogiseren van magazines. Daarbij had hij op het probleem gestuit dat zijn zoekopdrachten na verloop van tijd totaal verkeerde informatie gaven. Verder stelde hij ook dat parameters wel tot de juiste oplossing kunnen leiden voor de klant, maar dat die oplossingen niet altijd commercieel interessant zijn, zowel voor Source als voor de klant. Een voorbeeld hiervan is wanneer de klant voor al zijn oplossingen EMC materieel zou verkiezen, waardoor hij op die wijze meer korting zou krijgen van EMC. 6

9 Deze twee uiteenlopende oplossingen leidden tenslotte tot een concensus. Er werd geopteerd om geen regels en parameters in te bouwen omdat men vreest dat de tool daardoor in de loop van de tijd onbruikbaar zou worden. Daarom koos men voor de eerste oplossing, welke ook het oorspronkelijk idee van aanpak was. Er werd hierbij wel gevraagd dat de gebruiker, wanneer deze zijn solution te zien krijgt, een rapportje moet krijgen van wat hij juist ingevuld heeft. Dit rapportje bevat dan een overzicht van zijn situatie. 7

10 ONDERZOEK Inleiding Vooraleer we konden beginnen met het ontwikkelen van de gevraagde applicatie, was het belangrijk een uitgebreid onderzoek uit te voeren. Hierbij was een degelijke planning noodzakelijk, waarvoor GanttProject 2 een hulpmiddel aanreikte. Een aantal essentiële zaken werden met behulp van dit Gantt-chart project gepland. Hieronder vindt u het journaal van de meest belangrijke ervan: Opzoeking naar bestaande tools Het is belangrijk dat we eerst een onderzoek doen naar programma's die een gelijkaardige oplossing bieden voor het gestelde probleem. Analyse & ontwerp framework het framework zal ervoor zorgen dat het programma modulair opgebouwd wordt. Het zal ook dat onderdeel vormen dat met de webinterface zal communiceren. Het is dan ook belangrijk dat dit framework af is voordat er aan de storage/backup sizing module en webinterface gewerkt wordt. Analyse & ontwerp webservice De webservice zal de service verzorgen die ervoor zorgt dat de website met het framework kan praten. Analyse & ontwerp administratortool De administratortool zal het mogelijk maken flowcharts (vragenlijsten) aan te maken en te bewerken. De administratortool zal een standalone applicatie zijn die platformonafhankelijk moet zijn. Analyse & ontwerp front-end Wanneer het programma volledig werkt en de webservice op punt staat, kunnen we de website zelf maken, hetzij in Flash of ASP.NET. Onderzoek naar opslagmogelijkheden We zijn van plan de flowchart intern als een tree te benaderen (zie verder). We moeten echter uitzoeken hoe we het beste de tree gaan opslaan. Waarschijnlijk zal dit dmv een relationele databank gebeuren, maar ook dan is nog uit te zoeken hoe we precies de tabellen gaan inrichten en welke O-R-mapping we gaan gebruiken (Hibernate?). Onderzoek naar een mogelijke flowchart (vragenlijst) Bart en Paul zullen ons elk voorzien van een flowchart welke de oplossingspaden voor een backup-probleem visueel voorstellen. Zodra wij deze flowcharts in ons bezit krijgen, zullen wij deze eerst aandachtig bestuderen en 2 Een Gantt-grafiek is een grafiek of diagram die veel wordt gebruikt als hulpmiddel bij projectmanagement. GanttProject is a free and easy to use Gantt chart based project scheduling and management tool. 8

11 vervolgens samenvoegen tot één geheel. Vervolgens zullen we van dit nieuw geheel testen door een simulatie uit te voeren van een random backup/storage probleem. Indien de samengestelde flowchart een ander antwoord geeft dan dat van een expert, moet de flowchart opnieuw bekeken en herontworpen worden. Opbouwen plugin zodra de flowchart op punt staat en de manier van opslaan beslist is, kunnen we effectief beginnen met het ontwerpen van de module. Deze module moet naadloos in het framework passen, en indien dit niet mogelijk is, moet het framework bijgewerkt worden. Handleiding & documentatie Gedurende de drie maanden stage zullen we regelmatig de documentatie bijwerken en de handleidingen aanvullen met de nodige informatie. De handleiding zal voornamelijk bestaan uit de verscheidene use cases. Testen Gedurende de drie maanden stage zullen we stelselmatig de programmacode testen en controleren op fouten. Meetings Regelmatig zullen we het het geleverde werk voorleggen aan de stagementor en/of stagebegeleiders. Het is belangrijk dat de feedback goed opgevolgd wordt opdat de applicatie naar de wensen van de eindgebruikers zal voldoen. Om de context van de probleemstelling duidelijker te kunnen plaatsen, was het belangrijk een onderzoek te verrichten naar bestaande tools die gelijkaardige functies hebben. Het feit dat dergelijke tools erg beperkt zijn op de huidige markt maakte deze taak er niet eenvoudiger op. Uiteindelijk vonden we twee tools, enerzijds van HP en anderzijds van Dell, die in aanmerking kwamen. Beide hadden hun eigen voor- en nadelen die we hieronder kort zullen bespreken. 9

12 HP StorageWorks Sizing Tool Url: The HP StorageWorks Sizer is a downloadable sizing tool that helps to design a storage infrastructure that will meet your customer s needs! Voordelen: zeer gedetailleerd heel veel functies genereren rapporten exportmogelijkheden (excel) Nadelen: niet commercieel te ingewikkeld enkel voor HP producten zeer traag om te doorlopen (vereist een grondige analyse) 10

13 Dell Storage Advisor Url: sd1&l=en&s=bsd The Dell Storage Advisor is designed to help you navigate to a storage solution based on your organization's storage requirements. Simply answer a brief series of questions and the Storage Advisor will recommend hardware, software, services and accessories well-suited to your needs. The Storage Advisor also provides a list of Other Things to Consider to help you lower your total cost of storage ownership, and improve your storage scalability and management flexibility. Voordelen: zeer eenvoudig qua concept snel te doorlopen (1 a 2 minuten) geen inzicht in technische details nodig progress overzicht informatief overzichtelijk Nadelen: te eenvoudig geen invoer van gegevens (cijfers, getallen) door de klant 11

14 Besluit Na onderzoek van deze bestaande tools hebben we besloten een tool te bouwen die een gelijkaardige interface naar de gebruiker toe biedt als die van Dell. Bovendien leunde deze tool het meest aan bij onze beslissing om een tree (boom) te gebruiken. Het plaatsen van de vraagstelling in een boomstructuur laat immers toe de eenvoud te bewaren. Uiteraard vereist het opmaken van een dergelijke tree een grondig inzicht in het domein van de storage wereld vermits men het probleem gaat uitdiepen en steeds verder opsplitsen zodat men voor de meeste situaties een eenduidige oplossing kan geven. De probleemsituatie wordt dus systematisch opgedeeld in verschillende categorieën waarvoor elk een aparte oplossing aangeboden wordt. Het voordeel van deze opbouw is dat er makkelijk knopen kunnen toegevoegd, verwijderd, gewijzigd of verplaatst worden. Wanneer bijvoorbeeld door de vernieuwing van de technologie een bepaalde vraag herzien moet worden, kan men makkelijk de parameters van deze knoop gaan wijzigen zonder dat het hele programma herschreven moet worden. In feite kan men stellen dat deze tree een vereenvoudigde uitwerking is van een object-georiënteerd kennissysteem, waarbij de parameters gestructureerd zijn in een boom. De flowchart van de probleemstelling (dus eigenlijk de opbouw van de vragen en plaatsing in boomstructuur) zal ontworpen worden door 2 werknemers van Source die een uitgebreid technisch inzicht hebben in de storagewereld. 12

15 OPSTELLEN OMGEVING Installatie Apache, PHP en Mysql MySQL is een open source relationele database management systeem (RDBMS), dat gebruik maakt van SQL. MySQL werd vroeger vaak gebruikt voor toepassingen zoals fora en gastenboeken, meestal in combinatie met PHP, tegenwoordig is het de basis van een breed scala aan internettoepassingen, maar ook stand-alone software. Het MySQL-softwarepakket bestaat onder meer uit een serverprogramma, doorgaans mysqld genoemd. Hierbij staat de d voor daemon, de Unix- of Linux-term voor een proces dat netwerkconnecties aanneemt. Verder bestaat het uit een verzameling clientprogramma's, zoals mysql en mysqldump waarmee automatisch of interactief met de server gecommuniceerd kan worden. MySQL is een populair databasemanagementsysteem dat voor het gestructureerd opslaan van gegevens voor zeer veel toepassingen wordt gebruikt. Een bekend MySQL-frontend is phpmyadmin, een webgebaseerd MySQL-administratieprogramma geschreven in PHP. MySQL wordt veel gebruikt in combinatie met Linux, Apache en PHP of Perl. Deze combinatie van software wordt LAMP genoemd. MySQL wordt in deze combinatie echter ook gebruikt op andere besturingssystemen, bijvoorbeeld met Mac OS X (MAMP) of Microsoft Windows (WAMP). We installeren MySQL als volgt3: 1. We installeren de vereiste pakketten met behulp van yum: yum -y install httpd php mysql mysql-server php-mysql 2. We zorgen er nu voor dat de services automatisch gestart worden: /sbin/chkconfig httpd on /sbin/chkconfig --add mysqld (niet nodig vanaf FC4) /sbin/chkconfig mysqld on en starten ze vervolgens op: /sbin/service httpd start /sbin/service mysqld start 3. Vervolgens stellen we een database root paswoord in: mysqladmin -u root password 'new-password' (quotes verplicht!) 4. We dienen nu een aantal beveiligingsmaatregelen te nemen betreffende MySQL: mysql -u root -p DROP DATABASE test; (testdatabase verwijderen) DELETE FROM mysql.user WHERE user = ''; (anonieme toegang uitschakelen) FLUSH PRIVILEGES; 5. We kunnen de server nu testen door een PHP-file aan te maken in /var/www/html/ Een typisch PHP testbestand is <?php phpinfo();?> 3 13

16 Installatie SVN server Subversion (svn) is een tool waarmee het versiebeheer van een softwareontwikkelproject uitgevoerd wordt. Het voordeel van deze tool is dat ze makkelijk integreerbaar is met Eclipse (zie verder). Bovendien worden alle commits als atomische (ondeelbare) operaties beschouwd, waardoor onderbroken commit operaties geen corrupte of inconsistente data zullen teweegbrengen. Oorspronkelijk zou de SVN-server op een Windows-platform geïnstalleerd worden, maar door verscheidene problemen zagen we ons genoodzaakt SVN op linux te installeren. Men installeert de server als volgt: 1) Start de package manager met behulp van het volgende commando: system-config-packages De volgende onderdelen moeten aangeduid worden: - Web Server - Development Tools - subversion 2) Men zorgt er vervolgens best voor dat de laatste versie van SVN geïnstalleerd staat: yum update 3) mod_dav_svn is een package dat SubVersion nodig heeft om de DAV-functie van de Apache Web server te kunnen gebruiken. Installeer deze als volgt: yum install mod_dav_svn 4) Wanneer deze functie succesvol geïnstalleerd is, kan men SubVersion opstarten met behulp van het volgende commando: svnadmin 5) SubVersion heeft een directory structuur nodig om repositories, gebruikers en permissies te bewaren. Gewoonlijk worden deze bij elkaar gehouden in een zelfde folder. We maken nu de mappen aan: mkdir /svn mkdir /svn/repos mkdir /svn/users mkdir /svn/permissions 6) We dienen nu Apache als hoofdgebruiker van deze folders in te stellen: chown -R apache.apache /svn 7) We dienen Apache vervolgens mee te delen waar hij de svn repositories kan vinden. Daartoe dienen we het bestand /etc/httpd/conf.d/subversion.conf te wijzigen, zodanig dat ze de volgende inhoud heeft: <Location /svn/repos> DAV svn SVNParentPath /svn/repos </Location> 8) We herstarten tenslotte de Apache server: service httpd reload 9) Het aanmaken van een eerste repository kan nu als volgt gerealiseerd worden: svnadmin create /svn/repos/project chown -R apache.apache /svn/repos/project 14

17 10) Omdat SELinux vaak niet toelaat dat men communiceert met de SVN server, dienen we een aantal maatregelen te nemen: chcon -R -h -t httpd_sys_content_t /svn/repos/project In recent Linux versions ( including RedHat Enterprise, Fedora and other distributions ) SElinux is optionally enabled on the OS installation. The SELinux architecture enforces many kinds of mandatory access control policies. This module must be disabled to correctly run software. Installation problems can occur such as mysql errors, Perl library errors and restarting Apache configuration. If you receive these errors most likely SELinux support is enabled. 11) We kunnen SELinux als volgt tijdelijk uitschakelen (men dient ingelogd te zijn als root): /usr/bin/setenforce 0 12) Het is echter interessanter SELinux uit te schakelen bij het booten, open daarvoor het volgende bestand: /etc/sysconfig/selinux en zoek daarin de volgende regel: SELINUX=enforcing wijzig dit nu naar het volgende: SELINUX=disabled ( meer informatie op ) 13) Herstart de Apache server: service httpd reload 14) Men kan de SVN server via de browser nu bereiken via het volgende adres: (op de stage werd de SVN server geïnstalleerd op de server linus ; de url is daar dus ) 15

18 Software Eclipse Eclipse4 is een open-source framework voor software-ontwikkelomgevingen. Daarnaast is Eclipse ook zelfstandig te gebruiken als krachtige Java-ontwikkelomgeving. Eclipse heeft een open structuur waardoor het mogelijk is de functionaliteit uit te breiden door middel van plug-ins. Een van deze plug-ins biedt de mogelijkheid aan versioning te doen (SVN): subclipse. Waneer Eclipse geïnstalleerd is, kunnen we subclipse als volgt inschakelen: 1. Kies in het menu Help voor Software Updates en vervolgens voor Find and install We kiezen in het popup-scherm voor Search for new features to install 3. In het volgende venster dienen we een New Remote Site in te geven: (slechts een van de twee zal werken afhankelijk over welke versie je van Eclipse beschikt) Name: Subclipse 1.2.x (Eclipse 3.2+) URL: of Name: Subclipse 1.0.x (Eclipse 3.0/3.1) URL: 4. Wanneer u vervolgens terugkeert naar het vorige scherm met het overzicht, dient u de net aangemaakte site Subclipse aan te vinken, alsook de optie Ignore features not applicable to this environment. De installatie kan nu beginnen. 5. Wanneer de installatie voltooid is, dient de workbench herstart te worden. Zodra dit gebeurd is, open we het Subclipse Repository perspective 6. We maken nu een nieuwe Repository Location aan, die verwijst naar onze SVN server: 7. Via het menu dat beschikbaar is voor de verschillende resources kunnen we nu onze projecten synchronizeren met deze repository. Adobe Photoshop en ImageReady Adobe Photoshop is een grafisch programma voor het bewerken van foto's en ander digitaal beeldmateriaal via de computer. Photoshop is beschikbaar voor Mac OS X en Windows. Door velen wordt Photoshop beschouwd als de industriestandaard voor zowel drukwerk en DTP als voor het web wat betreft digitale beeldbewerking. De schermindeling met verplaatsbare paletten (floating palets) is door tal van andere softwaremakers in hun producten overgenomen. Ook het werken met lagen vanaf versie 3 (transparante lagen met objecten - tekst, afbeeldingen, kleuren- die boven elkaar kunnen worden geplaatst waarbij de originele afbeelding intact blijft) is een maatstaf waaraan alle andere grafische pakketten worden afgewogen. Photoshop kan overweg met filters (en ook plugins van derden), maskers, laageffecten enz. Vanaf versie 5 is het programma sterk uitgebreid met functies voor webexport. Zo maakt het aanvullende programma Image Ready het mogelijk afbeeldingen te knippen (slice) met elk een eigen adres (image map) of in tabellen te exporteren, compleet met javascript- en HTML-code. De "bewaren voor het web"-functie kan JPEG-, PNG- of GIFafbeeldingen optimaliseren en comprimeren voor webpublicatie

19 Microsoft Visual Web Developer 2005 Visual Studio is een programmeerontwikkelomgeving (een Developer Studio) van Microsoft. Het biedt een complete set ontwikkelingstools om computerprogramma's in diverse programmeertalen, zoals Visual Basic en Visual C++, te ontwikkelen voor met name Windows-omgevingen. Het wordt gebruikt om ASP-webapplicaties, XML-webservices, desktop-applicaties en mobiele toepassingen te ontwerpen. Het is uitermate geschikt voor het ontwerpen van Windows-applicaties, omdat bij Visual Studio diverse standaardbibliotheken en MFC-klassenbibliotheken met programmeercode worden geleverd die het mogelijk maken om op een eenvoudige wijze Windows-kenmerken zoals vensters en keuzemenu's aan een programma te geven. PuTTY PuTTY is een vrije telnet- en SSH-client. Het is software waarmee iemand een verbinding kan maken met een andere computer, meestal zijn dit servers met een op UNIX gebaseerd besturingssysteem. PuTTY is een vervanging voor een terminal (ook wel Teletype, TTY genoemd), een domme machine die voor de introductie van de Personal Computer, gebruikt werd om te verbinden met een server. De verbinding tussen de terminalsoftware en de server verloopt tegenwoordig via het SSH-protocol, wat als de veilige opvolger wordt gezien van het verouderde telnetprotocol. We hebben PuTTY gebruikt om te kunnen werken op de linus server, die in een ander lokaal stond. Gantt Project Het programma Gantt Project laat toe om planningen te maken in een Gantt schema. We hebben deze software vooral bij de aanvang van de stage gebruikt om de verscheidene tijdsverdelingen in kaart te brengen. 17

20 ONTWERP De onderdelen De storage/backup sizing tool bestaat uit een samenwerking tussen verschillende onderdelen, die elk een eigen taak hebben: het framework: bevat de backup-plugin en de webservice. Het framework maakt het mogelijk dat de tool kan uitgebreid worden naar het leveren van nieuwe diensten. De webservice zal de diensten van de plugin(s) aanbieden naar de buitenwereld. de administratortool: maakt het mogelijk om de specifieke backup/sizing tool plugin te beheren. Via deze tool kan de administrator vragenlijsten aanmaken en beheren. de eindgebruikersinterface: presenteert de diensten van de backup/sizing tool op de website van Source NV. In dit geval houdt dit in dat de bezoekers een of meerdere vragenlijsten kunnen doorlopen om aldus een oplossing op maat aangeboden te krijgen. de databank: bevat alle vragenlijsten Hieronder vindt u een uitvoerige beschrijving van elk onderdeel. De verschillende onderdelen van de backup/sizing tool 18

21 Het framework Het framework is gebaseerd op het Java Plug-in Framework (http://jpf.sourceforge.net/), een open source (LGPL licensed) plug-in infrastructure library voor nieuwe of bestaande Java projecten. JPF laat toe om plug-ins te laden in eenzelfde scherm door het doorgeven van vooraf gedefinieerde schermen. JPF provides a runtime engine that dynamically discovers and loads "plug-ins". A plug-in is a structured component that describes itself to JPF using a "manifest". JPF maintains a registry of available plug-ins and the functions they provide (via extension points and extensions). One major goal of JPF is that the application (and its end-user) should not pay any memory or performance penalty for plug-ins that are installed, but not used. Plug-ins are added to the registry at application start-up or while the application is running but they are not loaded until they are called. Vermits onze storage/backup sizing tool niet met schermen werkt, maar wel een gelijkaardige plugin gedachtengang tewerkstelligt, was enige aanpassing nodig. Het framework bevat ook de webservice die als server zal optreden bij communicatie met externe clients die de resultaten van een bepaalde plugin willen (hier: de vragenlijst). Als webservice hebben we gekozen AXIS25 te gebruiken, vermits deze een van de meest gebruikte frameworks is voor het ontwikkelen van dit type services. Enkele voorname voordelen van Axis2 zijn: Snelheid Axis2 maakt gebruik van een eigen object model en StAX (Streaming API for XML) parsing dat sneller werkt dan de eerdere versies van Apache Axis Weinig geheugengebruik AXIOM is uitbreidbaar en zeer performant Hot Deployment maakt het mogelijk Web services en handlers te schrijven terwijl het systeem blijft draaien. Asynchrone Web services MEP Support ondersteuning van Message Exchange Patterns (MEPs) met ingebouwde support voor de typisch gedefinieerde MEP's uit WSDL 2.0. Flexibiliteit Stabiliteit WSDL support ondersteuning voor Web Service Description Language versie 1.1 en

22 De plugin Wanneer men een plugin wil maken, moet deze een aantal zaken implementeren vanuit het framework. Zo is het onderandere noodzakelijk een startup klasse aan te maken, en te werken met een aantal gedefinieerde objecten zoals vragen, antwoorden en reports (die men naar eigen wens verder kan uitbreiden). Zodra men een plugin geprogrammeerd heeft, kan men deze als volgt koppelen aan het framework: 1) Men dient eerst een JAR-bestand te maken van de plugin. Als voorbeeld nemen we hier aan dat dit jarbestand myplugin.jar heet en dat de klasse StartupPlugin de interface Plugin geïmplementeerd heeft. 2) Plaats het JAR-bestand in de folder /plugins van het framework 3) Open /configuration.xml en voeg de nieuwe plugin toe: <plugin autostart="true"> <jarlocation>myplugin.jar</jarlocation> <mainclass>startupplugin</mainclass> <title>the title of my plugin</title> <description/> <version>1.0.0</version> </plugin> 4) Men herstart het framework opdat de plugin geladen kan worden 20

23 De administratortool De administratortool verzorgt het beheer van de vragenlijsten. Omdat deze tool in Java ontworpen is, kan zij op verschillende platformen uitgevoerd worden, waaronder Windows, Linux, Unix, Mac OS, NetWare,... Om de verschillende vragenlijsten te kunnen laden en opslaan, communniceert de tool via JDBC met de databank. Om een degelijke opbouw te garanderen, is het programma in drie tiers opgedeeld: databank domein grafische inteface. Dit houdt in dat elke tier zijn eigen verantwoordelijkheden heeft: database de onderste tier maakt de verbinding via JDBC met de databank en doet de O-Rmapping. domein de middelste tier bouwt de vragenlijst op aan de hand van de objecten die geladen werden uit de databank en geeft deze door aan de GUI gui (Grafische User Interface) de bovenste tier - geeft de componenten weer op het scherm en laat de gebruiker toe interactief vragenlijsten aan te maken De communicatie tussen de verschillende tiers verloopt als volgt: De database-tier laadt alle objecten uit de databank in het geheugen en geeft deze door naar de domeinklassen. Vervolgens construeert de domein-tier de vragenlijst met behulp van de geladen objecten. Tenslotte geeft het domein deze vragenlijst door aan de gui, die deze zal visualiseren op het scherm. Om het verschil tussen al deze tiers ook op structureel niveau te behouden, hebben vragen, antwoorden en oplossingen in elke laag een representerende klasse. Zo zal een vraag in de database-tier van het type Question zijn, in de domein-tier van het type NodeQuestion en in de guitier van het type QuestionDropNode. Het komt er eigenlijk op neer dat de QuestionDropNode een NodeQuestion bevat en bijkomde informatie van hoe de node op het scherm weergegeven moet worden. De NodeQuestion bevat op zijn beurt een Question en bijkomende informatie van waar het Question-object zich in de vragenlijst bevindt. In principe kan men de vragenlijst vergelijken met een boom, in die zin dat de vragenlijst die de eindgebruiker te zien krijgt, in feite niets anders is dan een gevolgd pad van vragen en antwoorden doorheen de boom. De grote uitdaging in deze tool lag dan ook in het correct opbouwen en afbreken (lees: opslaan) van deze boom. Om persistentie te garanderen, zullen wijzigingen naar de databank enkel doorgevoerd worden wanneer de gebruiker expliciet kiest om op te slaan. Zolang de gegevens niet opgeslagen zijn, zullen de wijzigingen op de vragenlijst enkel bijgehouden worden in het lokale geheugen. Een voorbeeld van een mogelijke vragenlijst zou het bepalen van een computermodel kunnen zijn. We zouden dan als eerste vraag bijvoorbeeld kunnen stellen tot welk doel de computer gebruikt zal worden, om vervolgens meer doelgerichte vragen te kunnen stellen. Zo is het niet interessant om voor een low-end systeem te gaan vragen welke processor er precies in moet, vermits het nogal evident is dat dat aspect net variabel blijft om met behulp van enige speling de kosten te kunnen drukken. 21

24 Praktisch gezien komt dit dan op het volgende neer: Het voordeel van deze structuur voor het opbouwen van een vragenlijst, is de modulariteit. Het is duidelijk dat de vragenlijst op deze wijze heel snel en duidelijk kan aangemaakt worden, vermits men snel tot redelijk diepe niveaus vragen kan gaan stellen zonder dat het geheel aan overzicht verliest. Het open- en toeklappen van vragen en onderliggende structuren bevestigt deze overzichtelijkheid. Bovendien worden alle aangemaakte vragen bijgehouden in een pool, namelijk het Orphanage. Het voordeel hiervan is dat wanneer men een vraag uit de pool wijzigt, men op deze wijze alle kopiën van deze vraag ook wijzigt. Op deze wijze voorkomt het programma ook dubbelwerk wanneer dezelfde vraag meerdere malen moet voorkomen in de vragenlijst. Men kan op een analoge wijze kan men de solutions gaan beheren en koppelen aan de vragenlijst. Hierbij kan men gebruik maken van een geïmplementeerde WYSYWYGeditor die het mogelijk maakt om in een Word-alikeomgeving te kunnen werken, waarin er geen kennis van HTML vereist is. Men kan naar wens ook nieuwe vragenlijsten aanmaken, of bestaande vragenlijsten verwijderen. Wanneer men verbinding maakt met een lege database (die de noodzakelijke tabellen bevat), zal de tool een default vragenlijst aanmaken (genaamd vragenlijst01) waarmee men meteen aan de slag kan. Tenslotte biedt het programma ook een helpfunctie aan, die bereikaar is via de menu's of de sneltoets F1. In principe bevatten de helpfiles de verschillende use cases die ontworpen werden tijdens de ontwikkeling van het programma. Men kan deze bestanden altijd bijwerken door de respectievelijke HTMLdocumenten in de folder /help te wijzigen. De helpbestanden worden geladen en gesorteerd volgens de TITLE-tag. Wanneer men een helpbestand aanduidt, wordt het respectievelijke HTMLdocument geladen in het rechterscherm. Men dient er wel rekening mee te houden dat de standaard HTML parser die de helpfiles inlaadt, redelijk basisch is en waarschijnlijk niet goed overweg zal kunnen met JavaScript en andere client-side scriptingtalen. Wanneer men bijgevolg nieuwe helpbestanden ontwikkelt, dient men rekening te houden met het feit dat de HTML-documenten best geen van deze talen bevatten en ook W3C-compliant zijn. 22

25 Om een zo breed mogelijke functionaliteit aan de administrator te bieden, heeft de administratortool een aantal bestaande features geïmplementeerd: Substance - https://substance.dev.java.net/ - Substance is een open-source project onder de Berkeley Software Distribution (BSD) License. Dit project levert configureerbare look and feel bibliotheken voor Java applicaties. Zo kan de administrator, indien hij dat wenst, de look and feel van de tool wijzigen in het configuratiebestand admintool.properties. De parameter layouttheme stelt daar in welk thema het programma moet gebruiken. In het programma zelf wordt het juiste thema vervolgens ingesteld in FrameHandler mbv de volgende regels code: try { LookAndFeel laf = config.getlayouttheme(); UIManager.setLookAndFeel(laf) ; } catch (UnsupportedLookAndFeelException ulafe) { log.error("substance failed to set: " + ulafe.getmessage()); } catch (Exception e) { log.error("an unknown error occurred: " + e.getmessage()); } LOG4J - - log4j maakt het mogelijk om at runtime programma's te debuggen op verschillende niveau's. Het voordeel hiervan is dat de gebruiker via een configuratiebestand kan instellen wat voor foutmeldingen hij wil zien (all debug info warn -... ) en wat er met die foutmeldingen moet gebeuren. Zo kan men deze bijvoorbeeld wegschrijven naar een logbestand, een log4j server, een daemon,... Een laatste belangijk voordeel is dat deze logging enorm snel gebeurt in vergelijking met andere logging-technologieën. In de administratortool kan men deze logging inschakelen in het configuratiebestand admintool.properties via de parameter loglevel. De logging wordt standaard weggeschreven in HTML-formaat naar een logbestand, en wordt dagelijks gecatalogiseerd in verscheidene logbestanden. Eventueel kan men de locatie van deze logbestanden wijzigen mbv de parameter logdir. De LoggerFactory regelt het beheer van de logbestanden en is zo ingesteld dat iedere klasse een eigen logging stack heeft. Wanneer een klasse voor het eerst aangeroepen wordt, zal deze aan LogFactory zijn logging stack aanvragen. Elke keer wanneer er vervolgens een fout optreedt in die klasse, zal de stack opgehoopt worden met een foutmelding. Vervolgens zal log4j deze foutmelding meteen wegschrijven naar het logbestand zodat de administrator steeds op de hoogte kan blijven van eventuele foutmeldingen. Op de volgende wijze kan een klasse zijn logger aanvragen: private Logger log = LoggerFactory.getInstance().getLog(getClass()); Wanneer er vervolgens iets moet gelogd worden, kan dit als volgt: log.info("dit is informatie log.error("dit is een foutmelding log.fatal("dit is fatale fout - log type INFO"); log type ERROR"); - log type FATAL"); 23

26 Ekit - Ekit is een gratis open-source Java HTML editor dat een WYSYWIG-omgeving opstelt voor het bewerken van HTML-bestanden. Bovendien kan men deze vervolgens niet alleen laden en opslaan, maar ook serializeren en converteren naar RTF. In de tool kan men ekit terugvinden onder com.hexidec.ekit. De administratortool maakt gebruik van Ekit bij de solutions, waar het noodzakelijk is dat men een degelijke opmaak kan opbouwen, zonder dat enige kennis van HTML noodzakelijk is. Om deze tool ook te kunnen implementeren, was het nodig enige aanpassingen te maken aan het bestaande pakket, dat oorspronkelijk als applet en applicatie op zich was geschreven. Wanneer een solution aangemaakt wordt, zal de tool steeds een HTML-bestand aanmaken in de tmp-folder. De inhoud van dat HTML-document zal vervolgens naar de SQL database overgebracht worden wanneer de administrator de solution opslaat. Het voordeel van deze aanpak is dat de administrator ook vooraf aangemaakte HTML documenten als solution kan laden, en allerlei stijlbladen lokaal toepassen op deze solution. Jericho HTML parser - - Jericho HTML parser is een Java bibliotheek die manipulatie van HTML documenten toelaat. Deze parser is event driven noch tree based maar combineert eenvoudige zoekfuncties met efficiënte tagherkenning en tag positioneringscache. Het voordeel hiervan is dat de parser veel minder geheugen inneemt als een DOM-parser en dat ze meer mogelijkheden biedt dan een SAX-parser. Vooral het eerste argument was doorslaggevend voor de keuze van deze parser. De parser wordt immers gebruikt voor het laden van de helpbestanden, welke in HTML-formaat opgeslagen zijn. De belangrijkste bewerking die de parser op deze documenten moet uitvoeren, is het uitlezen van de TITLE-tag opdat het onderwerp van het helpbestand kan bepaald worden. Connector/J - - Connector/J is een native Java driver (van type IV) dat Java Database Connectivity (JDBC) aanroepen vanuit een MySQL database vertaalt. Het resultaat is dat men vanuit een Java omgeving SQL commando's kan sturen naar een database, die zelfs niet op dezelfde computer aanwezig hoeft te zijn. Het aanmaken van de connectie met de databank gebeurt in Database als volgt: protected void connect (DatabaseConnection databaseconnection { try { // load database driver class Class.forName( JDBC_DRIVER ); //establish connection to database Connection conn = DriverManager.getConnection( databaseconnection.geturl(), databaseconnection.getlogin(), databaseconnection.getpassword() ); // create Statement for querying database Statement stmt = conn.createstatement(); // notify the observers notifyobservers(); } catch (Exception e) { // handle the error } } 24

27 De database We hebben beslist MySQL als database te gebruiken, een open source relationele database. Het voordeel van deze database is dat ze snel werkt vermits ze gebruik maakt van de MyISAM opslagmotor. Een kort overzicht van het ERD: een vragenlijst bevat meerdere vragen, die op hun beurt uit 2 of meerdere antwoorden bestaan. Een antwoord kan vervolgens een nieuwe vraag bevatten of een solution. Elke vragenlijst krijgt een eigen databank toegewezen in MySQL. Op die manier heeft elke vragenlijst een volledig afgescheiden omgeving en treden fouten minder gemakkelijk op. Elke database (vragenlijst) bestaat uit 4 tabellen: een question-tabel, een answer-tabel, een solutiontabel en een solutionpath-tabel. Op de volgende pagina vindt u een korte beschrijving van hun inhoud. 25

28 De question tabel: Deze tabel bevat 2 attributen en vertegenwoordigt de vragen. question_id stelt de primaire sleutel voor, en question_formule bevat de eigenlijke vraag. De answer tabel: Deze tabel bevat 4 attributen en vertegenwoordigt de antwoorden. Bovendien zorgt deze tabel er ook voor dat vragen en antwoorden aan elkaar gekoppeld worden. Daartoe maakt zij gebruik van question_parent_id en question_child_id, die beide verwijzen naar het ID van een bepaalde vraag. De primaire sleutel van deze tabel is answer_id. Tenslotte bevat answer_formule het antwoord op de vraag. De solutionpath tabel: Deze tabel bevat 3 attributen, en dient als link tussen de antwoorden en de oplossingen (solutions). De attributen zijn solutionpath_id, de primaire sleutel, solution_id, die verwijst naar een solution, en answer_id, die naar de vraag verwijst. De solution tabel: Deze tabel bevat 3 attributen en bevat de verschillende solutions. De attributen zijn solution_id, de primaire sleutel, solution_title, de titel van de solution, en solution_text, de inhoud van de solution (html). De opbouw van de boom uit deze databank gebeurt op een heel eenvoudig wijze. Elk antwoord heeft een link naar de vraag die hem voorafging en volgt. Een vraag die bijgevolg geen antwoord boven hem staan (maw question_parent_id heeft dan als waarde 0) heeft, is automatisch de eerste vraag die gesteld wordt. Via restricties (constraint in mysql) wordt dit afgedwongen in de database, vermits er maar één vraag de eerste kan zijn. Naast de losse databanken per vragenlijst, is er ook een index databank die bijhoudt welke vragenlijsten er allemaal bestaan. Deze databank bevat één tabel, namelijk vragenlijsten. Deze bestaat uit 3 attributen: db_id, de primaire sleutel, db_name, de naam van de databank met de vragenlijst, en db_description, een omschrijving van de vragenlijst. 26

29 De front-end Inleiding De front-end van de tool werd gemaakt in ASP.NET, dezelfde taal als die waarin de website van Source gemaakt is. Het zou onverstandig geweest zijn om te kiezen voor een volledig nieuwe omgeving (zoals bijvoorbeeld Flash), omdat dit moeilijker integreerbaar zou zijn. Bovendien heeft Flash ook het nadeel dat ze enkel werkt indien de client ook Flash geïnstalleerd heeft staan, terwijl ASP.NET gedefinieerde HTML-paginas genereert die elke browser zo kan lezen. We hebben dan ook gekozen zoveel mogelijk de sterke punten van het.net platform uit te buiten. Daarom maken we gebruik van webservices en user controls. User controls zijn componenten die je overal opnieuw kan gebruiken. Je maakt ze op een plaats aan en geeft ze daar alle nodige logica. De user control Nadat je de user control hebt aangemaakt moet je enkel nog maar op de plaatsen waar nodig deze control oproepen. 27

30 Men kan indien nodig blijkt een aantal parameters wijzigen van de user control. Zo initialiseert men in onderstaande Page_Load-methode de parameters van de vragenlijst (namelijk de server waarop de MySQL server draait, en de naam van de vragenlijst die geladen moet worden). Het grote voordeel van deze manier van werken is dat men aanpassingen op slechts één plaats door dient te voeren. Het doorlopen van de tool : De gebruiker krijgt na het starten van de tool de eerste vraag van de aangeduide vragenlijst te zien: 28

31 De gebruiker dient een antwoord te selecteren en moet dan op next klikken. Daarna zal de gebruiker een nieuwe vraag te zien krijgen. Indien hij alle vragen beantwoord heeft, zal de site een solution tonen. Een solution bestaat uit een titel en een beschrijving (opgesteld in HTML), die links, fotos of zelf een pdf-bestand kan bevatten. Indien de solution niet past in het scherm zal er een scrolbar verschijnen. 29

32 De template We hebben gekozen om een relatief neutrale template te maken voor de vragenlijst. De reden hiervoor is dat de template binnen de frames van source geplaatst zal worden, welke op zich al wat kleur bevatten. Bovendien leest zwart op wit (hier lichtgrijs) het beste, wat ook de gebruiksvriendelijkheid ten goede moet komen. Het voordeel van een template is ook dat de hele vragenlijst er hetzelfde uit blijft zien wanneer er een andere vraag getoond wordt. De vraag en de antwoorden zullen zich namelijk steeds centreren in het linkergedeelte. Wanneer de gebruiker een antwoord aanduidt, moet hij vervolgens steeds voor next kiezen om een volgende vraag te zien. Het nut hiervan is dat de gebruiker minder snel rap zal doorklikken om snel een antwoord te zien te krijgen. Het doel was immers dat de gebruiker steeds zou nadenken over het antwoord dat hij dient op te geven. Daarnaast kan de gebruiker ook steeds terugkeren naar de vorige vraag, of de vragenlijst opnieuw starten. We kunnen dus stellen dat het bewegen doorheen de boom event-driven is. 30

33 De template voor de website werd gemaakt met behulp van Photoshop en ImageReady, twee grafische programma's van Adobe die het bewerken van foto's en ander digitaal beeldmateriaal toelaten. Het voordeel van deze software is dat aanpassingen zeer eenvoudig blijven, vermits de template uit verschillende modules (layers) bestaat die elk vrij aangepast kunnen worden. De implementatie met ImageReady laat vervolgens toe om snel imagemaps aan te maken, welke noodzakelijk zijn in HTML om de verscheidene gebieden van de template te kunnen afbakenen. Ook werd de volgende hulpbronnen gebruikt bij het maken van de template: Small size layout - Tutorial #89 uit 100 Tutorial Marathon Blend Forty-III 31

34 DIAGRAMMEN Het framework Enkele belangrijke klassen uit het framework zijn: XmlLoader leest een XML-bestand waarin de plugins gedefinieerd zijn. Vervolgens zal deze klasse voor elke plugin een PluginLocation maken, die oa bijhoudt waar het jar-bestand met de plugin staat en welke klasse de mainklasse is. PluginLoader is het runtime onderdeel van het framework. De belangrijkste verantwoordelijkheid van de manager is het activeren van plug-ins (plug-in code laden en de plug-in initializer klasse laden) en het beheren van dependencies (nvt in ons eigen framework). Manager beheert de verschillende plugins die door XmlLoader gedefinieerd werden. De manager treedt bijgevolg op als een interface, waarbij men de verschillende plugins kan (de)activeren. Om een algemene in- en uitvoer van en naar het framework te kunnen organiseren, is het belangrijk dat er bepaalde standaarden gebruikt worden. Zo zijn we overeengekomen dat elke plug-in een of meerdere vragen naar de gebruiker zal sturen, die de gebruiker moet beantwoorden en vervolgens terugsturen. Ook stelden we vast dat een plug-in zich in drie statussen kan bevinden. De statussen De implementatie van deze statussen gebeurt met behulp van het state pattern: De verschillende mogelijke statussen zijn: de plug-in is het probleem aan het oplossen solving de plug-in heeft het probleem opgelost solved de plug-in heeft het probleem niet kunnen oplossen unsolved Zodra een vragenlijst opgestart wordt, bevindt zij zich in de status Solving. Elke plug-in kan nu een object bevatten van het type PluginStatus die aangeeft in welke status de geladen plug-in zich momenteel bevindt. De PluginManager zal steeds op de hoogte zijn welke plugin zich in welke status bevindt. 32

35 De objecten Vermits de tool steeds vragen aan de eindgebruiker zal stellen, waarop deze dan een antwoord moet geven, kan men het ontwerp van het framework vereenvoudigen tot de volgende objecten: vragen (Question) antwoorden (Answer) er bestaan hier twee mogelijkheden: * statement: het antwoord moet gekozen worden uit een bestaande lijst * questionnaire: het antwoord moet ingetypt worden (meestal bij een open vraag) oplossingen (Solution) worden bijeengebracht in een report Een vraag kan steeds 2 of meerdere antwoorden bevatten, welke op zijn beurt opnieuw een vraag bevat. Dit levert het volgende klassendiagram op voor de vragen en antwoorden: 33

36 De manager De manager bevindt zich in het framework en zorgt dat de plugins geladen kunnen worden. Het concept is gebaseerd op het JPF project. FrameworkFacade en PluginLoader zijn beide singletons, waardoor ze een uniek en eenduidig aanspreekpunt hebben. Men kan hun instantie opvragen door middel van getinstance(), die volgens het singletonpattern de instantie zal aanmaken wanneer deze nog niet bestaat. Daarnaast maken de klassen ook gebruik van logging, een functie die Apache geleverd heeft en slechts geïmplementeerd diende te worden. 34

37 De XML Loader De klasse PluginLoader zal een instantie van XMLLoader aanmaken om het configuratiebestand configuration.xml uit te lezen. In dat bestand staan immers de plugins gespecifieerd die het framework moet laden bij het opstarten. De plugins zelf worden standaard in de folder /plugins afzonderlijk in een JAR-bestand bijgehouden en erven allen van de framework-instantie. Om te garanderen dat het XML-bestand correct ingelezen kan worden, werd een XSD-schema opgesteld: <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="plugins" type="pluginstype" /> <xs:element name="plugin" type="plugintype" /> <xs:element name="jarlocation" type="xs:string" /> <xs:element name="mainclass" type="xs:string" /> <xs:element name="title" type="xs:string" /> <xs:element name="description" type="xs:string" /> <xs:element name="version" type="xs:string" /> <xs:complextype name="pluginstype"> <xs:sequence> <xs:element name="plugin" minoccurs="1" maxoccurs="unbounded" /> </xs:sequence> </xs:complextype> <xs:complextype name="plugintype"> <xs:sequence> <xs:element name="jarlocation" minoccurs="1" maxoccurs="1" /> <xs:element name="mainclass" minoccurs="1" maxoccurs="1" /> <xs:element name="title" minoccurs="1" maxoccurs="1" /> <xs:element name="description" minoccurs="1" maxoccurs="1" /> <xs:element name="version" minoccurs="1" maxoccurs="1" /> </xs:sequence> </xs:complextype> </xs:schema> Een voorbeeld van een XML-configuratie levert dan het volgende op: <?xml version="1.0" encoding="utf-8"?> <plugins> <plugin autostart="true"> <jarlocation>plugin2.jar</jarlocation> <mainclass>backupplugin</mainclass> <title>storage/backup sizing tool</title> <description/> <version>1.0.0</version> </plugin> </plugins> 35

38 De webservice Een webservice kan men beschrijven als een applicatiecomponent dat toegankelijk is via de standaard webprotocollen. Een webservice biedt de mogelijkheid om via een client een dienst op te vragen aan een remote server. Deze aanvragen gebeuren meestal via het Internet. Technisch gezien zijn webservices software componenten, die via een netwerk kunnen worden aangeroepen om daarmee de services (diensten) van een bedrijf aan te roepen. Voor het aanroepen van webservices wordt gebruik gemaakt van gestandaardiseerde protocollen, welke volledig open en vrij te gebruiken zijn. Daarbij gaat het om de WSDL standaard voor het beschrijven van een webservice en XML, HTTP en SOAP voor het communiceren met een webservice. De webserivice langs de java zijde bestaat uit 3 onderdelen: de sessionhandler, de webservice klasse en de webserver zelf. Aangezien een webservice langs de java kant ook stateless is, werken we opnieuw met een proxyklasse: de sessionhandler. De sessionhandler is een singeltonklasse. Dit wil zeggen dat iedereen die deze klasse aanspreekt altijd met hetzelfde object werkt. Op deze manier kunnen we ervoor zorgen dat elke aanvraag die via de webservice binnenkomt, door de zelfde instantie behandeld word. Het aanmaken van een sessie private static int SESSIONCOUNT = 15; public String generatesession(string server,string database) { Random r = new Random(); curent = r.nextint(); while(sessions.containskey(string.valueof(curent))) { curent = r.nextint(); } String code = String.valueOf(curent); sessionkeys.add(code); sessions.put(code,startup.getinstance().getmanager().getactiveplugins().get(0). start()); sessions.get(code).setsettings(server,database,"",""); System.out.println(sessions.get(code).getQuestion().getDescription()); System.out.println(server + " " + database); if(sessionkeys.size()>sessioncount) sessionkeys.remove(0); return code; } Deze methode beheert de sessies. In de statische variabele SESSIONCOUNT wordt ingesteld hoeveel simultane sessies er geladen kunnen worden in het geheugen. Vervolgens wordt er at random een getal gegenereerd en toegewezen aan de sessie. Deze zal de sessie uniek identificeren. Wanneer de sessie tenslotte aangemaakt wordt, wordt de gevraagde vragenlijst geladen. 36

39 Het herladen van de plugins public void reloadplugins() { StartUp.getInstance().reload(); } We hebben er voor gezorgd dat indien men de vragenlijst herlaadt, dat de huidige gebruikers daar geen last van zullen ondervinden. Wanneer de plugin herstart wordt, wordt de lijst met openstaande sessies namelijk niet aangetast. Het communiceren met een plugin public String getsolutiontitle(string session) { if(sessions.get(session).getreport().getsolutions().get(0)==null) return ""; else return sessions.get(session).getreport().getsolutions().get(0).gettitle(); } De session key maakt communicatie met de plugin mogelijk. Elke klasse die een interactie met de plugin wil uitvoeren geeft daartoe die key mee. Op deze wijze wordt de juiste plugin uit de lijst geladen en kan er interactie optreden. Alle acties werken op deze manier. De Webservice klasse De webservice klasse bevat ook geen logica. Deze klasse krijgt requests door en geeft daar een antwoord op terug. Omdat deze methodes stateless werken, spreken we hier de sessionhandler aan. Wanneer we deze handler oproepen, vragen we (in onderstaand geval) de solution (oplossing voor de gevolgde vragenlijst) van de plugin. De plugin kan de juiste solution ophalen dankzij de meegegeven unieke session key. public String getsolutionbody(string session) { return SessionHandler.getInstance().getSolution(session); } Het ophalen van de huidige vraag en antwoorden gebeurt op een analoge wijze. 37

40 De webservice Als webservice hebben we gekozen voor Axis2 van Apache, aangezien deze ons de meeste mogelijkheden bood. Bovendien staat Apache bekend voor het leveren van degelijke software en hebben we reeds andere software van Apache in onze applicatie gebruikt (oa Log4J). Axis2 is volledig gebaseerd op open standaarden en is zeer flexibel in gebruik. Daarnaast ondersteunt het ook ten volle WSDL (Web Servoce defenition language). WSDL beschrijft alle acties en communicatie tussen web service en web client in XML (zie verder...) Een ander groot voordeel van Axis2 is dat er plugins voor in eclipse gemaakt zijn. Op deze manier is het heel eenvoudig om vanuit eclipse een java programma om te bouwen tot een web service. Om een service te maken van een java programma moeten we de axis2 service plugin 6 gebruiken. Deze gaat een JAR-bestand genereren van de Java-applicatie, en de klasses die voor de communicatie dienen beschrijven in een XML-bestand. In Eclipse doet men dit als volgt: Eerst selecteert men welke applicatie men wil inpakken. Indien de Java-applicatie gebruik maakt van externe bestanden om gegevens uit te lezen, moet men de optie include.class files only uitvinken. 6 Zie 38

41 Vervolgens dient men aan te duiden welke methodes er gepubliceerd mogen worden. Het kan namelijk zijn dat niet alle (publieke) methodes zichtbaar mogen zijn voor de webservice. Nadat alles ingegeven, dient men tenslotte de locatie van het archief aan te geven. Nu is de webservice klaar. 39

42 Wanneer de webservice aangemaakt is, verschijnt er een XML-bestand genaamd service.xml : Dit bestand beschrijft alle beschikbare methodes, en kan eventueel ook manueel aangepast worden door de ontwikkelaar. 40

43 Wanneer men de webservice raadpleegt via de browser, krijgt men het volgende: We zien hier dat de verschillende methodes in WSDL beschreven worden. Op deze manier kan elke client die WSDL begrijpt, de methodes aanspreken. 41

44 Het laden van de plugins Tijdens het laden van de plugins zal de Manager eerst een lijst bekomen met de beschikbare plugins die voor handen zijn. Deze worden uitgelezen door XmlLoader uit het bestand configuration.xml. Vervolgens zal de Manager voor iedere bestaande plugin aan ObjectFactory de opdracht geven om deze in te laden. Deze stuurt vervolgens op zijn beurt de opracht door naar de JarClassLoader. De JarClassLoader zal het bijhorende JAR-archief van de plugin inladen en daar een instantie van maken indien de hoofdklasse erft van Plugin. 42

45 43

46 Het aanmaken van een sessie Wanneer we een sessie aanmaken, zal de SessionHandler de startuphandler oproepen. Deze klasse zorgt ervoor dat er slechts één instantie aangemaakt kan worden van de plugin manager. Op deze manier worden alle bruikbare plugins maar eenmaal geladen in het geheugen. Vervolgens vraagt de SessionHandler via de startup klasse (delegatie) aan de manager om een exacte kopie van de gekozen plugin. Deze zal hij dan bewaren en gebruiken indien wanneer er interacties met de plugin dienen uitgevoerd te worden. 44

47 45

48 Een actie uitvoeren via de webservice Wanneer een derde partij met de webservice wil communiceren, zal dit gebeuren via de SessionHandler. Aangezien deze klasse een singleton klasse is, zal de gebruiker via de sessionkey altijd op dezelfde plugin een actie uitvoeren. 46

49 De plugin De objecten De plugin wordt geïmplementeerd door het framework en bevat bijgevolg extenties van de vooropgestelde klasses daaruit. Zo erft BackupQuestion van Question, BackupAnswer van Answer en BackupReport van Report. Net zoals in de database, bevat een BackupQuestion steeds een BackupAnswer. Een BackupAnswer kan op haar beurt ofwel een BackupReport, ofwel een BackupQuestion bevatten. Deze wordt dan opgeslagen in een object ChildNode. Bovendien bevat elk object steeds een verwijzing naar zijn ouder, hetgeen de verbinding tussen BackupReport en BackupAnswer, en tussen BackupAnswer en BackupQuestion verklaart. De database De databaseverbinding van de plugin wordt op een gelijkaardige manier tot stand gebracht als bij de administratortool (zie verder). We gaan daar hier dus niet verder op in. 47

50 De opstartklasse Daarnaast bevat de plugin ook een implementatie voor de gestelde Plugin, namelijk BackupPlugin. Deze klasse zal de plugin in orde stellen wanneer deze door het framework aangesproken wordt. Daartoe maakt zij verbinding met de database en roept zij de FlowChart klasse aan opdat die de verschillende objecten zou laden naar het geheugen. Deze objecten worden elk in een HashMap bewaard (questions, answers, solutions, solutionpaths) opdat ze snel aanspreekbaar zijn en om deze reden ook niet in een boomstructuur geplaatst dienen te worden, hetgeen redelijk veel resources in beslag zou nemen wanneer er meerdere clients geconnecteerd zijn met de webserver. Om ook snel te kunnen terugkeren naar vorige en volgende vraag, worden ook de child- en parentanswers in een hashmap bewaard. Bij elke stap zal de flowchart vervolgens controleren in welke toestand de vragenlijst zich bevindt. Wanneer hij een antwoord tegenkomt zonder nieuwe vraag of solution, zal hij zich als Unsolvable verklaren, terwijl hij in het andere geval (bij een solution) op Solved komt te staan. Standaard staat de status in Solving modus. Tenslotte kan men heel eenvoudig een doorlopen pad achterhalen mbv de lijst questionpath, hetgeen de plugin ook uitbreidbaar maakt. Wanneer men immers zou beslissen om de gevolgde paden te gaan loggen, dan kan men mits enige aanpassing deze lijst hiertoe gebruiken. 48

51 Men kan nu op zeer eenvoudige wijze gegevens ophalen uit de vragenlijst: getquestion zal de huidige vraag ophalen undolast keert terug naar de vorige vraag getreport zal de solution ophalen voor de huidige vraag. Voor deze plugin is het enkel interessant deze methode aan te roepen wanneer de status van de plugin op Solved staat. In de andere gevallen zal er immers geen solution beschikbaar zijn setresponse zal de volgende vraag laden aan de hand van een meegeleverd antwoord. Hieronder vindt u een voorbeeld waarin er een solution gevraagd wordt aan BackupPlugin: 49

52 De mapper De mapper uit de plugin gaat de relationele tabellen uit de databank lezen en omzetten naar objecten. Deze objecten gaat de mapper vervolgens niet in een tree plaatsen, maar per sleutel sorteren in een TreeMap. Vermits elk object uit deze mappen geselecteerd zal worden aan de hand van hun sleutel, staat deze methode garant voor een snelle afhandeling. Het voordeel van deze aanpak is dat het heel wat kostbare processortijd (en dus ook toegangstijd) en bandbreedte uitspaart. Voor elke client die met de webserver communiceert, wordt er immers een kloon van de plugin aangemaakt, die elk het doorlopen van een vragenlijst door een client verzorgt. Vermits elk object die over het netwerk verstuurd wordt, heel dicht aanleunen bij de objecten uit de relationele databanken, houdt dit in dat de data die over het netwerk verstuurd wordt beperkt blijft. De webserver heeft ook geen idee welke vraag er volgt op een andere, en moet steeds een antwoord sturen naar de webservice vooraleer hij een nieuwe vraag kan krijgen. 50

53 51

54 De administratortool De actionlisteners De actionlisteners uit de administratortool vormen voorname klassen bij het verwerken van de verscheiden acties. Hieronder vindt u een kort overzicht van de verschillende actionlisteners en hun functies: De TreeMouseListener-klasse luistert naar muis events op de tree. Als de gebruiker klikt op een node, dan zal deze klasse aan de aangeklikte node vragen welke CRUD-acties er mogen uitgevoerd worden en deze vervolgens in een menu aan de gebruiker tonen. Onderstaande SSD toont hoe TreeMouseListener een event opvangt, nadat een muisevent getriggerd werd. Indien het om een rechtermuisklik blijkt te gaan, zal de luisterklasse het menu opvragen aan de aangeklikte dropnode via getcrudmenu. Vervolgens zal hij het menu weergeven in een popup. 52

55 De PopupMenuActionListener-klasse luistert naar welke actie de gebruiker geselecteerd heeft nadat hij het popup menu te zien kreeg. Vervolgens zal deze listener bepalen welke acties er moeten ondernomen worden. De belangrijkste methodes zijn : Add_question(): deze methode zal de gebruiker een vraag laten invoegen, waarna hij deze zal controleren op basis van een aantal voorwaarden. Daarna zal hij de gebruiker vragen om een aantal mogelijke antwoorden in te geven (minimaal twee). Delete_question(): deze methode gaat een vraag verwijderen. Eerst zal nagekeken worden of de vraag in de boom of het orphanage zit. Indien de vraag uit het orphanage komt, zal deze vraag ook overal uit de boom verwijderd worden. Delete_answer(): deze methode gaat een antwoord verwijderen. Eerst wordt er gekeken of de vraag waar dit antwoord bijhoort minimaal 3 antwoorden bevat. Vervolgens wordt er nagegaan of de bijhorende vraag uit het Orphanage, dan wel uit de boom komt. Indien het antwoord uit het orphanage komt, zal dit antwoord ook overal uit de boom verwijderd worden (omgekeerd niet). Change_answer_formula() : deze methode gaat de beschrijving van het antwoord wijzigen. Er wordt eveneens gecontroleerd of het nieuwe antwoord al niet bij dezelfde vraag bestond. Change_question_formula(): deze methode gaat de beschrijving van de vraagstelling wijzigen. Er wordt eveneens gecontroleerd of de nieuwe vraagstelling niet dezelfde is als een bestaande. Remove_clones(): Deze methode zorgt ervoor dat een node niet meer gekend is bij zijn clones en dat hij zijn clones ook niet meer kent. De SolutionPopupActionListener-klasse werkt zoals de PopupMenuActionListener-klasse, maar is specifiek aangepast voor solutions. De SolutionEditActionListener-klasse luistert naar de acties die de administrator uitvoert wanneer hij een solution wijzigt. 53

56 De database De database-verbinding bestaat uit een aantal klassen, die elk een eigen taak hebben. De belangrijkste hiervan zitten in /database, namelijk de klassen DatabaseInterface, Database, DatabaseFacade en TransactionManager. Database die de inteface DatabaseInterface implementeert communiceert rechtstreeks met de database via JDBC. Daartoe heeft zij een connectieobject van het type DatabaseConnection, die de details voor de verbinding met een database bijhoudt. Opdat andere klasses eenvoudig zouden kunnen communiceren met Database, hebben we een facade gemaakt, namelijk DatabaseFacade. Deze bevat allerlei eenduidige methodes die bijvoorbeeld door de verschillende mappers gebruikt kunnen worden. Zo gebruikt elke mapper (zie verder) de methode loadobjects om een tabel uit te lezen. Wanneer eenduidige methodes niet mogelijk zijn, is het mogelijk om ook via de facade rechtstreeks SQL code in te voeren via de methodes executeactionquery. De databasefacade bevat een pool van twee databases: enerzijds is er de database die de vragenlijsten indexeert, anderzijds de database die een bepaalde vragenlijst bevat. Deze tweede database-object kan regelmatig veranderen, namelijk bijvoorbeeld wanneer men een nieuwe vragenlijst aanmaakt en daarin gaat werken. Elke wijziging in een vragenlijst zal bijgevolg enkel invloed hebben op de tweede (variabele) database, terwijl elke wijziging op een vragenlijst enkel gevolgen zal hebben in de eerste (statische) database. 54

57 Een andere belangrijke klasse, is de klasse TransactionManager. Deze klasse zal ervoor zorgen dat de vragenlijst uit het geheugen opgeslagen kan worden naar de database. Bij het opslaan zullen eerst alle tabellen geledigd worden met het flush commando. Vervolgens zal de manager achtereenvolgens de vragenlijst zelf, de orphan vragen en de orphan solutions wegschrijven naar de database. Het wegschrijven wordt gestopt zodra er een fout optreedt, wat als voordeel heeft dat men op die manier makkelijk kan achterhalen wanneer het opslaan juist faalde, zonder te veel data kwijt te zijn (de data die wel weggeschreven is, is steeds consistent vermits de boom als het ware doorbladerd wordt tijdens het wegscrhrijven. Een fout betekent dus dat een bepaald deel van de boom niet opgeslagen zal zijn). Hieronder vindt u een klassendiagram van beide klassen: Tenslotte bevat de package /database nog twee innerpackages, namelijk mapper en tables. Deze laatste package bevat een klasse voor elke tabel die in de databank aanwezig is: Question, Answer, Solution, SolutionPath en Vragenlijst. De mappers zullen hieronder besproken worden. 55

58 De mappers De mappers bevinden zich in /database/mapper. Elke mapper die de objecten uit de databank zal lezen en naar objecten zal vertalen, implementeert de klasse Mapper. Bovendien is elke mapper ook een singletonklasse vermits ze een cache bevatten met de geladen objecten uit de database. Daarnaast is elke mapper ook een Observer vermits ze hun cache moeten vernieuwen wanneer er geconnecteerd wordt met een andere database. Elke mapper heeft methodes voor de gebruikelijke CRUD-operaties zoals insert, update en delete. Daarnaast zijn er een aantal andere methodes gedefinieerd die het laden van de objecten tewerkstelligen. De methode createnewtablefor zal ervoor zorgen dat een nieuwe tabel aangemaakt wordt van het type dat de mapper verzorgt. Deze methode zal gebruik maken van de constante TABLECREATECMD om de tabel correct aan te maken. Wanneer een tabel geledigd moet worden, kan dit snel bereikt worden mbv. flush. 56

59 Het opbouwen van de tree Wanneer de mappers de objecten geladen hebben naar het geheugen, is het vervolgens de taak van TreeFactory om de objecten in een boomstructuur te gaan plaatsen. Naar buiten toe heeft deze klasse slechts één publieke methode, namelijk createtree. Wanneer men deze methode oproept, krijgt men de vragenlijst terug, waarin de vragen, antwoorden en solutions zitten. Deze methode gaat eerst een rootantwoord aanmaken (niet zichtbaar naar buiten deze methode toe) waaraan vervolgens rootvraag zal hangen. In de databank kan men dit rootantwoord herkennen aan de answerformule 'rootitem' en de question_parent_id met waarde 0. Vervolgens gaat het programma recursief de boom doorlopen (depth-first algoritme) om de vragen en antwoorden in de boom te plaatsen. Tenslotte zullen ook de solutions aan de boom gekoppeld worden met behulp van expandsolutions. public static NodeQuestion createtree() { Answer answer = locaterootanswer(); if (answer == null) return new NodeQuestion(); //recursieve methode uitvoeren voor het laden van de kinderen NodeAnswer rootanswernode = new NodeAnswer(answer); expandanswers(rootanswernode); expandsolutions(rootanswernode.getchildquestion()); return rootanswernode.getchildquestion(); } De klasse DomainCache bouwt met behulp van de mappers een cache van het orphanage op. Daartoe vraagt zij eerst aan de QuestionMapper met de methode getorphans een lijst met vragen die los hangen. Vervolgens zal hij vraag per vraag overlopen en opzoeken welke antwoorden, die hij aan AnswerMapper gevraagd heeft, bij die respectievelijke vraag horen. Wanneer het laden van de orhpan vragen voltooid is, geeft de DomainCache deze terug in een lijst. 57

60 Het opbouwen van de gui De hele gui wordt beheerd via de FrameHandler klasse. Deze klasse maakt bij het opstarten van de applicatie een frame van het type MainFrame aan, en verzorgt ook de tray. De frame zelf is het venster dat op het scherm getoond zal worden, en bijgevolg alle componenten correct moet kunnen laden. Om deze componenten gemakkelijk te kunnen beheren, bevat MainFrame één panel, waarin elk afzonderlijk onderdeel vervolgens zijn inhoud kan in plaatsen. Wanneer de gebruiker dan kiest om een andere component te laden, kan het programma eenvoudig de inhoud van het huidige panel wissen, en de nieuwe inhoud opbouwen. Dit gebeurt dan door middel van de methode setmainpane. Deze methode zal in feite zijn taak delegeren naar de panel zelf, die vervolgens de taak zal afhandelen: public void setmainpane(jsavepanel panel) { pnlmain.setpanel(panel); } De panel zal niets anders doen dan zijn inhoud ledigen en opnieuw opbouwen. De inhoud bestaat steeds uit twee componenten, enerzijds de meegegeven panel, anderzijds een statusbalk die de gebruiker op de hoogte houdt van eventuele foutmeldingen. public void setpanel(jsavepanel panel) { this.panel = panel; this.removeall(); this.add(panel); this.add(feedbacklabel); this.updateui(); } 58

61 De nodes Om in een tree componenten te kunnen verslepen en bepaalde afbeeldingen te kunnen geven, zijn er een aantal methodes nodig. Daarom hebben wij besloten om de klasse DropNode te maken, welke erft van de klasse DefaultMutableTreeNode. Elke node die dan nog in de boom zou worden geplaatst kan hier dan van erven. Op deze manier kunnen alle nodes op de zelfde manier behandeld worden. Een kort overzicht: RootDropnode: Rootnode is de eerste node van een boom, en wordt steeds gekoppeld aan een aantal nodes die onder deze rootnode zullen hangen. QuestionDropNode: Deze node stelt een vraag voor. Ze kan versleept worden en men kan er CRUID-operaties op uitvoeren. Een QuestionDropNode kan enkel hangen aan een RootDropNode of een AnswerDropNode. AnswerDropNode: Deze node stelt een antwoord voor. Op deze node kan je enkel CRUD-operaties uitvoeren. Een AnswerDropNode kan enkel geplaatst worden onder een RootDropNode. SolutionDropNode: Deze node stelt een solution voor. Deze node kan je verslepen en je kan er CRUD-operaties op uitvoeren. Een SolutionDropNode kan enkel geplaatst worden onder een AnswerDropNode. HelpDropNode: Deze node stelt een helpbestand voor in de helpfunctie. Er kunnen geen operaties op uitgevoerd worden. Een HelpDropNode kan enkel geplaatst worden onder een RootDropNode. 59

62 De taalmanager De taalmanager zorgt ervoor dat het programma vertaald wordt naar de op de computer ingestelde taal. Daartoe beschikt zij over een aantal tekstbestanden (in de folder /settings/language), waarin de verschillende taalobjecten gedefinieerd staan. Een voorbeeld van een dergelijk bestand is LanguageResources_nl_BE.properties, welke de nederlandstalige taalobjecten voor een Belgisch ingestelde computer omschrijft. Vermits het bestand een doodgewoon tekstbestand is, kan het makkelijk aangepast worden: erroranswersnotloaded=de antwoorden konden niet worden geladen! errordbempty=lege database! De default indextabel wordt nu aangemaakt! errordbemptyfailure=aanmaken van de default indextabel mislukt! errordbinvalid=ongeldige database! Vooraleer men de taalmanager kan gebruiken, moet men Translator eerst nog initialiseren. Dit gebeurt in de manager van het programma, namelijk FrameHandler: //set up language manager Translator.setBundleName("settings.language.LanguageResources"); Locale baselocale = (Locale)null; Translator.setLocale(baseLocale); Wanneer men in het programma nu een bepaalde term wenst te laten weergeven, hoeft men slechts één regel code in te geven: System.out.println(Translator.getTranslationString("errorDbEmpty")); geeft als resultaat: Lege database! De default indextabel wordt nu aangemaakt! 60

63 De Front-end De web reference De ASP-zijde bevat geen logica. De enige twee aanwezige intelligente onderdelen zijn de web reference en de service handler. De web reference maakt, zoals de naam het al zegt, een referentie naar de web service. Via deze referentie kunnen methodes worden uitgevoerd. Deze methodes zijn stateless wat inhoudt dat je een actie kan laten gebeuren, maar dat die daarna afgesloten is. Hierdoor is het onmogelijk om een instantie van een webservice object te maken. Om dit probleem op te lossen hebben we een de ServiceHandler gemaakt. Deze klasse gaat een session key opvragen aan de webservice en deze bewaren. Telkens wanneer er een methode opgeroepen wordt via de web service zal de session key meegegeven worden. Op deze manier hebben we een proxy klasse gemaakt waardoor het voor het asp programma lijkt alsof we met een lokaal object werken. 61

64 De verbinding maken public ServiceHandler(String server, String lijst) { //we maken een session aan //en aan de hand van deze session kunnen we communiceren a = new StorageTool.sourceagent(); StorageTool.getSessionKey key = new StorageTool.getSessionKey(); key.server = server; key.lijst = lijst; StorageTool.getSessionKeyResponse res = a.getsessionkey(key); sessionkey = } public ServiceHandler() { this(" ", "vragenlijst01"); } We maken de initiële verbinding door een instantie aan te maken van de ServiceHandler-klasse. We weten dat de methode voor een session key te maken er als volgt uit ziet: getsessionkey ( server As string, lijst As string ) As string Om deze web methode uit te voeren moeten we 2 objecten maken, eentje om data te verzenden, en eentje om data te ontvangen. Het zendende object StorageTool.getSessionKey key = new StorageTool.getSessionKey(); key.server = server; key.lijst = lijst; Het ontvangende object a = new StorageTool.sourceagent(); StorageTool.getSessionKeyResponse res = a.getsessionkey(key);<- key is het object dat we hierboven hebben aangemaakt sessionkey = Deze manier van werken toont aan dat een webservice werkt zoals een website, er zijn POST- en RESPONSE-gegevens. 62

65 Nu we een sessionkey hebben kunnen we effectief acties ondernemen op de webservice. public String getstatus() { //we vragen de status op van de plugin StorageTool.getStatus gs = new StorageTool.getStatus(); gs.session = sessionkey; StorageTool.getStatusResponse gsr = a.getstatus(gs); return } Elke interactie werkt zoals bovenstaand voorbeeld. We maken opnieuw een zendend object aan, welke de session key meegeeft aan de service. Het ontvangend object krijgt nu de status van de plugin terug. Naast de ServiceHandler is er nog een klasse die omwille van administratieve redenen connectie kan maken met de webservice, en dat is de ResetHandler. Wanneer een administrator de vragenlijst(en) heeft gewijzigd, dan moet de service opnieuw geladen worden zonder invloed te hebben op de openstaande sessies. Om verwarring te voorkomen hebben we dan ook gekozen om de connecties door een apparte klasse te laten verzorgen. public class ResetHandler { public ResetHandler() { //een instantie aanmaken van de source agent webservice klasse StorageTool.sourceagent a = new StorageTool.sourceagent(); //de methode reset triggeren StorageTool.ReloadPlugins r = new StorageTool.ReloadPlugins(); r.nothing = ""; StorageTool.ReloadPluginsResponse rp = a.reloadplugins(r); } } We kunnen nu communiceren met de webservice alsof het een 'normaal' object is. Een applicatie bouwen is bijgevolg niet moeilijk meer: 63

66 In de webpagina plaatsen we de service handler in een sessie. Op die manier wordt de verbinding met de webservice bewaard per client. Indien de pagina met de vragenlijst voor de eerste maal geladen wordt, wordt de session cache geledigd. Op deze manier voorkomen we dat de gebruiker een oude in de cache opgeslagen lijst te zien krijgt wanneer hij de pagina opent. if (sh.getstatus() == "solved") Response.Redirect("~/Solution.aspx"); if (sh.getstatus() == "unsolvable") Response.Redirect("~/DefaultSolution.aspx"); Bij het laden van de pagina wordt er ook gekeken naar de huidige status. Indien de vragenlijst solved of unsolvable is, zal de gebruiker doorgestuurd worden naar een andere pagina. Een solution tonen: sh = (ServiceHandler)Session["tool"]; lbltitel.text = sh.getsolutiontitle(); lbldescription.text = sh.getsolutionbody(); Wanneer we op de solution pagina komen, gebruiken we dezelfde session om zo de aangeboden solution te kunnen weergeven. 64

67 Het resetten van de tool Wanneer een vragenlijst via de administratortool gewijzigd wordt, worden deze eerst naar de database weggeschreven. Naar de webserver toe worden de wijzigingen van de vragenlijst niet meteen doorgevoerd opdat er een scheiding zou zijn tussen test- en productieomgeving. Op deze manier kan men aanpassingen maken en opslaan om later verder te werken, zonder dat de webclients daar iets van merken. Via de reset-pagina kan men de webserver forceren de vragenlijst te hernieuwen. Door op de knop Reset te klikken, wordt de ResetHandler gestart. Deze klasse doet niets meer dan aan de webservice te melden dat er moet gereset worden. 65

68 TESTEN JUnit testen JUnit7 is een opensource framework dat geautomatiseerd unit testen mogelijk maakt. Aangezien de applicatie zich moeilijk leent tot unit tests, hebben we enkel het belangrijkste onderdeel, namelijk het framework, voorzien van JUnit testen. De verschillende tests kunnen opgeroepen worden met behulp van de suite FrameworkTestSuite. Deze klasse ziet er als volgt uit: public class FrameworkTestSuite { public static Test suite() { TestSuite suite = new TestSuite(); suite.addtestsuite(frameworktest.class); // Add more tests here //... } } return suite; /** * Runs the test suite using the textual runner. */ public static void main(string[] args) { junit.textui.testrunner.run(suite()); } De belangrijkste tester die we ontworpen hebben is de FrameworkTest, die gaat testen of het aantal geladen plugins overeenkomt met het aantal gedefinieerde plugins in het configuratiebestand (testfoundplugins). Vervolgens wordt er getest of de eerst geladen plugin ook overeenkomt met de eerste plugin uit het configuratiebestand (testgetplugin). Tenslotte gaat de test de eerste plugin laden en en een antwoord geven op de eerste vraag (testpluginstatus). Indien dit antwoord tot een report leidt, faalt de test. Er wordt immers uitgegaan van het feit dat de vragenlijst meer dan een vraag zal bevatten. Op die manier kan men testen of de verschillende statussen Solving, Unsolvable en Solved degelijk werken

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

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 informatie

Indoor Navigation System

Indoor Navigation System Project Indoor Navigation System Onderwerp: Indoor Navigation System Document: Handleiding Ontwikkeltools Groep: EII6RTa Auteurs: 1. Jordi Betting 109277 2. Jerome Bos 113180 3. Theo Miltenburg 112883

Nadere informatie

Installatie MicroSoft SQL server 2012 Express

Installatie MicroSoft SQL server 2012 Express Installatie MicroSoft SQL server 2012 Express Het installeren van deze MicroSoft SQL server 2012 Express dient te gebeuren door iemand met volledige rechten op het systeem. Wij adviseren dit door een systeembeheerder

Nadere informatie

Installatie SQL: Server 2008R2

Installatie SQL: Server 2008R2 Installatie SQL: Server 2008R2 Download de SQL Server 2008.exe van onze site: www.2work.nl Ga naar het tabblad: Downloads en meld aan met: klant2work en als wachtwoord: xs4customer Let op! Indien u een

Nadere informatie

HANDLEIDING DMS Plugin Installatie, configuratie & werking

HANDLEIDING DMS Plugin Installatie, configuratie & werking HANDLEIDING DMS Plugin Installatie, configuratie & werking Dit document is de handleiding voor de installatie, configuratie en werking van de DMS Plugin. Versie 1-12/09/2005 Inhoudstafel 1 Installatie...

Nadere informatie

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april 2009. Versie 2.1.0

Technisch 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 informatie

Installatie en configuratie documentatie

Installatie en configuratie documentatie Installatie en configuratie documentatie Assistance Web Portal v. 2.58, 2.60 Voor Windows 2003 / 2008 / XP / Vista / Windows 7 Assistance PSO handleiding, uitgegeven door Assistance Software. Alle rechten

Nadere informatie

Standard Parts Installatie Solid Edge ST3

Standard Parts Installatie Solid Edge ST3 Hamersveldseweg 65-1b 3833 GL LEUSDEN 033-457 33 22 033-457 33 25 info@caap.nl www.caap.nl Bank (Rabo): 10.54.52.173 KvK Utrecht: 32075127 BTW: 8081.46.543.B.01 Standard Parts Installatie Solid Edge ST3

Nadere informatie

Door velen wordt Photoshop beschouwd als de industriestandaard voor zowel drukwerk en DTP als voor het web wat betreft digitale beeldbewerking.

Door velen wordt Photoshop beschouwd als de industriestandaard voor zowel drukwerk en DTP als voor het web wat betreft digitale beeldbewerking. Adobe Photoshop Adobe Photoshop is een grafisch programma voor het bewerken digitale beelden via de computer. Photoshop is beschikbaar voor Mac OS X en Windows. Tot en met versie 4 bestond er ook een UNIX-variant.

Nadere informatie

Mach3Framework 5.0 / Website

Mach3Framework 5.0 / Website Mach3Framework 5.0 / Website Handleiding Mach3Builders Inhoudsopgave 1 Inloggen...5 1.1 Ingelogd blijven...6 1.2 Wachtwoord vergeten...7 2 Applicatie keuzescherm...8 2.1 De beheeromgeving openen...9 3

Nadere informatie

Technisch 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 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 informatie

Installatie Solid Edge ST5

Installatie Solid Edge ST5 Installatie Solid Edge ST5! NEEM DIT DOCUMENT DOOR VOORDAT U UW HUIDIGE SOLID EDGE VERSIE GAAT VERWIJDEREN! LET OP!! SOLID EDGE ST5 KUNT U NIET MEER OP WINDOWS XP INSTALLEREN LET OP!! DE ST5 LICENSE MANAGER

Nadere informatie

Handleiding voor het installeren van VBA scripts in Outlook

Handleiding voor het installeren van VBA scripts in Outlook Handleiding voor het installeren van VBA scripts in Outlook Brondocument E:\OutLook\InstallerenVBAScriptOutlook.odt Versiebeheer Versie Datum Uitleg 1.0v 21-03-12 1e versie na draaien prototype klant 1.1v

Nadere informatie

Handleiding Reinder.NET.Tasks.SQL versie 2

Handleiding Reinder.NET.Tasks.SQL versie 2 Handleiding Reinder.NET.Tasks.SQL versie 2 Reinder Stolte Tramstraat 33 8771RR Nijland Inhoudsopgave 1 Algemeen... 2 2 Installeren en configureren... 3 3 Taken instellen... 4 3.1 Taskname (Taaknaam) verplicht

Nadere informatie

Selenium IDE Webdriver. Introductie

Selenium IDE Webdriver. Introductie Selenium IDE Webdriver Het Wielsem 10, 5231 BW s- Hertogenbosch, telefoon 073-6409311 e- mail info@testwork.nl internet http://www.testwork.nl 1 Inhoudsopgave 1 Inhoudsopgave... 2 2 Selenium IDE... 3 3

Nadere informatie

Handleiding voor het installeren van Tomcat7

Handleiding 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 informatie

Werken op afstand via internet

Werken op afstand via internet HOOFDSTUK 12 Werken op afstand via internet In dit hoofdstuk wordt uitgelegd wat er nodig is om op afstand met de ROS artikel database te kunnen werken. Alle benodigde programma s kunnen worden gedownload

Nadere informatie

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise Inhoudsopgave 1. Voorbereiding... 4 2. Web Service Connector tool configuratie... 5 3. TaskCentre taak voor het aanmaken van

Nadere informatie

Installeer Apache2: Landstede februari 2009 versie 3 1 Bertil Hoentjen

Installeer Apache2: Landstede februari 2009 versie 3 1 Bertil Hoentjen Installeer Apache2: Deze howto gaat over name based virtual hosting onder Apache 2.x., en is getest onder OpenSUSE 11 maar is in feite ook van toepassing op de andere distributies. Alleen Debian en afgeleide

Nadere informatie

Remote Back-up Personal

Remote 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 informatie

Installatie stappen Microsoft SQL Server 2008 R2 Express With Tools:

Installatie stappen Microsoft SQL Server 2008 R2 Express With Tools: Installatie stappen Microsoft SQL Server 2008 R2 Express With Tools: Versie: 201212031 Pagina 1 van 7 Dit stappenplan is gebasseerd op een computer zonder eerdere Microsoft SQL Server installaties. Is

Nadere informatie

icafe 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 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 informatie

ManualMaster Systeem 6.1 (ManualMaster Administrator, ManualMaster WebAccess en ManualMaster WebEdit)

ManualMaster Systeem 6.1 (ManualMaster Administrator, ManualMaster WebAccess en ManualMaster WebEdit) Let op: de versie op de gebruikerswebsite kan worden bijgewerkt! Het kan dus zijn dat uw geprinte versie verouderd is. Van toepassing op ManualMaster Systeem 6.1 (ManualMaster Administrator, ManualMaster

Nadere informatie

Denit Backup instellen op een Linux server

Denit Backup instellen op een Linux server Denit Backup instellen op een Linux server Deze handleiding beschrijft de stappen om de back-up software van Ahsay in te stellen. AANMAKEN BACK-UP SET... 2 DE SCHEDULER INSTELLEN... 4 HET FILTER INSTELLEN...

Nadere informatie

Handleiding DirectAdmin

Handleiding DirectAdmin Handleiding DirectAdmin Heeft uw hostingpakket het control panel DirectAdmin dan leest u in deze sectie hoe u uw pakket kunt beheren. Dat doet u via : http://www.uwdomein.nl:2222. 1 Inloggen Voordat u

Nadere informatie

ZIEZO Remote Back-up Personal

ZIEZO 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 informatie

Rodin installatiehandleiding (vanaf versie 2.1.xxx.x)

Rodin installatiehandleiding (vanaf versie 2.1.xxx.x) Rodin installatiehandleiding (vanaf versie 2.1.xxx.x) Introductie De Rodin applicatie bestaat uit een programma en een database. Het programma zal altijd lokaal op uw computer worden geïnstalleerd, terwijl

Nadere informatie

Handleiding DirectAdmin

Handleiding DirectAdmin Handleiding DirectAdmin Heeft uw hostingpakket het control panel DirectAdmin dan leest u in deze sectie hoe u uw pakket kunt beheren. Dat doet u via : http://www.uwdomein.nl:2222. Handleiding DirectAdmin

Nadere informatie

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO Handleiding/Manual Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO Inhoudsopgave / Table of Contents 1 Verbinden met het gebruik van

Nadere informatie

Bitrix Site Manager gebruikershandleiding BureauZuid

Bitrix Site Manager gebruikershandleiding BureauZuid Bitrix Site Manager gebruikershandleiding BureauZuid Introductie Deze gebruikershandleiding geeft gedetailleerde basisinformatie over hoe te werken met Bitrix Site Manager. Deze handleiding is bedoeld

Nadere informatie

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers English Instructions Windows 8 out-of-the-box supports the ICARUS Illumina (E653) e-reader. However, when users upgrade their Windows

Nadere informatie

Katholieke Hogeschool Kempen

Katholieke Hogeschool Kempen Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica Labo 1 Beheer van databanken Svenia CLAES (3TI3) Britt JACOBS (3TI3) Lies VAN

Nadere informatie

Installatiehandleiding TiC Narrow Casting Manager

Installatiehandleiding TiC Narrow Casting Manager Installatiehandleiding TiC Narrow Casting Manager Inhoudsopgave 1. Algemeen - 3-2. Installatie PostgreSQL database server - 4-3. Installatie FTP server - 9-4. Aanmaken account in FileZilla server - 13

Nadere informatie

Werkomgeving. Android Studio. Android - werkomgeving 1/6

Werkomgeving. Android Studio. Android - werkomgeving 1/6 Android - werkomgeving 1/6 Werkomgeving Android Studio Installatie Ga naar de volgende URL: http://developer.android.com/sdk/index.html Klik op de knop "Download Android Studio for Windows" om het programma

Nadere informatie

Stappenplannen MailPlus SOAP API

Stappenplannen MailPlus SOAP API Stappenplannen MailPlus SOAP API Stappenplannen MailPlus SOAP API oktober 2009 Introductie Dit document bevat stappenplannen welke u als technische gebruiker van MailPlus op weg kunnen helpen met de koppeling

Nadere informatie

Van dvd naar webserver. Marcel Nijenhof Marceln@pion.xs4all.nl 18 Juli 2006 http://pion.xs4all.nl/lezingen/centos.pdf

Van dvd naar webserver. Marcel Nijenhof Marceln@pion.xs4all.nl 18 Juli 2006 http://pion.xs4all.nl/lezingen/centos.pdf Van dvd naar webserver Marcel Nijenhof Marceln@pion.xs4all.nl 18 Juli 2006 http://pion.xs4all.nl/lezingen/centos.pdf 1 Indeling Start installatie Wat is linux Wat zijn distributies Geschikte distributies

Nadere informatie

Zelftest Informatica-terminologie

Zelftest Informatica-terminologie Zelftest Informatica-terminologie Document: n0947test.fm 01/07/2015 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTIE Deze test is een zelf-test, waarmee u

Nadere informatie

Installatie en configuratie documentatie

Installatie en configuratie documentatie Installatie en configuratie documentatie Assistance Web Portal v. 2.x Voor Windows 2003 / XP / Vista Assistance PSO handleiding, uitgegeven door Assistance Software. Alle rechten voorbehouden. Niets uit

Nadere informatie

Zelftest Java concepten

Zelftest Java concepten Zelftest Java concepten Document: n0838test.fm 22/03/2012 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST JAVA CONCEPTEN Om de voorkennis nodig

Nadere informatie

Handleiding installatie Rental Dynamics

Handleiding installatie Rental Dynamics Handleiding installatie Rental Dynamics Versie: 1.1 Datum: 9 januari 2015 1. Inleiding Deze handleiding beschrijft de procedure voor de installatie van Rental Dynamics en de benodigde software. In hoofdstuk

Nadere informatie

Handleiding bij het gebruik van het bibsource portaal

Handleiding bij het gebruik van het bibsource portaal Handleiding bij het gebruik van het bibsource portaal Inhoudsopgave 1.0 introductie... 2 2. 0 Voor je begint Software vereisten... 2 2.1 VPN client installeren (voor toegang thuis)... 2 2.2 Citrix Receiver

Nadere informatie

Multi user Setup. Firebird database op een windows (server)

Multi user Setup. Firebird database op een windows (server) Multi user Setup Firebird database op een windows (server) Inhoudsopgave osfinancials multi user setup...3 Installeeren van de firebird database...3 Testing van de connectie met FlameRobin...5 Instellen

Nadere informatie

Technische nota AbiFire5 Rapporten maken via ODBC

Technische nota AbiFire5 Rapporten maken via ODBC Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...

Nadere informatie

Installatiehandleiding. Facto minifmis

Installatiehandleiding. 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 informatie

Stappenplan bij het gebruik van SQL 2008 Versie 2.0, 17-09-2010

Stappenplan bij het gebruik van SQL 2008 Versie 2.0, 17-09-2010 Stappenplan bij het gebruik van SQL 2008 Versie 2.0, 17-09-2010 Installatie stappen Microsoft SQL Server 2008 Express: Het is raadzaam om de volledige installatie met een gebruiker zonder beperkingen uit

Nadere informatie

Installatie ArcGIS Desktop Basis, ArcGIS Engine en Download ArcGIS Server

Installatie ArcGIS Desktop Basis, ArcGIS Engine en Download ArcGIS Server Handleiding Installatie ArcGIS Desktop Basis, ArcGIS Engine en Download ArcGIS Server Cevi NV Bisdomplein 3 9000 GENT Tel 09 264 07 01 contactcenter@cevi.be http://www.cevi.be 1 INHOUDSOPGAVE 1 INHOUDSOPGAVE...

Nadere informatie

Configureren van een VPN L2TP/IPSEC verbinding

Configureren van een VPN L2TP/IPSEC verbinding Configureren van een VPN L2TP/IPSEC verbinding Inhoudsopgave 1. Voorbereiding.... 3 2. Domain Controller Installeren... 4 3. VPN Configuren... 7 4. Port forwarding.... 10 5. Externe Clients verbinding

Nadere informatie

Handleiding Beveiligen van Wordpress

Handleiding Beveiligen van Wordpress Handleiding Beveiligen van Wordpress Deze handleiding beschrijft de stappen die u dient te nemen om uw Wordpress website te beveiligen Versie 1.0 Kies een sterk wachtwoord Gebruik als wachtwoord een combinatie

Nadere informatie

Logicworks CRM en Microsoft SQL Server 2005 (Express) Introductie

Logicworks CRM en Microsoft SQL Server 2005 (Express) Introductie Logicworks CRM en Microsoft SQL Server 2005 (Express) - Introductie - Microsoft SQL Server 2005 Express installeren - Microsoft SQL Server 2005 Express configureren - Database collation - Logicworks CRM

Nadere informatie

Upgrade naar People Inc 3.5.0

Upgrade naar People Inc 3.5.0 I Inhoudsopgave Hoofdstuk 1 1 1.1 Installeren... van de upgrade 2 1.2 Uitvoeren... van de upgrade 5 1.3 Installatie... Applicatie Server 9 1.4 Installatie... Gebruikers programma's 15 1.5 Afronding...

Nadere informatie

Xampp Web Development omgeving opzetten onder Windows.

Xampp 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 informatie

Inhoudsopgave. versie 0.8

Inhoudsopgave. versie 0.8 JOOMLA! INSTALLATIE HANDLEIDING versie 0.8 Inhoudsopgave Stappenplan...3 Inrichten database...4 Configuratiecentrum cpanel...4 Aanmaken van een database gebruiker...5 Aanmaken van een database...6 Gebruiker

Nadere informatie

XAMPP Web Development omgeving opzetten onder Windows.

XAMPP 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 informatie

PayCheckout Magento module

PayCheckout Magento module PayCheckout Magento module 1 Inhoudsopgave Installatie... 3 Compatibiliteit... 3 Best practice... 3 Installeren van de module... 3 Configuratie... 4 Webshop... 4 Webshop toevoegen... 4 Webshop Identifier

Nadere informatie

Configureren van een VPN L2TP/IPSEC verbinding. In combinatie met:

Configureren van een VPN L2TP/IPSEC verbinding. In combinatie met: Configureren van een VPN L2TP/IPSEC verbinding In combinatie met: Inhoudsopgave 1. Voorbereiding.... 3 2. Domaincontroller installeren en configuren.... 4 3. VPN Server Installeren en Configureren... 7

Nadere informatie

Beschrijving functioneel en technisch design van de website

Beschrijving 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 informatie

Er zijn diverse andere software platformen en providers die werken met SIP, maar in dit voorbeeld gaan we uit van de volgende software:

Er zijn diverse andere software platformen en providers die werken met SIP, maar in dit voorbeeld gaan we uit van de volgende software: Er zijn diverse andere software platformen en providers die werken met SIP, maar in dit voorbeeld gaan we uit van de volgende software: Counterpath Bria SIP client. Net2 Entry Configuration Utility (SIP

Nadere informatie

Handleiding: Whitelabel Customersite

Handleiding: Whitelabel Customersite ARGEWEB B.V. Handleiding: Whitelabel Customersite Controlportal.nl Argeweb Support 8-1-2009 Handleiding voor het gebruik maken van de Whitelabel Customersite op controlportal.nl, door Resellers van Argeweb.

Nadere informatie

Instellen back up Microsoft SQL database Bronboek Professional

Instellen back up Microsoft SQL database Bronboek Professional Instellen back up Microsoft SQL database Bronboek Professional In deze handleiding word een drietal punten besproken. Deze punten zijn allen noodzakelijk voor het inrichten van een goede back up voor de

Nadere informatie

Mach3Framework 5.0 / Website

Mach3Framework 5.0 / Website Mach3Framework 5.0 / Website Handleiding Mach3Builders Inhoudsopgave 1 Inloggen...4 1.1 Ingelogd blijven...5 1.2 Wachtwoord vergeten...6 2 Applicatie keuzescherm...7 2.1 De beheeromgeving openen...8 3

Nadere informatie

INSTALLATIE NIS UPDATE Q3-2014-03 Q3-2014-03

INSTALLATIE 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 informatie

Sparse columns in SQL server 2008

Sparse 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 informatie

Installeren van het programma:

Installeren van het programma: Versie: 1.0 Gemaakt door: Whisper380 Eigenaar: Whisper380-computerhulp.net Datum: 20-2-2011 Inhoudsopgave Installeren van het programma:...3 Configureren van het programma:...7 Mappen aanmaken:...9 Groepen

Nadere informatie

Handleiding Sportlink Club

Handleiding Sportlink Club Handleiding Sportlink Club Dit document is automatisch gegenereerd. We raden u aan de handleiding online te raadplegen via www.sportlinkclub.nl/support. 1. Installatiehandleiding.........................................................................................

Nadere informatie

Pervasive Server V9 Installatiegids

Pervasive Server V9 Installatiegids Pervasive Server V9 Installatiegids 1 Inhoudsopgave 1. Om te beginnen... 3 2. Systeemeisen... 3 2.1 Server... 3 2.1.1 Hardware... 3 2.1.2 Software... 3 2.2 Client... 3 2.2.1 Hardware... 3 2.2.2 Software...

Nadere informatie

Optifile Server Installatie

Optifile Server Installatie Optifile Server Installatie Datum: Versie: de koppeling tussen Essibox en 2 mei 2012 1.0 Omschrijving: Dit document beschrijft de installatieprocedure voor Optifile software op een nieuwe server. Optifile

Nadere informatie

Installeren van het programma Shop Pro

Installeren van het programma Shop Pro Installeren van het programma Shop Pro HET PROGRAMMA WERKT MOMENTEEL NOG NIET ONDER MS VISTA. GEBRUIK BINNEN EEN VIRTUELE MACHINE OP EEN VISTA-COMPUTER WORDT NOG UITGETEST. Deze handleiding met eventuele

Nadere informatie

Datum 15 juni 2006 Versie 1.0.6. Exchange Online. Handleiding voor gebruiker Release 1.0

Datum 15 juni 2006 Versie 1.0.6. Exchange Online. Handleiding voor gebruiker Release 1.0 Datum 1.0.6 Exchange Online Handleiding voor gebruiker Release 1.0 1.0.6 Inhoudsopgave 1 Instellingen e-mail clients 2 1.1 Gebruik via Outlook 2003 2 1.2 Gebruik via ActiveSync 15 1.3 Gebruik via andere

Nadere informatie

De voordelen van Drupal

De 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 informatie

Installatie van sqlserver

Installatie van sqlserver Installatie van sqlserver Download SQLserver 2005 Express basis van de website van 2work: www.2work.nl, tabblad downloads; beveiligde zone. De inlog gegevens kunnen via de helpdesk aangevraagd worden.

Nadere informatie

5/5 Red Carpet. 5/5.1 Inleiding

5/5 Red Carpet. 5/5.1 Inleiding Management Services 5/5 Red Carpet 5/5.1 Inleiding Met de overname van Ximian is Novell ook eigenaar geworden van de Red Carpet-technologie. Hoewel het aannemelijk is dat het hier een tijdelijke oplossing

Nadere informatie

Documentatie. InstantModules Q42. Versie 1.1

Documentatie. InstantModules Q42. Versie 1.1 Documentatie InstantModules Q42 Versie 1.1 Inhoudsopgave Inhoudsopgave... 2 Voor gebruikers... 3 InstantComment... 3 InstantTagging... 5 Voor webmasters... 9 InstantComment... 9 InstantTagging... 11 Voor

Nadere informatie

Project plan. Erwin Hannaart Sander Tegelaar 61849 62407

Project 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 informatie

Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

Inhoudsopgave 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 informatie

Installatie Handleiding voor: TiC Narrow Casting Certified. System Integrators

Installatie Handleiding voor: TiC Narrow Casting Certified. System Integrators Installatie Handleiding voor: TiC Narrow Casting Certified System Integrators Installatiehandleiding TiC Narrow Casting Manager Inhoudsopgave 1. Algemeen - 3-2. Installatie PostgreSQL database server -

Nadere informatie

MA!N Rapportages en Analyses

MA!N Rapportages en Analyses MA!N Rapportages en Analyses Auteur Versie CE-iT 1.2 Inhoud 1 Inleiding... 3 2 Microsoft Excel Pivot analyses... 4 2.1 Verbinding met database... 4 2.2 Data analyseren... 5 2.3 Analyses verversen... 6

Nadere informatie

5/8 Patch management

5/8 Patch management Management Services 5/8 Patch management 5/8.1 Beheer van patches met Subscription Management Tool 5/8.1.1 Inleiding Een moderne Linux-server moet regelmatig worden bijgewerkt met de laatste versie van

Nadere informatie

Met deze module heeft u de mogelijkheid om gemakkelijk, snel en efficiënt uw documenten als naslag in Unit 4 Multivers te koppelen.

Met deze module heeft u de mogelijkheid om gemakkelijk, snel en efficiënt uw documenten als naslag in Unit 4 Multivers te koppelen. Handleiding Office+ Introductie Met de module Office+ gaat een lang gekoesterde wens voor vele gebruikers van Unit 4 Multivers in vervulling: eenvoudig koppelen van documenten in relatiebeheer of documentmanagement

Nadere informatie

Maiken DOV RF systeem. Maiken Monitoring- en Sturing Systeem voor Verlichting

Maiken DOV RF systeem. Maiken Monitoring- en Sturing Systeem voor Verlichting Maiken DOV RF systeem Maiken Monitoring- en Sturing Systeem voor Verlichting Inhoudsopgave Inhoudsopgave... 1 Testset... 2 Werking van de Web Applicatie... 3 Bulletin Board... 3 Opvragen Modules van een

Nadere informatie

Microsoft Outlook 2011 voor Mac instellen

Microsoft Outlook 2011 voor Mac instellen Microsoft Outlook 2011 voor Mac instellen Index Stap 1: Controleer of u de laatste versie heeft Stap 2: Voeg uw e-mailaccount toe Stap 3: Voer uw accountinformatie in Stap 4: Voer een naam en beschrijving

Nadere informatie

Pinakes Integrator Client

Pinakes Integrator Client Pinakes Integrator Client Installatie procedure Pinakes NV Paviljoenstraat 7 1030 Schaarbeek TEL : +32 (0) 2 211 55 95 FAX : +32 (0) 2 211 56.56 INFO@PINAKES.BE WWW.PINAKES.BE 1. Inhoudstafel 1. Inhoudstafel...

Nadere informatie

Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat

Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat Wat is een database? Een verzameling van georganiseerde data Een database bestaat uit applicaties, SQL en het DBMS Watis eendbms? EenDBMS

Nadere informatie

1. Inleiding. 1. Inleiding... 1. 1.1. Installatieprocedure...2. 1.1.1. De installatie van LisCAD 5.0... 3. 1.2. Licentieprocedure...

1. Inleiding. 1. Inleiding... 1. 1.1. Installatieprocedure...2. 1.1.1. De installatie van LisCAD 5.0... 3. 1.2. Licentieprocedure... 1. Inleiding... 1 1.1. Installatieprocedure...2 1.1.1. De installatie van LisCAD 5.0... 3 1.2. Licentieprocedure...8 1.2.1. Introductie... 8 1.2.2. Evaluatielicenties... 8 1.2.3. Het bestellen van een

Nadere informatie

Handleiding Migratie. Bronboek Professional

Handleiding Migratie. Bronboek Professional Handleiding Migratie Bronboek Professional Laatste wijziging: 25/02/2015 Inhoudsopgave Controles en acties vooraf pag. 1 Installatie en configuratie Microsoft SQL met de Bronboek Helpdesk Tool pag. 3 Migratie

Nadere informatie

mymanualsolarapp - What s Your Solar Power Today?

mymanualsolarapp - What s Your Solar Power Today? mymanualsolarapp - Inleiding De manual versie is speciaal gemaakt voor zonnesysteem eigenaren die hun pc niet de hele dag aan willen laten staan of geen computer gekoppelde inverter systemen hebben. Door

Nadere informatie

Veel gestelde vragen nieuwe webloginpagina

Veel gestelde vragen nieuwe webloginpagina Veel gestelde vragen nieuwe webloginpagina Op deze pagina treft u een aantal veel gestelde vragen aan over het opstarten van de nieuwe webloginpagina http://weblogin.tudelft.nl: 1. Ik krijg de melding

Nadere informatie

Technische documentatie Klankie 2010 voor systeembeheerders/installateurs

Technische documentatie Klankie 2010 voor systeembeheerders/installateurs Technische documentatie Klankie 2010 voor systeembeheerders/installateurs Van harte gefeliciteerd met uw aankoop van Klankie 2010, de netwerkversie. Deze documentatie is bedoeld voor degene die de netwerkinstallatie

Nadere informatie

Actian PSQL v12 server installatiegids

Actian PSQL v12 server installatiegids Actian PSQL v12 server installatiegids Inhoudsopgave Hoofdstuk 1 Actian PSQL installeren...1 1.1 Om te beginnen...1 1.2 Systeemeisen...1 1.2.1 Server...1 1.2.2 Client...2 1.3 Installatie...3 1.3.1 Installatie

Nadere informatie

Handleiding DirectAdmin

Handleiding DirectAdmin Handleiding DirectAdmin Uw hostingpakket heeft het control panel DirectAdmin, u leest in deze pdf hoe u uw pakket kunt beheren. Dat doet u via : http://www.uwdomein.be:2222. 1 Inhoudsopgave Handleiding

Nadere informatie

Connectivity SQL Er kan geen verbinding worden gemaakt met de SQL server

Connectivity SQL Er kan geen verbinding worden gemaakt met de SQL server Connectivity SQL Er kan geen verbinding worden gemaakt met de SQL server Introductie Probleem: Het lukt het niet om verbinding te maken met de SQL server. Of: op het werkstation komt de melding na het

Nadere informatie

INSTALLATIE NIS UPDATE 2014-Q4 2014-Q4

INSTALLATIE 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 informatie

Zicht - Content Management Systeem een algemene beschrijving

Zicht - Content Management Systeem een algemene beschrijving Zicht - Content Management Systeem een algemene beschrijving Versie april/2008 Zicht nieuwe media ontwerpers 2008 1 Inleiding Een Content Management Systeem (CMS) is een webapplicatie waarmee je zonder

Nadere informatie

Instructie SCAN-Office. uit. Automatisering helpt Agrarisch Natuurbeheer. Uitgevoerd door collectieven

Instructie SCAN-Office. uit. Automatisering helpt Agrarisch Natuurbeheer. Uitgevoerd door collectieven uit Instructie SCAN-Office Automatisering helpt Agrarisch Natuurbeheer Uitgevoerd door collectieven Stichting Collectieven Agrarisch Natuurbeheer, SCAN Uitgevoerd door: SCAN Gerard van Drooge Bert Wiekema

Nadere informatie

WWW.EMINENT-ONLINE.COM

WWW.EMINENT-ONLINE.COM WWW.EMINENT-OINE.COM HNDLEIDING USERS MNUL EM1016 HNDLEIDING EM1016 USB NR SERIEEL CONVERTER INHOUDSOPGVE: PGIN 1.0 Introductie.... 2 1.1 Functies en kenmerken.... 2 1.2 Inhoud van de verpakking.... 2

Nadere informatie

Analyse Programmeertalen

Analyse 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 informatie

Waarmaken van Leibniz s droom

Waarmaken van Leibniz s droom Waarmaken van Leibniz s droom Artificiële intelligentie Communicatie & internet Operating system Economie Computatietheorie & Software Efficiënt productieproces Hardware architectuur Electronica: relais

Nadere informatie

De SAP Cloud Connector 2.0 maakt SAPUI5 ontwikkeling via de WEB-IDE mogelijk met data uit je eigen backend systeem.

De SAP Cloud Connector 2.0 maakt SAPUI5 ontwikkeling via de WEB-IDE mogelijk met data uit je eigen backend systeem. De SAP Cloud Connector 2.0 maakt SAPUI5 ontwikkeling via de WEB-IDE mogelijk met data uit je eigen backend systeem. Vele van ons willen wel eens spelen met de WEB-IDE in de could via het SAP Trial Hana

Nadere informatie