MySQL Workbench – Navicat Data Modeler

Database design is altijd wel een leuk onderdeel van het werk. De plek waar je de functionele wensen en eisen van de applicatie gaat omvormen tot een soort blauwdruk voor de techniek. Normaliter werk ik graag met MySQL Workbench welke met iedere versie weer een stukje beter wordt. Alleen soms doet hij zulke gekke dingen dat je eigenlijk uit het raam wilt springen en dan zoek je naar alternatieven en die zijn er niet dus ga je weer verder en accepteer je de bugs. Nu toch een keer een poging gedaan met een trial van Navicat Data Modeler.

Navicat Data Modeler

Ik heb altijd opgekeken naar de naam Navicat. De makers van prima en solide software rondom het beheren van databases. Hoog was dan ook mijn verwachting van de Data Modeler. De teleurstelling was echt onbeschrijfelijk. Heb ze zelfs nog gemaild met wat vragen omdat ik een aantal (in mijn beleving basis dingen) niet kon vinden. Helaas blijken die er ook niet te zijn of ooit misschien te komen.

Als je hem ziet denk je ‘wow, sexy programma’ de diagram ziet er prachtig uit. Een auto-layout (even kijken hoe dat werkt) ziet er redelijk bruikbaar uit. Heb dit eerder met MySQL Workbench wel eens gedaan die doodleuk alle tabellen op een hoop gooide.

Echter het eerste waar ik tegenaan liep (heb daar niet eens een punt van gemaakt) is dat je een diagram niet kan verwijderen. Superleuk als je ze met 1 klik kan toevoegen maar verwijderen is dan ook wel prettig. Niet te vinden en reageerde niet op de door mij gegokte knoppen.

Dan mijn echte grote struikelblok; Navicat Data Modeler biedt op dit moment geen ondersteuning voor het instellen van de foreign key constraints options (UN UPDATE RESTRICT, SET NULL, DELETE, CASADE etc) . Gewoon niet, null, pech. Je kan het doen via de database zelf of via een beheertool maar niet vanuit je model. Alles zit erin, overal is aan gedacht maar dit, nee. Nog niet nodig.

Volgens de meneer van Navicat wel vaker gevraagd en staat op de requirements lijst voor nieuwe ontwikkelingen. Daar heb je echter 0.0 aan met een trial van 30-dagen. Wat een teleurstelling. Toch maar weer terug bij mijn vertrouwde Workbench. Er is weer een nieuwe versie, wie weet zijn er weer een paar rare bugs uit gehaald.

 

Vagrant + Windows static file caching

Oplossing voor het vreemdste probleem van vandaag; Ik heb een Vagrant box draaien in Virtualbox welke via een vm.share_folder een virtuele share maakt tussen bestanden op de pc en de virtuele server. Dit werkte voor dynamische bestanden prima maar bij o.a. CSS & JS files ging het fout.

Als ik het bestand opriep via de browser kreeg ik een oude versie (ongeacht of je er bijvoorbeeld .css?1 van maakte of iets). Gooide ik het bestand weg dan werkte het wel. Alles nagelopen rondom browser en server-side caching maar daar zat het niet.

De dader: Sendfile()

Na wat onderzoek op het grote web kwam ik erachter dat dit komt door de manier waarop statische files worden opgehaald middels de sendfile() call welke in Virtualbox echter niet goed werkt. Hierdoor werd het bestand als het ware éénmalig echt opgehaald en vanaf dat punt kreeg je een versie uit de ‘cache’ terug. De verwarring is groot omdat dit bestand zich niet als gecached gedraagt; de headers zijn goed, er zijn geen opvallende cache-tags te vinden of iets.

De oplossing

Als je op Windows zit is de meest handige oplossing om sendfile uit te schakelen. Dit doe je met de volgende config line voor je Apache;
EnableSendfile off

Voor Mac gebruikers zou ik eerder gaan kijken naar andere manier om de virtual share te maken namelijk NFS: http://docs-v1.vagrantup.com/v1/docs/nfs.html

Dit probleem speelt hier niet en de performance is aanzienlijk beter.

Firefox freezes

