PHP

DWH

Data Warehouse, de generieke term voor een applicatie die dient als database voor andere applicaties, zodat mensen in managementfuncties in één oogopslag kunnen zien hoe het bedrijf er als geheel voor staat. Meest van deze DWH oplossingen zijn vanwege de complexiteit haast onmogelijk te implementeren, en als dat toch wordt gedaan loopt het vaak uit op een mislukking.
Met een avondje brainstormen kwam ik op het idee het eens om te draaien. Wat als er een DWH applicatie is welke alleen een frontend is, waarna voor elke applicatie die data moet leveren een kleine plugin geschreven kan worden door middel van standaard protocollen? Dit kan gedaan worden door de ontwikkelaars van de externe applicatie, zonder dat er ook maar enige kennis van het DWH nodig is. Het beheren kan via een simpele en eenduidige webinterface. Mijn DWK kan daarna via verschillende connectoren verbinding maken met de externe databases en deze data real time weergeven. Afhankelijk van iemand zijn positie in een organisatie, kan meer of minder informatie vrijgegeven worden. Inzoomen op de data kan ook door simpelweg te klikken op wat voor jou relevant is.

Kleverrr

Voor de verandering eens een spelletje. Kleverrr is een website waarop je jezelf kunt testen op verschillende onderwerpen.
Geef aan welke onderwerpen je interesseren en je krijgt de ene na de andere vraag op je afgevuurd. Antwoord goed? Je kan dan gelijk door met de volgende. Bij het verkeerde antwoord krijg je te zien wat het antwoord wel moet zijn. Bij elk onderwerp zit een eigen kleurenthema met bijpassende achtergrond, het is dus afwisselend en spannend genoeg om te doen. Speel het elke dag en je merkt dat je kennis met stappen vooruit schiet.

sqlite emulator

SQL is een standaardtaal om met databases te praten. Het bevat maar een paar simpele commando’s waarmee je elke bewerking kunt uitvoeren die je maar wilt. Veel mensen gebruiken SQL in combinatie met PHP of ASP om dynamische websites te maken. Helaas is het installeren van een SQL server en de koppeling tussen de programmeertaal en de database vaak lastig te leggen. Hierdoor haken veel mensen al af met SQL vóórdat ze zijn begonnen met SQL commando’s.
Om hier verandering in te brengen, heb ik een online versie van een SQL client gemaakt. Je hoeft niets te installeren, maar kunt direct beginnen met het opzetten van een eigen database. Om te zorgen dat verschillende gebruikers elkaar niet in de weg zitten, wordt elke SQL-sessie gekoppeld aan het IP adres van de gebruiker. Mocht deze later terugkomen, dan krijgt hij of zij gewoon weer z’n zelf gemaakt database te zien. Doordat de emulator gebruik maakt van sqlite, zit niemand elkaar dan ook in de weg. Je kunt dus écht oefenen met SQL, zonder hiervoor enige moeite te hoeven doen!

Heggle.com

Een oud klasgenoot werd gevraagd een website te ontwikkelen waarmee gebruikers kunnen zoeken naar allerhande content zoals filmpjes, afbeeldingen en spelletjes. Om aan links naar deze content te komen, moest er ook een spider applicatie gemaakt worden dat de belangrijkste video-, afbeeldingen- en spelletjeswebsites kon benaderen en uitlezen. Het ontwikkelproces van Heggle en de bijbehorende spider applicatie heeft slechts 4 dagen in beslag genomen.
Om te zorgen dat het indexeren van websites goed verliep en dat gebruikers snel kunnen vinden wat ze zoeken, is er een database opgezet die totaal toegespitst is op zo snel mogelijk resultaten te kunnen vinden. Het resultaat daarvan is dat Heggle.com in nog geen twee maanden tijd al ruim 120.000 items heeft geindexeerd van 100 websites, aantallen die gestaagd blijven oplopen.

Virgo B.V.

Tijdens de laatste onderwijsperiode van schooljaar 2004/2005 moest er door projectgroepen een fictief bedrijf opgestart worden. Een belangrijk onderdeel van dit project was het maken van een informatiesysteem om de administratie van een winkel te beheren. In acht weken tijd hebben we met zes projectleden het bedrijf Virgo B.V. opgezet, een computerwinkel gezeteld in de Breestraat in Leiden. Virgo verkoopt zowel computers als computeronderdelen en verleent reparatiediensten.
Om het de medewerkers van Virgo zo makkelijk mogelijk te maken, is er een ingenieus systeem ontworpen waarbij alle mogelijke administratieve handelingen via één scherm te benaderen zijn, een zogenaamde Multi Document Interface. Door te kiezen voor het juiste menu item wordt het betreffende onderdeel gelijk opgestart. De winkel bevat meerdere kassa’s, kantoren en werkplaatsen, dus is er gekozen om een Microsoft SQL server op te zetten waar alle clients verbinding mee maken. Deze SQL server bevat onder andere de productenvoorraad, reparatiestatussen, facturen en offertes, klantgegevens en enkele administratieve zaken.
Naast de opdracht om een intern informatiesysteem te maken, hebben we ook nog een website ontwikkelt. Deze website maakt gebruik van dezelfde Microsoft SQL database als de interne applicatie waardoor bezoekers informatie kunnen zien over onze producten. Daarnaast kan men gelijk bestellingen plaatsen in de vorm van een offerte, zodat de klant met de uitgeprinte zelf samengestelde offerte en/of enkel het opgeschreven offertenummer in de winkel de offerte direct om kan zetten in een factuur en de gekochte producten meteen meenemen naar huis.

