Minhas ferramentas de trabalho – Parte 1

victorinox-presentation-master-1339183474469_1920x1080

victorinox-presentation-master-1339183474469_1920x1080

Cada desenvolvedor possui aquelas ferramentas que mais amam, alguns devido a recomendação de outros profissionais, já outras por afinidade. Nesse post vou listar algumas das ferramentas que utilizo no meu dia a dia.

1 – Sistema Operacional

Sem sombra de dúvidas eu uso linux tanto no trabalho como no dia a dia. Ultimamente tenho usado fortemente o ubuntu, porem gosto muito do debian, ambos sistemas operacionais são muito bons: estabilidade, leveza, facilidade no gerenciamento de pacotes, dentre outros mil motivos. Minhas experiencias com windows nao são das melhores, pior ainda com o windows 8, que neste ultimo tive dificuldades até para desligar, onde tive que pesquisar na web como realizar o procedimento, não sei se nesse caso o erro foi meu, por não conhecer o sistema ou da microsoft por dificultar as coisas  “fico com a ultima” :D.

2 – IDEs

Quando inicie, utilizei por muito tempo o netbeans, que por sinal é uma excelente IDE, tempos depois comecei a trabalhar com java e como consequência também adotei o eclipse, outra IDE muito boa. Já para python sempre utilizei o eclipse com pydev, que é sensacional, no entanto nem toda maquina supre as necessidades de hardware para manter muitos softwares pesados aberto, foi nesse meio termo que resolvi buscar algo mais leve que suprisse pelo menos minha necessidade para trabalhar com python, foi ai que conheci o sublime text, no início não fui muito com a cara dele, me pareceu algo amador, entretanto ao conhecer o poder dele fiquei surpreso, logo instalei alguns plugins e modifiquei algumas configurações e tudo passou a ficar lindo, fiquei maravilhado e agora faz parte do meu canivete suíço, hoje em dia tenho apenas o eclipse e sublime text como editores.

3 – Terminal

Muitos acham programadores loucos por preferir mais a linha de comando do que interface gráfica, conheço alguns que até gravar cd/dvd pela linha de comando, não sou desses, mas terminal hoje é um componente obrigatório na minha vida profissional.

4 – Git

Trabalhei um bom tempo sem utilizar nenhum controle de versão, comecei a ver vários programadores mais experientes falandoe resolvi então pesquisar sobre o assunto, meu primeiro contato não foi dos melhores, tive bastante dificuldade, até porque nunca tinha utilizado nenhum software para controle de versão. Porém logo depois que acostumei, fiquei maravilhado com o poder do danado. Já hoje em dia, não digito nenhuma linha de código sem ele e até fico doente ao trabalhar em um projeto que não esteja versionado.

Nos próximos post falarei sobre mais ferramentas e dedicarei um, exclusivamente para falar sobre navegador.

Configurando o Doctrine no Zend Framework 2

Doctrine é um framework para mapeamento objetos relacionais(ORM) escrito em php, bastante similar ao hibernate que é um orm muito popular na linguagem java, e para quem conhece este último não terá dificuldades ao trabalhar com o doctrine. Como no zend 2 o processo de instalação ficou muito mais fácil do que nas versões anteriores, a instalação e configuração do doctrine no seu projeto não será de grandes dificuldades.

Baixando o doctrine

O zend implementou na sua nova versão um gerenciador de dependências chamado composer, o que tornou a inclusão de biblioteca de terceiro muito prática, e para baixar o doctrine iremos solicitar que o composer faça o trabalho pesado, nesse caso devemos apenas modificar o arquivo composer.json e localizar a linha onde temos o objeto required, conforme exemplo demostrado logo abaixo:

No exemplo acima apenas temos como dependência o php e o zend, entretanto nosso objetivo nesse momento é utilizar o doctrine, para isso vamos instruir ao composer da necessidade do doctrine no nosso projeto.

Agora vamos solicitar ao gerenciador de dependências para que baixe o orm e todas suas dependências, conforme o código abaixo:

O resultado deve ser algo parecido com a imagem logo abaixo.

baixando_dependencias_doctrine

Saída após baixado o doctrine e suas dependências pelo composer

Se tudo correu bem, o doctrine já está pronto para uso, nesse momento devemos apenas realizar as configurações para que possamos utiliza-lo na nossa aplicação.

Configurando o doctrine para trabalhar com Zend Framework 2

O doctrine possuí dois módulos para trabalhar com o zend 2, que devemos adicionar ao nosso projeto, edite o arquivo de configuração config/application.config.php e adicione as linhas referentes aos módulos do orm.