De afgelopen weken had ik een diepgaand conflict met mijn Firefox. Om onduidelijke redenen bleef hij soms tientallen keren per dag om onheldere redenen ‘hangen’. Bijvoorbeeld als je klikte ergens op een pagina of ‘view source’ deed. Mijn eerste veronderstelling was dat er misschien extensies of plugins waren die de boel verstoorden. Als fervent Firefox liefhebber en als webdeveloper heb je vaak toch al snel aardig wat onmisbare tooltjes (Firebug, Web developer, Delicious bookmarks en ShowIP om maar iets te noemen). Mijn eerste poging op weg naar herstel van een gezonde werkomgeving was het uitschakelen van alles wat ik maar kon missen en meer. Ik was overtuigd dat dit de oplossing was maar dit bleek niet het geval. Zelfs zonder enige plugin of extensie deed hij vervelend.

En toen?

Aangezien er nooit tijd is voor dit soort ‘problemen’, ik in enkele weken mijn pc wil herinstalleren en ik Opera ook het beste gun dacht ik ‘ik kan best een paar weken met Opera gaan werken en wie weet bevalt het wel’. Opera geupdate, alternatieven voor mijn favoriete Firefox plugins gezocht en de meest belangrijke tabjes toegevoegd als ‘app’ (sinds ik dit ontdekt heb in Firefox is dit echt een primaire levensbehoefte geworden). Voor de meeste zaken waren prima alternatieven. Zo heeft Opera een geweldige, ingebakken, developer omgeving (Dragonfly, niet gezien? Zeker eens testen). Met mijn visie dat iets wat standaard in software zit ingebouwd altijd beter is dan iets wat je los installeert leek me dit het testen waard (en beviel me prima trouwens). Maar hoe sexy Opera ook was, hoe prettig Dragonfly ook was, ik miste mijn vertrouwde Firefox. Keer op keer opende ik toch automatisch weer Firefox om iets te testen en voor mijn geliefde Delicious extensie kon ik geen waardig alternatief vinden. Daar ik een trouw Delicious gebruik ben (ca 350 links) miste ik deze heel erg. Alles wat ik tegenkom tijdens onderzoek en belangrijk vindt wil ik in mijn Delicious stoppen. Kort samengevat; Opera is fantastisch maar ik mis Firefox…..

Op zoek naar een oplossing

Een beetje googlen bracht mij bij een weblog wat me hoop gaf. Ik was sowieso niet de enige en er was misschien een oplossing. Het zou namelijk kunnen komen door een verstoring van de database van Firefox die soms in een soort loop zou schieten. Vol goede moed de instructies gevolgd en vol verwachting mijn browser herstart maar helaas, de problemen waren niet weg.

Firefox 8 beta

Bij gebrek aan verdere opties, en bij het vinden van veel meer mensen met soortgelijke ‘vage’ klachten, toch maar even getest of het draaien van Firefox 8 beta dit op zou lossen. Dit bleek in mijn geval de oplossing. Ben er niet heel gelukkig mee dat ik op mijn primaire werkomgeving met een beta versie werk maar het werkt 100x beter dan Firefox 7 deed dus ben er blij mee. Mocht jij soortgelijke problemen hebben dan zou ik adviseren om eerst de poging te doen met het weblog. Beter een herstelde versie 7 dan een 8 beta lijkt me zo. Als het bij jou ook niet werkt dan is Firefox 8 beta dus een mogelijk goede oplossing.

Form based authentication for websites

Op Stackoverflow is men druk bezig in een poging “The Definitive Guide To Forms based Website Authentication” te maken. Komen best wat interessante punten voorbij. Sommige zijn relatief eenvoudig implementeerbaar in bestaande omgevingen terwijl andere “aanbevelingen” wat dieper gaan. Zeker als je een nieuwe applicatie opzet die nét dat stukje meer veiligheid vereist kan dit een heel interessant document zijn om nog eens kritisch te kijken naar je bestaande authenticatieprocedures.

De highlites zoals ik ze zie

Onderstaand lijstje is absoluut niet als richtlijn te gebruiken maar meer als “o ja, die” reminders van de zaken die in iedere geval in het oog springen, te gemakkelijk zijn om niet te doen of een flink verschil maken in de veiligheid van de login:

  • CAPTCHA’s zijn in basis nutteloos (op reCAPTCHA na want die is echt onmogelijk irritant)
  • Ben je goeroe dan ga je voor een Diffie-Hellman key exchange (wiki)
  • Cookies voor je sessie geef je het beste een HTTP Only header mee en zijn ‘secure’
  • Mocht je een “onthoudt mij” willen sla dan in iedere geval een zeer gezouten hash op van de token in je DB en niet de ‘kale’ cookie token
  • Geheime vragen zijn evil en vormen een veiligheidslek
  • Wachtwoord vergeten = nieuwe kiezen. Een “gereset” wachtwoord toezenden wat onmogelijk ingewikkeld is wordt vermoedelijk geprint, op een post-it gezet etc.
  • Stel minimale eisen aan een wachtwoord (javascript wachtwoord complexiteit checker)
  • Blokkeer massale login pogingen door pogingen te loggen en blocks uit te delen bij X aantal false attempts
  • Geef straf “delays” bijv. 2 seconde na 3e foutieve login, 5 seconde na 4e foutieve login etc zodat het onmogelijk is massa’s logins te testen
  • Gebruik SSL (beetje open deur maar hij hoort erbij)
  • Sla wachtwoorden alleen encrypted en salted op

