Archive for the ‘Development’ Category

Weble Tutorial Days: Ext JS

maandag, september 14th, 2009

Vandaag is het de laatste dag dat er Early Bird tickets zijn voor de Weble Tutorail Days. Hoogtijd dus om nog een workshop te belichten: Ext JS.

Ext JS is een javascript framework, familie van Jquery, prototype, … Ext JS heeft echter ongetwijfeld de meest uitgebreide set widgets: datagrids, buttons, sliders, tree-views, tabs, panels, …

Telkens hebben ze hetzelfde pixel-perfected strakke design. Ext JS is dan ook de ideale basis om gebruikersinterfaces te ontwikkelen, zeker als je grafische talenten niet zo ontwikkeld zijn.

Naast het het mooie grafische resultaat zijn de functionaliteiten ook haast onbegrensd. Deze voorbeelden geven een goed idee van wat je allemaal, relatief eenvoudig, kan bouwen.

Het is natuurlijk niet alleen rozengeur en maneschijn. Persoonlijk vind ik dat Ext JS, vooral in het begin, een behoorlijke steile learning curve heeft. Een extra duwtje is dan zeker welkom. Op 30 oktober geeft Chris Ramakers dat duwtje.

Weble Tutorial Day: Django

vrijdag, september 11th, 2009

Een Django workshop. Maar is Django dan eigenlijk niet zo’n beetje het zelfde als Ruby on Rails? Nee.

Er zijn inderdaad gelijklopende dingen. Ook Django is een web application framework, gebaseerd op het MVC-model. Ook Django heeft als doel snel web applicaties te kunnen bouwen met een minimum aan overhead. Ook Django is relatief jong. Maar toch zijn er zeker voldoende verschillen om ook Django een bestaansrecht te geven.

Django als framework is ontstaan uit het refactoren van bestaande nieuws sites totdat deze een gemeenschappelijk framework gebruikten. Omdat het over nieuwssites ging lag de focus heel erg op snel kunnen werken. Dit zowel voor de inhoud van de sites, de programmatie als voor het deployment.

Voor het bijwerken van content en andere databank gegevens heeft Django zijn standaard administratie interface. Hiervoor hoef je geen enkele lijn code te schrijven en kan je meteen de content van je site beginnen te bewerken. Vanzelfsprekend kan je deze out of the box tool uitbreiden zodat die precies doet wat relevant is voor het project.

Programmeren in Django gebeurt in Python. Python heeft inderdaad een aantal kenmerken die Ruby ook heeft. De taal is ook volledig object georiënteerd, alleen durft men soms wel eens beweren dat Python mooiere code levert. Ongetwijfeld zullen de Ruby fans dit ook wel van Ruby zeggen.

Je maakt iets, maar vroeg of laat wil je dit natuurlijk aan de wereld tonen. Deployment, bij vele frameworks is dat vaak een hekel punt. Juist omdat de initiële ontwikkelaars van Django heel vaak moesten deployen is dit voor Django erg goed geregeld.

Als kers op de taart is Django dan ook nog erg snel en schaalt het vrij eenvoudig.

Op 23 oktober gaan we samen met Jan Geboers aan de slag in Django. In één dag zullen we een applicatie bouwen die gebruik maakt van Django, de templating kracht en enkele extra modules. Tot slot zullen we de applicatie dan ook deployen.

Wie snel is kan nog een Early Bird ticket bemachtigen tot 14/09/2009.

Weble Tutorial Day: Ruby On Rails

donderdag, september 10th, 2009

Nog net iets minder dan een maand tot de eerste Weble Tutorial Day en nog juist 5 dagen, tot 14 september dus, om Early Bird tickets te kopen. Het juiste moment dus om alle workshops nog even toe te lichten.

Ruby on Rails. Als je de naam nog nooit gehoord hebt, heb je waarschijnlijk zopas je eerste internet verbinding in gebruik genomen. Er is zonder twijfel al behoorlijk was buzz geweest rond Ruby on Rails of kortweg RoR. Maar wat is het nu? En waarom moet je het gezien hebben?

RoR is een web application framework gebaseerd op de taal Ruby. Die taal bestaat ondertussen een jaar of 15 en werd initieel ontwikkeld in Japan door Yukihiro Matsumoto. De syntax lijkt erg op die van Perl of Python en is volledig object- en gebruikersgeoriënteerd. Dat laatste is misschien geen bestaande term maar daar draait het bij Ruby en ook Ruby on Rails wel voor een groot stuk om. Vaak worden programmeer talen ontwikkeld van uit het standpunt van de computer. Hoe kan een CPU het makkelijkst omgaan met dit of hoe kan het werkgeheugen dat doen. Ruby probeert dit soort dingen in de achtergrond in goede banen te leiden en ondertussen in functie te staan van de ontwikkelaar. We are the masters. They (computers) are the slaves.

