Cannot use object of type PEAR_Error as array
While trying to improve the new website of CryptoNet by integrating some feeds and xml sitemap, my Ubuntu terminal raised following error while trying to install the sfSitemap2Plugin:
>> plugin installing plugin "sfSitemap2Plugin"
Fatal error: Cannot use object of type PEAR_Error as array in /usr/share/php/symfony_1.1/lib/plugin/sfPearRestPlugin.class.php on line 92
Now we will try to solve this! There are two possible reasons:
- symfony has a problem to raise an error
- the plugin is not compatible with this version of symfony (ie 1.1.1, instead of 1.1.0)
First check the dependencies in the package.xml file of the plugin. Just download the pear package from the plugin page, and extract it to your desktop. Open package.xml. In my case the max version of Symfony had to be 1.1.0, and since I'm using 1.1.1 that could be the problem causing this fatal error message.
Next step is to change these requirements and archive the whole package. Change the Symfony dependency to:
<dependencies>
<required>
<php>
<min>5.1.0</min>
</php>
<pearinstaller>
<min>1.4.1</min>
</pearinstaller>
<package>
<name>symfony</name>
<channel>pear.symfony-project.com</channel>
<min>0.8.1</min>
<max>1.2.0</max>
<exclude>1.2.0</exclude>
</package>
</required>
</dependencies>
Save the file, and make an archive of the package.xml AND the plugin folder (in my case sfSitemap2Plugin-0.0.2). You can archive it to .tar for example. Rename it to .tgz afterwards.
Final step we have to do is install the plugin, with the path to your self-made archive. Get back to your terminal and execute following command (of course you need to change the path according to yours):
symfony_1.1 plugin:install /home/../sfSitemap2Plugin-0.0.2/sfSitemap2Plugin-0.0.2.tgz
In my case I use symfony_1.1 for my Symfony 1.1 commands. Don't forget to change this if you used to using "symfony".
Thanks to Johny_the_french for this solution.
Een nieuwe website
Onze kennis en ervaring wordt op regelmatige, al dan niet dagelijks, bijgewerkt. Daarom laten we onze evolutie graag zien in de nieuwe website versie van CryptoNet.
De vernieuwing beperkt zich echter niet tot de uistraling, maar ook achter de schermen heerst er een nieuwe basis, opgebouwd op de Symfony 1.1 fundamenten.
Deze blog zal in de nabije toekomst volledig geïntegreerd worden in de hoofdsite, om zo als 1 geheel naar de buitenwereld toe te kunnen stappen.
Veel plezier op de nieuwe website, en laat gerust een reactie achter met je bevindingen of tips.
Expanding webdevelopment, webdesign, Xhtml & CSS, SEO knowledge
Since we are currently writing the last lines of code for the new CryptoNet website, we ordered some new books to expand our knowledge for our new big social project, X-Power v4.
The books, ordered at Amazon.com, handle multiple important topics in the sector we are working in: webdesign, webdevelopment, Xhtml, CSS and search optimization. The last term is a broad one, since one of the ordered books is more about webanalytics (Google Analytics). As followed you can find a complete list of the books we should receive on october 9th:
- CSS Mastery: Advanced Web Standards Solutions [Paperback] by Andy Budd
- Textpattern Solutions: PHP-Based Content Management Made Easy (Solutions) [Paperback] by Kevin Potts
- Pro PHP: Patterns, Frameworks, Testing and More (Pro) [Paperback] by Kevin McArthur
- Making and Breaking the Grid: A Graphic Design Layout Workshop [Paperback] by Timothy Samara
- Bulletproof Web Design: Improving flexibility and protecting against worst-case scenarios with XHTML and CSS (2nd Edition) (Voices That Matter) [Paperback] by Dan Cederholm
- The New Rules of Marketing and PR: How to Use News Releases, Blogs, Podcasting, Viral Marketing and Online Media to Reach Buyers Directly [Hardcover] by David Meerman Scott
- Marketing to the Social Web: How Digital Customer Communities Build Your Business [Hardcover] by Larry Weber
- Advanced Web Metrics with Google Analytics [Paperback] by Brian Clifton
- Search Engine Optimization: Your visual blueprintfor effective Internet marketing (Visual Blueprint) [Paperback] by Kristopher B. Jones
- Grid Systems: Principles of Organizing Type (Design Briefs) [Paperback] by Kimberly Elam
- Information Architecture for the World Wide Web: Designing Large-Scale Web Sites [Illustrated] [Paperback] by Louis Rosenfeld and Peter Morville
Reviews on Amazon were positive, so we should get quality for our money. Someone who has already read one of those books?
CryptoNet op vakantie in Corbes
Vermits de boog niet altijd gespannen kan staan, knepen we er even tussenuit en gingen we voor een 9tal dagen naar La Grande Terre in Corbes, nabij Anduze.
De eerste dagen was het weer ideaal om een aantal bezienswaardigheden te bezoeken, waaronder de oude arena in Nimes
Ook Montpellier en Uzes hebben we een bezoekje gebracht. De resterende dagen hebben we onze krachten opgeladen om er nu opnieuw in te kunnen vliegen. Zo is onze nieuwe website bijna klaar, alsook een nieuw project op zijn einde aan het lopen. Ondertussen plannen we ook een volledige vernieuwing in van ons grootste project X-Power.be, één van de grootste Xbox 360 Community websites van de Benelux.
Symfony plugins page provides better overview
The plugin section on the Symfony framework website has been improved...a lot! The problem was, after Symfony 1.1 was released, users couldn't see if a plugin was suitable for Sf 1.1, or only for 1.0.x.
I recently created a Symfony 1.1 project for the new CryptoNet website, for which I needed a couple of plugins to experiment with, such as SIFR and TextReplacement. The plugins weren't ready to install them with the refactored plugin system of Symfony, but I managed to install them manually.
With the reorganised section on the official website, you are able to get a list of all plugins, only those for Sf 1.0.x or 1.1 or 1.2. A nice extra feature is that developers can claim their plugins, so other users can search for all the plugins created by a certain developer.
On the right side in de plugin section one block in particular is sweet, to view the recently updated plugins:
A nice stats block is inserted. At the time of writing, these were the totals:
- 212 plugins
- 106 developers
- 3651 users
Nice improvement guys! I will take a deeper look into the plugins available for 1.1, and make a decision to upgrade or keep working with 1.0.x for a brand new version of X-Power.be.
What do you think of the new layout and function on the plugin page?
10 tips om je productiviteit te verhogen
Een goede structuur, organisatie en planning kan je door een drukke periode helpen. Af en toe nemen we toch teveel hooi op de vork en moeten we taken verschuiven naar de week erop. Indien je dit frequent bij jezelf moet vaststellen, moet je zeker de volgende tien tips even doornemen:
- Doe datgene waar je een passie voor hebt. Je werk zal beter en productiever gedaan zijn, indien je er zelf voor 100% achter staat. Uiteindelijk kan het je iets meer tijd kosten, maar het resultaat op langere termijn zal lonen.
- Werk zoveel mogelijk offline. Verbreek je Internet verbinding, om de productiviteit te verhogen. Uiteraard is dit de dag van vandaag ondenkbaar, zeker als webbedrijf, maar je zou er veel tijd met winnen. Probeer zoveel mogelijk factoren uit te schakelen die je aandacht kunnen afleiden: MSN, Google Talk en andere chatprogramma's. Plan wel rustpauzes in waarin je je favoriete blogs kan gaan lezen. Hou deze tijd goed in het oog en hou je aan het schema.
- Begin eerst aan de zware taken. Start de dag met de moeilijkere taken. Het zal je extra push geven indien deze zijn afgewerkt. Er rest je dan enkel nog de kleine opdrachten, die minder tijd en concentratie vergen.
- Vermijd onnodig werk. Doe werk wat gepland staat en streef naar een vooropgesteld doel. Pak niet zomaar al het werk aan dat tussendoor op je afkomt, tenzij het belangrijk of dringend is.
- Vermijd meetings. Bijeenkomsten moeten gebeuren, maar vermijd dat deze een uitvlucht worden om het werk te laten liggen. Indien een meeting plaatstvindt, zorg dat ze productief is.
- Begin er vroeg aan. Vroeg op de dag beginnen zorgt voor een rustigere omgeving: geen (of minder) telefoontjes of emailverkeer. Je wordt dus minder gestoord en je taken zullen sneller afgehandeld geraken. Daarom ook handig dus dat je de zwaarste taken eerst aanpakt. Bijkomend voordeel voor mensen die een eindje moeten rijden naar het werk: files zijn nog, of in mindere mate aanwezig.Raar maar waar: vertrekt op tijd en kort je (over)uren in. Indien je jezelf minder uren oplegt, ga je je te besteden tijd beter indelen en beter benutten.
- Ontruim je werkruimte ; werk aan één ding. Ontdoe je van onnodige spullen op je bureau. Uiteraard is versiering nodig om een aangenamer atmosfeer op te wekken, maar vermijd zaken die je kunnen afleiden tijdens het werk.Controleer je mail niet elke minuut, werk niet aan verschillende projecten tegelijkertijd, vergeet je website statistieken even en laat je feed reader even dicht. Werk tot je taak voltooid is, en beloon jezelf door even te ontspannen.
- Houd je informatiestroom onder controle. Kuis je rss feeds en nieuwbrief inschrijvingen op, en behoudt enkel diegene die interessante content behandelen. Je zou ervan verschieten hoeveel inkomende informatie je krijgt waar je uiteindelijk niets of weinig aan hebt. Des te minder meldingen op je desktop verschijnen van binnenkomende berichten, des te langer zal je je concentreren op de taak waar je mee bezig bent.
- Sta vroeg op. Onderhoudt je ochtendroutines: lopen, ontbijten, emails ophalen, ... Zet de ochtend goed in met een fris hoofd en je zal meer gedaan krijgen doorheen de ganse dag.
- Pak de belangrijke zaken eerst aan. Dit zijn niet steeds de moeilijkste zaken. De taken die die dag zeker moeten afgeraken, dienen als eerste aangepakt te worden. Je weet nooit of er onvoorziene problemen opduiken, die je tijd kosten.
Ik laat me persoonlijk dikwijls vangen aan het tweede puntje, met name de messenger applicaties. Offline werken gaat uiteraard zeer moeilijk als webdeveloper, aangezien je op regelmatige basis het Internet moet afschuimen voor foutboodschappen of om ideetjes op te doen.
Waar lap jij je laars aan? Of heb je nog extra tips om de productiviteit van morgen te verhogen?
Symfony 1.1 beschikbaar voor gebruik
Het is zover: Symfony 1.1 is gelanceerd als stabiele versie. Tijdens de ontwikkeling, en de verschillende beta en RC releases, zijn er heel wat bugtickets aangemaakt en gesloten geweest, maar is er ook al aan een heleboel documentatie gewerkt. Zo is er ook een belangrijk onderdeel, voor de ontwikkelaars onder ons die graag hun 1.0.x projecten upgraden naar versie 1.1.
Vooral het formulier gebeuren is een groot onderdeel dat ingrijpend aangepast is. Zo kunnen formulieren zeer snel en makkelijk opgebouwd worden, op basis van het databasemodel (schema.xml of schema.yml). Neem gerust de "Symfony Forms Book" even onder de loep om een idee te krijgen over de aanpassingen en nieuwe structuur.
Ik geef graag nog wat extra informatieve links mee (met dank aan Stefan van Symfony-framework.nl) :
Aangezien ik bezig ben met een volledige nieuwe codebasis voor X-Power v4, vind ik het de moeite om dit project te upgraden naar 1.1. De andere (reeds afgewerkte) projecten laat ik nog mooi lopen op de 1.0.x versie. Versie 1.0.17 is trouwens vandaag ook gelanceerd, vergeet dus niet je symfony versie te upgraden.
Neem je ook de stap en upgrade je je project(en) naar versie 1.1 ?
Tips voor web 2.0 registratie formulieren
Een registratie formulier op je website moet er goed uitzien, maar moet vooral qua usability hoog scoren, het is tenslotte zowat de enigste plaats waar je je bezoeker toelaat een onderdeel te worden van je website. Een webformulier dat er onoverzichtelijk uitziet of teveel moeite en tijd vraagt om in te vullen, kan een gebruiker heel snel laten doorstromen naar de website van je naaste concurrent.
De term "web 2.0" wordt al geruime tijd snel in de mond genomen, maar let's face it, het gebruiksgemak dat voortvloeit uit web 2.0 formulieren laat gebruikers toch al sneller op de knop "registreer nu" klikken na enkele informatieve velden ingevuld te hebben. Laat ik hieronder een aantal tips neerpennen die ertoe kunnen leiden om je bezoeker tot een gebruiker te converteren:
- Persoonlijke gegevens die via Javascript kunnen gevalideerd worden, dient te gebeuren na verzenden of bij het invullen ("onChange" op velden zoals email, wachtwoord, ...)
- Velden die gevalideerd kunnen worden via AJAX (beschikbaarheid gebruikersnaam en emailadres) zijn mooi meegenomen
- Bij het verzenden dienen alle foutboodschappen overzichtelijk vermeld te worden, waarbij de aan te passen velden duidelijk afgelijnd worden. Laat de gebruiker dus in 1 stap al zijn fouten verbeteren, niet stap na stap
- Indien een invoerveld verplicht in te vullen is, dient dit duidelijk weergegeven te worden vlakbij het invoerveld
- Leg nadruk op het eerste foutief ingevulde veld, zodat de gebruiker onmiddellijk zijn fout(en) kan verbeteren
- Foutboodschappen dienen goed leesbaar te zijn, en mogen een opvallend kleurtje hebben. Probeer de foutboodschappen zodanig te plaatsen dat de opbouw van het formulier niet naar beneden verschuift
- De achtergrond- en randkleur van een invoerveld dient te veranderen (bij voorkeur naar rood) bij fouten. Je kan de rand (border) wat dikker plaatsen indien de focus hierop staat.
- Lijkt logisch, maar ik vermeld het er even bij: maak gebruik van labels!
Het gaat dus vooral over duidelijkheid naar de gebruiker toe. Een registratieproces moet zo snel en soepel mogelijk verlopen. Een gebruiker die minuten nodig heeft om enkel het registratie formulier in te vullen, zal al gauw zijn browser sluiten of naar een andere website surfen. Iemand die snel door dit proces gaat, zal aangemoedigd worden om ook de rest van de website snel af te schuimen.
Hebben jullie nog tips om een aantrekkelijk formulier te ontwerpen?
Het plaatsen van keywords
Het belang van keywords gaan we hier niet bespreken, maar eerder de plaatsing ervan in een html (gegenereerde) pagina. Er zijn 7 plaatsen die belangrijk zijn voor een optimale indexatie door Google en andere zoekmachines. Deze Search Engines doorlopen de broncode van een html pagina en trachten zelf te analyseren welke woorden en zinnen belangrijk zijn. Je kan hen echter helpen door de meest belangrijke keywords op de juiste plaats te gebruiken:
- Title tag: deze wordt geplaatst in de <head> sectie van je html document.
- Hoofding (h1): plaats een titel in de pagina zelf. Dit is niet enkel positief voor de zoekmachines, maar kan ook een verduidelijking zijn voor de bezoeker.
- Url: een voorbeeld hiervan: mijnwebsite.be/keywords.
- Tekst: plaats je keyword uiteraard ook in de tekst zelf. Dit mag meerdere keren, maar overdrijf niet. Voor een optimaal resultaat plaats je deze best in de eerste 100 woorden van de content.
- Link en anchor text: indien je zelf links plaatst op je website naar de desbetreffende pagina, plaats je keyword in de linknaam en/of achor text, welke een omschrijving geeft van wat er op de gelinkte pagina te vinden is.
- Alt attribute en afbeelding: geef je foto's en afbeeldingen een juist benaming door gebruik te maken van deze keywords. Vergeet ook niet de ALT eigenschap in te vullen op elke afbeelding in je html document.
- Zet je keywords sporadisch in <bold> of <strong> tags.
Uiteraard is het belangrijkste nog steeds dat je kwalitatieve teksten schrijft of plaatst op je website, alsook het regelmatig toevoegen of aanpassen van je content gaat je webstek beter laten resulteren in de zoekmachines.
Integreer Symfony in Eclipse PDT
Symfony Project wordt dagelijks uitgebreid, zowel op gebied van functionaliteit als de community die zich mee op dit open-source framework gooit.
Sinds ik met Symfony werk, zijn de repititieve taken enorm geslonken, en is het programmeren er een heel stuk leuker op geworden. Een goed en uitgebreid framework ter beschikking hebben ligt mee aan de basis van het programmeren, maar daar blijft het niet bij. Een overzichtelijke ontwikkeltool is minstens even belangrijk, aangezien je er uren in bezig bent. Tot op heden heb ik hoofdzakelijk met Zend gewerkt, maar door de integratie met Symfony heb ik Eclipse PDT een nieuwe kans gegeven.
Het is open-source, biedt de typische features en functionaliteiten aan wat je van een IDE mag verwachten. Eclipse integreert ook het WTP platform voor webapplicaties en er zijn een heleboel beschikbare plugins om de IDE uit te breiden of aan te passen.
Voor de Symfony framework gebruikers onder ons is er een schitterende plugin voor Eclipse PDT, namelijk Symfoclipse. De plugin integreert de volgende zaken in de Eclipse IDE:
- Symfony Commando's
- Een YAML editor en validator
Hieronder zal ik een snel overzicht geven hoe je een Symfony project aanmaakt in Eclipse PDT, hoe je de Symfoclipse plugin installeert, en als laatste breng ik nog even een andere handige plugin ter sprake: Clay.
1. Installatie Eclipse PDT
Features:
- Automatische code aanvulling
- Templates
- Class inspection
- Code folding
- Refactoring
Je kan het pakket download op de volgende url: http://download.eclipse.org/tools/pdt/downloads.
Indien je Symfony geinstalleerd hebt als PEAR package
Voeg Symfony toe als een library:
- Open de PHP Navigator
- Rechtsklik op je project
- Selecteer “Configure Include Path”
- Selecteer de “Libaries” tab
- Klik “Add External Folder”
- Navigeer naar “\route\to\PEAR\symfony”
Indien je de Sandbox versie gebruikt van Symfony
Doe de volgende zaken:
- Kopieer je applicatiefolder in de Eclipse Workspace folder
- Voeg een nieuw PHP Project toe
- Kies als Project contents Directory je applicatiefolder
2. Installatie Symfoclipse Plugin
Symfoclipse bevat 2 plugins:
- Symfony Command line plugin
- Symfoclipse YAML editor plugin
De YAML editor werkt bijzonder goed, en zal menig Symfony ontwikkelaar aangenaam verrassen, wegens de automatische YAML validatie. Je kan dit gedeelte van de plugin automatisch door Eclipse laten installeren, door een nieuwe Remote Site in te geven in het Find and install menu : http://noy.cc/symfoclipse.
Indien je de command line functies wilt gebruiken, moet je het Symfony path in je PATH omgevingsvariable plaatsen.
3. Clay: database design hulptool
Onze laatste Eclipse plugin dat we bespreken is Clay, wat een tooltje is om een database visueel te ontwerpen. De mogelijkheden zijn :
- grafisch een database model aanmaken
- een database model maken op basis van een bestaande database
- SQL (DDL) code genereren voor je database
Indien je Clay wilt uitproberen, kan je hier terecht: http://azzurri.jp/en/software/clay/index.jsp


