﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
  <channel>
    <title>Communited</title>
    <description>eyeopener in e-business</description>
    <link>http://blog.communited.nl/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 2.0.0.36</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://blog.communited.nl/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Communited</dc:creator>
    <dc:title>Communited</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <item>
      <title>Realtime berichtensysteem in Timeblockr met MSMQ en SignalR</title>
      <description>&lt;p&gt;Deze blogpost geeft inzicht in de techniek die gebruikt is binnen Timeblockr voor het bieden van een realtime berichtensysteem die het mogelijk maakt om meerdere webclients direct aan te sturen vanaf de server om deze synchroon te houden.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Huidige situatie&lt;/strong&gt;&lt;br /&gt;In de vorige release van Timeblockr zit een pagina voor de receptie, met daarop alle afspraken van die dag. Hierop kunnen medewerkers zien welke afspraken er zijn, op welk tijdstip bezoekers worden verwacht en wat de status is per afspraak. Het grote nadeel van deze pagina is, dat de gebruiker deze steeds zelf moet verversen om wijzigingen te kunnen zien.&lt;br /&gt;Voor de nieuwste versie van Timeblockr zijn zelfs extra pagina's voor de wachtruimte en optioneel voor de balie toegevoegd, met ieder een eigen gefilterde weergave van de afspraken. Het is ondoenlijk dat medewerkers deze steeds zelf moeten verversen om wijzigingen te kunnen zien.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;De gewenste situatie&lt;/strong&gt;&lt;br /&gt;De ideale oplossing is dat een gebruiker de gewenste pagina eenmalig opvraagt, waarbij alle wijzigingen automatisch op het scherm zichtbaar zijn. Niet alleen wanneer er een nieuwe afspraak wordt gemaakt of een bestaande afspraak wordt gewijzigd, maar ook alle tussentijdse statuswijzigingen van het moment dat de klant zich aanmeldt bij de balie tot aan het uiteindelijk afronden van de afspraak. &lt;br /&gt;Daarbij hebben we het niet alleen over wijzigingen door die betreffende gebruiker, maar vooral ook de wijzigingen die plaatsvinden door acties van andere collega's via hun eigen PC. Tenslotte moeten ook statistische gegevens kunnen worden weergegeven, zoals realtime wacht- en behandeltijden.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;De gebruikte oplossing&lt;/strong&gt;&lt;br /&gt;Om de interactie en gebruikerservaring naar een dergelijk niveau te tillen, moest een andere oplossing bedacht worden. Er is uiteindelijk gekozen voor een combinatie van MSMQ (Microsoft Message Queuing), SignalR in een self-hosted Windows service en javascript.&lt;/p&gt;