Ruby on Rails hanteert het MVC (Model-view-controller) design pattern om applicaties op te bouwen. Ondertussen zijn er vele MVC implementaties in verschillende talen, maar RoR was misschien wel de grote doorbraak van het MVC-model.

Naast een strikt MVC model heeft Ruby on Rails ook een erg vaste structuur. Heb je bijvoorbeeld een model met een class “kalender”, dan zal de daaraan gerelateerde tabel ook “kalender” noemen. Deze duidelijke structuur maakt heel wat extra denkwerk en overwegingen overbodig. Daarnaast kan iedereen met wat ervaring makkelijk inpikken op bestaande projecten.

Natuurlijk is er ook nog het zeer krachtige template systeem dat probleemloos webpagina’s, emails of andere documenten genereert. Of de database versioning die rollbacks tussen verschillende versies toelaat. Of het grote aantal beschikbare plugins.

Kortweg, Ruby on Rails, webdevelopment that doesn’t hurt.

Is voor jou de overstap van bv. PHP een te grote sprong in het ongewisse, dan kan een kennismaking met Ruby on Rails toch nog erg leerrijk zijn. Het beter begrijpen van Ruby on Rails legt design paterns bloot die zeker ook in andere omgevingen en talen bruikbaar zijn.

Op 9 oktober wagen wij alvast samen met Stijn Mathysen de sprong. Wie snel is kan nog een Early Bird ticket bemachtigen tot 14/09/2009.

Wil je Ruby on Rails meteen aan in actie zien? Bezoek dan even http://rubyonrails.org/applications.

Mircosoft Open Source round table

woensdag, september 9th, 2009

Gisteren was ik te gast in Brussel bij Microsoft voor een “round table” gesprek met Hank Janssens.

Natuurlijk heb je al mijn vorige posts gelezen en weet je wie Hank is. Mocht die specifieke post toch aan je aandacht ontsnapt zijn, Hank Janssens is “Group program manager” bij Microsoft’s Open Source Lab.

Het Open Source Lab heeft een drietal kernprojecten: Samba, Apache en PHP. Dat laatste trekt natuurlijk onze aandacht. Om niet in herhaling te moeten vallen lees je best even het stukje “PHP on Windows” uit de PHP UK Conference post die ik eerder schreef.

Vandaag, ongeveer 7 maanden later, is er nog niet zo heel veel veranderd in het MS OSL. De MS SQL driver waaraan gewerkt wordt ondersteunt zo bijvoorbeeld nog steeds enkel PHP op Windows. De drang om Windows als besturingssysteem te pushen is dus, begrijpelijk, altijd een beetje aanwezig. Van diezelfde MS SQL driver is er sinds twee weken wel een nieuwe versie. Je mag dus ook weer niet stellen dat ze daar in Redmond stil zitten.

Wel helemaal nieuw, voor mij dan toch, is Microsoft Web Platform Installer. Deze tool maakt het in Microsoft next-next-finish-stijl mogelijk om je Windows desktop of server om te vormen tot een webserver met veel kant en klare toeters en bellen. Zo kan je hiermee bijvoorbeeld met enkele klikken een webserver met PHP en Wordpress opzetten.

Voor iedereen met een Windows desktop is Microsoft Web Platform Installer het proberen zeker wel eens waard.

Weble Tutorial Days

dinsdag, augustus 11th, 2009

Het eerste Weble event RidingRails was een groot succes, iets waaraan een vervolg gebreid moest worden. Vele slapeloze nachten later is er een nieuw concept: Weble Tutorial Days.

Er komen constant nieuwe talen, frameworks en platformen bij die allemaal even interessant zijn. De eerste stappen zetten zijn vaak het moeilijkst. En nog meer: Goed begonnen is half gewonnen.

Daarom de Weble Tutorial Days. Op één dag, vertrekkende van een basiskennis (web) programmeren, aan de slag met een nieuwe technologie. De kick-start gebeurt in kleine groepjes en volledig hands-on. Een instructeur met ervaring begeleidt je in het bouwen van een eenvoudige applicatie op basis van de gekozen technologie.

Er zijn vijf tutorial days voorzien, met telkens boeiende technologieën:

