Skip to content

Rein's Cyberspaceplace

PHP, electronics, embedded software, Mechanic Apes and more….

Op dinsdag 18 november 2008 vond in Utrecht de er een tweede tweemaandelijkse phpGG meeting plaats. Na een korte introductie van de voorzitter werd het woord gegeven aan Laurens Bonnema die een presentatie gaf over Agile development. Aan de reactie van de aanwezig bleek dat “Agile development” een onderwerp is waar we in de toekomst meer presentaties aan moeten besteden.
Na de koffiepause vervolgde Jan Willem Eshuis met een inleiding in het Zend Framework. Hij gaf veel praktische voorbeelden en gaf ook duidelijk aan dat het Zend Framework niet de oplossing is voor alle problemen maar het helpt je in ieder geval een stuk een de goede richting. Na de verloting van 2 Elephants werd de avond rond half elf afgesloten.

Afgelopen week vond in Los Angeles de Microsoft professional developers conference plaats. Tijdens dit evenement waren er 6500 developers vanuit alle uithoeken van de wereld afgereisd naar Los Angeles om van Ray Ozzie, Bub Muglia en Rick Rashid te horen welke nieuwe producten Microsoft gaat lanceren en hoe je daar als PHP developer gebruik van kan maken.
<!–break–>

Azure en het live platform

Maandag presenteerde de chief architect van Microsoft, Ray Ozzie, het nieuwe Microsoft Azure Cloud operating system. Door applicaties te draaien in de cloud heb je het voordeel dat je met een paar muisklikken extra servercapaciteit (cloud instances) kan creeeren die wereldwijd (dicht bij de klant) worden gehost. Het Azure protocol maakt gebruik van standaard SOAP en REST webserviceprotocollen zodat je deze eenvoudig kan gebruiken vanuit non-Microsoft omgevingen. Op de Azure stand liet Microsoft een voorbeeld zien waarbij ze de PHP applicatie Gallery2 hebben omgezet naar een PHP-based cloud applicatie.

Het Live platform wordt o.a. gebruikt voor het opslaan en beheren van contacten, email, photo's, kalenders, weblogs en documenten. Omdat het Live platform tegenwoordig gebruik maakt van standaard webserviceprotocollen is het nu ook mogelijk om Live volledig via non-microsoft talen aan te sturen. Op dit moment zijn er al client libraries voor PHP en Python waarmee je de functionaliteiten van het live platform volledig kan benutten.

Windows 7

Windows 7 wordt de opvolger van Windows Vista en zal verder bouwen op de al bestaande techniek. Zaken als securitypolicies en devicedrivers blijven in de nieuwe versie voor het grootste gedeelte ongewijzigd. Microsoft heeft aangegeven dat ze het operating systeem op een aantal punten willen verbeteren. Het is de bedoeling dat de footprint van Windows7 een stuk kleiner gaat worden en dat het operating systeem efficienter met energie zal omgaan waardoor het ook op netbooks (zoals bijvoorbeeld de Asus EeePC) kan draaien.

Microsoft Research

Rick Rashid, de baas van Microsoft Research liet woensdag in de keynote sessie zien waar zijn afdeling mee bezig is. Een van de meest opvallende zaken is de betrokkenheid van Microsoft bij onderzoek naar het HIV virus. Onderzoekers bij Microsoft doen onderzoek naar overeenkomsten in HIV en e-mail spam. HIV en spam hebben namelijk gemeen dat ze continue muteren om daarmee een vaccin of een spamfilter te slim af te kunnen zijn.

Software engineering

Codecontracts is een manier om in de sourcecode aan te geven wat de boundaries zijn voor een bepaalde functieparameter. Door deze regels expliciet in de code vast te leggen heb je het voordeel dat je betere documentatie bij je sourcecode kunt genereren, en je hebt waarschijnlijk nooit meer last van een division bij zero error.

Pex is een nieuwe unittest generation tool van Microsoft. Met Pex kun je volledig automatisch een 100% code coverage van unittests genereren. De kwaliteit van deze unittest is uitzonderlijk hoog omdat Pex niet alleen blackbox tests op de functies uitvoerd maar ook de code binnen de functies analyseert (whitebox testing). Hierdoor is de kwaliteit van de gegenereerde test in veel gevallen aanzienlijk hoger dan bij tests die door mensen zijn gemaakt.