De bron

Dit zijn maar een paar korte hightlites uit dit prachtige artikel:
http://stackoverflow.com/questions/549/the-definitive-guide-to-forms-based-website-authentication

Gratis Photoshop alternatief wat prima werkt

Enkele dagen geleden kwam ik langs een fantastisch stukje websoftware. Pixl editor genaamd. Een online Flash Photoshop alternatief wat echt superstrak in elkaar zit. Niet alleen zijn de functionaliteiten overweldigend maar het ziet er ook nog eens allemaal heel gelikt uit en is gratis. Wat wil je nog meer?

Niet alleen kun je met Pixl editor afbeeldingen op je PC bewerken (met de nadruk op het woord “op” omdat je als Flash 10 gebruiker gewoon lokaal werkt) maar je kunt ook gelijk een afbeelding van het internet “plukken” of uit een andere bron zoals Facebook etc.

Alle serieuze zaken die je in een betaald pakket tegenkomt zitten erin. Enkele van deze leuke functionaliteiten zijn:

  • Afbeeldingen opbouwen uit lagen
  • Veel prachtige filters zoals tilt shift, water effecten, caleidoscoop, haltone en meer
  • Geschiedenis om bewerkingen ongedaan te maken
  • Eenvoudig afbeeldingen bijsnijden etc
  • Vele mogelijkheden tot bijwerken kleurtinten
  • Meertalig
  • Rotate, flip en meer
  • Layer styling zoals dropdown shadows, bevels etc

Kortom, eigenlijk heel veel voor weinig. Ideaal om “even snel” ergens een afbeeling bij te snijden als je geen pakket op je PC tot je beschikking hebt.
Bezoek http://pixl.com/editor/

 

CSS prism kleuren van stylesheet bepalen

Geen idee of we dit ooit nodig gaan hebben maar wel weer een grappige app. In het kort de werking;

  1. Je geeft hem een url naar een stylesheet
  2. Hij geeft je alle kleuren terug die erin gebruikt worden
  3. Je kunt kleuren in één keer in hele stylesheet aanpassen
  4. Je krijgt een aangepaste stylesheet retour die je in je site kunt gebruiken

Eens testen
Hop, Webparking stylesheet erin en ik krijg inderdaad een scherm met kleurtjes:

 

Als je dan op een kleur klikt zie je welke kleur, kun je hem aanpassen en krijg je gelijk te zien waar hij in de CSS te vinden is:

Als je klaar bent met aanpassen kun je rechtsboven de aangepaste CSS downloaden en klaar. Erg simpel, erg handig en vooral iets waarvan je vergeet dat het er is. Weet nu al dat mocht ik ooit op deze manier iets moeten refactoren ik het vermoedelijk gewoon doe middels een search en replace in mijn code.

Spritecow CSS sprite generator

En we zijn weer een fantastische stukje web-app tegengekomen. Spritecow is een online app waarmee je sprites kunt genereren vanuit een afbeelding. Vorige week getest met een project en het werkt verbazingwekkend prettig eigenlijk. In het verleden hadden we wel eens gespeeld met een plugin voor Photoshop die automatisch sprites en CSS maakte maar dit werkte, in mijn visie in iedere geval, niet echt lekker.

Hoe werkt spritecow?

Eigenlijk supereenvoudig. Je upload je sprite-afbeelding, klikt op een icoontje of wat dan ook welke je als sprite wilt gebruiken en automatisch zoekt hij de randen van je afbeelding op en krijg je onderin de benodigde CSS te zien. Indien nodig kun je ook gewoon met de hand een “regio” selecteren in de afbeelding.

Er staat ook een redelijk helder voorbeeldbestand met begeleidende teksten.

Link naar de site: www.spritecow.com