De tutorial days zullen telkens op vrijdag plaats vinden. Naast een goed gevulde inhoudelijke dag word je ook voorzien van de nodige drankjes en een lekkere lunch.

Tickets zijn zijn vanaf vandaag te koop. Wie snel is kan een Early Bird ticket kopen aan € 150. Standaards tickets kosten € 200.

Tutorial: Weble Subversion Introduction

donderdag, augustus 6th, 2009

Alles begint met de basics. Om een reeks subversion posts te schrijven als eerste post dus een korte rondleiding door de Weble Subversion Hosting.

Wie nog niet overtuigd is van Subversion leest best nog snel even deze post: 5 goede redenen om met subversion te starten. Mocht je nog niet vertrouwd zijn met Subversion kan je in dezelfde post ook het basis concept terug vinden.

In deze mini-tutorial gaan we drie dingen bekijken:

  • Het aanmaken van een Subversion repository
  • Het aanmaken van gebruikers en deze rechten geven op een repository
  • Enkele extra opties zoals trac, websvn en code validatie



Inloggen

Het beheer van een Subversion account gebeurd via de support site: https://www.weble.be/support/. Eens hier ingelogd kom je via “accounts” -> “subversion” in de Subversion module.



Een repository aanmaken

Om een repository aan te maken klik je op “Create new repository”. Je kan hier eender welke naam kiezen, maar gebruik best geen te vreemde tekens om later problemen met je Subversion client te vermijden. Voor deze tutorial kies ik als naam demo.

Weble Subversion

Wanneer een repository aangemaakt is verschijnt meteen de http-url van de nieuwe repository. Dit is de url die je zal moeten ingeven in je client. Je kan hier zoveel repositories aanmaken als je wenst.

Repositories



Gebruikers & rechten

Per repository moeten rechten toegekend worden aan gebruikers. Hiervoor heb je natuurlijk eerst gebruikers nodig. Via “Switch to user management” kom je in de module waar je gebruikers en hun rechten kan beheren.

User management

De link “Add user” geeft je de mogelijkheid om een nieuwe gebruiker aan te maken.  Ik maak een gebruiker jeroen aan. Eens een gebruiker aangemaakt is moet je per repository rechten toekennen aan een gebruiker:

  • de gebruiker heeft geen rechten (standaard)
  • de gebruiker heeft enkel lees rechten. De gebruiker heeft dan ook rechten om in te loggen in de Trac en WebSVN.
  • de gebruiker heeft schrijfrechten en ook toegang tot de Trac en WebSVN

Ik geef de gebruiker jeroen volledige rechten op de repository demo.

Permission management

Je kan zo veel gebruikers aanmaken als je wenst. Telkens met de gewenste rechten per repository.



Een repository beheren

Via de link switch to repository management kan je terug keren naar het overzicht van de eerder aangemaakte repositories. Wanneer je klikt op manage achter een repository kom je in de detail pagina van die repository.

Manage repository



Repository URL’s

Bij elke repository horen 3 url’s:

  • De eerste url is de url van de repository zelf. Deze gebruik je in je subversion client.
  • De WebSVN url geeft toegang tot de WebSVN browser waarmee je via je browser eenvoudig door de versies en comments kan gaan.
  • De Trac url geeft toegang tot de Trac interface. Hiermee kan je projectmanagement en bugtracking koppelen aan je repository.

Repository URL's



Code validation

Wanneer een repository php-code bevat kan code validation geactiveerd worden. Code validation gaat er voor zorgen dat enkel code die aan een bepaalde codingstandaard voldoet gecommit kan worden in deze repository. Vergeet bij het instellen van een codingstandaard niet op “Save” te klikken om de standaard te bevestingen. Disable (standaard waarde) schakelt de validatie volledig uit.

Code validation



Delete repository

Wanneer een repository niet langer noodzakelijk is kan deze via de “Delete” link verwijderd worden. Het  verwijderen kan niet ongedaan gemaakt worden en verwijderd ook de bijhorende Trac.

Delete repository



Referentie
Deze tutorial beschrijft het gebruik van de Weble Subversion Hosting. Wie wil kan gratis proberen en experimenteren.

5 goede redenen om met Subversion te starten

zaterdag, juli 25th, 2009

Ondertussen heeft iedereen al wel ooit eens van subversion gehoord. Versiebeheer. Maar waarom is dat nu zo belangrijk? Zelfs als je alleen werkt.