Oslo is de codenaam van een nieuw modelleerplatform waarmee je je eigen DSL's kunt ontwerpen. Hiermee kun je oplossingen modelleren die specifiek zijn ontworpen voor het probleem dat je wilt oplossen.

Conclusie

Persoonlijk heb ik vaak problemen met Microsoft producten omdat ze zich niet aan open standaarden houden. Hierdoor is het in de praktijk vaak moeilijk op een optimale koppeling te maken tussen open en gesloten systemen.

Hier gaat verandering in komen. Ray Ozzie gaf in zijn eerste keynote aan dat Microsoft zich in de toekomst veel meer aan open standaarden zal gaan houden. Hij heeft developers opgeroepen om dit ook te doen. Hier zijn een aantal redenen voor. Vroeger verdiende Microsoft zijn geld vooral met het verkopen van software als fysiek product (een CD met een boek en een licentie). In de toekomst zal er er steeds meer geld verdient worden met webservices en SLA's. Wil je hier aan kunnen verdienen dat moet je zorgen dat het met vrijwel elk hardware- en softwareplatform werkt waardoor je een grote userbase krijgt. En dat kan alleen met open standaarden.





Van vrijwel alle presentaties heeft Microsoft opnamen gemaakt.
De presentaties, video's en slides kun je bekijken op http://microsoftpdc.com.




Om het gebruik van programmeertaal PHP nog verder te stimuleren en om de kwaliteit van de PHP-programmeurs nog verder te vergroten, start Ibuildings dit jaar een PHP Centre of Expertise. Het centrum zal geleid worden door Cal Evans, een PHP-deskundige van wereldformaat. Hij is onder meer hoofdredacteur van een van de belangrijkste PHP-developersfora. Zijn overstap naar Ibuildings is in de PHP-gemeenschap ingeslagen als een bom. Evans verhuist in oktober van zijn huidige woonplaats Nashville (Tennessee – VS) naar Nederland.

“PHP neemt in toenemende mate een prominente plaats in op de grootzakelijke markt”, stelt Evans. “Tijdens de afgelopen PHP-ontwikkelaarsconferentie in Californië werden we overspoeld met voorbeelden uit met name de Europese telecomsector, waar PHP wordt ingezet in een breed scala aan toepassingen. Vooral daar waar het om hoge volume transacties gaat, is PHP sneller en dus goedkoper dan concurrerende programmeertalen.”
Doel van het Centre of Expertise is om een grote stimulans te geven aan de PHP-gemeenschap, die uit ongeveer 4,6 miljoen developers bestaat. Het onderwijzen en implementeren van best practices is een van de belangrijke bijdragen die Evans via het Centre of Expertise wil geven. “Veilig programmeren en het gebruik van verschillende methodieken, zoals Agile, zijn belangrijke aandachtspunten. Het is mijn doel om de professionals helemaal af te stemmen op de wensen en vereisten uit de grootzakelijke markt”, aldus Evans.
De transfer van Evans uit de VS naar Nederland mag gerust opmerkelijk worden genoemd. Maar Evans is zeer gevleid door de uitnodiging van Ibuildings. “De laatste paar jaar heb ik gezien dat Ibuildings consequent de beste mensen uit de PHP-gemeenschap in dienst heeft genomen. Mensen waar ik diep respect voor heb. De combinatie van hun visie op de rol die PHP speelt en nog gaat spelen, en hun ondernemende mentaliteit zijn exceptioneel.”
Als voorbeeld van toekomstige groei noemt Evans landen in Zuid-Amerika waar in toenemende mate gebruik wordt gemaakt van de open source taal PHP. Ook de portering van I5 en COBOL naar een internetomgeving vergroot de vraag naar PHP-expertise. “De vraag naar PHP-programmeurs nam in 2007 met 40 procent toe”, onderstreept Evans het toenemende belang van PHP.
Om aan de grote vraag naar deskundigheid te beantwoorden, zal Evans behalve bij het Centre of Expertise ook betrokken zijn bij de trainingsdivisie van Ibuildings, die PHP-opleidingen verzorgt voor zowel eigen personeel als externe partijen.

Afgelopen dinsdag (23 september 2008) vond in de Vrije Universiteit in Amsterdam de 2-maandelijkse phpGG meeting plaats. Dit is een kort verslag van deze bijeenkomst.