&lt;p&gt;MSMQ is een relatief oud concept en bestaat al sinds Windows NT 4 en Windows 95. Het lijkt vrij onbekend, maar is bijzonder krachtig voor het ondersteunen van communicatie tussen verschillende applicaties. Het idee is dat applicatie A een object op de queue kan zetten. Applicatie B "luistert" vervolgens naar deze queue en zodra er iets op wordt geplaatst krijgt deze applicatie (samen met het geplaatste object) hiervan een seintje, waarna het object ook direct weer vanuit de queue wordt doorgeplaatst. Deze communicatie verloopt vrijwel naadloos en realtime, en is uiterst schaalbaar.&lt;/p&gt;
&lt;p&gt;SignalR is een vrij recente library die continue server-client connecties mogelijk maakt. Normaal gesproken vraagt een client (een browser) een webpagina op, waarna de webserver deze doorgeeft. Daarna is de verbinding gesloten en heeft de server geen contact meer met de client. Daarmee kan hij deze dus ook niet zelf benaderen. Met SignalR is het dus wel mogelijk om als het ware een verbinding open te houden, zodat de server exact weet welke clients er nu verbonden zijn.&lt;br /&gt;Daarbij kan de server nu ook direct javascript functies uitvoeren op iedere gewenste client. &lt;br /&gt;Dit alles wordt uitgevoerd met behulp van een dynamische javascript proxy, die op de server wordt gegenereerd en gehost. Deze proxy wordt vervolgens op de clients toegevoegd als een normale javascript &amp;lsquo;include&amp;rsquo;. Het opvragen van de url van de proxy geeft dan ook netjes een javascript bestand.&lt;br /&gt;Hierdoor is het dus mogelijk om berichten naar clients te "pushen" zonder dat de medewerkers zelf iets hoeven te doen. Met een extra stukje javascript kunnen deze berichten worden opgepakt en bijvoorbeeld worden getoond op het scherm.&lt;br /&gt;Anderzijds is het ook weer mogelijk om vanaf een client met javascript via de SignalR proxy functies op de server uit te voeren.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;De werking&lt;/strong&gt;&lt;br /&gt;Op de server van Timeblockr staat een aantal onderdelen:&lt;br /&gt;- Website: IIS host de website voor de bezoeker en de beheeromgeving&lt;br /&gt;- WCF: IIS host ook de WCF webservice voor de koppeling naar de database&lt;br /&gt;- MessageServer: dit is de Windows service voor het hosten van de SignalR proxy&lt;br /&gt;- MSMQ: hierin is een queue aangemaakt voor het bijhouden van alle statuswijzigingen van iedere afspraak&lt;/p&gt;
&lt;p&gt;Timeblockr heeft een publieke website waar bezoekers afspraken kunnen maken. Daarnaast is er ook een website voor de beheeromgeving. Hierin staan de pagina's voor receptie, wachtruimte en de balie. Via de oplossing staan deze nu allemaal realtime met elkaar in verbinding.&lt;/p&gt;
&lt;p&gt;Voorbeeld in de praktijk:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Zodra een bezoeker een afspraak maakt op de website, zal dit via WCF aan de database worden toegevoegd. Daarbij wordt het ID van de afspraak direct op de MSMQ queue gezet. &lt;/li&gt;
&lt;li&gt;Vervolgens luistert de MessageServer naar deze queue en vangt het ID van de gemaakte afspraak op.&lt;/li&gt;
&lt;li&gt;Dan wordt de juiste afspraak opgehaald en via SignalR verstuurd naar alle relevante clients.&lt;/li&gt;
&lt;li&gt;Daar bepaalt een stuk javascript logica of de afspraak wel of niet wordt toegevoegd, aangepast of verwijderd.&lt;/li&gt;
&lt;li&gt;Alle medewerkers voor wie de afspraak relevant is, krijgen deze dan automatisch op het scherm te zien.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ook wanneer een medewerker een afspraak incheckt, zal deze actie via SignalR direct naar de MessageServer gaan.&lt;br /&gt;Daar wordt de status van de afspraak bijgewerkt en opgeslagen in de database. Net als bij iedere andere wijziging zal ook nu het ID van deze afspraak op de queue worden gezet. De MessageServer pakt deze vervolgens weer op en zorgt ervoor dat alle clients weer op de hoogte worden gebracht van deze wijziging, zodat alle medewerkers voor wie de afspraak relevant is de wijziging automatisch in beeld krijgen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Extra aandachtspunten&lt;/strong&gt;&lt;br /&gt;Uiteraard zijn voor deze techniek wel voorzieningen getroffen voor beveiliging, zodat ongeautoriseerde verzoeken geweigerd worden. Daarbij is ook gebruik gemaakt van SignalR-Groups, zodat clients alleen die berichten krijgen die ook daadwerkelijk voor hen bedoeld zijn.&lt;/p&gt;
&lt;p&gt;Het zou wellicht kunnen gebeuren dat de MessageServer offline gaat. Dan worden alle clients hiervan wel direct op de hoogte gebracht, met de melding dat het scherm niet langer automatisch bijgewerkt wordt. Daarnaast is er op dat moment een fallback scenario beschikbaar zodat altijd doorgewerkt kan worden in een "statische mode". De medewerkers moeten dan wel weer zelf de pagina's verversen.&lt;/p&gt;</description>
      <link>http://blog.communited.nl/post/2012/10/08/Realtime-berichtensysteem-in-Timeblockr-met-MSMQ-en-SignalR.aspx</link>
      <comments>http://blog.communited.nl/post/2012/10/08/Realtime-berichtensysteem-in-Timeblockr-met-MSMQ-en-SignalR.aspx#comment</comments>
      <guid>http://blog.communited.nl/post.aspx?id=ee146601-59c1-473b-a735-bf7b6477dae0</guid>
      <pubDate>Mon, 08 Oct 2012 11:06:00 +0200</pubDate>
      <category>frontend</category>
      <category>jquery</category>
      <category>Timeblockr</category>
      <dc:publisher>PeterW</dc:publisher>
      <pingback:server>http://blog.communited.nl/pingback.axd</pingback:server>
      <pingback:target>http://blog.communited.nl/post.aspx?id=ee146601-59c1-473b-a735-bf7b6477dae0</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.communited.nl/trackback.axd?id=ee146601-59c1-473b-a735-bf7b6477dae0</trackback:ping>
      <wfw:comment>http://blog.communited.nl/post/2012/10/08/Realtime-berichtensysteem-in-Timeblockr-met-MSMQ-en-SignalR.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.communited.nl/syndication.axd?post=ee146601-59c1-473b-a735-bf7b6477dae0</wfw:commentRss>
    </item>
    <item>
      <title>PhoneGap vs. Native Apps</title>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h1 style="text-align: center;"&gt;PhoneGap vs. SDK&amp;rsquo;s&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img style="border-style: initial; border-color: initial;" src="http://blog.communited.nl/image.axd?picture=2011%2f11%2fPhoneGapLogo.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 style="margin-left: 141.6pt;"&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;VS&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt; &lt;/span&gt;&lt;img style="border-style: initial; border-color: initial;" src="http://blog.communited.nl/image.axd?picture=2011%2f11%2fNativeAppsLogo.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Waarom zou je nadenken&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Steeds meer mensen bezitten een Smartphone. Er worden ook steeds meer applicaties gemaakt voor deze Smartphones. In de tussentijd zijn echter veel verschillen platformen ontstaan. Het is dan ook voor ontwikkelaars moeilijk geworden een keuze te maken. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Doordat deze platformen zo erg verschillen van elkaar, is het moeilijk om te veranderen van ontwikkel methode. Het is dus belangrijk dat er een verstandige keuze wordt gemaakt. Middels dit artikel proberen we de keuze voor de ontwikkelaar makkelijker te maken. Er zullen verschillen naar voren komen die belangrijk zijn om over na te denken. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 11.25pt; line-height: 125%; background: white;"&gt;&lt;span lang="NL"&gt;Voor de een is het bijvoorbeeld belangrijk dat de applicatie er goed uitziet en dat er gebruik kan worden gemaakt van alle functies van de telefoon. Een ander vindt het weer belangrijk dat iedereen snel wordt bereikt en dat het niet veel tijd kost de applicatie te bouwen.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 style="text-align: center;"&gt;PhoneGap&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Wat is PhoneGap?&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;PhoneGap is een open source framework gemaakt door Nitobi, voor het bouwen van een cross-platform mobiele applicaties met HTML, CSS en Javascript. Het is in principe een pakket dat wordt gemaakt om cross-platform applicaties van dezelfde source code te cre&amp;euml;ren. De applicaties hebben dan ook gewoon een pictogram en werken op dezelfde manier als een applicatie gemaakt met een SDK. De specifieke API, zoals &amp;lsquo;location&amp;rsquo;, &amp;lsquo;contact&amp;rsquo;, e.d. wordt afgeschermd door een standaard API van PhoneGap. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 11.25pt; line-height: 125%; background: white;"&gt;&lt;span lang="NL"&gt;PhoneGap is een oplossing om mobiele applicaties voor verschillende apparaten te bouwen. De applicatie kan ook gewoon verspreid worden via applicatie winkels, zoals de Android Market van Google en de Appstore van Apple.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 11.25pt; line-height: 125%; background: white;"&gt;&lt;span lang="NL"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Ondersteunde platforms&lt;/h2&gt;