1. Gemakkelijk
Het basisconcept en -gebruik van Subversion is erg eenvoudig. Je hebt per project een repository die alle versies van het project zal bevatten. Daarnaast heb je een working directory, een lokale map waarin je effectief bestanden gaat bewerken. Gewijzigde bestanden terugzenden naar de repository wordt een commit/checkin genoemd. Een bepaalde (bijv. de laatste) versie van bestanden ophalen gebeurt via een update/checkout.

Het bewijs in 5 stappen:

  1. Download Subversion
    http://subversion.tigris.org/getting.html
  2. Een repository aanmaken:
    # svnadmin create mijnProject
    of online bij via je hosted subversion provider
  3. Initiële import van bestaande code
    # cd lokaleMapMetCode
    # svn import lokaleMapMetCode http://svn0001.svn.weble.be/mijnProject
  4. Een lokale kopie van de laatste versie maken in een nieuwe working directory
    # svn checkout http://svn0001.svn.weble.be/mijnProject
    Hierna beschik je over een lokale map met de naam mijnProject waarin je kan werken
  5. De huidige versie verzenden naar de server
    # svn commit

2. Backup van je code
Hiervoor is het natuurlijk vereist dat je subversion repository op een afzonderlijke computer staat. Best maak je van je repositories natuurlijk ook nog backups. Een hosted subversion oplossing verzorgt dit voor jou.

3. Probeer, maak dingen stuk en ga terug
Met Subversion kan je eenvoudig alle wijzigingen in je code bijhouden. Steeds kan je terug naar een vorige versie waardoor je zonder risico’s kan experimenteren.

4. Tools en integratie
Wie niet van de standaard Subversion commandline interface houdt, kan kiezen uit een hele reeks tools. De meeste editors  bieden tegenwoordig ook integratie met subversion. Voor Windows gebruikers is Tortoise zeker een aanrader.

5. Subversion is goed gedocumenteerd
Zoeken naar Subversion geeft 26 miljoen resultaten in Google. Je bent echter niet verplicht om daarin te gaan graven. De gratis online versie van het O’Reilly boek beschrijft ook bijna elke situatie in detail.

PHP Vikinger

zaterdag, mei 30th, 2009

De unconference PHP Vikinger van Derick Rethans is dit jaar van Noorwegen naar Leuven verhuisd. Dicht bij huis en toch een reeks grote namen. In latere afzonderlijke posts zal ik dieper ingaan op de details van de verschillende presentaties. In deze post alvast een kort overzicht.

De eerste presentatie is van Thijs Feryn: CLI the other sapi. CLI of de Command Line Interface van PHP is erg ondergewaardeerd, Thijs probeert hier verandering in te brengen. Slides op slideshare.

Thomas Weinert heeft het tijdens de tweede presentatie over XSLT, EXtensible Stylesheet Language.

De resultaten van PHP TestFest 2009 worden door Zoe Slattery gepresenteerd in de 3de presentatie. Ook in deze presentatie enkele ideeën over hoe in de toekomst het testen van de php code en de TestFest nog beter zouden kunnen.

Derick Rethans opent na de lunch met een presentatie over “search”. Hij heeft het onder andere over MySQL full search index, Apache Lucene, Zend Lucene en Apache Solr en de integratie daarvan met eZ Search. De slides.

Patrick Allaert presenteert zijn APM, Alternative PHP Monitor. Voor mezelf is dit ongetwijfeld het meeste interessante project.

De 3e namiddagsessie is een first hand verslag van de PHP Developer Meeting in Chicago door  Scott MacVicar & Derick Rethans.

Kore Nordmann mag de dag afronden met een presentatie over CouchDB en PHPillow. CouchDB is een document databank waarvoor PHPillow een PHP interface is.

De conclusie is zeker dat vandaag het niveau van  de sprekers zeer goed was met als resultaat een erg boeiende dag. Thanks Derick!

PHP Coding Standards opleggen via Subversion

woensdag, mei 6th, 2009

Iedereen heeft al wel eens van coding standards gehoord: regeltjes die bepalen hoe variabelen, functies, classes en structuren geschreven moeten worden. Ontwikkelaars zijn meestal creatieve mensen en dus ook tegen regeltjes.

Het gebruik van een coding standard kan zeker voordelen bieden. Naar mijn gevoel zijn overzichtelijkere code en beter gedocumenteerde code hiervan de twee belangrijkste. Deze twee zorgen uiteindelijk voor hogere kwaliteit, een betere productiviteit en eenvoudiger ondehoudbare software.

