Rafael Caceres

humanizando o caos

Desenvolvedor Web e Designer de Interfaces. Usa Scrum e XP Solo em seus projetos. Tem uma namorada linda (e louca), é músico experimental, malabarista de sinal, filosofo de buteco e empreendedor maluco.

Na semana passada estivem em Xanxerê, oeste de Santa Catarina, ministrando um curso de manutenção e desenvolvimento de modulos em Drupal 6 para o pessoal da Unoesc. O curso foi muito bacana, e o pessoal muito gente boa. Acho que deixei eles meio tontos com a quantidade de conteúdo em tão pouco tempo (16h). Gravamos até um screencast, que em breve será disponibilizado.

Pessoal da Unoesc

Esse curso é a última parte do treinamento quem estamos fazendo com o pessoal para que eles possam dar manutenção no Portal da Unoesc, que estamos desenvolvendo e entra no ar daqui a alguns dias.

Agradecimento ao Márcio pela hospitalidade e pelas serra malte ;).

Indrodução ao Drupal 6

April 29th, 2009

Slides da apresentação que fiz no projeto Aprender Sempre do IEA em Florianópolis.

Introdução ao Drupal 6

View more presentations from xauz.
Quem achar erros ou se achar que escrevi alguma besteira, por favor deixe um comentário.

Fiz uma tradução de uma parte do guia de temas da documentação do drupal. Segue abaixo.

A camada de temas é responsável por criar o HTML que o browser irá receber. Podem ser usadas varias abordagens, como o Smarty, PHPAL e PHPTemplate.
Existem várias maneiras de customizar a aparencia do seu site. A mais simples é usando CSS para sobrepor as classes e IDs nativos do Drupal. Mas é fácil de ir além e customizar o HTML. Um arquivo template Drupal consiste de HTML padrão e PHP. Adicionalmente, cada parte dinamica de uma página Drupal ( como uma box, lista ou breadcrumb ) pode ser sobrescrita simplesmente declarando a função com o nome apropriado.
Um tema é uma coleção de arquivos que definem a camada de apresentação. Podemos criar um ou mais “sub-temas” ou variações sobre um tema. Apenas o arquivo .info é obrigatório, mas a maioria dos temas e sub-temas também usarão outros arquivos. O diagrama abaixo ilustra os arquivos que são encontrados em um tipico tema e sub-tema.

.info (obrigatório)

Tudo que é necessário para o Drupal reconhecer seu tema é um arquivo .info. Metadados, folhas de estilo, JavaScript, block regions entre outras coisas podem ser definidas aqui. Todo o resto é opcional.  O nome interno do tema é derivado desse arquivo. Por exemplo, se o nome é “drop.info”, então o Drupal verá o nome do tema como “drop”. (Drupal 5 e anteriores usam o nome da pasta do tema).

Arquivos de template (.tpl.php)

Os templates são usados para a marcação xHTML e variáveis do PHP. Em alguns casos eles podem retornar outros tipos de dados (eg. xml, rss). Cada arquivo .tpl.php manipula a saida de um pedaço especifico de dados “temáveis”(themable), e em alguns casos isso pode manipular multiplos arquivos .tpl.php através de sugetões.(link para suggestions) Eles são opcionais, e se não existe nenhum em seu tema será usada a saída padrão. Evite ter logicas complexas nesses arquivos. Na maioria dos casos, pode ser diretamente tags xHTML e variaveis PHP. Um punhado desses templates existem em diretórios onde o core e contributed modules existem. Copiar eles para a pasta do seu tema força o Drupal ler sua versão.
Nota: O theme registry faz cache das informações sobre os dados do tema disponiveis. Você deve resetar-lo quando adicionar ou remover arquivos de template ou funções no seu tema.

Template.php

Para toda a logica condicional e processamento de dados de saida, existe o template.php. Ele não é obrigatório, mas para manter os arquivos .tpl.php limpos, podemos usá-lo mantendo preprocessors que geram variaveis antes delas serem fundidas com a marcação dentro dos arquivos .tpl.php. Funções customizadas, sobreescrevendo funções dos temas ou qualquer outra customização de saida pode ser feita aqui. Esse arquivo deve começar com a tag “<?php” de abertura do PHP, mas a tag de fechamento não é necessária e é recomendado que ela seja omitida.

Sub-temas

Vendo por cima, sub-temas se comportam como qualquer outro tema. A unica diferença é que eles herdam os recursos dos seus temas pai. Para criar um, é necessário usar uma entrada de “base theme” no seu .info. Isso fará ele herdar os recursos do tema pai. Podem haver multiplos níveis de herança; e.g, um sub-tema pode declarar outro sub-tema como sua base. Não há muito limite pra isso.