Automatisch herstarten windows bij update uitschakelen

Afgelopen week had dhr. Microsoft me weer voor de zoveelste keer tuk. Je kent het wel, je start een prachtig proces wat de computer de komende uren mag zoet houden. Om de pc zo min mogelijk hierbij te storen start je dit proces voor het weekend of vroeg in een avond op en laat je hem met rust. Dan kom je de volgende (werk)dag bij de pc en klaar is hij. Een win-win situatie. Behalve als windows tussentijds een geweldige update heeft gevonden die zo belangrijk is dat de pc per direct moet worden herstart. Nou ja, je krijgt nog een optie om het uit te stellen maar aangezien je er niet bent beslist Microsoft voor je en dus “reboot”. Omdat ze zich toch een beetje schuldig voelen herstarten ze wel de pc voor je maar geloof me, het zien van het inlogscherm komt niet in de buurt van het zien van een succesvol afgerond proces.

Deze keer was mijn verdriet zo groot dat ik besloot dat ik de oplossing moest gaan zoeken en die was er. Frost heeft dit uitgezocht en in zijn blog gezet. Voor u hier de kortste versie die ik ervan kan maken:

  1. Druk op start
  2. Typ gpedit.msc in het zoekveld
  3. Open “administrative templates”
  4. Open “windows components”
  5. Open “windows update”
  6. Klik met rechtermuisknop op “no auto-restart with logged on users for scheduled automatic updates installation”
  7. Kies “edit”
  8. Zet hem op “enabled”

Als het meezit ben je nu in staat ingewikkelde processen te starten (zoals in mijn geval een database conversie) zonder onderbroken te worden door een superbelangrijke update.

Donker Netbeans theme (optimaal voor PHP)

Iedereen heeft zo zijn eigen wensen hoe een IDE eruit moet zien qua font, kleurgebruik etc. Sinds ik overgestapt ben op Netbeans moet ik zeggen dat het tweaken van de kleuren wel erg makkelijk geworden is. Met als basis een kleurthema wat ik van één van de collega’s op kantoor gekregen had ben ik verder gaan tweaken. Nu, na een ruime maand gebruik, durf ik wel te zeggen dat mijn theme klaar is voor de grote wereld.

Natuurlijk zitten er altijd nog wat kleine scenario’s in de kleurconfiguratie die je vooraf niet had voorzien maar bij standaard gebruik in PHP, CSS, XHTML, XML en INI’s gedraagt het zich prima. Hier wat screenshots van de verschillende weergaves:

PHP

INI

CSS

(X)HTML

Zelf testen? Download hier dit Netbeans theme

dark_netbeans_theme.zip

ps. Wellicht overbodig maar: maak even een backup van je huidige theme’s voor het geval mijn export dingen overschrijft die je graag had behouden


APC cache en Zend Server CE

Als je op je Zend Server CE kijkt in de extensions lijst zoals die default ingesteld staan zou je vermoeden dan APC erop draait.

Dit blijkt echter niet geheel het geval als je de php.ini bekijkt. De versie die erop staat lijkt een soort port te zijn naar de cache engine van Zend Server zelf. Niet alle commando’s die normaal in APC beschikbaar zijn werken etc.

APC installeren
Paul Kiddie heeft op zijn weblog al redelijk goed uitgezocht hij hij dit kon doen ten behoeve van een file upload progress bar.

  • Ga naar http://downloads.php.net/pierre/
  • Zoek de juiste versie van APC caching die bij je systeem past. In mijn geval was dit php_apc-3.1.5-5.3-nts-vc9-x86.zip (APC versie 3.1.5 voor PHP 5.3, Non-Threading Safe VC9 versie)
  • Plaats php_apc.dll in je zendServer map \lib\phpext\
  • Pas je php.ini (zendServer map \etc\) aan en voeg onderin bij de extensions extension=php_apc.dll toe.
  • Restart je PHP engine en klaar

Als het goed is bevat je phpinfo nu het APC configuratie deel:

Kanttekening

Je PHP log bevat nu een warning.

[20-Nov-2010 15:31:48] PHP Warning:  Module 'apc' already loaded in Unknown on line 0

Dit heeft te maken met de “APC” zoals Zend Server die zelf laadt. Je nu toegevoegde extension botst daar licht mee. Heb wel gekeken naar de opties maar heb nog geen oplossing. De APC request die Zend Server al doet voor je eigen extensies komt mee uit een kant-en-klare extension-dll van Zend Server. Als je hem via de Zend Server configuratietool disabled gooit hij ook gelijk je zelf toegevoegde APC extensie uit de php.ini. Zet je de eigen extension regel er dan weer in dan zet hij ook gelijk die van Zend Server weer aan op één of andere manier.