De eerste spreker, Bert Boerland, gaf een presentatie over Drupal. Drupal is een content management framework dat een aantal punten uniek is. Ten eerste is het project met meer dan 2000 core-developers een van de grootste open source projecten ter wereld, zelfs groter dan Linux. De architectuur van Drupal is zo ontworpen dat het zonder problemen sites aan kan met miljoenen bezoekers. Dit is een van de redenen waarom het wordt gebruikt door organisaties als Yahoo, Nasa en de Verenigde naties. Drupal is een van de voorbeelden waaruit blijkt dat PHP uitermate geschikt is voor enterprise applicaties.




Stefan Koopmanschap gaf een presentatie over refactoring van code. Na het programmeren van een proof-of-concept applicatie is het meestal verstandig om nog eens kritisch naar je applicatie te kijken. Indien het concept niet bruikbaar is gooi je het weg en ga je iets nieuws maken (code rewriting). Is het concept wel bruikbaar dan is het meestal verstandig om de code te refactoren. Hierbij blijven de classes, methods en functie-parameters ongewijzigd en concentreert de developer zich uitsluitend op de implementatie van de methods. Je kunt dus nog steeds je oude unittests gebruiken en de API van je applicatie blijft ongewijzigd.




Na de tweede presentatie werden er een aantal prijzen verloot onder het publiek. Naast een ElePHPant, een drietal boeken en een Zend T-shirt waren er ook conferentie-tickets te winnen naar PHP Barcelona, PHP Works in Atlanta en PHP-NW in Manchester.




Aan het eind van de avond was er nog gelegenheid om wat te drinken en na te praten. Hierbij werd duidelijk dat de aanwezigen de bijeenkomst op prijs stelden en waarschijnlijk ook bij de volgende meeting aanwezig zullen zijn. Om 23.00 uur ging iedereen weer tevreden naar huis.




De volgende bijeenkomst is dinsdagavond 18 november. De locatie en de sprekers worden binnenkort op deze website gepubliceerd.










Regelmatig krijg ik van mijn opdrachtgevers het verzoek om te bepalen waarom een bepaalde PHP applicatie niet voldoende performance heeft. Om iets zinnigs over de performance bottlenecks in je applicatie te kunnen zeggen moet je gaan meten hoe lang PHP er over doet om bepaalde instructies uit te voeren. In dit document probeer ik uit te leggen uit dat globaal in zijn werk gaat.







Wat heb je nodig?

Om een applicatie te kunnen profilen heb je een tweetal tools nodig

Onder Ubuntu kun je deze installeren via de volgende twee commando's:

sudo apt-get install php5-xdebug
sudo apt-get install kcachegrind






Configureren

Je kunt de xdebug profiler aanzetten door de volgende regels toe te voegen aan php.ini

//hiermee zet je de xdebug profiler aan
xdebug.profiler_enable=1

//De volgende opties zijn optioneel
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_name="timestamp"

Enable trigger zorgt ervoor dat de applicatie aan een profile log aanmaakt indien de URL parameter XDEBUG_PROFILE
wordt meegegeven. Je kunt dus zelf bepalen welk script je wilt profilen. Profiler_output_name zorgt ervoor dat de profile log een timestamp in de bestandsnaam heeft zodat je snel kunt zien welke log de juiste is.

Als alles goed geinstalleerd is dan zal in de output van phpinfo() het volgende te zien zijn:

xdebug.profiler_append Off Off
xdebug.profiler_enable On On
xdebug.profiler_enable_trigger Off Off
xdebug.profiler_output_dir /tmp /tmp
xdebug.profiler_output_name cachegrind.out.%p cachegrind.out.%p






Een simpel voorbeeld

In het onderstaande voorbeeld zie je eens stukje script dat verbinding maakt met een MySQL database en een aantal records opvraagt

function test2()
{
mysql_connect('localhost','username','secret');
mysql_select_db('mysql');
$queryresult=mysql_query("select * from help_keyword");
while ($row=mysql_fetch_object($queryresult))
{
print_r($row);
}
}

test2();
?>

Als je dit script uitvoert via je browser dan wordt er in de /tmp folder een cachegrind.out bestand gegenereerd. Dit bestand kan geopend worden met Cachegrind. In Cachegrind krijg je dan het volgende scherm te zien:







Je kunt nu per functie zien hoeveel processortijd het kost om hem uit te voeren. Hierdoor krijg je goed zicht op de functies die het meeste vertraging in je script veroorzaken.





Meer informatie over dit onderwerp