&lt;p style="margin-left: 24.0pt;"&gt;&amp;middot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Android&lt;/p&gt;
&lt;p style="margin-left: 24.0pt;"&gt;&amp;middot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iPhone&lt;/p&gt;
&lt;p style="margin-left: 24.0pt;"&gt;&amp;middot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blackberry&lt;/p&gt;
&lt;p style="margin-left: 24.0pt;"&gt;&amp;middot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Symbian&lt;/p&gt;
&lt;p style="margin-left: 24.0pt;"&gt;&amp;middot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Palm&lt;/p&gt;
&lt;p style="margin-left: 24.0pt;"&gt;&amp;middot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Windows Phone (B&amp;egrave;ta)&lt;/p&gt;
&lt;p&gt;De Windows Phone 7 versie is nu nog in b&amp;egrave;ta, maar zal ook op kort termijn beschikbaar komen.&lt;/p&gt;
&lt;table border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;Iphone / Iphone3g&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;Iphone 3GS&lt;br /&gt; and newer&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;Android&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;OS 4.6-4.7&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;OS 5.x&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;OS 6.0+&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;br /&gt; &lt;strong&gt;WebOS&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;br /&gt; &lt;strong&gt;Symbian&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;br /&gt; &lt;strong&gt;Bada&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;ACCELEROMETER&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;CAMERA&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;COMPASS&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;CONTACTS&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;FILE&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;GEOLOCATION&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;MEDIA&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;NETWORK&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;NOTIFICATION (ALERT)&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;NOTIFICATION (SOUND)&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;NOTIFICATION (VIBRATION)&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width: 126px;"&gt;
&lt;p&gt;&lt;strong&gt;STORAGE&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 73px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 59px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 65px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 38px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 35px;"&gt;
&lt;p&gt;&lt;strong&gt;!&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 41px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 61px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 70px;"&gt;
&lt;p&gt;&lt;strong&gt;X&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width: 47px;"&gt;
&lt;p&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 11.25pt; line-height: 125%; background: white;"&gt;&lt;span style="font-size: 8.5pt; line-height: 125%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family: Calibri; color: #474747; mso-ansi-language: NL;" lang="NL"&gt;&amp;nbsp;X = ondersteund &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - = niet ondersteund&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ! = onbekend&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 11.25pt; line-height: 125%; background: white;"&gt;&lt;span style="font-size: 8.5pt; line-height: 125%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family: Calibri; color: #474747; mso-ansi-language: NL;" lang="NL"&gt;Bron: &lt;/span&gt;&lt;span style="font-size: 8.5pt; line-height: 125%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family: Calibri; color: #474747; mso-ansi-language: EN;" lang="EN"&gt;&lt;span style="color: #3399cc; mso-ansi-language: NL; text-decoration: none; text-underline: none;" lang="NL"&gt;&lt;a href="http://www.phonegap.com" target="_blank"&gt;http://www.phonegap.com&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8.5pt; line-height: 125%; font-family: &amp;quot;Verdana&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-font-family: Calibri; color: #474747; mso-ansi-language: NL;" lang="NL"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Voordat er begonnen kan worden met PhoneGap moet er een aantal dingen ge&amp;iuml;nstalleerd zijn. Bijvoorbeeld IOS heeft het volgende nodig:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span lang="NL"&gt;Benodigdheden&lt;/span&gt;&lt;span lang="NL"&gt;&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Intel gebaseerde computer met daarop MAC OS X.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&amp;middot; Een Apple iOS apparaat (iPhone, iPad, iPod Touch).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; IOS ontwikkelaars certificaat.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Installatie SDK + PhoneGap&lt;/span&gt;&lt;span lang="NL"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Download en installeer Xcode van de Apple Developer Portal.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Download de laatste versie van PhoneGap en pak alle bestanden uit.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Cre&amp;euml;er een nieuw project&lt;/span&gt;&lt;span lang="NL"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Start Xcode, daarna onder het File menu selecteer New en vervolgens een New Project&amp;hellip;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; In de lijst is er een nieuwe optie bijgekomen namelijk PhoneGap-based Application.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Het is dus gemakkelijk om PhoneGap te installeren. Ook staat er op de website van PhoneGap duidelijk aangegeven hoe alles ge&amp;iuml;nstalleerd moet worden.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span lang="NL"&gt;Voordelen van het gebruik van PhoneGap&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Er kan gebruik gemaakt worden van &amp;eacute;&amp;eacute;n en dezelfde code voor cross-platform applicaties.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Er kan ook gebruik worden gemaakt van de hardware op de telefoon zoals geolocatie, tril-functie, acceleratiemeter, contacten en het geluid.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Er worden nieuwe modules ontwikkeld door de open source community waarmee tijd en geld wordt bespaard.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span lang="NL"&gt;Nadelen van het gebruik van PhoneGap&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Doordat PhoneGap is ontworpen om meerdere platforms te ondersteunen, zal het niet over de nieuwe functies beschikken zodra deze beschikbaar zijn in de SDK.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Sommige belangrijke functies zullen nog niet beschikbaar zijn met PhoneGap.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Net als elk ander open source platform leunt PhoneGap op de gemeenschap om bij te dragen aan verschillende modules. Hoewel de modules prima zullen werken als zij worden uitgebracht, kunnen er nog steeds problemen ontstaan met de ondersteuning en onderhoud van deze modules. De modules kunnen ook niet altijd voldoen aan de wensen van iedereen.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Het uiterlijk zal op alle telefoons hetzelfde zijn, waardoor het minder op een echte applicatie lijkt.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1 style="text-align: center;"&gt;&lt;span lang="NL"&gt;Native Apps&lt;/span&gt;&lt;/h1&gt;
&lt;h2&gt;&lt;span lang="NL"&gt;Wat zijn Native Apps?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Een Native app wordt ontwikkeld met een SDK ( dat letterlijk Software Development Kit betekent ) en dit is een set van ontwikkeltools die kunnen worden gebruikt om software te ontwikkelen. Voorbeelden van software die ontwikkeld is:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Applicaties/mobiele applicaties&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Frameworks&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Computer spellen&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Besturingssystemen&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Mobiele platformen&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Met zo&amp;rsquo;n digitale gereedschapskist kunnen ontwikkelaars aan de slag om applicaties voor bovengenoemde platforms te bedenken, ontwerpen en ontwikkelen. Het begrip SDK is een vrij groot begrip. Zo kan een SDK bestaan uit een Application Programming Interface (API). Deze heeft weer een interface met een bepaalde programmeertaal. Er worden vaak verschillende tools meegeleverd aan een SDK, namelijk:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&amp;middot; Debugger&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&amp;middot; IDE (Integrated Development Environment )&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Voorbeelden&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Documentatie&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Communicatie tussen de hardware&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; UI toolkit (gebruikersomgeving of gebruikersinterface)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;SDK&amp;rsquo;s worden vaak beschikbaar gesteld door leveranciers van een bepaald product. Zo heb je IOS SDK van Apple en Android SDK van Google. Deze SDK&amp;rsquo;s zijn meestal gratis te downloaden. Dat heeft als reden dat deze leveranciers hun eigen producten willen promoten. Als je bijvoorbeeld een applicatie voor de iPhone of iPad wilt gaan ontwikkelen, kun je bij Apple de iOS SDK downloaden. In de SDK zit een set aan tools:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Xcode IDE is een softwareapplicatie die bestaat uit een editor voor de code, een compiler (letterlijk samensteller of opbouwer), een debugger (om bugs te achterhalen) en een set aan automatisering tools. Vroeger was het zo dat het vaak voor kwam dat deze componenten los werden aangeboden, maar tegenwoordig zie je steeds vaker veelzijdige IDE&amp;rsquo;s opduiken. Andere populaire IDE&amp;rsquo;s zijn bijvoorbeeld voor Android Netbeans en Eclipse. Voor Windows Phone is er Visual Studio. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Met de iOS Simulator kunnen in Xcode gebouwde applicaties voor de iPhone of iPad draaien op je computer. Je kunt hierdoor makkelijk de gebruikersinterface uitvoerig testen.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Door de Instruments applicatie krijg je meer inzicht in de processen die er binnen Xcode ontworpen zijn. Wat gebeurt er precies als een gebruiker iets onverwachts doet? Kan de applicatie meerdere ingevoerde data of commando&amp;rsquo;s tegelijkertijd aan? Gebruikt de applicatie niet te veel geheugen?&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="margin-bottom: 11.25pt; line-height: 125%; background: white;"&gt;&lt;span lang="NL"&gt;&amp;middot; De juist userinterface (UI) bouwen voor de applicatie wordt eenvoudiger met de Interface Builder&lt;/span&gt;&lt;span lang="NL"&gt;. Hiermee ontwerp je de interface van een applicatie met een drag &amp;amp; drop systeem.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&lt;img style="border-style: initial; border-color: initial;" src="http://blog.communited.nl/image.axd?picture=2011%2f11%2fSDKs.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p style="margin-left: 35.4pt;"&gt;&lt;span style="white-space: pre;"&gt; &lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;strong&gt;Link naar rechts: Android, Windows Phone, Blackberry en IOS achteraan.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Voordat er ontwikkeld wordt moet er wel gelet worden op de licenties. Het gebeurt vaak dat de SDK gratis te downloaden is, maar dat het product ook gratis aangeboden moet worden omdat het een Open Source licentie heeft. Zodra er een commerci&amp;euml;le tint aan zit, zal er diep in de buidel getast moeten worden om nog steeds gebruik te maken van de SDK.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="text-align: left;"&gt;&lt;span lang="NL"&gt;Voorbeeld SDK&amp;rsquo;s&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; IOS SDK (Apple&amp;rsquo;s Iphone &amp;amp; Ipad)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&amp;middot; Android SDK (Google &amp;rsquo;s Android)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&amp;middot; Blackberry SDK (RIM&amp;rsquo;s Blackberry)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&amp;middot; Windows Phone (Microsoft&amp;rsquo;s Windows Phone)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; WebOS SDK (HP&amp;rsquo;s WebOS)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&amp;middot; Symbian SDK (Nokia&amp;rsquo;s Symbian)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&amp;middot; Bada SDK (Samsung&amp;rsquo;s Bada)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="EN"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span lang="NL"&gt;Voordelen van het gebruik van SDK&amp;rsquo;s&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; SDK&amp;rsquo;s zijn over het algemeen sneller. Er wordt meer gebruik gemaakt van alle mogelijkheden die op de telefoon beschikbaar zijn.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; De gebruiker voelt zich comfortabeler met een applicatie die speciaal is ontwikkeld voor de telefoon. Met name doordat er gebruik wordt gemaakt van de standaard componenten op die telefoon.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; De ontwikkelde applicatie zal beschikbaar zijn op alle versies van de telefoon.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; De beveiliging van de applicatie wordt beter gewaarborgd omdat het makkelijker is om data gecodeerd te versturen. Dit is tegenwoordig belangrijk omdat veel mensen op hun privacy gesteld zijn.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Het is makkelijker voor Game-developers om een spel te ontwikkelen. Er is meer mogelijk met de SDK.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span lang="NL"&gt;Nadelen van het gebruik van SDK&amp;rsquo;s&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Het is platform afhankelijk. Het zal niet beschikbaar zijn voor alle platformen zoals Android.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Het is moeilijker te ontwikkelen omdat er kennis vereist is van een bepaalde programmeer taal. De taal is meestal moeilijker aan te leren dan bijvoorbeeld HTML.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&amp;middot; Om te programmeren voor IOS moet je in het bezit zijn van een Apple computer.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span lang="NL"&gt;Conclusie&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Naar mijn mening is PhoneGap een perfecte oplossing voor het ontwikkelen van applicaties voor verschillende platformen. Het is vooral makkelijk als de applicatie een simpele lay-out moet hebben en geen uitgebreide functionaliteiten, zoals bijvoorbeeld een nieuws applicatie.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Als er interesse is om gebruik te maken van een specifiek kenmerk dat niet beschikbaar is voor alle platformen, dan is PhoneGap niet geschikt voor de ontwikkeling van de applicatie. De beveiliging van PhoneGap applicaties is bovendien nog een grotere zorg. Er kan niets gecodeerd verstuurd worden. Ook als er de wens is om gebruik te maken van de laatste functionaliteiten van de platformen, is PhoneGap geen goede oplossing. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Een ander punt om rekening mee te houden, is de applicatie op meerdere platformen uit te brengen. Er moet dan rekening gehouden worden met wat de markt vraagt. Als er bijvoorbeeld voor Europa wordt gekozen, dan kan er het beste gekozen worden voor IOS, Android of Symbian. Echter in de VS is de beste keuze weer IOS, Android of Windows Phone. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Als de applicatie in het begin op twee verschillende platformen zou worden uitgebracht, dan zou er genoeg ge&amp;euml;xperimenteerd kunnen worden met de applicatie. De gebruikers zouden dan hun feedback en/of verbeterpunten kunnen geven. Die punten kunnen dan weer aangepast worden voordat de applicatie(s) op alle platformen wordt uitgebracht. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;Als de keuze toch niet valt op PhoneGap, omdat het niet aan je wensen voldoet, dan zou ik toch gaan voor het ontwikkelen met de SDK van het platform. Het ziet er toch allemaal iets beter uit. Er zal alleen meer tijd in het ontwikkelen van applicatie gaan zitten en je zal je meer moeten verdiepen in de documentatie van de SDK. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span lang="NL"&gt;De beveiliging heb je ook zelf in de hand. Als er gekeken wordt naar de installatie van beide, dan valt op dat de SDK van het betreffende platform ook ge&amp;iuml;nstalleerd moet worden als er gebruik wordt gemaakt van PhoneGap. Het installeren van PhoneGap zelf kost daarentegen geen extra tijd. Als de applicatie op de verschillende platformen uitgebracht moet worden zal er kennis van verschillende programmeer talen opgedaan moeten worden. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: 125%; background: white;"&gt;&lt;span lang="NL"&gt;Al met al moet er toch goed nagedacht worden over de keuze. Er moeten verschillende opties overwogen worden. Het eenvoudig ontwikkelen in PhoneGap met HTML, CSS en Javascript of het ontwikkelen met de SDK en het maximale halen uit je applicatie. Het hangt er dus in grote mate van af wat voor applicatie het gaat worden, en wat je uiteindelijke doel hiermee is.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: 125%; background: white;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: 125%; background: white;"&gt;Wordt vervolgd.......&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: 125%; background: white;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="line-height: 125%; background: white;"&gt;&lt;strong&gt;&lt;span lang="NL"&gt;Robin Lutteke&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;</description>
      <link>http://blog.communited.nl/post/2011/11/11/PhoneGap-vs-Native-Apps.aspx</link>
      <comments>http://blog.communited.nl/post/2011/11/11/PhoneGap-vs-Native-Apps.aspx#comment</comments>
      <guid>http://blog.communited.nl/post.aspx?id=3fc6eacb-bf1a-4fad-b069-dbac3cb969cc</guid>
      <pubDate>Fri, 11 Nov 2011 12:05:00 +0200</pubDate>
      <category>Mobile</category>
      <dc:publisher>Robin</dc:publisher>
      <pingback:server>http://blog.communited.nl/pingback.axd</pingback:server>
      <pingback:target>http://blog.communited.nl/post.aspx?id=3fc6eacb-bf1a-4fad-b069-dbac3cb969cc</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.communited.nl/trackback.axd?id=3fc6eacb-bf1a-4fad-b069-dbac3cb969cc</trackback:ping>
      <wfw:comment>http://blog.communited.nl/post/2011/11/11/PhoneGap-vs-Native-Apps.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.communited.nl/syndication.axd?post=3fc6eacb-bf1a-4fad-b069-dbac3cb969cc</wfw:commentRss>
    </item>
    <item>
      <title>Over Remember the Milk, Toggl, Evernote en Meer</title>
      <description>&lt;p style="text-align: left;"&gt;&lt;img style="border-style: initial; border-color: initial; float: left; margin: 10px;" src="http://blog.communited.nl/image.axd?picture=2011%2f11%2fcloudtools_logo.jpg" alt="" /&gt;Onlangs mocht ik aan de website&amp;nbsp;&lt;a href="http://www.cloudtools.nl/"&gt;CloudTools&lt;/a&gt; uitleggen hoe ik online diensten en tools in de praktijk gebruik. Een verhaal over onder andere &lt;a href="http://www.rmilk.com"&gt;Remember the Milk&lt;/a&gt;, &lt;a href="https://www.toggl.com/"&gt;Toggl&lt;/a&gt; en &lt;a href="http://www.evernote.com"&gt;Evernote&lt;/a&gt;, maar ook over de inzet van &lt;a href="http://www.yammer.com"&gt;Yammer&lt;/a&gt; in een intranet bij &amp;eacute;&amp;eacute;n van onze klanten.&lt;/p&gt;