Update 23 november @ 22:05

We hadden het er vandaag op kantoor nog eens over en Pieter (thnx!) kwam met een briljant idee. Hij kon zich namelijk herinneren ergens in de configs van ZendServer ook nog een file tegengekomen te zijn waarin de oorzaak mogelijk stond.

Hierbij dus alsnog de oplossing voor deze error:

In ZendServer/etc/cfg staat het bestand datacache.ini. Hierin staat:

; When enabled, the Data Cache extension registers APC compatibility methods
zend_datacache.apc_compatibility=1

Als je die parameter op 0 zet ben je er. Op zich ook een erg logische regel om op 0 te zetten als je hem zo leest.

De beste software en tools voor PHP webdevelopment

Met de jaren bouw je een verzameling op met software waar je als developer prettig mee werkt. Van tools om het programmeren eenvoudiger te maken tot software om grafische zaken te doen.

Hieronder staat mijn lijst met favorites en een korte omschrijving waar ze voor dienen / wat deze software waardig maakt om in deze lijst te komen;

  • Netbeans
    Als serieus PHP developer moet je een goede IDE hebben en Netbeans is dit meer dan waardig.
    www.netbeans.org
  • MySQL workbench
    Voor het maken van gelikte database ontwerpen en deze inzichtelijk maken aan projectmanagers / opdrachtgevers.
    wb.mysql.com
  • Photoshop
    Hoort eigenlijk niet thuis in een lijst voor PHP developers maar zeker wel als webdeveloper om zo nu en dan een plaatje te snijden of een knopje te maken.
    http://www.adobe.com/nl/products/photoshop/photoshop/
  • Notepad2
    Naast Netbeans is het altijd handig een lightweight tooltje te hebben om even snel htaccess bestanden of conf files te bewerken. Ik vervang altijd zelf de notepad van windows met notepad2 zodat ik altijd syntax highlighting en regelnummers tot mijn beschikking heb.
  • http://www.flos-freeware.ch/notepad2.html
  • Filezilla
    Een goede en stabiele FTP tool.
    http://filezilla-project.org
  • Tortoise SVN
    Soms kom je er met je IDE gewoon niet goed uit als het gaat om SVN en dan is Tortoise de beste windows oplossing. Mooi is hij niet maar wel effectief.
    http://tortoisesvn.tigris.org/
  • WAMP of Zend Server
    Niets werkt zo lekker als lokaal. Snel, veilig en resultaat voor je F5 hebt kunnen drukken.
    http://www.wampserver.com/en/
    of
    http://www.zend.com/en/products/server-ce/
  • De browsers om te testen
    Test op dit moment met Safari, Firefox, Chrome, IE7, IE8, IE9 en op een Virtual PC met windows XP en IE6. Voor noodgevallen vragen we een Mac visie op zaken. Daarnaast spelen we natuurlijk wel eens met Adobe labs maar bovenstaande dekt aardig de lading.

Dit zijn wel een beetje de belangrijkste.Niet alle software mag op kantoor in productie gebruikt worden maar als ik thuis voor mezelf aan het rommelen ben mag dit vaak wel dus dan komt mijn goede ervaring daaruit voort.

Nu ik dit lijstje typ realiseer ik me dat ik ook best veel handige firefox plugins gebruik. Zal daarover binnenkort een keer iets schrijven.

http://wb.mysql.com/

MySQL workbench tutorial

Als je databases complexer worden raakt het steeds lastiger om het overzicht te behouden op de database structuur. Via een administratietool als PHPmyadmin krijg je wel een goed beeld van de actuele situatie en relaties maar het is erg lastig om “visueel” te maken hoe zaken in elkaar zitten. Zowel voor jezelf als voor eventuele opdrachtgevers met wie je de database-opzet wilt delen. Daarnaast komt er een moment dat het uittypen van alle velden met hun configuraties een erg vervelend werkje wordt.

MySQL workbench is je gereedschapskist
MySQL workbench is een zogenoemd visuele database design pakket en de community versie is beschikbaar onder de GPL licenties voorwaarden.De afgelopen edities is MySQL workbench verder samengebracht met het administrator pakket waardoor je vanuit het programma eigenlijk alles rondom een database(server) kunt configureren.