Após adicionado os módulos anteriores, devemos configurar o acesso a base de dados, para isso criaremos um arquivo denominado database.global.php dentro da pasta config da nossa aplicação e adicionar o seguinte código nele:

O exemplo acima não é uma regra obrigatória, você pode optar por adicionar esta configuração junto as da suas entidades, opto por esse modelo pois utilizo configurações especificas no meu ambiente de desenvolvimento e outra no ambiente de produção, e para sobrescrever estas regras, apenas basta criar um novo arquivo denominado database.local.php informando as configurações do seu ambiente de desenvolvimento. Enfim, nesse momento nos resta apenas instruir ao doctrine onde localizar nossas entidades, para isso iremos modificar o arquivo de configuração do módulo application no diretório /module/Application/config/module.config.php, nele devemos adicionar as configurações necessárias para localizar nossas entidades, adicione o seguinte código no final do array de configuração do seu módulo.

Observação importante, nota-se que na configuração de acesso as entidades do doctrine é informada a constante __NAMESPACE__, entretanto no nosso arquivo de configuração não é especificada a sua namespace, sendo assim, devemos adicionar no início do arquivo de configuração do módulo o seu respectivo namespace.

Nesse momento o orm já esta configurado, iremos apenas criar uma simples aplicação para atestar o seu funcionamento.

 Mapeando nossa primeira entidade

Neste momento o doctrine já está devidamente configurado, porém iremos criar uma simples entidade para fechar com chave de ouro.

Criando a tabela usuarios.

Após criado a tabela iremos criar nossa primeira entidade. Crie uma pasta Entity dentro do diretório modules/Application/src/Application/ caso ainda não exista, após criada a pasta temos agora que criar a classe Usuario para mapear nossa tabela no banco de dados.

Não abordarei mutos detalhes sobre o doctrine neste artigo para que o mesmo não fique muito extenso, nesse momento apenas explicarei a sua instalação e configuração no Zend Framework 2. Nota-se que a classe Usuario apenas possuem atributos com seus respectivos métodos getters e setters, cada atributo representa seus respectivo atributos no banco de dados.

Consultando os registros da tabela usuarios com o doctrine

Enfim, nesse momento iremos apenas realizar uma consulta pra fechar com chave de ouro, dentro da sua action realize o procedimento como no código exemplificado abaixo.

Caso não seja lançada nenhuma exceção é sinal que o orm está funcionando corretamente.

Obs: O doctrine exige que a pasta data da sua aplicação possua permissões de escrita.

Instalando e configurando o Zend Framewok 2

zf2-logo-small

O zend 2 trouxe diversas melhorias, dentre elas estão: adoção do composer como gerenciador de dependências, git como controle de versão oficial do projeto, injeção de dependências, dentre outras novidades. A mudança mais notada foi com a adoção do composer para gerenciamento de dependências do projeto, não é mais necessário baixar os fontes e inclui-los  manualmente na sua aplicação, “a não ser que você goste de dificultar as coisas”.

Agora vamos colocar a mão na massa. 😀

Habilitando o modulo rewrite do apache

Quem utiliza distribuições como CentOS ou Fedora o módulo rewrite já vem habilitado por padrão, entretanto distros derivadas do debian este módulo nem sempre vem habilitado, para habilita-lo basta digitar o seguinte comando no terminal:

Para que o módulo entre em funcionamento é necessário reiniciar o apache.

Esse tal de git

O git é um sistema de controle de versão distribuído desenvolvido por ninguém menos que Linux Tovalds, bastante difundido na área de desenvolvimento de software, presente em muitos projetos de grande porte, dentre eles o próprio php e o Kernel Linux. O git não é um componente obrigatório para instalação do Zend Framework, porém extremamente recomendado para baixar o esqueleto da aplicação e quem sabe você habituei a utiliza-lo nos seus projetos “Tenho certeza que não se arrependerá”. Entretanto caso você opte por não utilizar, basta baixar o projeto diretamente no github. No nosso caso, como lidamos com o git no dia a dia, faremos da maneira mais indicada que é utilizando o sistema de controle de versão, para isso precisamos realizar a instalação do mesmo, caso ainda não possua basta digitar o seguinte comando no terminal.

Baixando a aplicação esqueleto do zend

O projeto esqueleto do zend é uma aplicação com as configurações básicas do framework, incluindo todas estruturas de pastas e pré configurações para termos um ponto de partida.

No exemplo acima acessamos a pasta root do apache e baixamos o projeto esqueleto nomeando a pasta como zend, caso o último parâmetro referente ao nome do projeto seja omitido o git assumira o nome do projeto a ser clonado,  que no nosso caso é ZendSkeletonApplication. Apesar de ter baixado o projeto esqueleto o core do zend não vem embutido no mesmo, esse como o próprio nome diz é apenas um esqueleto para que não se perca tempo realizando as configurações iniciais.

