Scriptorama.nl

Header image showing a keyboard, mouse, laptop and books on design patterns

PHP best practices - configuratie

Zoals velen weten is PHP aanleren vrij gemakkelijk. Het vereist een lage programmeer drempel en PHP is ook nog een loosely typed taal, wat veel belemmeringen en problemen weghaalt voor beginners. Misschien is dat ook de reden dat er zoveel slechte PHP code te vinden is en dat PHP daarom niet gezien wordt als volwaardige enterprise taal dat toegepast kan worden voor kritieke toepassingen. Dit artikel wil daar verandering in brengen, door goede en pragmatische aanpakken te behandelen die gelden voor PHP. We gaan "PHP best practices" behandelen, dat bestaat uit twee delen. Als eerste willen we belangrijke PHP configuraties behandelen en in deel II programmeer best practices.
(more...)

Firefox “Bon Echo” alpha-3 is beschikbaar

De Mozilla Foundation heeft de een nieuwe testversie van Firefox 2.0 vrijgegeven. Bon Echo alpha-3, zoals zijn volledige naam luidt, bevat alle wijzigingen van alpha 2, zoals de microsummaries maar biedt zelf ook 2 nieuwe features aan. Zo is er een antiphishing filter toegevoegd en zijn er de nodige wijzigingen in javascript land, waaronder een client-side sessie systeem. Klik meer voor screenshot en meer informatie over het client-side storage systeem.

(more...)

PHP internals: Compiled Variables in PHP 5

Sara Golemon, auteur van de overload en runkit extensies, heeft een interessant artikeltje geschreven over een interne wijziging van Zend Engine die gebruikt wordt voor PHP 5.1: Compiled Variables.

These !0 variables refer to a new structure in the execution stack which stores and references to the "real" variables out in userspace. The hash value for each variable is computed at compile time (meaning that it's only done once per variable no matter how often it's used and that opcode caches save this work from being done during subsequent page views at all). The first time one of these CVs is used, the engine looks it up in the active symbol table and updates the CV cache to know where it is. All subsequent uses of that compiled variable use that pre-fetched address and don't have to look it up again. On an individual lookup, this isn't a major leap forward in speed, however consider a for loop where the test value is checked on every iteration.

Deze nieuwe methode geeft in het geval van simpele variabelen mogelijk een kleine verbetering in performance. In de comments geeft Alan Knowles al aan dat deze performance gain waarschijnlijk te niet wordt gedaan door de extra compile overhead die dit veroorzaakt. Om PHP 5.1 op volle snelheid te kunnen gebruiken is het dan ook aan te raden om een bytecode cacher te installeren zoals bijvoorbeeld APC.

Doordat Sara ook duidelijk uitlegt hoe PHP 4 en 5.0 werken krijg je een aardig inzicht van hoe PHP intern met variabelen omgaat. Dus, als je ons single quotes artikel hebt gelezen en er nog niet echt chocola van kon maken moet je absoluut dit artikel even doorlezen!

Artikel: Sara Golemon: Compiled Variables

Filter en escaping cheat sheet

Het valideren en filteren van gegevens ontgaat elk programmeur een keer. Soms worden ook de gegevens ook op een verkeerde manier gevalideerd. Gelukkig is hier een handig cheat sheet voor. Davey Shafik heeft een handige cheat sheet gemaakt voor het valideren en filteren van data. Het kleurige PDF bestand is hier te vinden.

Voor als er een luchtje aan je code zit…

Twee en een half jaar geleden ben ik bij m'n ouders vertrokken om met m'n vriendin in Amsterdam gaan wonen. Het is compleet cliché, ik weet het, maar als je net (en wie houd ik voor de gek, daarna ook nog wel) op jezelf gaat wonen gaat er nog wel eens het een en ander mis, koelkast-managements-gewijs. Dat je denkt van, "het ziet er uit als kaas... het ruikt als kaas... maar IEKS!! das melk van 2 maanden geleden! Oeh.. stukjes.. hmm"... Ehh.. you get the idea ;-)

Hetzelfde idee wil wel eens gebeuren met code die je schrijft.

(more...)

PHPIDE’s broncode komt er aan

Zoals we al eerder schreven is Zend Technologies Ltd. bezig met het ontwikkelen van een opensource PHP IDE. Daar begint zo langzamerhand wat meer leven in te komen. Zo was er tussen Derick Rethans en Guy Harpaz van Zend een pittige discussie over het debug-protocol dat gebruikt wordt.