De werking in het kort
Het programma is in basis niet zo erg complex maar de functionaliteiten zijn redelijk diepgaand. Ik zal hieronder kort uitleggen hoe je zelf je eerste database ontwerpt met het programma.

Als je het programma opstart krijg je onderstaand scherm:

Kies in het midden onder voor “create new EER model” (EER staat voor Enhanced Entity-Relationship). Je krijgt dan onderstaand scherm:

Laten we voor het voorbeeld even uitgaan dat we een database willen maken met auto’s (car) en merken (manufacturer) met dus een relatie waarbij één merk meerdere auto’s maakt. Veel dieper lijkt me niet nodig. We noemen de database ‘test’.

Dubbelklik eerst op “mydb” bovenin je scherm om de naam, en eventueel de collation (werk zelf standaard met utf-8 general), aan te passen.

We hebben nu de basis gelegd. Dubbelklik nu op “add diagram” bovenin. Je krijgt nu onderstaand scherm:

Klik nu links op het “place new table” icoontje (7e van boven). Je krijgt nu een nieuwe tabel in je scherm te zien. Dubbelklik om hem te configureren. Onderin je scherm krijg je nu de tabel opties. Als het goed is zie je nu iets als:

Pas eerst de naam van de tabel aan naar “car” en klik daarna op columns. Voer nu de kolommen in die je belangrijk vind. Voor nu houden we het eenvoudig met een kolom voor het id, de naam en een veld voor de motorbeschrijving. Het ziet er dan ongeveer zo uit:

We doen hetzelfde voor de fabrikanten tabel. Nu komt het leuke stuk. We willen natuurlijk een relatie hebben tussen de twee tabellen. Afhankelijk van de situatie kun je kiezen voor verschillende soorten relaties maar in dit geval voldoet een 1:n relatie. één fabrikant die meerdere auto’s maakt.

Klik links op het 1:n icoontje. Klik op de “car” tabel en dan op de “manufacturer” tabel en je relatie is een feit. Automatisch neemt hij veldeigenschappen als datatype, unsigned etc over van je manufacturer tabel dus alles is in één keer eigenlijk in orde. Als  het goed is heb je nu iets als:

Stel dat je nu ook nog wilt veranderen wat er gebeurd bij een update of delete dan kun je dit doen in het tabje “foreign keys” onderin. Klik op de tabel waar de relatie invloed op heeft (de “car” tabel dus), dan op het tabje “foreign keys”. Je ziet dan:

Standaard staat alles op “no action”. Als je nu wilt dat bijvoorbeeld alle auto’s verwijderd worden als het merk verwijderd wordt dan zet je hem bij delete op “cascade” enzovoorts.

Je schema is nu klaar. Nou ja, klaar niet maar het voorbeeld laat aardig zien hoe je ermee kunt werken. Wat je nu kunt doen is het schema exporteren als SQL create sript zodat je het direct in je MySQL server kunt uitvoeren en alle tabellen voor je gemaakt worden volgens je model. Dit doe je via “file -> export > forward engineer SQL CREATE script”.

Wat nog leuker is, is de mogelijkheid om je model met een live database te synchroniseren. Hiervoor heb je wel toegang nodig tot de database server vanaf je pc!. Mocht je dit hebben dan kun je via “database -> synchronize model” een connectie opgeven (en opslaan voor later) naar je MySQL server. Hij vergelijkt dan de tabellen in je database en die van je model met elkaar en geeft aan waar ze verschillen. Je kunt dan per tabel aangeven of je het model of je database wilt updaten. Hierna voer je de mutaties uit en synchroniseert hij de tabellen. Enkele opmerkingen hierbij;

  • Maak ALTIJD backups van je te synchroniseren database voor je echt iets doet. In het verleden gebeurde het wel eens dat mijn workbench het een goed idee vond de online database te legen en mijn model volledig in de war te gooien.
  • De te synchroniseren database moet dezelfde naam en collation hebben voor een optimale werking van de syncing.
  • Bepaalde zaken lopen soms iets vreemd. Als je bijvoorbeeld een enum aanmaakt met de values (‘appel’, ‘peer’, ‘ei’) en hem synced dan loopt alles goed maar hij zal blijven proberen iedere keer weer dit veld te syncen. Dit omdat MySQL de spaties tussen de values weghaalt en workbench dus vind dat ze niet gelijk zijn. Leermoment: mocht workbench structureel proberen een veld / tabel te synchroniseren wat hetzelfde lijkt, probeer dan te kijken naar spaties, default values die in MySQL al standaard zijn waardoor hij ze “leeg” laat qua value, collations die afwijken etc.