&lt;p&gt;Het artikel is&amp;nbsp;&lt;a href="http://www.cloudtools.nl/saas-samenwerken/goede-toegang-via-mobiel-belangrijk-bij-selectie-online-software-tool/"&gt;hier te lezen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;CloudTools is het platform voor online software en SaaS. Hier lees je reviews, tips en nieuws over cloud computing. Een erg goede resource op dit gebied!&lt;/p&gt;</description>
      <link>http://blog.communited.nl/post/2011/11/10/Over-Remember-the-Milk-Toggl-Evernote-en-Meer.aspx</link>
      <comments>http://blog.communited.nl/post/2011/11/10/Over-Remember-the-Milk-Toggl-Evernote-en-Meer.aspx#comment</comments>
      <guid>http://blog.communited.nl/post.aspx?id=05a021e0-547d-437e-a0e2-3cad82e572e1</guid>
      <pubDate>Thu, 10 Nov 2011 20:21:00 +0200</pubDate>
      <category>overig</category>
      <dc:publisher>Camiel</dc:publisher>
      <pingback:server>http://blog.communited.nl/pingback.axd</pingback:server>
      <pingback:target>http://blog.communited.nl/post.aspx?id=05a021e0-547d-437e-a0e2-3cad82e572e1</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.communited.nl/trackback.axd?id=05a021e0-547d-437e-a0e2-3cad82e572e1</trackback:ping>
      <wfw:comment>http://blog.communited.nl/post/2011/11/10/Over-Remember-the-Milk-Toggl-Evernote-en-Meer.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.communited.nl/syndication.axd?post=05a021e0-547d-437e-a0e2-3cad82e572e1</wfw:commentRss>
    </item>
    <item>
      <title>Fiddler Gebruiken In Smartsite iXperion TestSuite</title>
      <description>&lt;p&gt;&lt;a href="http://blog.communited.nl/image.axd?picture=2011%2f4%2fTestSuite.png"&gt;&lt;img style="float: left; margin: 10px;" src="http://blog.communited.nl/image.axd?picture=2011%2f4%2fTestSuite.png" alt="Screenshot van de Smartsite Testsuite" width="400" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ontwikkelaars die ontwikkelen binnen &lt;a href="http://www.smartsite.nl/"&gt;Smartsite iXperion&lt;/a&gt; hebben de mogelijkheid gebruik te maken van de Smartsite TestSuite. Deze windows applicatie maakt het mogelijk de site waaraan ontwikkeld wordt lokaal te draaien, en biedt een groot aantal functionaliteiten die het leven van een Smartsite ontwikkelaar vereenvoudigen. De TestSuite gebruikt in de applicatie een browsercontrol om de ontwikkelde op een lokale webserver zaken te bekijken.&lt;/p&gt;
