ZCE 5.3 – Zend Certification: My happy experience

Você pode ler este post em português também.

I’m very happy with the result and with the congratulations received, thank you people.



I wrote here my impression about the test, and what I did to get certified.


  • Calm down, take it easy, the test is not so hard! I think the only important point is that you must be a PHP programmer, using it in day to day, and somehow (at work and/or in your personal projects) being in contact with items as closures, namespaces and OOP in general;
  • Do not leave questions empty! According to Zend’s own staff, is better to make mistakes than show indecision;
  • Surely the test will go beyond the day-to-day which the majority of PHP programmers go. So study a lot. Binary / hex / octal math is a great choice;
  • The test for version 5.3 removed the subject “Differences between PHP 4 and 5”. So do not waste your time studying it;
  • The test is full of pitfalls, so some tricks as:
    $a = function($var)
       $b = "Hello $var";
       return $b;
    $c = $a('Adriano');
    print $c;
    are normal. And if you think this code prints “Hello Adriano” you have a problem… LOL…;
  • Do several readings on Array functions and String functions pages, it will guarantee to you some extra points;
  • There will be approximately one minute and 14 seconds per question. Save time reading the conceptual questions only once. Use the “flag” feature, that allows you to return to a marked question later;
  • You will have one year to perform the test after confirming the purchase of the voucher. It is a long time, so I suggest you make the purchase and schedule the test to force yourself to study with a set deadline. All instructions for the process are very easy (to create an account at PearsonVue, etc.), just make sure that there is a PearsonVue center near to you to perform the test.


An introduction: In 2011 I had a big scare when I bought the voucher and I opened the book Zend PHP Certification Guide 5.3: PHP is much more than almost anything I had read so far. I decided I should try and read a lot! So I chose, bought and read the books contained at the end of this post.

After seeing that I would have much to study, I forgot the test and I launched a deep PHP exploration. I read the books, I tested the code that seemed weird, I did many (but many!) notes, and I did lots of experiences! I admit it was the coolest stage of this whole thing. The PHP website was the best appendix while reading the books.

The reading of the books took me a long time. Almost at the end of 2011, I put all that notes and scribbles in books together and I created a summary, focused now in ZCE. With the summary ready, I did read it again. The points in doubts were revisited. Five days before the test, I splitted all questions and answers in different PDFs, then I did perform the test as a simulation, allowing me only one minute and 14 seconds to answer each question, doing something between 10 and 20 questions per day. The intention was to do a “warming” towards the test.

Between one and another book, I listened to the PHPSPCast podcasts (only in brazilian portuguese, I miss them!). The focus of this podcast is purely PHP, so there are valuable tips for anyone who wants to get the certification. Although I confess some discomfort when I heard that Rafael Dohms did not pass the first time he performed the exam. :-


After this mega-operation to get the “The logo”, I concluded that I overdid at this time: I studied more than really needed, but look: now I’m a much better programmer than before. And I feel myself far from where I would like to be. 😛

The logo - Zend Certified Engineer (PHP 5.3)

"The logo"

I’m newly certified then I really don’t know what be a “ZCE” will bring to me. But I’ve had good news: I won licenses for Zend Server and Zend Studio with this good result. I became part of an exclusive group on LinkedIn, where the discussions have an improved level. My first impression.

About employability, I twist my nose a little bit. Compare with a Microsoft certification: you can compete for a job position with a person who, like you, has over 10 years of experience in software branch. If you have a MCSE and he/she does not, you are ahead, brother. But this conclusion implies the recruiter which is conducting the selection knows what MCSE is. And here lies my concern: do the recruiters and headhunters know about ZCE as they know about Microsoft certifications? I doubt it. So if you want to get a better job, my opinion: I don’t know if the ZCE will works for it. At doubt, do the exam.


  • [Necessary] Zend. Zend PHP 5.3 Certification. Zend Technologies. 155 pages. ISBN unavailable;
  • Shafik D, Ramsey B. Zend PHP 5 Certification. Study Guide. php|architect’s. 259 pages. ISBN: 0-9738621-4-9;
  • Alshanetsky L. Guide to PHP Security. A step-by-step guide to writing secure and reliable PHP applications. php|architect’s. 197 pages. ISBN: 0-9738621-0-6;
  • Sweat J. Guide to PHP Design Patterns. A practical approach to design patterns for the PHP4 and PHP5 Developer. php|architect’s. 338 pages. ISBN: 0-9735898-2-5;
  • [Necessary] Gutmans A, Bakken S, Rethans D. PHP 5 Power Programming. Bruce Perens’ Open Source series. Prentice Hall. 720 pages. ISBN: 0-131-47149-X
  • [Necessary] Williams J, Wichers D. OWASP Top 10 – 2010. The ten most critical web application security risks. Aspect, Mitre, Softtek, WhiteHat. 22 pages. ISBN unavailable.