En nu?
Volgens mij dekt dit aardig de basis hoe je in workbench een model kunt ontwerpen en exporteren. Ga je voor visueel plezier (en overzicht bij complexere schema’s) dan kun je de kleur van de tabel in het overzicht aanpassen. Dit doe je door op de tabel te klikken en dan links het tabje “properties” aan te klikken. De bovenste waarde is de kleur van de achtergrond. Dit kun je zowel voor 1 tabel als voor een selectie tegelijk instellen. Daarnaast kun je “regions” invoeren. Dit zijn kaders met een naam en kleur die je om blokken met tabellen heen kunt zetten om zo bijvoorbeeld alles van het authenticatie-systeem in een apart blok te zetten.

Ik zocht even een goed voorbeeld van de regions zoals je ze kunt gebruiken en kwam dit schema tegen van ECartservice.net. Misschien een beetje “heavy” maar het idee is wel duidelijk lijkt me :)

MySQL workbench downloaden
http://dev.mysql.com/downloads/workbench/5.2.html

ps. Als je van een beetje spanning houdt is het zeker een aanrader om zo nu en dan een alpha of beta versie te downloaden. Deze betekenen vaak weer een berg aan nieuwe mogelijkheden, grafische leukheden etc. Natuurlijk met enige voorzichtigheid doen maar ik ben altijd wel blij met deze pre-releases.

Basecamp project management

Basecamp is projectmanagement in een web2.0 saus, gemaakt door 37signals. Basecamp onderscheidt zich met ontzettend heldere interfaces en groot gebruiksgemak.

Waarom Basecamp
Naarmate Webparking en haar projecten groeide kregen we steeds meer behoefte aan een solide basis als het ging om projecten beheren en begeleiden. Zeker als je met meerdere personen (en partijen) aan een project werkt wordt het al snel een rommeltje in de mailboxen. We gebruikten al een mix van een todolist/projecten systeem en wat lokale data in outlook accounts maar dat voldeed gewoon niet.

Als je dan gaat zoeken naar iets goeds dan kom je al snel tot de conclusie dat er ontelbare hoeveelheden pakketten en diensten zijn. Van enterprise (met CRM erin) tot micro (alleen taken) en met een maandelijks betaalmodel tot open source. We hebben er ontzettend veel getest maar nergens kregen we een echte “click” mee. Tot we bij Basecamp terecht kwamen. We waren, met het gehele team (we zijn nooit zo eensgezind) behoorlijk snel verkocht.

Wat maakt Basecamp zo geweldig
Basecamp is een understatement van eenvoud. Geen knopje of functie extra. Hier en daar wat netjes weggewerkte AJAX maar dat is het dan ook. Heel kort samengevat heb je in Basecamp projecten, milestones en todo’s.

In het kort;
Een project kan milestones (titel, datum en verantwoordelijke persoon) bevatten en één of meer todolists. Een todolist bestaat uit minimaal een naam en optioneel nog wat kleine details. Binnen de todolist maak je todo’s aan en klaar. De stappen zien er allemaal zeer simplistisch uit wat het ook gelijk zo prettig maakt in gebruik:

Milestone maken

Todolist maken

Todo item toevoegen


Wat highlights uit Basecamp

  • Het is ook mogelijk te werken met todolist-templates of zelfs complete project-templates zodat je standaard-taken al gelijk hebt bij het aanmaken van een project
  • Binnen een project kun je niet alleen todo’s plaatsen maar ook message’s en files. Als een klant bijvoorbeeld documentatie stuurt kun je die doorsturen naar een uniek Basecamp mailadres wat een bepaald project vertegenwoordigd.
  • Je komt binnen op je Dashboard waar je gelijk ziet in welke projecten je nog todo’s open hebt staan en je krijgt een overzicht met milestones.

Wat Basecamp zo geweldig maakt (naar mijn idee) is de enorme eenvoud. Waar je in sommige programma’s een tiental seconden nodig hebt om een todo te maken gaat dat hier in minder dan een paar seconde. Zeker als je lijsten met todo’s maakt (bijvoorbeeld als je met een klant een project doorneemt) is dit erg prettig. Daarnaast neemt dit ook een enorme drempel weg. Als het namelijk teveel werk wordt is het makkelijker je taak uit te voeren dan hem te noteren maar je wilt hem het liefst genoteerd hebben zodat je later nog terug kunt zien hoe of wat en eventueel nog opvolging eraan kunt geven.