&lt;p&gt;Soms wil je op low-level niveau kijken wat het http verkeer is tussen browser en webserver, en DE tool om dit te doen is &lt;a href="http://www.fiddler2.com"&gt;Fiddler&lt;/a&gt;. Deze tool fungeert als proxy tussen de browser en webserver, en maakt het verkeer inzichtelijk.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Echter is er &amp;eacute;&amp;eacute;n probleem: de TestSuite is een .NET applicatie, en .NET omzeilt altijd de proxy wanneer localhost wordt gebruikt. En de server die de TestSuite start draait op localhost.&lt;/p&gt;
&lt;p&gt;Een veel aangedragen oplossing voor dit probleem is het aanroepen van de website op http://127.0.0.1.:&amp;lt;poortnummer&amp;gt; (let op de extra punt na 1). De TestSuite server accepteert dit echter niet.&lt;/p&gt;
&lt;p&gt;Gelukkig is er een andere oplossing. Binnen Fiddler is het mogelijk om rules aan te maken in de vorm van een .js bestand. Dit bestand is te vinden in Fiddler onder het menuitem "Rules -&amp;gt; Customize rules". In deze file is onder andere de function&amp;nbsp;&lt;em&gt;OnBeforeRequest(oSession: Session)&lt;/em&gt;&amp;nbsp;te vinden, waarin code staat die bij elk request die voorbij Fiddler komt wordt uitgevoerd.&lt;/p&gt;
&lt;p&gt;Als binnen de OnBeforeRequest de volgende code wordt toegevoegd, is de site binnen de TestSuite ook op http://EmptySix te bereiken:&lt;/p&gt;
&lt;pre class="brush: js;"&gt;if (oSession.HostnameIs("EMPTYSIX")) { oSession.host = "localhost:7812"; }&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Fiddler vertaalt de host EMPTYSIX in localhost:7812, welk geaccepteerd wordt door de TestSuite webserver. Voor de (TestSuite) webbrowser lijkt het echter een externe host, en wordt de call dus over de proxy gestuurd.&lt;/p&gt;</description>
      <link>http://blog.communited.nl/post/2011/04/06/Fiddler-Gebruiken-In-Smartsite-iXperion-TestSuite.aspx</link>
      <comments>http://blog.communited.nl/post/2011/04/06/Fiddler-Gebruiken-In-Smartsite-iXperion-TestSuite.aspx#comment</comments>
      <guid>http://blog.communited.nl/post.aspx?id=6efa6bfb-2083-43c5-8006-92c478c97db2</guid>
      <pubDate>Wed, 06 Apr 2011 12:28:00 +0200</pubDate>
      <category>smartsite</category>
      <dc:publisher>Camiel</dc:publisher>
      <pingback:server>http://blog.communited.nl/pingback.axd</pingback:server>
      <pingback:target>http://blog.communited.nl/post.aspx?id=6efa6bfb-2083-43c5-8006-92c478c97db2</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.communited.nl/trackback.axd?id=6efa6bfb-2083-43c5-8006-92c478c97db2</trackback:ping>
      <wfw:comment>http://blog.communited.nl/post/2011/04/06/Fiddler-Gebruiken-In-Smartsite-iXperion-TestSuite.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.communited.nl/syndication.axd?post=6efa6bfb-2083-43c5-8006-92c478c97db2</wfw:commentRss>
    </item>
    <item>
      <title>Toegankelijk Websites Bouwen: Veelgemaakte Fouten</title>
      <description>&lt;p&gt;Toegankelijk bouwen hoeft niet altijd lastig te zijn; gewoon wat goede vuistregels in de gaten houden. De volgende presentatie is gemaakt voor een interne Yahoo! conferentie voor webdevelopers, en somt nog even een aantal veelgemaakte fouten op.&lt;/p&gt;
