Thursday, 25 October 2007

Referenties

Referenties binnen PHP zijn ongeveer, maar niet precies hetzelfde als pointers binnen een taal zoals C. Een referentie is eigenlijk een verwijzing naar een variabele. Als de verwijzing veranderd, veranderd de variabele mee.
In PHP4 moet je expliciet aangeven dat je een referentie wilt gebruiken, in PHP5 worden objecten altijd als referentie gebruikt. Met referenties kunnen ook onverwachte dingen gebeuren, die in eerste instantie een bug lijken.

Ook in een foreach lus kan je nu een referentie gebruiken naar de waarden in de originele array zonder dat je dus met een kopie van die array werkt. Dit kan soms echter voor verassingen zorgen. Zo levert onderstaande code een array op met de waarden: een, twee, twee en niet meer een, twee, drie zoals je zou verwachten.

<?php
$a = array('een', 'twee', 'drie');

foreach ($a as &$v) {
}

foreach ($a as $v) {
}

print_r($a);
?>


Weet jij waarom?

Thursday, 13 September 2007

Fly in Agile

Agile event (hype of werkelijkheid)

Agile is een cultuur, een gedachtengoed dat de samenwerking, opleiding, kwaliteit en werklust moet verbeteren. Het is geen methode zoals XP, SCRUM, RUP, DSDM, SDM of waterval. Maar Agile kan binnen al die methoden worden gebruikt.

Agile manifesto
In 2001 is het Agile manifesto gemaakt, dat bestaat uit de volgende 4 punten:
  • Individuen en samenwerking; boven processen en methoden
  • Werkende software; boven uitgebreide documentatie
  • Klantsamenwerking, boven contractonderhandelingen
  • Reageren op verandering, boven een uitgestippeld plan
De rechterkant heeft veel waarde, maar we waarderen de linker kant meer.

Wat er vooraf ging
  • 1940 Deming circle
  • 1957 Mercury project NASA (XP)
  • 1970 Waterfall
  • 1976 EVO
  • 1993 SCRUM
  • 1995 DSM
  • 1995 RUP
  • 1996 XP
Software ontwikkeling
Vanuit programmeurs en technici is Agile ontstaan, een programmeur kent veel werkdruk, heeft contact met de klant, moet documentatie leveren en als er iets mis gaat is hij het bokje. Een stressvol bestaan dus.

Even een paar puntjes uit de praktijk:
  • Klanten weten pas wat ze willen als de applicatie is opgeleverd (denk actielijsten, FO-discussies et cetera).
  • Veel details binnen de programmatuur komen naar voren bij het programmeren, hoe goed je ook ontwerpt.
  • Mensen kunnen maar een maximale complexiteit aan.
  • Er komt binnenkort weer een nieuwe verandering aan.
Binnen Agile draait het om de mens en niet om de code of de documentatie. Agile gaat om samenwerking in een team, er komen geen orders van team en projectleiders, deze dicteren niet maar geven richting. Een Agile ontwikkelaar streeft naar perfectie, reflectie en aanpassing; maar zo goed mogelijke software, bekijk wat je hebt gemaakt en pas aan waar nodig.

Hoe moeten we Agile juist toepassen?
  • Autoriseer team. Een team moet voldoende beslissingsmogelijkheden hebben om vlot te kunnen werken.
  • Elimineer afval, functies en zaken die niet worden gebruikt worden verwijderd.
  • Heb 100% vertrouwen in je team.
  • Versneld leren, de minst bekwame persoon doet de moeilijkste opdrachten (pair programming)
  • Vrijheid van zaken in een team. Geen bureaucratie of papieren rompslomp.
  • Agile moet je agile aanpakken.
Beloften
Agile maakt een paar beloften. Agile is echter niet zaligmakend.
  • Sneller time to market
  • Toename in productiviteit
  • Toename in kwaliteit
  • Betere creaties
  • Betere integratie IT en business
  • Betere klanttevredenheid
  • Hoge betrokkenheid medewerkers
