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


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.