&lt;div id="__ss_7416794" style="width: 425px;"&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a title="Common Accessibility Mistakes" href="http://www.slideshare.net/7mary4/common-accessibility-mistakes"&gt;Common Accessibility Mistakes&lt;/a&gt;&lt;/strong&gt; 
&lt;object id="__sse7416794" width="425" height="355"&gt;
&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=common-mistakes-110328095644-phpapp01&amp;amp;stripped_title=common-accessibility-mistakes&amp;amp;userName=7mary4" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="allowScriptAccess" value="always" /&gt; &lt;embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=common-mistakes-110328095644-phpapp01&amp;amp;stripped_title=common-accessibility-mistakes&amp;amp;userName=7mary4" allowfullscreen="true" allowscriptaccess="always" name="__sse7416794"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/7mary4"&gt;Ted Drake&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;(Via het &lt;a href="http://yaccessibilityblog.com/library/common-accessibility-mistakes.html"&gt;Yahoo Accessibility Blog&lt;/a&gt;)&lt;/p&gt;
&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;
&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;
&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;
&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;amp;c2=7400849&amp;amp;c3=1&amp;amp;c4=&amp;amp;c5=&amp;amp;c6="&gt;&lt;/script&gt;</description>
      <link>http://blog.communited.nl/post/2011/03/30/Toegankelijk-Websites-Bouwen-Veelgemaakte-Fouten.aspx</link>
      <comments>http://blog.communited.nl/post/2011/03/30/Toegankelijk-Websites-Bouwen-Veelgemaakte-Fouten.aspx#comment</comments>
      <guid>http://blog.communited.nl/post.aspx?id=767f5e8e-66f3-4096-b129-b878ade218b9</guid>
      <pubDate>Wed, 30 Mar 2011 11:09:00 +0200</pubDate>
      <category>frontend</category>
      <dc:publisher>Camiel</dc:publisher>
      <pingback:server>http://blog.communited.nl/pingback.axd</pingback:server>
      <pingback:target>http://blog.communited.nl/post.aspx?id=767f5e8e-66f3-4096-b129-b878ade218b9</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.communited.nl/trackback.axd?id=767f5e8e-66f3-4096-b129-b878ade218b9</trackback:ping>
      <wfw:comment>http://blog.communited.nl/post/2011/03/30/Toegankelijk-Websites-Bouwen-Veelgemaakte-Fouten.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.communited.nl/syndication.axd?post=767f5e8e-66f3-4096-b129-b878ade218b9</wfw:commentRss>
    </item>
    <item>
      <title>JQuery Append Performance</title>
      <description>&lt;p&gt;Momenteel zijn we bij Communited bezig met een nieuwe versie van onze &lt;a href="http://www.kentic.info/KenTIC-KCC-Suite/KenTIC-Afspraken-Online/page.aspx/1240"&gt;KenTIC afspraakonline&lt;/a&gt; module. Door middel van deze module is het mogelijk om bezoekers van een website afspraken te laten maken, en direct in te schieten in een klantvolgsysteem .&lt;/p&gt;