COD-Tracker

Online multiplayer spellen zijn vaak leuk om te doen. Veel voor mensen is de lol er alleen snel vanaf als ze niet bij kunnen houden hóe ze spelen. Ook willen sommigen pochen met hoe goed ze wel niet zijn. Bij een aantal spellen, zoals America’s Army: Special Forces, worden deze gegevens automatisch bijgehouden. Voor het spel Call of Duty bestond deze mogelijkheid echter nog niet. Met COD-Tracker bracht ik hier verandering in.
COD-Tracker bestaat uit een website en een applicatie die mensen die Call of Duty speelden moesten installeren. Deze applicatie werd automatisch geactiveerd als je Call of Duty opstartte en stuurde dan vanzelf statistieken door van hoe het de speler verging. Installeren van het programma was simpel. Men downloadde het installatiebestand, opende het, klikte een aantal maal op Volgende, vulde zijn of haar login gegevens van de COD-Tracker website in (of registreerde zich) en COD-Tracker werd geactiveerd.
De statistieken die door COD-Tracker werden verzameld werden automatisch geupload naar de COD-Tracker website. Hier werd het verder verwerkt, werden bepaalde killratio’s uitgerekend en werd netjes weergegeven dat de speler online was. Andere spelers en belangstellenden konden al deze gegevens live opvragen en zo de vorderingen van hun vrienden bijhouden. Het was zelfs mogelijk om met één klik op een link rechtstreeks Call of Duty op te starten en naar dezelfde server te gaan als waar vrienden speelden. Ook was het mogelijk voor mensen om hun statistieken op een eigen avatar neer te zetten, om deze zo op elk forum aan mensen te kunnen tonen.
Met het uitkomen van Call of Duty 2 is het ontwikkelen van COD-Tracker stopgezet omdat er nog maar weinig animo voor de eerste versie was. Daarnaast was het door bugs in de Call of Duty 2 3D engine niet meer mogelijk om degelijke statistieken te verzamelen. COD-Tracker is 10 maanden online geweest en heeft in deze tijd rond de 18.000 mensen van statistieken voorzien. Daarnaast heeft de website in deze periode ruim 500.000 pageviews gehad wat neerkomt op ongeveer 1800 pageviews per dag. Een doorslaand succes dus.

Forum Check-up Tool

Voor de tijd dat RSS en XML geaccepteerde standaarden werden om informatie van fora, weblogs en websites te distribueren was er al wel de noodzaak om goed op de hoogte te blijven van ontwikkelingen. Eén oplossing was alle fora die je bezocht openen met je browser zodra je je computer opstartte en dan elke 10 minuten op de F5 knop te drukken. Een andere oplossing was de door mij gemaakte Forum Check-up Tool te installeren.
De Forum Check-up Tool was een klein programma’tje dat automatisch in de gaten hield wanneer er op een forum een nieuw bericht werd geplaatst. Als er een nieuw bericht was gevonden, werd dit aan de gebruiker gemeld door middel van een popup zoals MSN Messenger dat ook doet bij nieuw ontvangen berichten.
Forum Check-up Tool was zowel een oplossing voor gebruikers, als voor server en forumbeheerders. Voor de gebruikers was het gemakkelijke gebruik één van de grote voordelen. Voor serverbeheerders was het vooral het lagere dataverbruik dat interessant was. Het programma deed namelijk één maal per 10 minuten een aanvraag bij de server om na te gaan of er nieuwe berichten waren. Dit kostte slechts 90 bytes, tegen de 20 KB (exclusief het laden van plaatjes) dat een normaal bezoek van een gebruiker aan een forum kost. Voor forumbeheerders was het grote voordeel dat bezoekers vaker terugkwamen en dat men sneller op geplaatste berichten reageerde.
Het programma is in anderhalf jaar tijd door ruim 50.000 mensen gedownload, geïnstalleerd en gebruikt. Vooral het verspreiden van het programma in samenwerking met het reeds opgeheven YourForum heeft het gebruik een flinke boost gegeven.

vSchool