De kosten
Basecamp biedt een aantal “plans” aan van gratis (1 project en geen filesharing) tot max á $149 (ongelimiteerd aantal projecten en 75 GB opslagruimte). Bij gemiddeld gebruik zit je dus rond de $49 á $99 per maand. Wij concludeerden al snel dat we voor dat bedrag zelf geen open-source pakket konden hosten en onderhouden (lees configureren).

Genoeg enthousiast gesproken: bekijk (en test) zelf Basecamp

Eclipse naar Netbeans

Ooit gestart in DreamWeaver om daarna, omdat het cooler en handiger was, door te gaan naar Notepad2.  Tijdens de groei van PHP/HTML scripting naar Zend Framework development groeide echter de behoefte aan betere ondersteuning voor diverse zaken. Zo begonnen we met versie controle en wilden we ook meer overzicht over de verschillende bestanden en projecten. Onze behoefte een goede Integrated Development Enviroment (IDE) te gebruiken werd groter en groter.

Eclipse PDT
De afgelopen jaren werkten we met ons hele team in Eclipse. Een geweldig programma. Solide en prettig in gebruik. Oke, we zullen niet ontkennen dat we zo nu en dan flinke ruzie hadden met subclipse (voor de versiecontrole) maar meestal was dit onze eigen fout. Het had nou eenmaal een gebruiksaanwijzing als het ging om bestanden hernoemen etc. Verder niets dan lof. Iedere keer keken we vol spanning uit naar de nieuwe versie van Eclipse. Wat voor moois zou er toch weer in zitten, zou de interface sexier zijn geworden etc?

Eclipse naar Netbeans
Het leven was zo eenvoudig, iedereen was gelukkig met Eclipse en er was geen behoefte aan een nieuwe IDE. Tot één van onze collega’s Netbeans installeerden op zijn thuisomgeving om mee te werken. Al snel was hij enthousiast genoeg om het op kantoor te durven opnemen tegen de Eclipse-fans. Niet zonder succes. Inmiddels is er nog maar één iemand bij ons op kantoor die Eclipse gebruikt. De rest is over naar Netbeans.

Waarom Netbeans?
Netbeans heeft dezelfde roots als Eclipse dus de overstap voelt niet erg zwaar aan en vanaf dat moment is het al snel genieten van alle leuke dingen die Netbeans wel goed kan / doet (of in iedere geval doet lijken alsof het goed is) zoals;

  • Instant renaming van PHP namen, classes etc
  • Nagenoeg naadloze SVN integratie
  • Frisse stijl qua schermen en icoontjes
  • Prettige bestuurbaarheid van kleurschema’s
  • Slimme code completion en controle (in zowel PHP als o.a. JS, CSS, HTML)
  • Fijne kleurcodering voor gewijzigde code tov. actuele SVN etc

Samenwerken met Eclipse en Netbeans
Dit werkt prachtig samen. Bij projecten waar we met meerdere mensen aan werken merk je er niets van. Beide zit je gewoon te werken in je gewenste editor en alle data wordt via de SVN prima op lijn gehouden zonder problemen.

Het inladen van oude Eclipse projecten (altijd mijn grootste motivatie om niet over te stappen naar een andere editor) ging eigenlijk te eenvoudig. Gewoon “new project” -> “PHP application with existing sources” en dan even paar kleine configuratiezaken en klaar. Alles inclusief de SVN configuratie. Sterker nog; beide omgevingen werken eigenlijk best goed naast elkaar (als je echt gek wilt doen)

Netbeans grootste gemis?
Wij werken redelijk veel met externe tools om bijvoorbeeld Docblocks te genereren, PHPdocumentor aan te sturen en Doctrine models te genereren. Helaas is dit alles niet mogelijk in Netbeans. Vanuit Eclipse kunnen we deze externe tools aansturen met parameters die betrekking hebben op het actuele project zodat hij automatisch de juiste mappen en namen pakt. Zo lang we hiervoor geen oplossing hebben blijft dit een beetje spijtig. (werk nu met een .bat file die wat dingen doet maar is natuurlijk lapwerk)

Heb al wel zitten kijken naar de mogelijkheden om zelf een Plugin te maken voor Netbeans maar gezien de drukte zal dat er nog even niet van komen.