Antidieta: mantendo o peso estável

Pra quem leu o post Antidieta, porque fazer dieta engorda já deve ter acompanhado um pouco do assunto sobre perda e manutenção de peso. Se você é magro, vá catar coquinho … nem continue lendo isto!

Se você ainda está lendo, é porque sabe que o mais difícil é manter o peso estável. Perder peso é fichinha e com uma boa medida de esforço e dedicação você consegue, agora manter o peso é o alho do bugalho, porque eu sei na pele (e nas gorduras também) como é esta fase.

Bom, pra quem quer começar na antidieta, tenho uma boa notícia: 15kg eliminados e mantidos por 7 meses.
Realmente vale a pena, apesar de que chega um ponto o nosso metabolismo se ajusta novamente e é difícil continuar perdendo peso com a mesma motivação que você vinha mantendo, e é bem a fase que estou agora. Mas, todo resultado depende de empenho e dedicação, sem isto não chegamos a lugar algum.

TortoiseGit: Cliente GUI para Git no Windows

Eu sempre fui um cara que gostei de utilizar linha de comando, te dá segurança e você realmente sabe o que está acontecendo, você tem o controle da situação. Porém, há momentos em que uma interface GUI te dá muito mais produtividade, isto é fato!

Quando utilizo SVN, o TortoiseSVN é uma mão na roda. Chegou um momento que precisei usar o Git e quem vai me ajudar na produtividade é o TortoiseGit.

TortoiseGit

Sim, é um port do maravilhoso Tortoise para o Git, e você pode baixar gratuitamente no site do projeto no Google Code.

Kohana PHP – ORM Conventions

No Kohana temos a facilidade de trabalhar com convenções em vez de configurações, isto dá agilidade e comodidade ao desenvolvedor que não precisa ficar configurando inúmeros arquivos de mapeamento de banco de dados para que sua aplicação funcione perfeitamente.

Porém, quando vamos trabalhar com databases que não seguem estas convenções (o que pra mim é algo muito comum) ou que já atendem a outros sistemas tambéme e não podem ser modificadas, temos de configurar somente as excessões para que tudo continue funcionando perfeitamente.

Algumas destas convenções, e suas excessões:

Nomes de tabelas no plural

Nomes de tabelas devem estar no plural. Por padrão o ORM obtém o nome da tabela e determina seu plural com ajuda do helper inflector.
Convenção: Ex: users, invoices.
Excessão: Declarar a propriedade table_name

protected $table_name = 'usuarios';

Models no singular

Enquanto pela convenção as tabelas no banco devem ter seu nome no plural, o nome do arquivo e do model deve ser no singular.
Convenção: NomedaTabela seguido de _Model

class User_Model extends ORM {}

Autoincrement

Toda tabela deve ter um campo autoincrement + primary key chamado id
Excessão: No model, declarar a propriedade primary_key

protected $primary_key = 'meucampoid';

Foreign Keys

Chaves estrangeiras devem ser nomeadas no banco de dados como nomeDoModel seguido de _id
Exemplo: invoice_id, user_id
Excessão: No exemplo abaixo, a tabela invoices esteja relacionada a users, porém na tabela invoices a chave estrangeira chame-se user_fk (que não segue o padrão sugerido)

Relacionamento entre Users e Invoices

Relacionamento entre Users e Invoices

No model Invoice_Model, declare a propriedade foreign_key

class Invoice_Model extends ORM {
    protected $foreign_key = array('user' => 'user_fk');
}

Tabelas Pivôs

Tabelas pivôs devem ser nomeadas pelos nomes das tabelas pais na ordem alfabética (legal e organizado não?), nesta forma tabela1_tabela2. Vamos usar como exemplo o relacionamento de muitos-para-muitos entre a tabela users e as tabelas de functions, tabela de junção deve ser nomeada no banco como functions_users

Simples, não? É Kohana!
E é por isso que eu gosto.

Kohana3, novidades e mudanças!

Agosto já está no fim e tudo indica que ainda este ano será lançado o Kohana 3, uma nova versão que além de muitas melhorias vem acompanhada de muitas mudanças na sua estrutura. Tenho nos meus rascunhos já alguns artigos para revisar e publicar sobre utilização do Kohana, porém acredito que terei de atualizar os mesmos para que fiquem 100% compatíveis com esta nova versão.

Para quem tem pressa, a resposta está ai: a migração de aplicações Kohana 2.x para 3.0 não será automática e exigirá revisão em alguns pontos do desenvolvimento, a começar que partimos de MVC para HMVC

Que raios é HMVC?