Vandaag wordt op PHPDeveloper gezegd dat Guy Harpaz heeft aangekondigd dat de code momenteel door een juridische controle gehaald wordt om Linux / SCO praktijken te voorkomen. Daarna wordt de code beschikbaar gesteld.

Heb je altijd al aan je eigen PHPIDE willen werken, nog éven geduld :)

Google’s Java-To-Javascript compiler

Vandaag via Google Code Blog zien we dat Google een nieuwe toolkit beschikbaar heeft gemaakt. Het is nogal een aparte toolkit aangezien je hiermee een webapplicatie kunt schrijven in Java, waar je vervolgens met Google's magische compiler gewoon Javascript en HTML van kun genereren.

Hoewel ze spreken over een "hosted mode" waarin je kunt debuggen en een "web-mode" Het is me niet helemaal duidelijk hoe je een dergelijke applicatie kunt debuggen. Heb je nog een servlet server nodig daarvoor, of wat?

Apart systeem!

Is het al tijd om 800×600 vaarwel te zeggen?

Een weblog (via Digg) vraagt zich af of, nu dat Yahoo met haar opkomende nieuwe homepage 800x600 achter zich laat, het tijd is geworden om 800x600 compleet achter ons te laten.

Will this release finally give the last push to totally abandon 800×600? I don’t know if i’m quite ready for that yet. I for one know that both my parents in their early 50’s use 800×600 on their 17″ CRT, and they have a hard time seeing that sometimes, so I cannot imagine them moving to 1024×768.

Op Scriptorama hebben we ook een layout die eigenlijk net even iets te groot is om op 800x600 te draaien. Toen ik in het aankondigings artikeltje (niet helemáál subtiel) stelde dat webdevelopers een schermresolutie van meer dan 800x600 zouden moeten gebruiken, werd dat niet door iedereen gewaardeerd.

Hoewel ik zelf al jaren 800x600 niet meer gebruik en eerlijk gezegd ook niet echt iemand ken die het nog wel gebruikt is het maar de vraag of het al tijd is om 800x600 vaarwel te zeggen. Mobile-devices beginnen namelijk in trek te raken en deze apparaatjes hebben door hun grootte nu eenmaal een beperkte resolutie.

Neem bijvoorbeeld de Nokia 770. De Nokia 770, waar recentelijk een geupdate versie van uit is gekomen, is geen telefoon maar een WiFi-enabled apparaatje dat een scherm heeft met een maximale resolutie van 800x480. De Nokia 770 komt met een versie van de Opera browser maar het is nog maar even de vraag of je als webdeveloper kunt bepalen of iemand gebruik maakt van een dergelijk apparaat.

Ik ben benieuwd wat de Scriptorama lezers hier van vinden..

Is het al tijd geworden om 800x600 vaarwel te zeggen?

Edit: Juiste URL voor Yahoo page toegevoegd, thanks for the heads-up Joost ;-)

Presentatie over JavaScript 2

Ajaxian heeft een presentatie van de hand van Brendan Eich, de vader van Javascript online gezet. De presentatie bespreekt wat de volgende versie van Javascript zal bevatten en waarom. Het lijkt er op dat Javascript 2 de nodige Ruby en Python-achtige constructies zal krijgen, zoals een "yield" operator en zgn. "generators".

Brendan Eich on JavaScript 2 and The Future of the Web.

Volgens de presentatie zal Firefox 2 (waar gister nog een nieuwe alpha versie van uit kwam) al een deel van deze specificatie zal implementeren. Uit bug 326466 blijkt inderdaad dat een deel van deze specificatie al geimplementeerd is in een speciale ontwikkeltak (JS1_7_ALPHA_BRANCH).

Schone HTML met JavaScript

Steeds kom je vaker HTML in combinatie met Javascript tegen. Vaak wordt de HTML gemixed met Javascript, met soms rare constructies als gevolg.

JAVASCRIPT:
  1. <span onmouseover="notesBlock.hoverBegin(128699)">
  2. </span>     onmouseout="notesBlock.hoverEnd(128699, true)">
  3. <a class="trashcan" href="http://www.scriptorama.nl/#">
  4. </a>       onclick="if (confirm('Are you sure?')) {
  5. new Ajax.Updater('notes',
  6. '/page/2326/notes/destroy/128699', {

Dit is geen nette HTML en al helemaal niet semantisch. Met behulp van een Javascript library kunnen we dit tegengaan. In dit artikel zal ik Behaviour behandelen, ontwikkeld door Ben Nolan.

(more...)