<?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>ikMac</title>
	<atom:link href="http://www.ikmac.nl/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ikmac.nl</link>
	<description></description>
	<lastBuildDate>Sat, 17 Dec 2011 16:21:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Meerdere Google Calendars synchroniseren op je mobiel</title>
		<link>http://www.ikmac.nl/117</link>
		<comments>http://www.ikmac.nl/117#comments</comments>
		<pubDate>Sat, 17 Dec 2011 16:17:36 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.ikmac.nl/?p=117</guid>
		<description><![CDATA[Meerdere Google Calendars synchroniseren op je mobiel is mogelijk. Ga met je mobiel naar http://m.google.com/sync. Daar kun je per device aangeven welke kalender je wilt synchroniseren. In het geval van een iPhone moet je je Google Account wel al als &#8230; <a href="http://www.ikmac.nl/117">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Meerdere Google Calendars synchroniseren op je mobiel is mogelijk.</p>
<p>Ga met je mobiel naar <a href="http://m.google.com/sync" target="_blank">http://m.google.com/sync</a>. Daar kun je per device aangeven welke kalender je wilt synchroniseren.</p>
<p>In het geval van een iPhone moet je je Google Account wel al als exchange account hebben toegevoegd.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ikmac.nl/117/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oplossing voor wanneer een transparante link over een flash object niet werkt</title>
		<link>http://www.ikmac.nl/110</link>
		<comments>http://www.ikmac.nl/110#comments</comments>
		<pubDate>Fri, 21 Oct 2011 14:32:57 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://www.ikmac.nl/?p=110</guid>
		<description><![CDATA[Gebruik een transparante gif als achtergrond afbeelding voor je link: .flash-wrapper a { background: url(x.gif) no-repeat -1px -1px; } Voorwaarde is wel dat de wmode parameter van je flash object op &#8216;transparent&#8217; staat. Anders kun je sowieso geen HTML elementen &#8230; <a href="http://www.ikmac.nl/110">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Gebruik een transparante gif als achtergrond afbeelding voor je link:</p>
<pre class="prettyprint ">.flash-wrapper a { background: url(x.gif) no-repeat -1px -1px; }</pre>
<p>Voorwaarde is wel dat de wmode parameter van je flash object op &#8216;transparent&#8217; staat. Anders kun je sowieso geen HTML elementen over een flash objecten plaatsen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ikmac.nl/110/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handleiding voor het installeren van Node JS en Node.io op Mac OSX 10.7</title>
		<link>http://www.ikmac.nl/92</link>
		<comments>http://www.ikmac.nl/92#comments</comments>
		<pubDate>Tue, 18 Oct 2011 20:26:59 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[Node JS]]></category>
		<category><![CDATA[Node.io]]></category>
		<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://www.ikmac.nl/?p=92</guid>
		<description><![CDATA[Alle begin is moeilijk. Zo ook wanneer je Node JS en Node.io aan de praat probeert krijgen op je Mac. Dit zijn de stappen die ik heb ondernomen om het geheel werkend te krijgen op mijn OSX 10.7 (Lion) installatie. &#8230; <a href="http://www.ikmac.nl/92">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Alle begin is moeilijk. Zo ook wanneer je Node JS en Node.io aan de praat probeert krijgen op je Mac.</p>
<p>Dit zijn de stappen die ik heb ondernomen om het geheel werkend te krijgen op mijn OSX 10.7 (Lion) installatie.</p>
<p><strong>Stap 1: Installeer Xcode</strong><br />
Xcode kun je downloaden via de Mac App Store. Enige wat je nodig hebt is een Apple ID.<br />
<code><a href="http://itunes.apple.com/us/app/xcode/id448457090" target="_blank">http://itunes.apple.com/us/app/xcode/id448457090</a></code>.</p>
<p><strong>Stap 2: Installeer Homebrew</strong><br />
Homebrew is een package manager waarmee we zometeen Node JS kunnen installeren.<br />
Open een Terminal en voer het volgende command uit:</p>
<pre class="prettyprint ">$ /usr/bin/ruby -e &quot;$(curl -fsSL https://raw.github.com/gist/323731)&quot;</pre>
<p>Voor een uitgebreidere installatie omschrijving zie:<br />
<code><a href="https://github.com/mxcl/homebrew">https://github.com/mxcl/homebrew</a></code></p>
<p><strong>Stap 3: Installeer Node</strong><br />
In dezelfde terminal die we in stap 2 hebben gebruikt voer je het volgende command uit:</p>
<pre class="prettyprint ">$ brew install node</pre>
<p>Als het goed is geeft Homebrew een melding met je <code>NODE_PATH</code>. Deze hebben we zometeen nodig.</p>
<p><strong>Stap 4: Controleer of Node succesvol is geïnstalleerd</strong><br />
Voer onderstaand commando uit in de Terminal:</p>
<pre class="prettyprint ">$ node -v</pre>
<p>Wanneer je nu een versienummer te zien krijgt is Node goed geïnstalleerd.</p>
<p><strong>Stap 4: <code>NODE_PATH</code> instellen</strong><br />
Het instellen van je <code>NODE_PATH</code> is nodig zodat alle Node modules weten waar ze Node zelf kunnen vinden. Voer onderstaand commando uit in de Terminal. Dit opent  de nano teksteditor waarmee we ons .bash_profile bestand kunnen bewerken.</p>
<pre class="prettyprint ">$ nano ~/.bash_profile</pre>
<p>Kopier vervolgens onderstaande regel in de nano editor:</p>
<pre class="prettyprint ">export NODE_PATH=/usr/local/lib/node_modules</pre>
<p>Sla het bestand op met Ctrl+X, Yes, Enter.</p>
<p><strong>Stap 5: Installeer NPM (Node Package Manager)</strong><br />
Voer het volgende command uit in de Terminal:</p>
<pre class="prettyprint ">$ curl http://npmjs.org/install.sh | sh</pre>
<p>Als het goed is krijg je &#8220;It worked&#8221; te zien. Kan zijn dat er ook een WARN melding komt maar dat is niet erg.<br />
Een uitgebreidere installatie omschrijving zie:<br />
<code><a href="https://github.com/isaacs/npm#readme">https://github.com/isaacs/npm#readme</a></code></p>
<p><strong>Stap 6: Controleer of NPM succesvol is geïnstalleerd</strong><br />
Voer onderstaand commando uit in de Terminal:</p>
<pre class="prettyprint ">$ npm -v</pre>
<p>Wanneer je nu een versienummer te zien krijgt is NPM goed geïnstalleerd.</p>
<p><strong>Stap 7: Installeerd Node.io</strong><br />
Voer onderstaand commando uit in de Terminal. De -g staat voor global. Je kunt namelijk ook node_modules alleen lokaal installeren. Met de -g parameter kunnen we straks node.io aanroepen vanuit elke pad.</p>
<pre class="prettyprint ">$ sudo npm install -g node.io</pre>
<p><strong>Stap 8: Controlerer of Node.io succesvol is geïnstalleerd</strong><br />
Voer onderstaand commando uit in de Terminal:</p>
<pre class="prettyprint ">$ node.io -v</pre>
<p>Wanneer je nu een versienummer te zien krijgt is Node.io goed geïnstalleerd.</p>
<p><strong>Stap 9: Doe een dansje</strong><br />
Happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ikmac.nl/92/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X Lion: Bibliotheek/Library map zichtbaar maken.</title>
		<link>http://www.ikmac.nl/72</link>
		<comments>http://www.ikmac.nl/72#comments</comments>
		<pubDate>Thu, 21 Jul 2011 22:47:20 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[Lion]]></category>
		<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://www.ikmac.nl/?p=72</guid>
		<description><![CDATA[Wanneer je in Lion via Finder op zoek gaat naar je persoonlijke Bibliotheek map zul je deze in eerste instantie niet vinden. Dit komt omdat Apple er voor gekozen heeft om deze standaard te verbergen. Met behulp van Terminal (Programma&#8217;s &#8230; <a href="http://www.ikmac.nl/72">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wanneer je in Lion via Finder op zoek gaat naar je persoonlijke Bibliotheek map zul je deze in eerste instantie niet vinden. Dit komt omdat Apple er voor gekozen heeft om deze standaard te verbergen. Met behulp van Terminal (Programma&#8217;s &gt;Hulpprogramma&#8217;s) kun je de Bibliotheek echter zichtbaar maken. Typ in Terminal daarvoor het volgende commando en druk op Enter.</p>
<p><code>chflags nohidden ~/Library/</code></p>
<p>Na het uitvoeren van dit commando is je Bibliotheek map direct zichtbaar. Mocht je deze weer onzichtbaar willen maken typ dan het volgende commando en druk op enter:</p>
<p><code>chflags hidden ~/Library/</code></p>
<p><img class="alignnone size-full wp-image-85" title="Screen Shot 2011-07-22 at 11.45.38 PM" src="http://www.ikmac.nl/wp-content/uploads/2011/07/Screen-Shot-2011-07-22-at-11.45.38-PM.png" alt="" width="741" height="525" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ikmac.nl/72/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alexander &#8211; Truth</title>
		<link>http://www.ikmac.nl/64</link>
		<comments>http://www.ikmac.nl/64#comments</comments>
		<pubDate>Mon, 18 Jul 2011 19:31:00 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.ikmac.nl/?p=64</guid>
		<description><![CDATA[Waarom ik nooit eerder van deze artiest heb gehoord is mij een raadsel. Wat een briljant nummer met een fantastische video. Echte soul, vanuit het hart geschreven. Met hier en daar wat country, pop en reggae invloeden een nummer dat &#8230; <a href="http://www.ikmac.nl/64">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/26454103?title=0&amp;byline=0" width="640" height="360" frameborder="0"></iframe></p>
<p>Waarom ik nooit eerder van deze artiest heb gehoord is mij een raadsel. Wat een briljant nummer met een fantastische video. Echte soul, vanuit het hart geschreven. Met hier en daar wat country, pop en reggae invloeden een nummer dat gemakkelijk de hele dag op repeat kan blijven staan. De beste man mag er dan wel uitzien als een hippie maar vanaf vandaag is Truth van <a href="http://alexanderebert.com">Alexander Ebert</a> mijn favoriete nummer. Misschien dat het even duurt voordat je de rest van zijn cd Alexander kan waarderen maar voor liefhebbers van de indie stroming zeker de moeite waard!</p>
<p>Download het album Alexander via iTunes: <a href="http://itunes.apple.com/us/album/alexander/id421075914" target="_blank">http://itunes.apple.com/us/album/alexander/id421075914</a></p>
<p>Via zijn website kun je trouwens een extra versie van Truth feat. The RZA <a title="Download Alexander feat. The RZA - Truth" href="http://alexanderebert.com/truth" target="_blank">downloaden</a>. Deze kun je ook beluisteren op <a title="Listen to Alexander ft. The RZA - Truth on Soundcloud" href="http://soundcloud.com/vagrantrecords/truth-feat-the-rza/s-W9FNe" target="_blank">Soundcloud</a>. Als bonus kun je ook een remix van Truth door de White Arrows <a href="http://alexanderebert.com/truth" target="_blank">downloaden</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ikmac.nl/64/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom jQuery :parents selector</title>
		<link>http://www.ikmac.nl/40</link>
		<comments>http://www.ikmac.nl/40#comments</comments>
		<pubDate>Thu, 16 Jun 2011 22:17:02 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.ikmac.nl/?p=40</guid>
		<description><![CDATA[Stel je hebt de volgende HTML waar je de elementen met de class .foo en .bar wilt selecteren maar alleen als deze niet .baz als parent hebben. &#60;div class=&#34;foo&#34; /&#62;&#60;!--match--&#62; &#60;div class=&#34;bar&#34; /&#62;&#60;!--match--&#62; &#60;div class=&#34;baz&#34; /&#62;&#60;!--geen match--&#62; &#60;div class=&#34;foo&#34; /&#62;&#60;!--geen &#8230; <a href="http://www.ikmac.nl/40">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Stel je hebt de volgende HTML waar je de elementen met de class <code>.foo</code> en <code>.bar</code> wilt selecteren maar alleen als deze niet <code>.baz</code> als parent hebben.</p>
<pre class="prettyprint ">

&lt;div class=&quot;foo&quot; /&gt;&lt;!--match--&gt;
&lt;div class=&quot;bar&quot; /&gt;&lt;!--match--&gt;
&lt;div class=&quot;baz&quot; /&gt;&lt;!--geen match--&gt;
    &lt;div class=&quot;foo&quot; /&gt;&lt;!--geen match--&gt;
&lt;/div&gt;
</pre>
<p>Je zou dit kunnen oplossen met de volgende selector:</p>
<pre class="prettyprint ">$('.foo:not(.baz .foo),.bar:not(.baz .bar)');</pre>
<p>Bovenstaande selector is niet bepaald elegant te noemen en is bijzonder traag als je deze gebruikt in een gecompliceerde html structuur.</p>
<p>Een betere oplossing is om een custom selector te maken:</p>
<pre class="prettyprint ">
jQuery.expr[':'].parents = function(a,i,m){
    return jQuery(a).parents(m[3]).length &lt; 1;
};

$('.foo,.bar').filter(':parents(.baz)');
</pre>
<p>Een werkend voorbeeld:</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/ikmac/cEdqC/embedded/"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ikmac.nl/40/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery events: stop met het gebruik van &#8216;return false&#8217;</title>
		<link>http://www.ikmac.nl/34</link>
		<comments>http://www.ikmac.nl/34#comments</comments>
		<pubDate>Thu, 16 Jun 2011 21:08:58 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.ikmac.nl/?p=34</guid>
		<description><![CDATA[Meestal een van de eerste dingen die je leert als je met jQuery events aan de slag gaat is het stoppen van het standaard gedrag van een browser. In de uitleg voor het click event kun je het volgende tegen &#8230; <a href="http://www.ikmac.nl/34">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Meestal een van de eerste dingen die je leert als je met jQuery events aan de slag gaat is het stoppen van het standaard gedrag van een browser. In de uitleg voor het click event kun je het volgende tegen komen:</p>
<pre class="prettyprint ">$('a.clickme').click(function() {
    $('#mydiv').show();
    return false; // zorgt ervoor dat de browser de link niet volgt
});</pre>
<p>Deze functie toont het #mydiv element en stopt daarna het standaard gedrag van een browser door de href van de link niet te volgen.</p>
<p>Het gebruik van <code>return false</code> is hier eigenlijk niet goed en veel beginners zullen door dit voorbeeld return false gaan gebruiken als ze het standaard gedrag van een browser willen stoppen. Ik zal twee belangrijke onderwerpen over het stoppen van browser events behandelen:</p>
<ul>
<li>Gebruik de juiste methode: <code>return false</code> vs. <code>preventDefault</code>,  <code>stopPropagation</code> en <code>stopImmediatePropagation</code>.</li>
<li>Bovenaan, in het midden of onderaan: waar in de event callback moet je het standaard gedrag van de browser stoppen?</li>
</ul>
<p><em>Let op: wanneer ik het heb over event bubbling dan bedoel ik dat events eerst worden uitgevoerd op het originele DOM element en vervolgens omhoog op elk parent element in de DOM structuur. Events bubbelen niet naar siblings of child elementen. Wanneer events naar beneden bubbelen heet dit event capturing.</em></p>
<h2><em> </em>Gebruik de juiste methode</h2>
<p>De belangrijkste reden dat return false op deze manier wordt gebruikt is omdat het lijkt te doen wat we willen bereiken. Links worden niet gevolgd, formulieren worden niet gesubmit, etc. Waarom zouden we het dan niet gebruiken?</p>
<h3>Wat return false precies doet</h3>
<p>Wanneer return false wordt aangeroepen gebeuren er drie dingen:</p>
<ul>
<li><code>event.preventDefault()</code></li>
<li><code>event.stopPropagation()</code></li>
<li>Stop de uitvoering van de callback</li>
</ul>
<p>Maar wacht even, zul je vast denken. Ik heb alleen maar de eerste actie nodig om standaard browser gedrag te stoppen&#8230;</p>
<p>De enige van bovenstaande drie acties die nodig is om het standaard van een browser gedrag te stoppen is <code>preventDefault()</code>. Tenzij je het bubbelen van het event (propagation) wilt stoppen kan <code>return false</code> voor verwarring zorgen. Een voorbeeld om het wat duidelijker te maken:</p>
<p>De HTML voor het voorbeeld:</p>
<pre class="prettyprint ">
&lt;div class=&quot;artikel&quot;&gt;
    &lt;h2&gt;&lt;a href=&quot;#&quot;&gt;Titel&lt;/a&gt;&lt;/h2&gt;
    &lt;div class=&quot;content&quot;&gt;...&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>Wanneer er op de link in de <code>h2</code> wordt geklikt vullen we de <code>div.content</code> met tekst:</p>
<pre class="prettyprint ">$('.artikel h2 a').click(function() {
	$(this).parent().next().html('Tekst voor in content');
	return false;
});</pre>
<p>Tot nu toe gaat het goed. Maar we willen ook graag de class &#8220;active&#8221; toevoegen aan elke <code>div.artikel</code> waar op wordt geklikt (of wanneer er op een child element van <code>div.artikel</code> wordt geklikt). Daarom maken we een extra handler voor het click event:</p>
<pre class="prettyprint ">$('.artikel').click(function() {
	$(this).addClass('active');
});</pre>
<p>Werkt dit wanneer we op de link in het h2 element klikken? Nee! De reden waarom dit niet werkt is omdat we return false hebben gebruikt. <code>return false</code> betekent namelijk <code>event.preventDefault(); event.stopPropagation();</code> en het click event zal dus nooit omhoog bubbelen naar <code>div.artikel</code> waardoor het click event nooit zal worden uitgevoerd.</p>
<h3>Wat willen we dan wel?</h3>
<p><strong><code>preventDefault()</code></strong><br />
In de meeste gevallen waar je voorheen <code>return false</code> voor zou gebruiken is <code>e.preventDefault()</code> een betere keuze. Wanneer je <code>preventDefault</code> gebruikt moet je de event parameter wel beschikbaar stellen in je callback:</p>
<pre class="prettyprint ">$('a.clickme').click(function(e) {
	e.preventDefault(); // e == ons event
});</pre>
<p>Dit doet precies wat we willen zonder dat andere elementen het click event niet meer ontvangen.</p>
<p><strong>stopPropagation()</strong><br />
Soms wil je alleen het bubbelen van het event (propagation) stoppen. Een voorbeeld:</p>
<pre class="prettyprint ">
&lt;div class=&quot;artikel&quot;&gt;Een stukje tekst met &lt;a href=&quot;#&quot;&gt;een link&lt;/a&gt; en nog wat meer tekst.&lt;/div&gt;</pre>
<p>Stel, je wilt dat er iets gebeurd wanneer er ergens in het div element wordt geklikt maar je wilt ook dat de link wordt gevolgd als er op wordt geklikt.</p>
<pre class="prettyprint ">
$('div.artikel').click(function() {
	// doe iets
});

$('div.artikel a').click(function(e) {
	// het standaard browser gedrag wordt niet gestopt
	// en het event bubbelt niet omhoog
	e.stopPropagation();
});</pre>
<p>Als we in dit voorbeeld return false hadden gebruik zou het click event op <code>div.artikel</code> nooit worden uitgevoerd maar de gebruiker zal ook nog naar de link worden gestuurd.</p>
<p><strong>stopImmediatePropagation()</strong><br />
Deze methode stopt de uitvoering van het event, ook voor alle andere handlers. Alle events voor een bepaald element worden uitgevoerd in de volgorde waarin ze zijn gezet. Een voorbeeld:</p>
<pre class="prettyprint ">$('div a').click(function() {
	// doe iets
});

$('div a').click(function(e) {
	// doe nog iets
	e.stopImmediatePropagation();
});

$('div a').click(function() {
	// dit wordt nooit uitgevoerd
});

$('div').click(function() {
	// dit wordt nooit uitgevoerd
});</pre>
<p>Dit voorbeeld lijkt een beetje teveel van het goede maar je zult dit regelmatig tegen gaan komen. Hoe meer ingewikkelde code je schrijft hoe vaker nieuwe onderdelen events aan elementen zullen gaan hangen. Het is dan bijzonder handig als je weet hoe <code>stopImmediatePropagation</code> werkt!</p>
<p><strong><code>return false</code></strong><br />
Gebruik return false alleen als je het resultaat van <code>preventDefault()</code> en <code>stopPropgation()</code> wilt en je code het toelaat om het standaard gedrag van een browser pas aan het einde van je callback te stoppen.</p>
<h2>BOVENAAN, IN HET MIDDEN OF ONDERAAN</h2>
<p>Omdat je tot nu toe altijd return false hebt gebruikt stond dit altijd aan het einde in je functie omdat hier na verder geen code meer hoefde te worden uitgevoerd. Met <code>e.preventDefault()</code> hebben we meer opties. Het kan op elke plek in de callback worden uitgevoerd. Maar waar kunnen we het dan het beste plaatsen?</p>
<p><strong>1. Tijdens de ontwikkelfase moet het (bijna) altijd bovenaan staan</strong><br />
Wanneer je een AJAX formulier wilt versturen en dit geeft een Javascript error wil je natuurlijk niet dat het formulier je naar de volgende pagina stuurt voordat je de fout hebt gevonden.</p>
<p><strong>2. In een live omgeving en je volgt het progressive enhancement principe, zet het dan onderaan in de callback of aan einde van je code.</strong><br />
Als je de gebruiksvriendelijkheid van een pagina wilt verbeteren door het gebruik van Javascript dan heeft het click event van je link of het submit event van je formulier als het goed is de juiste server side fallbacks voor wanneer een browser geen Javascript ondersteund (of uit heeft staan). Het voordeel hier is echter niet voor wanneer Javascript uit staat maar voor wanneer je code een fout bevat als Javascript aan staat. Een voorbeeld:</p>
<pre class="prettyprint ">var data = {};
$('a').click(function(e) {
	e.preventDefault(); // stop het standaard gedrag

	// zorgt voor een fout want 'data.link' bestaat niet
	$('body').append(data.link);

	// De link op de a als server side fallback werkt nu niet meer en voor de gebruiker gebeurd er nu niets!
});</pre>
<p>Nu een voorbeeld wanneer we <code>preventDefault()</code> onderaan plaatsen:</p>
<pre class="prettyprint ">var data = {};
$('a').click(function(e) {
	// zorgt voor een fout want 'data.link' bestaat niet
	$('body').append(data.link);

	// Deze regel wordt nog bereikt
	// Maar de href op de link wordt als fallback gebruikt

	e.preventDefault(); // stop het standaard browser gedrag
});</pre>
<p>Hetzelfde geld voor het submit event voor formulieren, mits je een juiste fallback hebt gebruikt. Reken er nooit op dat je code altijd werkt. Het is veel beter om een goede fallback te hebben dan er vanuit gaan dat er nooit fouten zullen optreden!</p>
<p><strong>3.  In een live omgeving en alle functionaliteit maakt gebruik van Javascript<br />
</strong>Het hoeft niet persé op de eerste regel te staan maar het moet zo vroeg mogelijk in je code logica worden aangeroepen. Wanneer een functionaliteit ten eerste al is toegevoegd met Javascript dan zou een fallback niet eens echt nodig moeten zijn. In dit geval kun je het daarom het beste zo vroeg mogelijk aanroepen zodat je geen onnodige # karaters in je URL krijgt of je pagina op en neer springt. Zorg er natuurlijk wel altijd voor dat je gebruikers genoeg feedback krijgen wanneer er iets fout gaat!</p>
<h2>CONCLUSIE</h2>
<p>Denk er aan dat je <code>return false</code> alleen gebruikt als het echt nodig is en zorg er voor dat je het standaard gedrag van een browser op de juiste plek in je callback stopt. Zet je code zo flexibel mogelijk op en stop met het onnodig gebruiken van return false!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ikmac.nl/34/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2 manieren om meer uit je gmail adres te halen</title>
		<link>http://www.ikmac.nl/26</link>
		<comments>http://www.ikmac.nl/26#comments</comments>
		<pubDate>Tue, 05 Oct 2010 22:36:18 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[Gmail]]></category>

		<guid isPermaLink="false">http://www.ikmac.nl/?p=26</guid>
		<description><![CDATA[Gmail heeft 2 verborgen manieren om meer uit je e-mail adres te halen. Als je een gmail adres kiest kun je namelijk meer krijgen dan alleen jouwnaam@gmail.com. Hier zijn twee manieren om je gmail adres aan te passen en toch &#8230; <a href="http://www.ikmac.nl/26">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Gmail heeft 2 verborgen manieren om meer uit je e-mail adres te halen. Als je een gmail adres kiest kun je namelijk meer krijgen dan alleen jouwnaam@gmail.com. Hier zijn twee manieren om je gmail adres aan te passen en toch gewoon je e-mail te ontvangen:</p>
<ul>
<li>Plak een plus teken (&#8220;+&#8221;) gevolgd door een willekeurige combinatie van woorden en letters aan het einde van je email adres. Is jouw e-mail adres bijvoorbeeld &#8216;janpieter@gmail.com&#8217; dan kun je daar &#8216;janpieter+nieuwsbrieven@gmail.com&#8217; van maken. Deze alias komt gewoon in je normale inbox terecht.</li>
<li>Voeg op elke gewenste plek in je e-mail adres een punt (&#8220;.&#8221;) toe. Gmail herkent een punt namelijk niet als een karakter. Je kunt daarom zeggen dat je e-mail adres &#8216;jan.pieter@gmail.com&#8217; of &#8216;jan.pie.ter@gmail.com&#8217; is zonder je zorgen te maken dat je e-mail niet aankomt.</li>
</ul>
<p>Het is nu erg handig om nog gemakkelijker filters toe te passen op de verschillende varianten van je e-mail adres. Zo kun je automatisch je inkomende e-mail labelen of archiveren. Ook kun je nu gemakkelijker controleren of je e-mail adres is doorgegeven zonder dat je daar toestemming voor hebt gegeven.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ikmac.nl/26/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ping uit iTunes verwijderen</title>
		<link>http://www.ikmac.nl/18</link>
		<comments>http://www.ikmac.nl/18#comments</comments>
		<pubDate>Tue, 28 Sep 2010 21:45:52 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Ping]]></category>

		<guid isPermaLink="false">http://www.ikmac.nl/?p=18</guid>
		<description><![CDATA[Wil je Ping uit iTunes verwijderen dan heb je 2 opties. Optie 1 is via een klein programmaatje genaamd No-Ping. Open het programmatje en klik op hide Ping en iTunes zal herstarten zonder Ping. Met show Ping kun je Ping &#8230; <a href="http://www.ikmac.nl/18">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wil je Ping uit iTunes verwijderen dan heb je 2 opties.</p>
<p>Optie 1 is via een klein programmaatje genaamd <a href="http://macinsider.net/wp-content/plugins/download-monitor/download.php?id=5" target="_blank">No-Ping</a>. Open het programmatje en klik op <em>hide Ping</em> en iTunes zal herstarten zonder Ping. Met <em>show Ping</em> kun je Ping weer activeren. No-Ping verwijdert de Ping-knoppen en de Ping-zijbalk. Wil je ook de Ping optie in het navigatiemenu verwijderen dan zul je de gehele iTunes store moeten uitschakelen.</p>
<p><a href="http://www.ikmac.nl/wp-content/uploads/2010/09/noping.png"><img class="alignnone size-full wp-image-24" title="noping" src="http://www.ikmac.nl/wp-content/uploads/2010/09/noping.png" alt="" width="476" height="161" /></a></p>
<p>Een alternatief is <a href="http://code.google.com/p/blacktree-secrets/downloads/list" target="_blank">Secrets</a>. Hiermee kun je ook de Ping-knoppen en Ping-zijbalk verwijderen.</p>
<p>Optie 2 zijn de handmatige Terminal commando&#8217;s.</p>
<p>Om de zijbalk te verwijderen geef je het volgende commando en herstart je daarna iTunes:</p>
<pre>defaults write com.apple.iTunes disablePingSidebar 1</pre>
<p>Om de zijbalk weer te tonen geef je het volgende commando en herstart je daarna iTunes:</p>
<pre>defaults write com.apple.iTunes disablePingSidebar 0</pre>
<p>Om de Ping-knop achter de muzieknummers weg te halen geef je het volgende commando en herstart je daarna iTunes:</p>
<pre>defaults write com.apple.iTunes hide-ping-dropdown -bool TRUE</pre>
<p>Om de Ping-knop weer te tonen geef je het volgende commando en herstart je daarna iTunes:</p>
<pre>defaults write com.apple.iTunes hide-ping-dropdown -bool FALSE</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ikmac.nl/18/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writer voor iPad</title>
		<link>http://www.ikmac.nl/8</link>
		<comments>http://www.ikmac.nl/8#comments</comments>
		<pubDate>Sat, 25 Sep 2010 13:33:22 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">http://www.ikmac.nl/?p=8</guid>
		<description><![CDATA[Houd je van schrijven dan is deze app iets voor jou. Houd je niet van schrijven dan kan daar nu verandering in komen. Writer is een interessante tekstverwerker voor de iPad met puur schrijven als doel. De user-interface van de &#8230; <a href="http://www.ikmac.nl/8">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Houd je van schrijven dan is deze app iets voor jou. Houd je niet van schrijven dan kan daar nu verandering in komen.</p>
<p><a href="http://www.informationarchitects.jp/en/writer-for-ipad/" target="_blank">Writer</a> is een interessante tekstverwerker voor de iPad met puur schrijven als doel. De user-interface van de app heeft geen afleidingen waardoor je je volledig kunt concentreren op je tekst. Mocht je toch even het overzicht kwijt raken dan is er de &#8216;Focus Mode&#8217; waarbij alle andere functies zoals spellingscontrole worden uitgeschakeld en alleen de huidige drie regels worden uitgelicht.</p>
<p><a href="http://www.ikmac.nl/wp-content/uploads/2010/09/ia-writer.jpg"><img class="alignnone size-full wp-image-11" title="Writer for iPad" src="http://www.ikmac.nl/wp-content/uploads/2010/09/ia-writer.jpg" alt="Writer for iPad" width="480" height="360" /></a></p>
<p><a href="http://clk.tradedoubler.com/click?p=24371&amp;a=1274914&amp;url=http://itunes.apple.com/nl/app/ia-writer/id392502056?mt=8" target="_blank">Download Writer in de Apple Store</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ikmac.nl/8/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