Não complique!
HMVC (Hierarchical Model View Controller) é um padrão de design novo, porém muito semelhante ao MVC que você já conhece, adicionado de uma hierarquia no design original do MVC. Quando uma requisição URI for solicitada, qualquer parte do MVC pode chamar outro item da hierarquia, o que permite o desenvolvedor uma maior flexibilidade e modularização do sistema que estiver utilizando. A vantagem é que se você quiser continuar com o padrão MVC, nada vai impedir você trabalhar desta forma.

Bootstrap

Quem me conhece sabe que eu odeio não gosto muito bootstrap do Zend Framework. O ZF é uma plataforma invejável tanto pela sua estabilidade como pelas suas características, porém montar arquivos de bootstrap decentes no ZF nunca foi sucesso pra mim. Sei lá, acho que fiquei mal acostumado com o Kohana onde eu ligo o carro e saido acelerando, e no ZF eu tinha que toda vez parafusar as 4 rodas e calibrar todos os pneus antes de sair rodando a aplicação :)

Voltando ao assunto, KO3 terá um bootstrap dedicado, porém você não vai precisar sair montando um do zero e sofrer horas para deixar ele funcionando: um bootstrap padrão que atende praticamente todas as aplicações já fará parte do pacote, somente o tunning da aplicação ficará por sua conta, como você já fazia no Kohana 2.x

Arquivos de Configurações

Boa parte dos arquivos do diretório application/config e suas diretivas também foram movidas para o arquivo de bootstrap. Quem já teve contato com Zend Framework estará bem familiarizado com esta mudança.

Controllers viraram Classes

Os controllers que estavam em /application/controllers vão para /application/classes/controllers.
Libraries e Helpers seguem o mesmo padrão e são todos classes agora, tudo fica mais organizado e OO.

Estrutura de diretórios e autoloading do KO3 também mudou: Uma nova convenção de arquivos foi desenvolvida de forma que simplifica a identificação e localização de classes. Todas as classes fazem uso do sublinhado (_). A estrutura de nomes é separada, como anteriormente, mas você vai notar uma diferença no formato.

Teste_Controller agora será Controller_Teste (/application/classes/controller/teste.php)
Kohana_Session_Cookie corresponde a /system/kohana/session/cookie.php

Ainda quero fazer alguns testes com o novo driver ORM, porém não me sobrou tempo ainda!
Acho que com o lançamento oficial da nova versão (que hoje está em RC3) posso publicar uma análise mais voltada ao ORM, que será exclusivamente baseado no PDO

Geocaching – Diversão com qualquer GPS

Desde que peguei um smartphone com GPS, uma das coisas que queria fazer era brincar com Geocaching. WTF is Geocaching? Eu também não sabia e é uma atividade ainda não muito conhecida no Brasil. Vejamos o que a Wikipedia diz:

Geocaching é um passatempo e esporte de ar livre no qual se utiliza um receptor de navegação por satélite (por enquanto apenas GPS – “Sistema de Posicionamento Global”) para encontrar uma “geocache” (ou simplesmente “cache“) colocada em qualquer local do mundo. Uma cache típica é uma pequena caixa (ou tupperware), fechada e à prova de água, que contém um livro de registo e alguns objectos, como canetas, afia-lápis, moedas ou bonecos para troca.

Parece ser meio idiota, até você entrar na brincadeira. Os caches são registrados em sites como o Geocaching.com (oficial, internacional) e o BrasilCaching (brasileiro) e de lá você planeja como encontrará o cache e depois pode registrar sua visita. Aqui em Joinville não havia nenhum cache ainda, o mais próximo estavam em Blumenau ou em Curitiba, então resolvi publicar o primeiro cache de Joinville :D

Escolhi o Zoobotânico como algo e hoje foi o grande dia!
Tá afim de brincar? Veja este cache no Geocaching!

Coordenadas no GPS

Coordenadas no GPS

Trilha onde está o cache!

Trilha onde está o cache!

Internet Explorer 6, até quando?

Hoje é um dia especial para comemorar, completando a marca de 1000 downloads do plugin Internet Explorer 6 Upgrade para Wordpress.
Parece pouco, mas para um plugin que foi feito de sem maiores pretensões, pra mim foi mérito!

O plugin caiu mais no gosto do pessoal lá de fora do que dos desenvolvedores Brasileiros, tanto que em menos de 4 meses recebemos atualizações para 7 línguas além do Português e Inglês – 9 idiomas! – que já estavam na versão inicial do projeto. Outra prova foram os 332 comentários que recebi por e-mail com sugestões, críticas e comentários do projeto: somente 3 foram de Brasileiros!