Gerenciador de dependências no php? nunca ouvi falar

Quem possui familiaridade em outras linguagens como Java, Python, Rubi provavelmente já deve conhecer algum gerenciador de dependências, entretanto no âmbito do php isso é uma novidade, porém é outra ferramenta extremamente produtiva e recomendada, ao baixar o zend Skeleton Application o gerenciador de dependências composer já vem incluído dentro da aplicação com um arquivo composer.phar que é o gerenciador de dependência em peso e outro composer.json que é onde são definidas quais as dependências deve ser satisfeitas.

Antes de baixar as dependências do nosso projeto, vamos atualizar o composer pois como esse já vem incluída dentro do esqueleto nem sempre representa a última versão, para isso acesse a pasta que foi definida ao clonar o projeto e vamos atualizar o composer digitando o seguinte comando:

Após a atualização vamos baixar as dependências necessárias para o perfeito funcionamento do zend framework.

O resultado deve ser parecido com a imagem logo abaixo.

composer_instalando_dependencias

Nesse momento já temos nosso projeto devidamente funcionado, para finalizar com chave de ouro, iremos apenas configurar o virtual hosts no apache, afim de simular no nosso ambiente de desenvolvimento as mesmas configurações do ambiente de produção.

Configurando o virtual hosts

O processo de configuração do virtual host é muito simples, basta criar o arquivo com o nome a ser escolhido por você no diretório /etc/apache2/sites-available/nome_do_host, no nosso caso utilizaremos o nome zend, após criar o arquivo basta edita-lo e adicionar o seguinte código.

No nosso caso assumimos que a pasta onde contém o projeto esqueleto está no diretório /var/www/zend e o domínio no qual utilizaremos para acessar o projeto será zend.localhost, ambos são de livre escolha do leitor.

Nesse exato momento precisamos apenas realizar mais 3 passos para que nossa aplicação esteja devidamente configurada, o primeiro é criar um link simbólico na pasta /etc/apache2/sites-enabled/zend apontado para o arquivo /etc/apache2/sites-available/zend, esse passo poderia ser contornado caso tenhamos criado o arquivo diretamente dentro da pasta /etc/apache2/sites-enabled/, porém optei por seguir esses passos afim de familiarizar o leitor com as configurações de virtual hosts utilizada nos servidores de produção.

Obs: Caso esteja utilizando o centos provavelmente você não encontrará a pasta sites-available e muito menos a pasta sites-enable, nesse caso você pode inserir a configuração do virtual host diretamente no arquivo de configuração do apache, preferencialmente no final do arquivo /etc/httpd/conf/httpd.conf.

Ainda nos resta mais 2 passos que são adicionar o subdomínio do zend.localhost no arquivo hosts, para isso basta adicionar a seguinte linha no final do arquivo /etc/hosts.

Por fim precisamos apenas reiniciar o apache.

Nesse momento a instalação do Zend 2 já foi concluída,  basta acessar o endereço zend.localhost no seu navegador, o resultado deve ser parecido com a imagem logo abaixo.

zend2_funcionando

Quando devo comentar meu código?

Comentários nem sempre são a melhor solução

Enquanto um comentário pode salvar muitas horas de trabalho, outros mil pode ocupar ainda mais tempo, antes de comentar um código veja as considerações abaixo:

Tenha em mente que, quem lê seu código é um desenvolvedor então evite barbaridades como:

Opte sempre pela refatoração ao invés de comentários:

Apesar do código acima, mesmo sem os comentários já seja auto-explicativo, seria mais viável refatora-lo, conforme exemplo abaixo:

Quanto mais antigos forem os comentários do seu código maiores são as chances dele não descrever exatamente o seu objetivo. Uma característica comum na maioria dos softwares são a capacidade de mudança, da mesmo forma que o software evoluí, o código fonte tem que acompanhar essas mudanças, nesse caso, os comentários nem sempre conseguem seguir o mesmo ritmo.

Segundo Robert C. Martin em seu livro Código limpo, Habilidades praticas do agile software.

Comentários imprecisos são muito piores do que nenhum. Eles enganam e iludem; deixam expectativas que jamais seriam cumpridas, citam regras antigas que jamais serão cumpridas, cita regras antigas que não precisam mais ou  não deveriam ser seguidas.

Outro ponto que deve levar em consideração é que; sempre que precisamos comentar o nosso código estamos tentando descrever algo que está incompreensível a qualquer ser humano :D. Então opte sempre pela refatoração como primeiro passo para descrever seu código e deixe os comentários para quando precisar notificar sobre algo que não seria possível expressar no seu código. Alguns exemplos são:

Péssimo

Abaixo segue uma implementação um pouco melhor já sem os comentários:

O exemplo acima ficou um pouco mais claro, porém ainda esta ambíguo  Data de entrada de que?, de quem? As perguntas anteriores podem martelar na sua cabeça, então devemos melhorar um puco mais a nomenclatura para que fique totalmente compreensível.

Vejo em muitos códigos fontes comentários para sinalizar o fechamento de chaves.

Irei apenas provocar a opinião de vocês sobre comentar ou não fechamento de instruções com três questões fundamentais:

  • Seu código possui indentação apropriada ?
  • Seu código possui mais de três níveis de instruções aninhadas ?
  • Possuí métodos ou funções com mais de 20 linhas?

Quando devo comentar?

Utilize os comentários quando necessita expressar algo que o seu próprio código não consiga fazer, ou seja, utilize os comentários para fazer notificações, relatar sobre bugs, dentre outros.

Desenvolvimento web por onde começar ?

Muitos me perguntam por onde começar, o que deve conhecer, e quanto tempo demora para se tornar um desenvolvedor web, alguns até arriscam dar alguns passos mas logo vem a limitação devido a falta de orientação para saber qual caminho trilhar. Vendo estas necessidades, escrevo este breve artigo para sanar as dúvidas de quem deseja iniciar com desenvolvimento web.

Não tente abraçar o mundo

É muito comum para quem deseja iniciar o aprendizado querer aprender tudo ao mesmo tempo, nunca faça isso, pois ao invés de ajudar acaba prejudicando, devido a rota de aprendizagem não ser como esperado e acaba tornando o aprendizado tedioso.

Dê um passo de cada vez

Comece sempre por tarefas básicas, se você já quer construir um website como o g1, tenha calma, uma hora você chega lá, inicie primeiro com o famoso “Olá mundo!” e vá evoluindo.

Não fique só na teoria, parta para prática

Não adianta você comprar dezenas de livros, ler todos eles e não praticar o que foi abordado no mesmo, na área de desenvolvimento teoria é importante, porém a prática é imprescindível.

Por onde iniciar ?

Já vi muitos casos de pessoas que querem iniciar com construção de websites começar a estudar alguma linguagem de programação, porém é necessário mostrar as páginas bonitinhas ao usuário e isso não é a linguagem de programação em si que faz e sim a linguagem de marcação html e css.

Inicie primeiramente na parte de exibição das páginas, comece por html e css depois de expert no assunto, tente replicar os sites que você acha legais, somente para fins de didática. Após conhecimento vasto em html e css parta para linguagens de script e dê vida as suas páginas, uma boa pedida seria estudar javascript e posteriormente algum framework como pro exemplo: jquery, prototype, mootools. Recomendo utilizar jquery pois tem uma rota de aprendizado muito rápida e se você já tiver familiarizado com css, tornará mais fácil ainda desenvolver utilizando está ferramenta.

Segundo wikpédia um framework, em desenvolvimento de software, é uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica.

Segundo os meus conhecimentos, um framework nada mais é do que recursos prontos que você pode utilizar sem ter a necessidade de cria-los acelerando o desenvolvimento e garantido a estabilidade do seu software.

Já tenho conhecimento nas linguagens indicadas para começar, qual caminho trilhar ?

Já tendo conhecimento nas linguagens mencionadas acima, é preciso agregar recursos ao seu site e para isso é necessário alguma linguagem de programação server side , ou seja, lado servidor, para isso recomendo a utilização de php ou python devido a estas linguagens serem mais fáceis de aprender e também o mercado de trabalho é muito amplo. Também é essencial que você conheça algum SGDB ( Sistema gerenciador de banco de dados) e aprenda a trabalhar com este em sua linguagem de programação server side favorita.

Já conheço tudo que foi indicado neste artigo, agora já sou um desenvolvedor ?

Mais um pouco de calma, com os conhecimentos acima, você já é capaz de trabalhar na criação de sites e já pode começar a ganhar um dinheirinho com desenvolvimento front-end, porém ainda não da pra ser um desenvolvedor back-end. Será preciso adquirir um pouco mais de conhecimentos para tornar um desenvolvedor, são estes:

  • Programação orientada a objetos
  • Controle de versão (Git ou Svn)
  • SGBD(Mysql ou Postgresql )
  • TDD (Desenvolvimento dirigido a testes)
  • Padrões de projetos
  • Servidores ( Instalação e configuração do ambiente web )

Achou que deve aprender muita coisa ?

Não se preocupe, com experiência nos itens principais, os demais conhecimentos fluirão sem muito esforço e cada vez mais o aprendizado de outras tecnologias se tornará mais fácil e prazeroso.