Elke ontwikkelaar die zichzelf een beetje respecteert zal van zijn of haar code zeker vinden dat deze overzichtelijk is. In vele gevallen zal dat ook zijn. Wanneer iemand anders  zijn persoonlijke standaard gaat toepassen op eenzelfde stuk code gaat het overzicht al snel verloren. Al snel zullen de nieuwste gadgets door de lucht vliegen tijdens hoog oplopende discussies tussen ontwikkelaars om hun persoonlijke standaard te promoten. Een onafhankelijke vooraf opgelegde standaard kan dit soort burgeroorlogen voorkomen. Een bekende standaard zoals de Zend Coding standard kan er ook voor zorgen dat nieuwkomers meteen hun weg vinden.

Documentatie is altijd een (erg) pijnlijk punt. Een coding standaard gaat niet alleen de layout hiervan opleggen, maar ook verplichten om de nodige documentatie te voorzien. Het belang daarvan moet al lang niet meer geargumenteerd worden.

Een standaard is natuurlijk alleen nuttig als deze consequent toegepast wordt. Hier kan Subversion helpen. Voor elke commit gaat een hook automatisch controleren of de nieuwe code voldoet aan de opgelegde coding standaard. Indien dit niet het geval wordt de commit geannuleerd en worden de foute aangegeven. De repository  zal dus steeds enkel correcte code bevatten.

Als je gebruik maakt van de Weble Subversion Hosting kan je momenteel kiezen uit volgende standaarden: Zend, MySource, PHPCS, PEAR en Squiz. Met een eenvoudige klik kan de controle op een standaard per repository geactiveerd of gedeactiveerd worden.

UTF8 Checklist

donderdag, april 23rd, 2009

Gisterenavond heb ik een leuke en boeiende PHPBelgium meeting meegemaakt. Van de 2 boeiende sessies kom ik even terug op die van Juliette Reinders Folmer.  Vroeg of laat komt elke PHP developer in contact met UTF8. Een correcte implementatie hiervan gaat echter vaak niet zonder slag of stoot.

De algemene regel is dat ALLES in UTF8 moet gebeuren. Een enkele schakel die niet in UTF8 gebeurd zal voor verwarring zorgen op de server of in de browser met mogelijk corrupte data als gevolg.

  • Alle bestanden opslaan als UTF8, zonder Byte Order Mark
    Dit voor alle bestanden die door de applicatie gebruikt zullen worden, .php, .js, .html, .po, …
    Voor de .php bestanden is het ook belangrijk dat je ze opslaat zonder byte order mark. Doe je dit niet dan zal PHP de byte order mark zien voor de php open tag en kan dit resulteren in “headers already send”-errors.
  • UTF8 definiëren in de head-sectie van elke HTML pagina
    <meta http-equiv=”Content-type” value=”text/html; charset=UTF-8″ />
  • UTF8 veilige fonts
    Hou er rekening mee dat niet elk lettertype elk teken uit de UTF8-karakterset kan weergeven. Controleer dus best of de tekens opgenomen zijn voor de gebruikte talen en tekens.
    Arial Unicode MS is een lettertype dat zeer veel tekens bevat, maar helaas niet op alle systemen standaard beschikbaar is.
  • FTP verbinding maken in binary mode
    Upoad bestanden in binary mode. Bij het verzenden van bestanden in ASCII mode gaan de bestanden geconverterd worden naar de ASCII karaktetset.
  • MySQL databank volledig instellen op UTF8
    Dit zowel op databank, tabel als op veld niveau. Meestal zal de collatie utf8_general_ci de juiste zijn. Kies in elk geval voor een collatie die begint met utf8, het deel dat daar op volgt bepaald de sorteer volgorde als er een SORT zou gebeuren op dit veld.
  • MySQL connectie instellen voor UTF8
    Gebruik na het maken van de MySQL connectie: SET NAMES ‘utf8′ . Met dit commando worden de 3 parameters geconfigureerd die de karakterset van client, connectie en resultaten bepalen. (character_set_client, character_set_results, character_set_connection)
  • UTF8 HTTP header instellen
    Dit kan zowel vanuit PHP:
    header(’Content-Type: text/html;charset=utf-8′);
    Of nog eenvoudiger via een .htaccess-bestand:
    AddDefaultCharset utf-8
  • UTF8 Safe functions
    Veel string-functies, zoals bv. strlen() kunnen niet overweg met UTF8. De mbstring extensie van PHP voorziet in alternatieve functies die wel correct met UTF8 data overweg kunnen.

Volgende pagina’s zijn gebruikt als referentie: