Controllers no Kohana

Um controller é um arquivo que contém uma classe que vai gerenciar todo o fluxo da aplicação.Se você não conhece MVC, é uma boa hora para estudar porque o Kohana é todo MVC.

MVC

Os controllers comunicam-se diretamente com os models enviando e recebendo informações, muitas das informações recebidas são repassadas as views para serem renderizadas no navegador do usuário, e podem também ser recebidas das views dentro dos controllers para serem processadas pelos models novamente.

Enfim, deu pra perceber que o controller é quem controla o fluxo de informações e da aplicação :)
Trabalhar com Controllers no Kohana é muito fácil, vamos ver como:

Convenções para Controllers

  • O arquivo deve ser gravado em application/controllers
  • O nome do arquivo deve ter o mesmo nome da classe, em minúsculo.
    Exemplo: artigos.php
  • O nome da classe deve conferir com o nome do arquivo, iniciada de Controller_ e com a primeira letra em maiúsculas.
    Exemplo: Controller_Artigos
  • A classe deve ser extendida do Controller base (ou de outro controller).
    Exemplo: Controller_Artigos extends Controllers
  • Os métodos que serão acessíveis pela URL devem ser públicos e precedidos por _action.
    Exemplo: public function action_todos()

Acessando e Requisitando um Controller

Por padrão, o acesso a um controller é feito da seguinte forma:

http://dominio.com/index.php/<controller>/<action>

Então para acessarmos o controller artigos e a action todos, nosso exemplo ficaria assim:

http://dominio.com/index.php/artigos/todos

Criando um Controller

Seguindo nosso exemplo, vamos criar um controller artigos:

application/controllers/artigos.php
class Controller_Artigos extends Controller
{
  public function action_index()
  {
    $this->request->response = "A resposta para a vida, o universo e tudo mais é 42!;
  }
}

Acessando http://dominio.com/index.php/artigos/index (ou dominio.com/artigos/ porque a action_index é a padrão, por default) teremos o seguinte resultado:

A resposta para a vida, o universo e tudo mais é 42!

Recebendo Parâmetros via URL

Como o controller é responsável pelo fluxo de informações dentro da aplicação, uma das grandes utilidades é receber informações. Uma das formas mais simples é via URL. Vamos aprimorar nosso exemplo, solicitando artigos pelo seu número:

class Controller_Artigos extends Controller
{
  public function action_index()
  {
    $this->request->response = 'A resposta para a vida, o universo e tudo mais é 42!';
  }

  public function action_ver($numero=0)
  {
    // Rotina para pesquisar artigos
    // {...}
    $this->request->response = "Você solicitou o artigo número $numero";
  }
}

No exemplo acima, acessando http://dominio.com/artigos/ver/12 teremos o seguinte retorno:

Você solicitou o artigo número 12

Um exemplo mais bacana, somando 2 números passados via URL:

class Controller_Artigos extends Controller
{
  public function action_soma($a=0,$b=0)
  {
    $this->request->response = "A soma de $a e $b é igual a ".$a+$b;
  }
}

Acessando http://dominio.com/artigos/soma/40/2 temos como retorno:

A soma de 40 e 2 é igual a 42

Funções Privadas em Controllers

Em determinadas situações precisamos manter algumas funções disponíveis como public mas não queremos que elas sejam acessadas pela URL, neste caso é só não usar o prefixo action_ no nome da function.

class Controller_Artigos extends Controller
{
  public function megasena()
  {
    $this->request->response = 'Os números da megasena são ...';
  }
}

E assim se tentarmos acessar http://dominio.com/artigos/megasena não teremos acesso a esta função dentro do controller, como esperado!

Conclusão

Nos próximos tutoriais vamos trabalhar com Views, Models e depois a troca de informações entre eles.
Qualquer problema ou dúvida, fique a vontade nos comentários.

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

Windows não encontrou um volume de sistema que atenda aos critérios de instalação

Se você está tentando instalar um Windows Server, e encontrou o erro …

O Windows não encontrou um volume de sistema que atenda aos critérios de instalação

.. e por mais que você tente dedicar uma partição a ele e ele não aceite instalar, sugiro você fazer o boot com o CD Live do Ubuntu, abrir a partição que deseja usar no gParted e marcar a flag ‘boot’ na partição, salve e pronto :)

Bill Gates at CES 2007
Creative Commons License photo credit: Domain Barnyard

Netbeans + Tema Twilight + Fonte Monaco

Programar é uma coisa que exige do programador bom conhecimento na linguagem que ele programa. Chega um momento que as coisas começam a se tornar repetitivas e você adota um framework (ou não!) para deixar que tudo o que for chato e repetitivo seja feito por ele. Tudo vai bem até que outro momento você pensa em otimizar melhor ainda seu trabalho (ou o seu ambiente de programação) e decide repensar melhor o editor/IDE que usa para programar.