vSchool is een revolutionair product dat leerlingen in staat stelt om zowel thuis als op school aan projecten te werken, huiswerk te maken, bestanden uit te wisselen en te vergaderen via internet. Op deze manier kan zo goed mogelijk met moderne techniek omgegaan worden in het lesprogramma.
Zo, dat is de officiële inleiding van vSchool. vSchool is een op javascript en PHP gebaseerd raamwerk om applicaties op te draaien in het onderwijs. Omdat het voor veel scholen veel te duur is om elke 3 jaar nieuwe computers, besturingssystemen en software te kopen is vSchool als dé oplossing voor deze problemen ontwikkelt. vSchool draait op allerhande computers, van Pentium I tot en met Pentium IV.
De grootste tekortkoming van huidige interactieve lesondersteunende ICT middelen is dat altijd voor elke aparte actie een aparte pagina geladen moet worden. Het is dus haast onmogelijk om tegelijk in een virtueel boek te kijken én antwoorden ergens te noteren. vSchool lost dit op door multitasking ondersteuning en het werken met vensters. Gebruikers kunnen meerdere verschillende online applicaties naast elkaar draaien, snel wisselen tussen de applicaties en ze ook om beurten weer afsluiten als ze niet nodig zijn.
Zoals gezegd is vSchool compleet gericht op het onderwijs. Zo zijn de gebruikers standaard opgedeeld in klassen en projectgroepen. Daarnaast is er standaard een chatfunctie aanwezig zodat leerlingen (ook al zijn ze niet fysiek bij elkaar) toch kunnen samenwerken. vSchool is gemaakt door middel van javascript, PHP en HTML. Om data heen en weer te kunnen zenden tussen de server en de browser van de gebruiker, wordt er gebruik gemaakt van de Ajax-methode. Op deze wijze kan er een dynamische verbinding opgezet worden zonder dat de complete pagina herladen hoeft te worden. Vensters kunnen hierdoor onafhankelijk van elkaar werken.

Priki

Priki, een samentrekking tussen ‘proxy’ en ‘wiki’. Priki is een systeem waarbij er bij de sites die je bezoekt, automatisch woorden worden onderstreept. Ga je met je muis over die woorden heen, dan krijg je informatie over wat het woord precies inhoud.
Leuk en aardig, dat je met Priki snel de betekenis van woorden kunt achterhalen zal je denken. Maar dat is dan ook nog niet alles. Met Priki kan je ook heel snel van site naar site hoppen terwijl je specifiek naar een onderwerp zoekt. Zoek je bijvoorbeeld eerst op het woord ‘Nederland’ en je klikt dan op de onderstreepte woorden ‘Koningin Beatrix’, krijg je info te zien over Beatrix haar ambt. Klik je daarna op die pagina op het onderstreepte woord ‘geschiedenis’, krijg je netjes een overzichtje met de geschiedenis van het koningshuis.
Als je een pagina wilt openen, gaat Priki met een PHP script de betreffende pagina downloaden, zet tags bij relevante woorden en stuurt de aangepaste pagina naar de browser van de gebruiker. Een stuk Javascript code op de pagina veranderd alle links zodat ze gebruik maken van de Priki engine, onderstreept de woorden die bij de tags staan en zorgt voor de popup omschrijvingen van woorden. Klik je op een onderstreepte link, dan kom je gelijk op een nieuwe pagina die zowel de oude zoekwoorden als het net aangeklikte woord bevat. Zoeken door te surfen dus!

Online Office

Overal en altijd je bestanden bij je hebben. Tegenwoordig steek je gewoon een USB stick in je broekzak, maar wat als je die vergeet? Dan heb je in één klap helemaal niets meer. En uploaden op een FTP server is ook niet handig, want door allerlei proxyservers kan je er dan soms geeneens meer bij komen vanaf school of werk.
Nadat ik een keer een “WebOffice” heb gezien heb ik besloten er zelf een te maken die makkelijker in gebruik is. Niet meer knoeien met allerlei checkboxen die je moet aanvinken en buttons die je moet aanklikken voor je bestanden kunt verplaatsen of aanpassen, maar gewoon net zoals in Windows met linker en rechter muisklikken. Hieruit is Online Office ontstaan. Je kan simpel je bestanden uploaden, waarna je ze óveral vandaan kunt openen.
Om te zorgen dat je snel eigenschappen van bestanden kunt wijzigen zonder daarvoor andere pagina’s hoeft te laden, worden child windows gebruikt. Op deze manier zie je nog gewoon het bestandsoverzicht en zie je in één oogopslag waar je mee bezig bent als je met meerdere vensters tegelijk werkt.
Een andere leuke toevoeging aan Online Office is de hulp van een MsAgent. Normaal gesproken kom je deze tekenfiguurtjes alleen maar tegen in Microsoft Office maar ze kunnen ook gewoon op websites gebruikt worden. Op deze manier is het makkelijk de gebruiker wat uitleg te geven over kleine dingen, zonder dat deze hiervoor een hele handleiding door hoeft te spitten.

MyWebFTP

Alhoewel er veel Content Management Systemen zijn, zijn er maar weinig CMS-en die om kunnen gaan met PHP bestanden. Omdat ik vaak kleine wijzigingen aan sites wil maken, heb ik daarom een online bestandseditor gemaakt, MyWebFTP.
Met MyWebFTP kan je navigeren door mappen, bestanden en mappen maken, bestaande bestanden uploaden en bestanden wijzigen. Verwijderen en verplaatsen van bestanden is expres niet geïmplementeerd, omdat anders het gevaar bestaat dat je met één verkeerde muisklik een hoop werk kwijt bent. Daarnaast is het doel van MyWebFTP ook alleen het snel aanpassen van bestanden zonder daarvoor allerlei FTP en editor applicaties te openen.