Pular navegação

Category Archives: Programação

Estou fazendo minhas primeiras excursões em Python.  Realmente é uma linguagem bastante suscinta e também muito elegante.  Descobrir o jeito “pythonico” de fazer as coisas, especialmente para nós que viemos de outras linguagens como Java, chega a ser revelador (Não é raro se ter alguns momentos do tipo: Puxa, só isso!).

Como novato querendo aprender a mexer em Python, vou relatar aqui meus progressos.  Basicamente o objetivo é anotar para eu mesmo me lembrar, mas se puder ajudar a mais alguém, sem dúvida será bom.

Enfim, chega de papo.  Estou montando uma solução para criação e transferência de arquivos compactados entre dois hosts.  Eu poderia implementá-la em Java, Shell ou mesmo PHP sem problemas, mas optei por Python justamente para me forçar a aprender um pouco mais.

A primeira coisa que precisei foi apenas criar arquivos zip.  Em Python é bastante simples:

>>> import zipfile.ZipFile
>>> meuzip = ZipFile('arquivo.zip', 'a')
>>> meuzip.write('conteudo.txt')
>>> meuzip.close()

Neste código, ZipFile é a classe que manipula arquivos compactados, arquivo.zip é o nome do arquivo no qual os demais serão adicionados (neste caso, apenas o arquivo conteudo.txt que está no mesmo diretório).  O segundo parâmetro do construtor da classe (‘a’ppend) é um flag bem no estilo dos flags de manipulação de arquivos em C.

Ao fechar o arquivo depois de gravar, se você vir o diretório corrente, lá já estará o arquivo.zip recém-criado.

Simples, não!?  E o que é melhor: nada dos chatos streams de Java. 😛

Para mais informações, não deixe de ler a documentação do módulo zipfile do Python.

A Maneira de Testivus

Em algum tempo remoto, exploradores perdidos numa excursão ao Himalaia fizeram uma descoberta surpreendente.  Num ambiente peculiar dentro de uma antiga caverna, encontraram, entre outras coisas, um inusitado livrinho velho e desgastado, contendo dizeres de sabedoria ancestrais.  Ao longo dos tempos, tais ensinamentos perduraram e, qual a surpresa ao ver-se que ainda podem ser diretamente aplicados até em ambientes de desenvolvimento de software modernos.

Você confere uma réplica (recuperada, digitalizada e agora traduzida para o português) deste pequeno livrinho, intitulado “A Maneira de Testivus”, para download aqui.  Você pode ver mais referências sobre este antigo livrinho aqui.

Boa leitura!

Codificação de caracteres é talvez o problema mais comum para quem está iniciando no CakePHP.  Os “sintomas” podem ir desde simplesmente da exibição de caracteres estranhos (como quadrados ou interrogações) onde deveriam estar caracteres acentuados, até a não exibição de certos registros em listagens, por exemplo.

Entendendo o problema