&lt;p&gt;E&amp;eacute;n van de zaken die in deze nieuwe versie wordt opgepakt is het &lt;a href="http://www.webrichtlijnen.nl"&gt;webrichtlijnen&lt;/a&gt;-proof krijgen van de oplossing. Hierbij worden in de basis afspraakmogelijkheden getoond als select-lists, en wordt door middel van een &lt;a href="http://jquery.com"&gt;jquery&lt;/a&gt;&amp;nbsp;javascript hiervan een mooi ogende kalender gegenereerd waarin de afspraken worden weergegeven. Op deze manier kunnen ook bezoekers zonder javascriptmogelijkheden een afspraak maken, en hebben bezoekers met javascript een meer intuitieve interface om dat te doen.&lt;/p&gt;
&lt;p&gt;Bij de bouw van het script liepen we echter tegen performanceissues aan; zeker in IE7 wat het script nogal traag.&lt;/p&gt;
&lt;p&gt;Door middel van Firebug ben ik op zoek gegaan naar de oorzaak. Firebug heeft een aantal &lt;a href="http://getfirebug.com/logging"&gt;mogelijkheden&lt;/a&gt;&amp;nbsp;om performance te loggen, waarbij ik dankbaar gebruik heb gemaakt van de console.profile() mogelijkheid. Hierbij heb ik wel eerst even de niet-minified versie van jquery gebruikt, anders zijn de resultaten niet te analyseren.&lt;/p&gt;
&lt;p&gt;Het bleek dat de performance vooral zat in de &lt;a href="http://api.jquery.com/append/"&gt;jquery.append&lt;/a&gt;()&amp;nbsp;methode. Deze werd in het script veelvuldig gebruikt vanwege; voor elke 5 minuten in de kalender die getoond wordt wordt een div gemaakt, die met .append() werd toegevoegd aan de DOM.&lt;/p&gt;
&lt;p&gt;In&amp;nbsp;&lt;a href="http://www.learningjquery.com/2009/03/43439-reasons-to-use-append-correctly"&gt;deze blogpost&lt;/a&gt;&amp;nbsp;staat inderdaad beschreven dat .append() inderdaad, wanneer verkeerd gebruikt, een aardige performance-slurper kan zijn. Ik heb dan ook een groot deel van de .append() aanroepen vervangen door simpele string-concatinations, en op die manier het gebruik van .append() zoveel mogelijk beperkt. En wat blijkt: 800 ms van de script execution verdwenen!&lt;/p&gt;</description>
      <link>http://blog.communited.nl/post/2011/03/22/JQuery-Append-Performance.aspx</link>
      <comments>http://blog.communited.nl/post/2011/03/22/JQuery-Append-Performance.aspx#comment</comments>
      <guid>http://blog.communited.nl/post.aspx?id=0f490e6a-f9c6-41ea-9606-6ac355dd8067</guid>
      <pubDate>Tue, 22 Mar 2011 09:31:00 +0200</pubDate>
      <category>jquery</category>
      <dc:publisher>Camiel</dc:publisher>
      <pingback:server>http://blog.communited.nl/pingback.axd</pingback:server>
      <pingback:target>http://blog.communited.nl/post.aspx?id=0f490e6a-f9c6-41ea-9606-6ac355dd8067</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.communited.nl/trackback.axd?id=0f490e6a-f9c6-41ea-9606-6ac355dd8067</trackback:ping>
      <wfw:comment>http://blog.communited.nl/post/2011/03/22/JQuery-Append-Performance.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.communited.nl/syndication.axd?post=0f490e6a-f9c6-41ea-9606-6ac355dd8067</wfw:commentRss>
    </item>
  </channel>
</rss>