Todo mero mortal programador vai passar por isso, se você está lendo este texto com certeza está ou já esteve próximo esse pensamento. Poupando melhor o seu tempo, ano passado passei por este mesmo período e fiz o dever de casa avaliando inúmeros editores de uso livre/gratuito para minha plataforma de trabalho e … minha escolha caiu sobre o NetBeans.

Rails Code
Creative Commons License photo credit: davestfu

Se você esperava um post te convencendo a usar o NetBeans, se deu mal. Sim, ele tem suporte a edição de CSS, geração quase automática de testes unitários, documentação baseada no phpDocumentor, projetos remotos, refatoração de código, trabalho em equipe com SVN/CVS, autocomplete de funções e variáveis e muitos outros inúmeros recursos.

Netbeans com Tema Twilight e Fonte Monaco

Gosto muito de usar o NetBeans com uma fonte que vem no Mac, chamada Monaco e o tema Twilight. Porém sempre encontro problemas ao habilitar diversas versões desta fonte por ela não ser Unicode e por ai vai. Neste cenário, eu escrevi este post para ter guardado para o futuro meu setup pessoal para o NetBeans:

  1. Instalar o NetBeans (eu instalo somente a versão PHP no meu Ubuntu)
  2. Instalar o tema Twilight for NetBeans (inspirado no disponível para textmate)
    • Ferramentas » Opções » Importar
  3. Instalar a fonte Monaco Unicode em TTF no Ubuntu
    • Copiar para ~/.fonts
    • Executar fc-cache -fv
  4. Configurar o NetBeans para usar a fonte Monaco
    • Ferramentas Opções » Fontes & Cores Sintaxe » Categoria » Padrão

Técnica Pomodoro: foco e produtividade sem procrastinação

Se eu falar que a partir de hoje você vai produzir o dobro que produz, trabalhando com períodos de 25 minutos e descansando 5 minutos entre eles, você acredita? Espere, e se eu acrescentar que a cada 4 períodos completados você pode descansar um período também de 25 minutos?

Estranho não?
Mas basicamente é isso que a Pomodoro Technique ensina.

Pomodoro

Facilidade

Por tempos todos procuramos soluções eficazes para melhorar nossa produtividade, todas elas muito complexas, difíceis de colocar em prática e que no fim acabavam só virando siglas para a nossa sopa de letrinhas.

Há aproximadamente 45 dias venho usando a técnica Pomodoro diariamente quando estou desenvolvendo, e acabei me surpreendendo com a quantidade de pomodoros que são concluídas x interrupções.

Como Funciona?

  • No início do dia, reserve 1 pomodoro (25 minutos, lembra?) para organizar seu dia. Parece bobeira eu pensei isso mas depois você vê que faz muito sentido.
  • Trabalhe focado por 25 minutos em uma mesma tarefa sem interrupções. Eu falei sem interrupções?
  • Finalizando seu pomodoro, vá curtir um intervalo de cinco minutos (Twitter? Yeah!)
  • Ao final de 4 pomodoros, faça um intervalo mais longo porque ninguém é de ferro. Eu levo isso a sério e uso 1 pomodoro pra descansar (sem interrupções, yeah!)

Tomato sauce
Creative Commons License photo credit: funadium

Você precisa de:

  • papel
  • caneta
  • algo que marque o tempo

A cada pomodoro, marque um X ao lado da tarefa. Muita gente fala em timer de cozinha pra controlar o tempo. Eu gosto de usar o FocusBooster

Interrupções

A cada interrupção, anote a tarefa/urgência em questão, e coloque-a numa lista chamada URGENTES NÃO PLANEJADOS.
Faça um pomodoro com TODAS estas tarefas, assim que possível, e resolva suas pendências, uma a uma.

Vantagens

Sensação de dever cumprido e um domínio sobre uma coisa difícil de manusear: O SEU TEMPO. Sua percepção sobre o tempo gasto e tempo disponível vai mudar completamente do que você tenha hoje em mente.

Desvantagens

Nem todos são adeptos desta técnica, e muitos dias você verá que teve o tripo de interrupções dos pomodoros completados. Invariavelmente você vai trocar o termo “horas” por “pomodoros” para qualquer atividade que irá calcular tempo necessário.

Conclusão

Enfim … é uma técnica maravilhosa que é fácil de colocar em prática e que no mesmo dia vai te mostrar que é possível ser produtivo em ciclos de 25 minutos, com a sensação de dever cumprido.

No site oficial tem materiais disponíveis, como o livro oficial, folha de TODO e o meu preferido Cheat Sheet.

Ps: Esse post foi escrito num Pomodoro de descanso, agora me dê licença que eu quero completar mais pomodoros :)