See you 😉

Posted in English | Tagged , , , , | 9 Comments

Como configurar rotas estáticas no Fedora

You can see this post in english too.

Rotas. A única forma que eu gosto de vê-las:

Sinais e Rotas

Recentemente tiver que realizar um acerto na tabela de rotas de um servidor. Descobri um jeito mais elegante que o abaixo:

touch /etc/rc.d/rc.local
echo "touch /var/lock/subsys/local" > /etc/rc.d/rc.local
echo "route add default gw eth0" > /etc/rc.d/rc.local
echo "route add -net netmask gw eth0" > /etc/rc.d/rc.local

No GNU/Linux Fedora, rotas estáticas podem ser adicionadas em arquivos específicos para cada uma de suas interfaces, localizados em /etc/sysconfig/network-scripts/. O nome do arquivo deve obrigatoriamente ter o formato route-ifname. Então se pretende adicionar uma rota à interface eth0, o nome do arquivo deve ser /etc/sysconfig/network-scripts/route-eth0. Isso é importante, pois um erro aqui não produzirá log em lugar algum.

O formato do arquivo é bem simples, os exemplos abaixo valem mais que a explicação:

#Rota para uma rede: via

#Rota para um host: via

É possível testar suas novas rotas utilizando o comando ifup-routes ifname. Ele adiciona as rotas configuradas nos arquivos acima.


Até 😉

Posted in Português | Tagged , , , | 1 Comment

How to configure static routes in Fedora

Você pode ver este post em português também.

Routes. The unique way I like to see them:

Signs and routes

Recently I had to do a fix inside the routing table of a server. I’ve found out a better and more elegant way than this usual:

touch /etc/rc.d/rc.local
echo "touch /var/lock/subsys/local" > /etc/rc.d/rc.local
echo "route add default gw eth0" > /etc/rc.d/rc.local
echo "route add -net netmask gw eth0" > /etc/rc.d/rc.local

Inside Fedora GNU/Linux, static routes can be added in specific files for each one of its interfaces. These files are located at /etc/sysconfig/network-scripts/. The filename must match the route-ifname format. So if you want to add a route to the eth0 interface, the filename must be called /etc/sysconfig/network-scripts/route-eth0. It’s an important detail because an error naming in this file isn’t able to produce any error/warning log in anywhere.

The file content is quite simple. The examples below worth more than the explanation:

#Add a route to a network: via

#Add a route to a host: via

After done, is possible to test your new routes using the ifup-routes ifname command. It adds the configured routes to the active routes table.


See you 😉

Posted in English | Tagged , , , | 1 Comment

Fedora installed IN the USB stick

Você pode ver este post em português também.

“Long time no see, blog” 😉

Daniel Faraday - Long time no see

Daniel Faraday - Long time no see

For a while I tried to use the XFCE Spin from Fedora as an alternative to continue on GNU/Linux and keep the corporate laptop without changes in your default settings. Upset with the performance of the Live ISO, I decided to do the OS installation directly on the USB stick.

The difference, at performance at all, is impressive. If like me, you do want to have a distro ready to allow you keep working even on a PC other than your own, forget the LIVE versions and install the OS directly on the USB stick. Works like a glove, you will have better impression and will get a better user experience than with the previous option.

The only problem I had was that during this process I discovered what might be a bug in the E6420 Latitude models of Dell: If you disable the hard disk through the BIOS your CD/DVD won’t be able to perform a boot, so it only will be possible from an USB. The strange thing is that only just enabling the hard disk makes the CD/DVD be able to dispatch the boot again. In these situations I like to turn off the hard disk to prevent any unwanted change during the install.Fedora USB Stick

The installation was finally done with two USB sticks: on the first of them I installed a LIVE version, I did the boot with the two USB drives connected and after the whole boot process I used the icon “Install on Hard Disk” to install the OS on the second USB stick. With everything working OK, I enabled the hard disk in BIOS again.

The laptop will keep the programs and settings within the corporate standards and I’m able to work happily in an OS I’m more productive.


See you! :-).

Posted in English | Tagged , , , , , | 1 Comment

Fedora instalado NO pendrive

You can see this post in english too.

“Long time no see, blog” 😉

Daniel Faraday - Long time no see

Daniel Faraday - Long time no see

Por um tempo tentei utilizar o XFCE Spin do Fedora como uma alternativa para continuar no GNU/Linux e manter o laptop corporativo sem alterar qualquer configuração padrão. Chateado com a performance, resolvi realizar a instalação do SO diretamente no pendrive.