Acho que aqui no Brasil precisamos perder o “medo” de ao menos sugerir ao usuário que atualize uma ferramenta que está parada no tempo desde 2001. Obrigado a todos pelas contribuições e pelos downloads!

YUI – Yahoo User Interface

Hoje o Yahoo User Interface (ou YUI) salvou minha pele, e amanhã ele pode salvar a sua!

YUI é uma biblioteca que contem muitos controles escritos em Javascript e CSS. Esses controles (ou componentes, como queira) podem ajudar muito na hora de desenvolver interfaces para web, deixando a experiência do usuário muito melhor.

Sempre fui fã de jQuery, mas em um projeto em particular, chegou um momento que eu estava tendo conflitos entre dois plugins. o YUI tinha componentes que faziam a mesma tarefa que os dois plugins para jQuery, porém a integração entre eles foi perfeita, e foi fator decisivo para que o YUI fosse substitúido naquele projeto (e olhado com carinho para futuros, quem sabe!)

Um dos componentes legais também é o CSS Reset que faz exatamente o que o nome diz para vários browsers (sim, incluindo o IE6), reseta todas as propriedades pré-definidas do css, ai você irá configurar o css do zero a sua maneira. Porém, não fica só nisto, há também alguns componentes interessantes como: DataTable, Treeview, Tabs, Calendar, AutoComplete, Paginator, Slider Uploader, etc

São de fácil instalação e a documentação é super bem feita.
http://developer.yahoo.com/yui/

Valeu galera.

Utilizando Template_Controller no Kohana

O Kohana utiliza o padrão MVC para a construção de aplicações, e nas views é que toda a informação é mostrada em nossa aplicação. Todo o HTML, CSS, JS (e não só eles, como também qualquer XML, JSON, REST) é enviado pela view.

O Kohana tem um bom suporte nas views, inclusive para nested views, porém hoje vamos falar da Template_Controller. Quando você vai desenvolver um site/sistema/aplicação que tem um layout padrão, a Template_Controller é a ferramenta ideal. Veja como é simples utilizar:

Vamos criar um controller chamado Teste em application/controllers/teste.php

<?php defined('SYSPATH') OR die('No direct access allowed.');
class Teste_Controller extends Template_Controller {

// Você pode especificar qual template deseja utilizar, opcionalmente
public $template = 'view_padrao';

public function index()
{
$this->template->titulo		= 'Teste';
$this->template->texto		= 'Lorem ipsum dolor ...';
}
}

Por padrão, o Kohana invoca uma view chamada Template que deve estar em /application/views/template.php
Você pode facilmente mudar qual template deverá ser chamado, como fizemos no exemplo acima usando a view view_padrao

Na view que você especificar, você pode montar toda a estrutura que terá sua aplicação como você faria sem qualquer framework, utilizando esta view como template para seu projeto. Há mais exemplos de uso na documentação oficial.

Simples, não? É Kohana!
E é por isso que eu gosto :)

Kohana bundle for Textmate/e-texteditor

If you program in PHP using Kohana and as editor TextMate (Mac) or e-Texteditor (Win) this bundle is for you!
http://code.google.com/p/kohana-bundle/

How to install?

  1. Download
  2. Unzip
  3. Just copy the bundle to the “Bundles” folder in the user settings application directory, usually something like …
    • “C:\Documents and Settings\[username]\Application Data\e” or
    • “C:\Users\[username]\Application Data\e” or
    • “C:\Users\[username]\AppData\Roaming\e”
  4. Note: That bundles located under the “user settings application” directory, have precedence over e’s default bundles, which are located in e’s installation directory, e’s installer will overwrite all changes which are done in e’s installation directory!

Windows 7 no Dell Inspiron 1525

Estava eu no mini-curso de Zend Framework  no phpSCconf, e para minha surpresa algumas pessoas estavam usando o Windows 7 em seus notebooks, mas a maior surpresa estava por vir quando eu vi com meus próprios olhos um Athlon 1.0 com 1GB de ram ser mais rápido que meu Core2Duo 2.4 com 2GB de ram!

Com o Windows 7 instalado, tudo rodou bem de primeira e sem precisar instalar nenhum driver! Nos testes pós instalação, tudo funcionou muito bem e com desempenho superior, e até minha bateria que antes durava em torno de 2:20h agora está durando em média impressionantes 3:30h

Hoje a noite testei a conexão HDMI com o Windows Media Center e o resultado foi impressionante, um espetáculo! Toda esta melhoria de performance e ainda consigo utilizar o Windows Aero com todas as funções habilitadas, coisa que antes não era possível com o Windows Vista.