A codificação de caracteres mais primitiva é a chamada codificação ASCII.  ASCII é uma codificação de 7 bits, ou (27) 128 caracteres.  Essa quantidade de caracteres é mais que suficiente para representar as letras do alfabeto inglês em maiúsculas e minúsculas (de a-z e de A-Z, ou 52 caracteres no total), os dígitos de 0-9, alguns sinais de pontuação (como .;:?!@#$%&, e outros) além de alguns caracteres não imprimíveis para funções de controle (como quebras de linha, tabulações, espaçamento, fim de arquivo, etc).

Read More »

Ao longo do ano de 2008 tive meus primeiros contatos com o framework CakePHP e foi amor à primeira vista!  O GWOO diz que “depois de começar no CakePHP você não vai mais querer parar”, e isso faz muito sentido para mim! :-P.

Fiz algumas apresentações sobre esta sensacional ferramenta durante o último ano.  Na Semana Acadêmica da Faculdade ESAMAZ, no PHP Pattern do Fórum Paraense de Software Livre e na Semana Paraense de Informática.  Os slides são um pouco antigos (antes do lançamento oficial da versão 1.2) mas ainda válidos como palestra introdutória e acho que é importante disponibilizá-los aqui por referência.

Os slides estão disponíveis para visualização e download no Slideshare. Confira!

Um breve guia relacionando os passos para se tornar um “expert” em CakePHP.
Traduzido do original em: http://teknoid.wordpress.com/2009/02/04/12-step-program-to-get-addicted-to-cakephp/

Passo 1. – Abandone seus velhos hábitos

Tendo você ou não ótimos hábitos, a familiaridade com diversos outros frameworks, ou de fato até nenhuma experiência… ainda assim será muito benéfico para você abrir sua mente e experimentar o modo “Cake” de fazer as coisas.  Você pode não concordar, você pode não gostar, mas se você quiser vislumbrar o poder do CakePHP, ponha seus conhecimentos prévios de lado por um instante e tente entender porque as coisas são feitas da forma que devem ser feitas.  No fim das contas, você deverá concordar, gostar ou mesmo começar a se sentir um pouco mais por dentro dos novos paradigmas e das novas oportunidades que se abrirão a você como desenvolvedor.

“É muito mais fácil criar uma obra de arte em uma tela em branco do que pintar sobre algo que alguém já começou.”

Passo 2. – Ler a documentação ajuda muito

Volta e meia chego a ouvir que a documentação do CakePHP “não presta”.  Pessoalmente, eu acho que isso não poderia estar mais longe da realidade (mas vamos focar no assunto).  O novo manual em http://book.cakephp.org – chamado de “The Book” (“O Livro”) ou “Cookbook” (“Livro de Receitas”) – está melhor do que nunca.  E o que é mais importante é que ele é fruto de um trabalho coletivo da comunidade.  Qualquer parte do livro pode ser editara e você mais do que ninguém é convidado a contribuir e melhorar a documentação como bem quiser.  Seja corrigindo erros de ortografia, incluindo algum código de exemplo ou esclarecendo alguma explicação, tudo conta e não há nada que não seja importante de ser colocada no framework.  Em outras palavras, se você encontrar um problema ou algo faltando, você tem o poder para melhorá-la você mesmo.

Passo 3. – Entre na lista de discussão (Google Group)

O CakePHP é uma comunidade bem abrangente, atuante e colaborativa: http://groups.google.com/group/cakephp-pt.  Entre na lista, poste suas dúvidas quando você estiver engatado em alguma coisa para obter ajuda de outros usuários.  Participando da lista, você não só tem a chance de trocar conhecimento com outras pessoas (o que, no mínimo, é uma boa sensação), mas também de aprender um pouco mais apenas lendo as mensagens e possivelmente ajudando nos problemas que os outros estejam tendo.

(N.T.: Se o idioma inglês não é problema para você, participe também da comunidade internacional do CakePHP em http://groups.google.com/group/cake-php)

Passo 5. – Entre no amigável canal IRC da comunidade

Para coisas em geral, o CakePHP tem um canal IRC (#cakephp na rede irc.freenode.net) excelente e bastante ativo, o que é perfeito para quando você precisar de algum suporte em tempo real.  Além de bastante amistoso e colaborativo, o canal também é um ambiente de bastante descontração e certamente pode ser usado como uma ótima ferramenta de aprendizado para aprofundar seus conhecimentos.

Passo 5. – Comece a programar, logo

Toda a leitura e preparativos são incentivadas, mas a parte mais importante para entrar de fato no mundo do CakePHP é sentar e começar a programar nele.  Mesmo se você simplesmente seguir o tutorial do blog.  Mesmo se você não tiver segurança se a abordagem que está seguindo é a melhor.  Programar é algo que envolve melhoramentos constantes e refatoração é mais uma parte natural da vida de um desenvolvedor.  Quanto mais cedo você começar, mais cedo você estará se aprimorando.  Talvez não precisasse se dizer, mas é claro que você pode não conseguir fazer um bom bolo a menos que você tente realmente pôr a mão na massa.

Passo 6. – Fique íntimo da API

No momento em que escrevia este artigo, o CakePHP tinha acabado de ganhar uma nova API (apenas alguns dias atrás), graças a Mark Story e outros colaboradores.  Sim, ainda há uns poucos ajustes a serem feitos, mas a API é uma ferramenta indispensável para qualquer desenvolvedor.  Ela pode lhe parecer um pouco indimidadora no início, mas é bom você se acostumar a ela e aprender a gostar dela.  A API é a resposta definitiva para muitas de suas perguntas sobre o desenvolvimento com CakePHP.  Seguir em frente para compreendê-la pode até ser um pouco difícil no começo, mas vale muito a pena no fim das contas.

Passo 7. – Apaixone-se você também pelos casos de teste

Existe alguma coisa melhor para um desenvolvedor do que a API do CakePHP?
De faro, há os casos de teste.  Os casos de teste principais (aos que me refiro aqui), cobrem cerca de 90% de todo o código do framework.  Eles lhe mostram cada pequeno detalhe sobre como usar este ou aquele método no CakePHP e depois de dedicar seu tempo no Passo 6, dar uma olhada nos casos de teste irá melhorar em muito o seu grau de conhecimento.

Passo 8. – Submeta um artigo para o Bakery

Agora você está quase lá… pode ser que você tenha tido dificuldade em algum ponto ou outro, mas deve tê-los superado.  É o momento perfeito para compartilhar sua experiência com a comunidade.

Você desenvolveu alguma aplicação interessante que gostaria de mostrar ao mundo? …compatilhe-a como um caso de estudo.
Criou algum pequeno helper que outras pessoas também poderiam aproveitar? …escreva sobre ele em um artigo.
Precisou fazer algum código em algum método que facilitou a sua vida? …submeta um trecho de código.

O Bakery (a padaria) é o local definitivo para compartilhar seu conhecimento com outros e aprender uma coisa ou outra no processo e ao mesmo tempo apresentar o que você aprendeu à comunidade… além de exercitar sua mente.

Passo 9. – Acompanhe os tíquetes na linha de tempo do trac

Aqui, você já está em um bom nível dentro do CakePHP.  Neste ponto, acompanhar o trac do CakePHP é algo de caráter educativo… e também importante, se você quiser estar antenado sobre as novidades e o futuro do framework.  A linha do tempo em  https://trac.cakephp.org/timeline lhe oferece uma perfeita visão geral sobre o que está acontecendo diariamente na vida dos desenvolvedores do CakePHP.  Você vai ver a maior parte do código submetido diariamente sendo incorporado ao núcleo do framework e os diversos tíquetes sendo respondidos e fechados pelas mais variadas (e “divertidas”) razões.  Além disso, o que é mais importante, você percebe que o framework como uma coisa viva e se desenvolvendo ao longo do tempo.

É reconfortante saber que quando você estiver cumprido todos esses passos, ao final, você não está sozinho.  Os desenvolvedores do CakePHP estão trabalhando duro e incansavelmente para estar sempre facilitando e aprimorando as coisas.

Passo 10. – Escreva um caso de teste e submeta um patch

Posso imaginar que você é um verdadeiro especialista no CakePHP, não?  Bem, diga o que quiser mas nada é perfeito.  Se você vir algo no framework de que você não goste ou se tiver uma idéia brilhante de como otimizar algo no código, seja benevolente e submeta um tíquete com um patch e um caso de teste.  Mas, por favor, faça as coisas direito! … Dizer que “Isto não está funcionando!” não é um tíquete muito útil para ninguém.

Dedique algum tempo, sente-se e pense sobre como seria uma correção e um caso de teste neste caso.  Assim, sua idéia poderá rapidamente ser relacionada e implementada.  No fim das contas, ninguém gosta de ficar esperar pela correção de problemas.

Passo 12. – Contribua

Não importa se você já for um guru do CakePHP, um mestre da orientação a objetos ou um entusiasta do PHP.  É possível contribuir com o projeto de diferentes formas, por diversos meios e de várias maneiras.  Como já dito… desde uma pequena ajuda com a documentação, com projetos relacionados, com algum componente esperto que você tenha criado, com um bom trecho de código (ou mesmo um artigo em seu blog, se for o caso)… são todas contribuições úteis.  Cada pessoa trabalhando nisto em em outros projetos semelhantes é um voluntário.  Respeite isso, e se torne voluntário você também.  Pode não ser um hábito simples de se adquirir mas que pode representar um impacto positivo muito grande em sua vida como um todo.

Passo 12. – Comece a estudar outros frameworks

É, não é brincadeira.  Não importa o quanto você se aprofunde como um especialista em CakePHP, sempre é importante ter em mente que nenhuma ferramenta é perfeita para qualquer tarefa.  Há muitos outros ótimos frameworks construídos por excelentes programadores e que certamente podem ajudar você a se aprimorar como programador.  É claro que eu apoiar que você grite sempre: “Cake é o MELHOR!” sempre que puder, mas seja respeitoso com os demais, que não tenham tanta sorte! 😛

P.S. Atualização!  Este guia simples de 12-passos está disponível livremente e sem custos, mas se você quiser, sinta-se à vontade para me enviar duas contribuições de $9.95 ou apenas uma de $12.35…