A diferença de performance impressiona. Se como eu, pretende ter uma distro mais ou menos pronta para permtir a continuidade de seu trabalho mesmo em um PC que não o seu, esqueça as versões LIVE e faça a instalação do SO no pendrive. Funciona como uma luva, vai causar melhor impressão e proporcionar uma experiência de uso bem melhor do que a opção anterior.

O único problema que tive foi que durante este processo descobri o que pode ser um bug nos modelos Latitude E6420 da Dell: Se você desabilitar o HD na BIOS seu drive de CD/DVD não vai ser capaz de realizar boot algum, ou seja, só será possível a partir da USB. O estranho é que o simples fato de ligar o HD novamente torna o drive de CD/DVD capaz disso. Nessas situações eu desligo o HD para prevenir qualquer alteração indesejada durante o processo de instalação.Fedora USB Stick

A instalação foi finalmente possível com dois pendrives: Instalei a versão LIVE em um, realizei o boot com os dois pendrives ligados e ao término do boot utilizei o ícone “Install on Hard Disk” para instalar o SO no segundo pendrive. Com tudo funcionando, liguei o HD na BIOS de novo.

O laptop permanecerá com seus programas e configurações dentro do padrão corporativo e eu poderei trabalhar feliz num SO onde sou mais produtivo.


Até! :-).

Posted in Português | Tagged , , , , , | 1 Comment

10 dicas estúpidas para o MySQL

You are able to see this post in english too.


O post deste mês traz 10 dicas estúpidas para o dia-a-dia com o MySQL. Lá vão elas:

  1. Utilize um arquivo .my.cnf em sua homedir com dados de user/senha:
  2. Termine os comandos com G ao invés de “;”: Isso lhe dará uma visão “form” ao invés de tabular. Necessário muitas vezes;
  3. Visões materializadas: Quando as Views não oferecerem a performance esperada, utilize triggers para alimentar tabelas que lhe servirão como views. Utilizando este recurso com cuidado, teste e documentação, ajuda bastante!
  4. Cuide do parâmetro ENGINE de seus bancos e tabelas: Escolha o melhor considerando a relação de R/W entre elas;
  5. Personalize o prompt do MySQL no arquivo .my.cnf de sua homedir. O exemplo abaixo mostrará "MySQL:db_exemplo>". Existem também os parâmetros u para o user e h para o host:
  6. Uma vez no prompt do MySQL, CTRL+A te leverá ao início da linha, CTRL+E ao final.
  7. Para criar uma tabela t2 com a mesma estrutura da tabela t1:
  8. Para criar um usuário e dar acesso numa única linha:
    GRANT ALL ON db_name.* TO 'username'@'host' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
  9. Gerar um arquivo CSV a partir do shell (melhor que OUTFILE pois leva o nome das colunas também):
    mysql -AD dbname -e "Seu SELECT aqui;" | tr "t" ";" > resultset.csv
  10. Agora a última, mas não menos estúpida. Exibir as queries em execução (o parâmetro FULL é opcional):

Memorizá-las tornará seu dia-a-dia com o MySQL mais fácil.

Até a próxima!!

Posted in Português | Tagged , , , , , | 3 Comments

10 stupid tips for MySQL

Você pode ler este post em português também.


The April’s post brings 10 stupid tips for day-by-day work with MySQL. Let’s see them:

  1. Use a .my.cnf file in your homedir with user/password data:
  2. End your commands with G instead of ";": This will bring a “form” view instead the normal tabular view. This is necessary a lot of times;
  3. Materialized views: When the regular views (created with CREATE VIEW) doesn’t offer the expected performance, use triggers to feed tables that could work like the regular views. Being carefull, it helps a lot!
  4. Take care of the parameter ENGINE of your databases and tables: Choose the best considering the R/W relation of the tables;
  5. Adjust your MySQL prompt to your best fit at your .my.cnf in your homedir. The example below shows "mysql:db_name>". There are also the u (to show the username) and h (to show the hostname):
  6. At your mysql prompt, CTRL+A brings you to the begin of the line. CTRL+E brings you to the end;
  7. To create a t2 table with the same structure of t1 table:
  8. To create a user and give its access in one line:
    GRANT ALL ON db_name.* TO 'username'@'host' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
  9. To generate a CSV file from the shell (better than OUTFILE ’cause this below shows the column names):
    mysql -AD dbname -e "Your SELECT here;" | tr "t" ";" > resultset.csv
  10. And the last, but not least (stupid). To show the queries in execution (the FULL parameter is optional):


Memorize them and your day-by-day with MySQL will be easier.

See you!

Posted in English | Tagged , , , , , | 1 Comment