(O Drupal 5 e inferiores exigtem que os sub-temas sejam subdiretorios no tema pai. Não é mais o caso.)

Design Patterns e PHP

April 22nd, 2009

Esses dias terminei de ler meu primeiro livro de Design Patterns e fiquei impressionado como minha compreensão de Orientação a Objetos ficou muito mais clara. No livro fala-se bastante em esquecer um pouco a herança e tentar novas alternativas para conseguir um baixo acoplamento e alta coesão, que encapsulamento não é apenas de dados, e que normalmente temos que combinar vários padrões para conseguir adapta-los para nossos problemas

O motivo que me fez escrever esse post é que ontem teve uma palestra de Design Patterns aqui na Knowtec, com o nosso colega Alexandre Rosa, que estará ministrando um curso no começo do mês aqui na empresa.

Pesquisando um pouco vi que tem muito material sobre design patterns em PHP.
O PHP oferece alguns beneficios de linguagens dinâmica que facilitam a construção de alguns patterns. Separei alguns slides e depois posto mais materiais.

Basic PHP Design Patterns
View SlideShare presentation or Upload your own. (tags: ipc08 patterns)

Melhores Práticas em PHP

April 16th, 2009

Por um tempo estava desacreditado do PHP. Agora estou trabalhando com ele novamente e vejo que supre totalmente minhas necessidades. Estou postando então uns slides que achei vagando pelo slide share.

Instalando o plugin do firefox para o RescueTime Linux Uploader 90, tive um pequeno problema. O plugin simplesmente não exporta as url, então, o rescue time não grava os sites que eu estou acessando. Isso é um bug, e ainda não foi corrigido.
A solução simples, eficiente e gambiarristica, que eu achei em um fórum e não achei mais a referência, é baixar o rescue time uploader 0.80 e instalar o plugin que vem com ele.

Instalando o RMagick no Ubuntu

September 19th, 2008

Tive alguns probleminhas tentando instalar o Rmagick, mas no fim das contas foi mais fácil do que pensei.

O Rmagick é uma interface entre a linguagem Ruby e a biblioteca de processamento de imagens ImageMagick (ou com GraphicsMagick). Então primeiro, instalamos a ImageMagick:


$sudo apt-get install imagemagick

Então instalamos as bibliotecas de desenvolvimento:


$sudo apt-get install libmagick9-dev

Agora, com tudo funcionando, podemos instalar o Rmagick:


$gem install rmagick

Para usar o Rmagick na sua aplicação Rails, basta adicionar a seguinte linha no controller/application_controller.rb:


require 'RMagick'

E é isso ai! Pronto pra funcionar!

Documentação das gems

September 5th, 2008

Uma coisa legal que eu não sabia, só digitar no terminal:

~$ gem server
Starting gem server on http://localhost:8808/

Basta entrar nesse endereço e terá o RubyGems Documentation Index, com a documentação de todas as gems instaladas.

Mapa mental e GTD

August 28th, 2008

Desde que descobri os mapas mentais, no idph, nunca mais parei de usar. É uma forma fantástica de organizar as idéias, pois no fim temos uma fotografia  de todo o projeto ou idéia. Brainstorm só com mapa mental.

O que estou usando atualmente para criar meus mapas é a mindmeinster, uma ferramenta colaborativa on-line, bem web2.0, com uma usabilidade bacana e bastante rápida. Com o mindmeister podemos criar os mapas, compartilha-los com os interessados, imprimir, exportar para vários formatos, mudar cores e fontes, inserir ícones, etc. Também é possível inserir notas, links, anexar arquivos.

Porém, uma função que nunca tinha percebido, é a de criar tarefas. Podemos criar uma tarefa para cada nó do nosso mapa. Isso é muito interessante, principalmente pra quem conhece metodologias como o GTD. Podemos colocar um projeto inteiro em mapa mental, ao invés de linearmente, priorizar as ações, escolher data de finalização e marcar como completada.Podemos criar um contexto em cada mapa, podendo ter varios projetos, com as ações nas folhas. Estou usando isso, e pesquisando um modo de integrar isso com o RTM, que é focado no GTD, tem opção de integração com Gmail e calendários e smartlists.

Alguem já usou isso por ai?

Rspec com autotest no ubuntu

August 27th, 2008

Pra rodar o autotest no ubuntu, precisei usar o comando:

$ RSPEC=true autotest

Para não precisar digitar toda vez, é só adicionar RSPEC=true no arquivo

/home/user/.autotest