Doel
Doel is niet het opleveren van het systeem maar om een succesverhaal op te leveren voor de klant.

Wednesday, 22 August 2007

Fatsoenlijk afbeeldingen schalen

Viaviavia zag ik dit: Advanced photo resizing. Helemaal de bom!

Afbeeldingen zo schalen dat de minst belangrijke informatie wordt weggefilterd. Een afbeelding behoudt dus zijn waarde en onderwerp zonder dat deze onscherp of onduidelijk wordt. Dit moeten we op websites kunnen plaatsen, dat zou echt super zijn, maar hoe lang duurt het nog?

We zitten ook nog steeds op een goede werking van SVG te wachten.

Tuesday, 21 August 2007

FULL OUTER JOIN in MySQL < 5

In tegenstelling tot databases kent MySQL voor versie 5 geen FULL OUTER JOIN's. Lekker belangrijk zal je zeggen, totdat je het nodig hebt. Daarom zijn er mensen die oplossingen daarvoor verzinnen. Een UNION. Wat?!!
Tja, een trage UNION gebruiken om een MySQL gebrek op te lossen. Daar gaat je snelheidswinst!

MySQL maakt bij mij nog steeds geen vrienden .

Frameworks

Er is meer dan één definitie van een framework. In meer of mindere mate nemen we aan dat een framework een verzameling klassen en objecten is dat een bepaald probleem helpt op te lossen. Een implementatie en verzameling van design patterns dat vele malen hergebruikt kan worden.

Elk webgeörienteerd software ontwikkelingsbedrijf is wel bezig met een CMS of Framework te ontwikkelen dat aansluit bij de problematiek van hun klanten. Mocht je één van die gasten zijn die zijn vingers daaraan vuil moet maken, kijk dan eens naar Evolving Frameworks.

Thursday, 16 August 2007

E-mailadres valideren

Via een goede vriend werd ik geattendeerd op een leuk stukje e-mailvalidatiecode. Namelijk eentje die precies volgens de juiste RFC het e-mailadres ontleed. Cal Henderson is de auteur van de code en tevens progger van Flickr.com, die zou dus wel moeten weten hoe het moet.

Als je dus ooit een e-mailadres dikker wil checken dan alleen op apenstaart, punt en top-level-domein dan moet je deze gebruiken.

Monday, 13 August 2007

iDeal rommelt door

Naar aanleiding van een fraudebericht op nu.nl het volgende:

De betalingsdienst iDeal verzorgt een goedkoop betaalalternatief voor creditcard-betalingen, gewoon door met je eigen pas bij je eigen bank te betalen. Ze bieden echter twee verschillende implementaties aan. De eerste is een gratis variant die een onbevestigde betaling verzorgt, bij de anderen varianten kunnen de betalingen onderwater door de webapplicatie worden gecontroleerd.

In het eerste geval moet een webwinkelier dus voor elke betaling inloggen in zijn zogenaamde dash-board en de betaling nakijken alvorens goed te keuren. Er kan dus geen betalingsbevestiging naar de klant worden gestuurd of automatische processen aan het resultaat van de betaling worden gekoppeld. Onduidelijk voor de klant, werkintensief voor de ondernemen, maar gratis.

De andere variant kosten duidelijk meer geld, maar dan is de betaling wel te controleren en hoeft de webwinkelier geen extra werk te doen. De veiligheid van betaling en handelen wordt hierdoor vergroot. Bij een fraudegevoelig medium als internet is dit dus de minimale gewenste werking.

Implementeer daarom nooit de goedkoopste variant, dit leidt tot onduidelijkheid en gaat daardoor op langere termijn wel geld en energie kosten. Mijn vraag aan iDeal is dan ook: willen jullie aub het goedkope abonnement stopzetten, of een onderwater controle op de betaling mogelijk maken?