<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Reinoud.net</title>
	<atom:link href="http://www.reinoud.net/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.reinoud.net/wordpress</link>
	<description>Code is poetry</description>
	<lastBuildDate>Mon, 26 Jan 2009 18:12:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MySQL query benchmarking</title>
		<link>http://www.reinoud.net/wordpress/2009/01/26/mysql-query-benchmarking/</link>
		<comments>http://www.reinoud.net/wordpress/2009/01/26/mysql-query-benchmarking/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 18:12:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[database profiling]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://www.reinoud.net/wordpress/?p=42</guid>
		<description><![CDATA[We komen allemaal wel is op het punt de we bijvoorbeeld de prestaties van een bepaalde query willen meten. Hiervoor zijn verschillende methodes, helemaal wanneer je gebruik maakt van Zend Framework&#8217;s Database Abstraction Layer, bijvoorbeeld met behulp van de ingebouwde query profiler.
Een langer artikel over het optimaliseren van queries volgt binnenkort echter het volgende wil [...]]]></description>
			<content:encoded><![CDATA[<p>We komen allemaal wel is op het punt de we bijvoorbeeld de prestaties van een bepaalde query willen meten. Hiervoor zijn verschillende methodes, helemaal wanneer je gebruik maakt van <a href="http://framework.zend.com/manual/en/zend.db.html">Zend Framework&#8217;s Database Abstraction Layer</a>, bijvoorbeeld met behulp van de <a href="http://framework.zend.com/manual/en/zend.db.profiler.html">ingebouwde query profiler</a>.</p>
<p>Een langer artikel over het optimaliseren van queries volgt binnenkort echter het volgende wil ik vast met jullie delen.</p>
<p>Mocht je je afvragen waarom bepaalde queries de eerste keer dat ze worden uitgevoerd zolang duren en vervolgens een stuk korter duren, dat wordt meestal veroorzaakt door de in MySQL ingebakken query cache. Voor een goede meting is het dus nodig deze query cache te herinitialiseren bij elke teste / meting. Dit kan met behulp van het volgende statement:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">RESET QUERY CACHE</pre></div></div>

<p>Op die manier krijg je betrouwbare resultaten uit je metingen. Echter geheel betrouwbaar zijn ze nog niet, de tijd die een query in beslag neemt is bijvoorbeeld ook nog afhankelijk van het feit of MySQL een tabel reeds geopend heeft, en misschien is er (bijvoorbeeld op UNIX systemen) nog wel een tussenlaag in het besturingssysteem die bepaalde gegevens cachet. Hoe dan ook maakt bovenstaand statement de boel een stuk betrouwbaarder!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reinoud.net/wordpress/2009/01/26/mysql-query-benchmarking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Rekenen en sorteren met Aggregate / Aliases</title>
		<link>http://www.reinoud.net/wordpress/2009/01/26/mysql-rekenen-en-sorteren-met-aggregate-aliases/</link>
		<comments>http://www.reinoud.net/wordpress/2009/01/26/mysql-rekenen-en-sorteren-met-aggregate-aliases/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 16:55:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Aggregate]]></category>
		<category><![CDATA[Aliases]]></category>

		<guid isPermaLink="false">http://www.reinoud.net/wordpress/?p=36</guid>
		<description><![CDATA[Stel je voor, je hebt een query die gebruik maakt van één of meerdere aggregate functies waaraan je vervolgens met behulp van AS een alias aan koppelt. Echter het resultaat van deze aggregates heb je nodig in je resultaatset en je wilt er mee rekenen en aan het resultaat van de berekening nog een alias [...]]]></description>
			<content:encoded><![CDATA[<p>Stel je voor, je hebt een query die gebruik maakt van één of meerdere aggregate functies waaraan je vervolgens met behulp van <em>AS </em>een alias aan koppelt. Echter het resultaat van deze aggregates heb je nodig in je resultaatset en je wilt er mee rekenen en aan het resultaat van de berekening nog een alias koppelen.</p>
<p>Een voorbeeld om het bovenstaande te verduidelijken kan geen kwaad, om het makkelijker te maken doen we in het voorbeeld ook nog een JOIN tussen twee tabellen. Deze JOIN is echter niet persé nodig om dit voorbeeld van toepassing te laten zijn.</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> COUNT<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">DISTINCT</span> tabel1<span style="color: #66cc66;">.</span>kolom1<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> disKol1<span style="color: #66cc66;">,</span> SUM<span style="color: #66cc66;">&#40;</span>tabel2<span style="color: #66cc66;">.</span>kolom1<span style="color: #66cc66;">&#41;</span> sumKol2<span style="color: #66cc66;">,</span> disKol1<span style="color: #66cc66;">*</span>sumKol2 <span style="color: #993333; font-weight: bold;">AS</span> score <span style="color: #993333; font-weight: bold;">FROM</span> tabel1<span style="color: #66cc66;">,</span> tabel2 <span style="color: #993333; font-weight: bold;">WHERE</span> tabel1<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> tabel2<span style="color: #66cc66;">.</span>id <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> score <span style="color: #993333; font-weight: bold;">DESC</span></pre></div></div>

<p>Het resultaat van deze query is niet erg enerverend, namelijk de foutmelding (reference to group function) . Geen success dus. Net voordat ik het op wilde geven kwam ik via google op de meest simpele oplossing waarvan ik tot op heden niet begrijp dat ik hem zelf niet heb verzonnen en dat is natuurlijk niet de aliassen gebruiken. In plaats daarvan gewoon het aggregate statement herhalen zo dus:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> COUNT<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">DISTINCT</span> tabel1<span style="color: #66cc66;">.</span>kolom1<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> disKol1<span style="color: #66cc66;">,</span> SUM<span style="color: #66cc66;">&#40;</span>tabel2<span style="color: #66cc66;">.</span>kolom1<span style="color: #66cc66;">&#41;</span> sumKol2<span style="color: #66cc66;">,</span> COUNT<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">DISTINCT</span> tabel1<span style="color: #66cc66;">.</span>kolom1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span>SUM<span style="color: #66cc66;">&#40;</span>tabel2<span style="color: #66cc66;">.</span>kolom1<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">AS</span> score <span style="color: #993333; font-weight: bold;">FROM</span> tabel1<span style="color: #66cc66;">,</span> tabel2 <span style="color: #993333; font-weight: bold;">WHERE</span> tabel1<span style="color: #66cc66;">.</span>id <span style="color: #66cc66;">=</span> tabel2<span style="color: #66cc66;">.</span>id <span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> score <span style="color: #993333; font-weight: bold;">DESC</span></pre></div></div>

<p>Ontzettend simpel en effectief gezien het feit dat MySQL de resultaten van de functies cached en dus niet nogmaals berekend! En je dan voor te stellen dat ik al bijna helemaal opnieuw begonnen was&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reinoud.net/wordpress/2009/01/26/mysql-rekenen-en-sorteren-met-aggregate-aliases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclispe PDT 2.0 &#8211; Beter laat dan nooit</title>
		<link>http://www.reinoud.net/wordpress/2009/01/23/eclispe-pdt-20-beter-laat-dan-nooit/</link>
		<comments>http://www.reinoud.net/wordpress/2009/01/23/eclispe-pdt-20-beter-laat-dan-nooit/#comments</comments>
		<pubDate>Fri, 23 Jan 2009 17:02:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[pdt]]></category>

		<guid isPermaLink="false">http://reinoud.net/wordpress/?p=29</guid>
		<description><![CDATA[Na de eerste release van PHP Development Tools framework for Eclipse is het een tijdlang stil geweest rondom dit op PHP toegespitste Eclipse project. Afgezien van een aantal kleine updates hebben we eigenlijk sinds september 2007 geen grote veranderingen meer gezien in het pakket. Echter, tot vandaag. Nouja eigenlijk tot 29 December 2008 maar net [...]]]></description>
			<content:encoded><![CDATA[<p>Na de eerste release van <a href="http://www.eclipse.org/pdt/">PHP Development Tools framework for Eclipse</a><em> </em>is het een tijdlang stil geweest rondom dit op PHP toegespitste Eclipse project. Afgezien van een aantal kleine updates hebben we eigenlijk sinds september 2007 geen grote veranderingen meer gezien in het pakket. Echter, tot vandaag. Nouja eigenlijk tot 29 December 2008 maar net zo als Eclipse zelf loop ik ook een beetje achter de feiten aan.</p>
<p>Hoe dan ook vandaag kwam ik via <a href="http://www.linuxtoday.com/news_story.php3?ltsn=2009-01-23-011-35-NW-RL">LinuxToday</a> op een blog post waarin de release van versie 2.0 van PDT ter sprake kwam. Wat betreft PDT, of eigenlijk Eclipse in het algemeen, of eerlijker nog programma&#8217;s geschreven in Java, ik ben er niet kapot van. Waar ik me regelmatig aan stoor tijdens het gebruik van Java software is het onvermogen van Java of misschien Java ontwikkelaars om de gebruikersinterface te integreren met het besturingssysteem. Natuurlijk, Java is bedoeld als platform onafhankelijke programmeertaal / omgeving echter wat mij betreft is dit in de manier waarop het toegepast wordt eerder een tekortkoming dan een plus punt.</p>
<p>Terug naar Eclipse, een afwijkende grafische interface is niet altijd gelijk een slechtere. Vooral voor Windows gebruikers laat de standaard interface meer dan eens te wensen over. Wat dat betreft moet ik eerlijk zeggen dat Eclipse, en specifiek deze nieuwe versie van PDT een aardig indruk maakt. Bepaalde elementen zijn gemakkelijk terug te vinden op plaatsen waar je dat van Eclipse gewent bent. Maar nog steeds vindt ik dat Eclipse als volledige IDE nog steeds erg teleurstelt.</p>
<p>Wat is de meerwaarde van een volledige IDE? Ik denk dat dit voor de meeste ontwikkelaars toch code hinting / completion is en net zoals in de vorige release van PDT vindt ik dat hier de nodige dingen ontbreken. Natuurlijk is er syntax coloring, en met behulp van control + spatie worden functienamen voor je afgemaakt. In de praktijk merk ik alleen dat ik de functienamen zo wel weet, alleen de (volgorde) van argumenten is het geen wat ik altijd vergeet. Jammer genoeg is dat nu net wat Eclipse niet kan vertellen waardoor ik nog regelmatig op PHP.net te vinden ben zoekend naar de juiste argumenten en return types. Wat volwassen IDE&#8217;s voor andere programmeertalen ook al jaren hebben is custom code completion, het afmaken / hinten van zelf gedefinieerde functie / methode namen, inclusief de argumenten, ook dit ontbreekt in de nieuwe versie van PDT.</p>
<p>Natuurlijk zijn er ook genoeg redenen om PDT wel te gebruiken, (met een beetje klooien) zijn er uitstekende debug mogelijkheden, perfecte code completion in de vorm van automatische haakjes en accolades. Jammer is alleen dat het bij PHP ontwikkelaars meer routine is om print_r($var); die(); te doen dan gebruik te maken van een debugger. Eclipse PDT is een goede IDE voor webontwikkelaars en in het bijzonder PHP programmeurs.  Echter voor mij voelt persoonlijk voelt het programma te lomp, log en groot voor de functionaliteit die het biedt. Voorlopig biedt Notepad++ mij in ieder geval alle functionaliteit waar ik als webontwikelaar naar opzoek ben en dat op een lichte en soepele manier. Alleen jammer dat het geen opensource software is&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reinoud.net/wordpress/2009/01/23/eclispe-pdt-20-beter-laat-dan-nooit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL IFNULL()</title>
		<link>http://www.reinoud.net/wordpress/2009/01/22/mysql-ifnull/</link>
		<comments>http://www.reinoud.net/wordpress/2009/01/22/mysql-ifnull/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 16:35:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[ifnull]]></category>
		<category><![CDATA[null]]></category>

		<guid isPermaLink="false">http://reinoud.net/wordpress/?p=23</guid>
		<description><![CDATA[Soms kom je in situaties dat je in een query met verschillende kolommen wilt rekenen en daarin meerdere onderdelen hebt zoals in bijvoorbeeld de volgende query:

SELECT &#40;kolom1 * kolom2 &#41; + kolom3 FROM tabel

Echter, wanneer in bovenstaande query kolom 3 gelijk is aan NULL is het resultaat van de berekening ook NULL. Logischerwijs is dit [...]]]></description>
			<content:encoded><![CDATA[<p>Soms kom je in situaties dat je in een query met verschillende kolommen wilt rekenen en daarin meerdere onderdelen hebt zoals in bijvoorbeeld de volgende query:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#40;</span>kolom1 <span style="color: #66cc66;">*</span> kolom2 <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> kolom3 <span style="color: #993333; font-weight: bold;">FROM</span> tabel</pre></div></div>

<p>Echter, wanneer in bovenstaande query kolom 3 gelijk is aan NULL is het resultaat van de berekening ook NULL. Logischerwijs is dit niet gewenst, na flink graven in de MySQL handleiding heb ik op <a href="http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html">deze pagina</a> de oplossing gevonden. Namelijk de IFNULL functie. Een stukje copy/paste dan maar:</p>
<blockquote><p><em><strong>IFNULL(expr1,expr2) </strong><br />
If expr1 is not NULL, IFNULL() returns expr1, else it returns expr2. IFNULL() returns a numeric or string value, depending on the context in which it is used:<br />
mysql&gt; SELECT IFNULL(1,0);<br />
-&gt; 1<br />
mysql&gt; SELECT IFNULL(NULL,10);<br />
-&gt; 10<br />
mysql&gt; SELECT IFNULL(1/0,10);<br />
-&gt; 10<br />
mysql&gt; SELECT IFNULL(1/0,&#8217;yes&#8217;);<br />
-&gt; &#8216;yes&#8217;</em></p></blockquote>
<p>Met deze informatie wordt de bovenstaande query dus als volgt:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">&#40;</span>kolom1 <span style="color: #66cc66;">*</span> kolom2 <span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">+</span> IFNULL<span style="color: #66cc66;">&#40;</span>kolom3<span style="color: #66cc66;">,</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> tabel</pre></div></div>

<p>Handig toch?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reinoud.net/wordpress/2009/01/22/mysql-ifnull/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webontwikkeling en beveiliging</title>
		<link>http://www.reinoud.net/wordpress/2009/01/16/webontwikkeling-en-beveiliging/</link>
		<comments>http://www.reinoud.net/wordpress/2009/01/16/webontwikkeling-en-beveiliging/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 18:06:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Beveiliging]]></category>

		<guid isPermaLink="false">http://reinoud.net/wordpress/?p=13</guid>
		<description><![CDATA[Beveiliging. Een heikel woord in de wereld van de webontwikkelaar. Het ontwikkelen van gebruikersvriendelijke webapplicaties staat sinds het begin der tijden op gespannen voet met het begrip beveiliging. Natuurlijk, ieder vorm van softwareontwikkeling heeft te maken met het begrip security, de éne meer dan de andere. Echter nergens is beveiliging zo belangrijk en tegelijkertijd complex [...]]]></description>
			<content:encoded><![CDATA[<p>Beveiliging. Een heikel woord in de wereld van de webontwikkelaar. Het ontwikkelen van gebruikersvriendelijke webapplicaties staat sinds het begin der tijden op gespannen voet met het begrip beveiliging. Natuurlijk, ieder vorm van softwareontwikkeling heeft te maken met het begrip security, de éne meer dan de andere. Echter nergens is beveiliging zo belangrijk en tegelijkertijd complex als in een webapplicatie.</p>
<p>De complexiteit van webapplicaties en beveiliging heeft een aantal oorzaken, ten eerste is er, zoals in elke applicatie het gebruiksgemak. Veel webontwikkelaars zijn bang dat een hoge mate van beveiliging mogelijke klanten, bezoekers en geinteresseerden afschrikt. Immers wie heeft zin om zestien keer in het uur een wachtwoord opnieuw in te geven? Echter de belangrijkste fouten die worden gemaakt tijdens het ontwerp en de bouw van een webapplicatie hebben geen enkele invloed op het gebruiksgemak van het uiteindelijk eindproduct, denk aan buffer overflows door slechte input validatie, of sql injectie door het afraffellen van fatsoenlijke query escaping.</p>
<p>Een ander aspect wat het beveiligen van webapplicaties zo complex maakt is de diversiteit van de productieomgeving. Bij een normale desktopapplicatie zijn er een groot aantal omgevingsfactoren die vooraf duidelijk vast liggen, of af te bakenen zijn. Voorbeelden zijn het besturingssysteem, de beschikbare software de identiteit van de gebruiker etcetera. In tegenstelling tot een desktopapplicatie staat er bij een webapplicatie maar heel weinig vast wat betreft de omgeving. De bezoeker is niet geidentificeerd, het aantal combinaties van webbrowser en besturingssysteem is nagenoeg oneindig en de applicatie is bereikbaar voor iedereen die een internetverbinding tot zijn beschikking heeft. En dat zijn er best veel.</p>
<p>Dan is er nog het grote aantal verschillende ondersteunende softwarepakketten waar een webontwikkelaar mee te maken krijgt, zoals het besturingssysteem van de server, de webserver, de scripttaal, de databaseserver. Al deze onderdelen kunnen leiden tot beveiligingsproblemen die in de ontwikkelomgeving niet waren voorzien bijvoorbeeld als gevolg van versie verschillen, configuratie verschillen etcetera. Soms kunnen een aantal triviale kwetsbaarheden in combinatie zorgen voor een groot probleem in de webapplicatie, en dat terwijl er in eerste instantie helemaal geen beveiligingsprobleem in de webapplicatie bestond.</p>
<p>Een boek waarvan ik van mening ben dat elke softwareontwikkelaar (en dus ook webontwikkelaar, al ontkennen die graag dat ze dat zijn) gelezen moet hebben is &#8220;<a href="http://www.securecoding.org/">Secure Coding Principles &amp; Practices&#8221; door Mark G. Graff &amp; Kenneth R. van Wyk</a>. Het boek bevat een scala aan praktijk voorbeelden, toe te passen principes en richtlijnen die direct relevant zijn tijdens de ontwikkeling van elk soort applicatie.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reinoud.net/wordpress/2009/01/16/webontwikkeling-en-beveiliging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Even voorstellen</title>
		<link>http://www.reinoud.net/wordpress/2009/01/15/even-voorstellen/</link>
		<comments>http://www.reinoud.net/wordpress/2009/01/15/even-voorstellen/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 21:05:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Algemeen]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://reinoud.net/wordpress/?p=8</guid>
		<description><![CDATA[Webontwikkeling daar gaat dit blog dus over, of dat is in ieder geval de bedoeling. Webontwikkeling is ongeveer het ruimste begrip ter wereld, tijd dus om het één en ander uit te sluiten.
Waarschijnlijk de beste en makkelijkste manier om duidelijk te maken welk deel van webontwikkeling ik normaal gesproken in aanmerking noem is toch een, [...]]]></description>
			<content:encoded><![CDATA[<p>Webontwikkeling daar gaat dit blog dus over, of dat is in ieder geval de bedoeling. Webontwikkeling is ongeveer het ruimste begrip ter wereld, tijd dus om het één en ander uit te sluiten.</p>
<p>Waarschijnlijk de beste en makkelijkste manier om duidelijk te maken welk deel van webontwikkeling ik normaal gesproken in aanmerking noem is toch een, onvermijdelijk een opsomming. In willekeurige volgorde dan maar.</p>
<ul>
<li>PHP;</li>
<li>MySQL;</li>
<li>XHTML;</li>
<li>CSS;</li>
<li>Javascript.</li>
</ul>
<p>Maar goed, omdat een opsomming bijna net zo weinig zegt als helemaal niets is het tijd voor enige toelichting. Ongeveer 6 jaar geleden kwam ik voor het eerste serieus in aanraking met webontwikkeling, tot die tijd was het vooral frames aan elkaar klikken met Dreamweaver. Niet snel daarna kwam onvermijdelijk het scripten, waarom PHP? Dat was vooral de schuld van collega&#8217;s uit die periode. Waarom MySQL? Waarom niet! Nog steeds denk ik dat voor de meeste (niet microsoft) webontwikkelaars MySQL de enige serieuze optie is voor een als databaseoplossing.</p>
<p>Hoe dan ook, zes jaar later, 2009, waar werken we tegenwoordig mee? Het makkelijkst samen te vatten is natuurlijk te verwijzen naar de libraries die we bij Funkology _altijd_ gebruik in de eerste plaats <a title="Zend Framework" href="http://framework.zend.com/">Zend Framework</a> , ten tweede de template engine <a title="Smarty" href="http://www.smarty.net/">Smarty</a>. Wat betreft Javascript framework is er voor mij persoonlijk maar een optie en dat is <a title="jQuery" href="http://jquery.com/">jQuery</a>.</p>
<p>Tot zover een hele, hele, hele korte introductie waar het hier (waarschijnlijk ooit) over zal gaan.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reinoud.net/wordpress/2009/01/15/even-voorstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://www.reinoud.net/wordpress/2009/01/15/hello-world/</link>
		<comments>http://www.reinoud.net/wordpress/2009/01/15/hello-world/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 19:42:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://reinoud.net/wordpress/?p=1</guid>
		<description><![CDATA[De eerste post, de magische Hello world! Waarschijnlijk hadden de ontwikkelaars van Wordpress de intentie dat je deze post verwijderd, ik laat hem staan. Nostalgie&#8230;
]]></description>
			<content:encoded><![CDATA[<p>De eerste post, de magische Hello world! Waarschijnlijk hadden de ontwikkelaars van Wordpress de intentie dat je deze post verwijderd, ik laat hem staan. Nostalgie&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.reinoud.net/wordpress/2009/01/15/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
