ב"ה

Blog do Adler Medrado

Blog do Adler Medrado

Jun 24 / 8:19am

Promoção do PHPSP te ajuda a tirar certificações Zend

O PHPSPCast traz uma promoção em conjunto com seu último podcast que é
sobre certificação. Os prêmios, logicamente são vouchers pra
certificação. Se você ganhar não vai precisar gastar pelo menos US$160
pra ser um certificado, nós daremos vários certificados. O melhor? Não
é sorteio!

Responda o questionário de conhecimentos gerais de PHP. Se você
acertar tudo, leva. E quem for acertando, vai levando até nossos
vounchers acabarem. Mas são poucos!!! São 2 vounchers de ZCE e dois
vounchers de ZCF !

Corra e responda! Os ganhadores serão mostrados no POST, por enquanto;
ninguém ganhou ainda! Então beixe/escute o podcast e responda o
questionário. Mas não vai ser fácil! =]
Boa sorte!
Veja as regras (detalhadas) e o questionário aqui: http://phpsp.org.br/?p=1229

Loading mentions Retweet
Filed under  //  certificacao   comunidade   php   promocao  

Comments (0)

Jun 13 / 1:19pm

Screencast: Zend Framework e NetBeans

Alô Rapaziada.

Acabei de colocar um screencast que eu fiz hoje cedo mostrando como integrar o Zend Framework, mais precisamente o Zend_Tool com o NetBeans 6.9 RC 2.

Como esse foi o primeiro screencast que fiz, perdoem-me caso ele não tenha ficado legal. Ah, alguns ruídos mais pro final do filme são meus filhos que estavam brincando por perto. :-)

Deixem seus comentários.

Abraço.

Loading mentions Retweet

Comments (12)

May 27 / 5:18pm

Treinamento de Zend Framework em Brasília - CONFIRMADO

Alô Rapaziada.

Para aqueles que ultimamente tem me perguntado quando vai fechar turma de Zend Framework, com satisfação eu anuncio que uma turma está CONFIRMADA para iniciar dia 31/05/2010, ou seja, na próxima segunda-feira.

Se você tem interesse em aprender Zend Framework, num curso hands-on, essa é uma ótima oportunidade.

Abraços.
Loading mentions Retweet
Filed under  //  PHP   Treinamento   Zend Framework  

Comments (0)

May 22 / 11:32am

Zend Framework Tutorial Series Capitulo 3

Depois de muito tempo eu consegui voltar a este tutorial e a partir deste capítulo eu vou mudar um pouco a estratégia, vocês irão perceber que este capítulo será menor do que os anteriores porque eu vou buscar escrever capítulos menores em uma frequência maior. Espero que dê certo.

Introdução

Neste capítulo eu mostrarei um pouco do Zend_Form e algumas coisas que são possíveis de implementar usando ele.

O Zend_Form é um componente que nos permite tratar formulários HTML como objetos PHP, simplificando o uso quando precisamos filtrar e validar dados provenientes de formulários.

Eu sempre fui contra criar objetos PHP que simplesmente cuspissem código HTML sem trazer nenhum benefício como filtragem, validações, etc., isso pra mim não fazia nenhum sentido e por isso que eu demorei para me interessar pelo Zend_Form, até que vi que a proposta era diferente, e eles nos traz diversos benefícios como além das já mencionadas funcionalidades de filtro e validação, nos permite trabalhar com Subforms de maneira bem simples, agrupar elementos de formulários e também fazer herança de formulários, depois de ver isso eu não deixei de usa-lo e sempre incentivo quem usa Zend Framework a experimenta-lo. 

Uma das premissas de segurança em desenvolvimento web é: Filter Input, Escape Output (Filtrar Entradas, Tratar Saídas) porque nós não devemos confiar nos usuários pois como iremos saber que as informações que estão sendo enviadas à aplicação são corretas ou mal-intencionadas? Se você não ouviu falar sobre SQL Injection, XSS, CSRF, etc., é bom buscar maiores informações a respeito e aí você vai entender o motivo que leva muitos desenvolvedores a serem paranóicos. :-) 
Pretendo escrever um capítulo deste tutorial que aborde apenas aspectos de segurança com Zend Framework, até lá vou mostrar apenas como filtrar dados usando Zend_Form.

Bom, vamos lá.

Nosso primeiro form será o de cadastro de usuário e o trabalho sujo quem vai fazer para nós será o Zend_Tool então, de dentro do diretório raíz de sua app, digite o comando:

zf create form User

Este comando criará um diretório chamado forms dentro do diretório application e se você analisar o conteúdo deste diretório, verá um arquivo chamado User.php com o seguinte conteúdo:

 
<?php

class Application_Form_User extends Zend_Form
{

    public function init()
    {
        /* Form Elements & Other Definitions Here ... */
    }

}

Pronto. Agora, dentro do método init() nós podemos configurar o nosso formulário. 
Este formulário terá os seguintes campos:

  • username: Nome do usuário do sistema, login de acesso.
  • fullName: Nome completo do usuário
  • email: Endereço de e-mail do sujeito
  • password: Senha de acesso ao sistema
  • submit: Botão de submit :-)

Se eu fosse criar esse formulário na mão, eu teria de validar no script PHP que recebesse estes dados para garantir que as informações estão de acordo com o que deve ser submetido e esse trabalho se torna chato depois de algum tempo trabalhando com desenvolvimento e é aí que o Zend_Form começa a nos dar uma força.
Para este formulário eu determinei tais filtros e validações:

  •  username
    •   O campo é obrigatório
    •   Qualquer tag deverá ser removida
    •   Espaços em branco das extremidades serão removidos
    •   Não pode ser submetido em branco/vazio
    •   Deverá contér entre 5 e 30 caracteres. 

  •  fullName
    •  O campo é obrigatório
    •  Qualquer tag deverá ser removida
    •  Espaços em branco das extremidades serão removidos
    •  Não pode ser submetido em branco/vazio
    •  Deverá contér entre 5 e 90 caracteres. 
 
  • email
    •  O campo é obrigatório
    •  Qualquer tag deverá ser removida
    •  Espaços em branco das extremidades serão removidos
    •  Deverá validar se o valor informado é compatível com um endereço de e-mail válido

  • - password
    •  O campo é obrigatório
    •  Qualquer tag deverá ser removida
    •  Espaços em branco das extremidades serão removidos
    •  Não pode ser submetido em branco/vazio
    •  Deverá contér entre 5 e 30 caracteres.

Vamos configurar nossa classe para atender a estes requisitos:

 
class Application_Form_User extends Zend_Form
{

    public function init()
    {

$username = new Zend_Form_Element_Text('username');
$username->setLabel('Usuário')
  ->setRequired(true)
  ->addFilter('StripTags')
  ->addFilter('StringTrim')
  ->addValidator('NotEmpty')
  ->addValidator('StringLength', false, array(5,30));

$fullName = new Zend_Form_Element_Text('fullName');
$fullName->setLabel('Nome Completo')
  ->setRequired(true)
  ->addFilter('StripTags')
  ->addFilter('StringTrim')
  ->addValidator('NotEmpty')
  ->addValidator('StringLength', false, array(5,90));

$email = new Zend_Form_Element_Text('email');
$email->setLabel('E-mail')
  ->setRequired(true)
  ->addFilter('StripTags')
  ->addFilter('StringTrim')
  ->addValidator('EmailAddress');

$password = new Zend_Form_Element_Password('password');
$password->setLabel('Senha')
  ->setRequired(true)
  ->addFilter('StripTags')
  ->addFilter('StringTrim')
  ->addValidator('NotEmpty')
  ->addValidator('StringLength', false, array(5,30));

$submit = new Zend_Form_Element_Submit('Salvar');

$this->addElements( array($username, $fullName, $email, $password, $submit) );

    }
}

Depois de ler os requisitos para nosso formulário fica fácil entender o código acima faz, mas vamos dar uma analisada rápida:

Para cada elemento do formulário nós criamos um objeto respectivo, por exemplo, para campos de texto nós usamos Zend_Form_Element_Text, para campo de senha nós usamos Zend_Form_Element_Password e individualmente em cada elemento nós determinamos quais filtros nós usaríamos por meio do método addFilter() e quais validações seriam feitas usando o método addValidator().

A diferença entre filters e validators é bem simples: Filtros alteram o valor do elemento e validadores checam se o valor do elemento possi certas características de acordo com o validador e retornam se o valor é válido ou não sem alterar seu valor.

Elementos

Obviamente os elementos de formulário mais comuns já existem no framework, qualquer elemento mais específico pode ser desenvolvimento sem muitas dificuldades. 

- button
- checkbox / multicheckboxes
- hidden
- image
- password
- radio
- reset
- select / multiselect
- submit
- text
- textarea

Filtros e Validadores

Os filtros e validadores considerados mais comuns também já fazem parte do pacote do Zend Framework, além daqueles que nós usamos no nosso formulário Users, nós temos os seguintes Validadores e Filtros à disposição.

Veja direto na fonte: 

Vamos colocar pra funcionar agora

Agora vamis pra parte mais legal que é ver o nosso formulário funcionando, para isso temos que instancia-lo no controller e adiciona-lo à nossa view. 

Controller:
$this->view->form = new Application_Form_User();

if ($this->getRequest()->isPost()) {
if ($this->view->form->isValid($this->_request->getPost())) {
// Salva no banco de dados ou seja lá o que for fazer com os dados provenientes do form
var_dump($this->_request->getPost());
} else {
$this->view->form->populate($this->_request->getPost());
}
}

Primeiramente nós criamos uma instância da nossa classe Application_Form_User (sim, este é o nome gerado automaticamente e é um padrão, portanto, não mude) e associamos ao nosso objeto Zend_View.
Em seguida obtemos o objeto que mantém as informações do request e verificamos se o request foi do método POST, se for post, verificamos se os dados do formulário são válidos e se o resultado for positivo, nós mostramos estes dados na tela (no próximo capítulo gravaremos no banco de dados), senão, nós renderizamos a tela novamente com os dados preenchidos no form e suas devidas mensagens de erro.

Em princípio as mensagens de erro estão em inglês e nós as alteraremos posteriormente quando trabalharmos com I18N e L10N.

Na camada de visão, basta fazer:

 echo $this->form;

Pronto. Seu form já pode ser usado.

O código-fonte que é gerado não agrada a todos, mas para mudar isso nós podemos usar os Decorators e deixar o código gerado da maneira que preferirmos, porém os decorators não são um assunto tão trivial e por isso eu não vou aborda-los neste capítulo. Se desejar conhecer mais: http://framework.zend.com/manual/1.10/en/zend.form.decorators.html

O código gerado foi esse:

 
<form enctype="application/x-www-form-urlencoded" action="" method="post"><dl class="zend_form">
<dt id="username-label"><label for="username" class="required">Usuário</label></dt>
<dd id="username-element">
<input type="text" name="username" id="username" value=""></dd>
<dt id="fullName-label"><label for="fullName" class="required">Nome Completo</label></dt>
<dd id="fullName-element">
<input type="text" name="fullName" id="fullName" value=""></dd>
<dt id="email-label"><label for="email" class="required">E-mail</label></dt>
<dd id="email-element">
<input type="text" name="email" id="email" value=""></dd>
<dt id="password-label"><label for="password" class="required">Senha</label></dt>
<dd id="password-element">
<input type="password" name="password" id="password" value=""></dd>
<dt id="Salvar-label">&nbsp;</dt><dd id="Salvar-element">
<input type="submit" name="Salvar" id="Salvar" value="Salvar"></dd></dl></form>

Considerações Finais

Trabalhar com Zend_Form é muito simples e nos proporciona uma produtividade maior em nosso dia-a-dia, tenho trabalhado com ele diariamente e posso dizer que tem sido com muito sucesso.
Obviamente, há muito mais coisas para ver e este tutorial é apenas introdutório, durante nosso tutorial espero poder encaixar outras funcionalidades como Subform.

Espero que você tenha gostado de mais esse capítulo.

Ah, os fontes encontram-se no github.

Abraço.
Loading mentions Retweet
Filed under  //  framework   php   zend   zfseries  

Comments (9)

May 8 / 10:45am

Integrando o Jobs com o twitter

Uma das funcionalidades que eu mais queria adicionar ao jobs era a integração com o twitter e eu acabei demorando para fazê-la porque meu tempo esteve escasso nos últimos dias e para somar eu tive um problema nas costas que me impediram de trabalhar por alguns dias, mas o importante mesmo e motivo deste post é que a integração foi feita hoje da seguinte forma:

O usuário acessa o jobs, escolhe uma vaga e a seleciona para ver seus detalhes.

É mostrado logo abaixo dos detalhes da vaga uma opção para twitar vaga e por motivos de segurança o twitter exige que você autorize a integração do jobs com a sua conta do twitter. Fique tranquilo pois o site não tem acesso nenhuma informação sensível sua como por exemplo a senha, a propósito, a tecnologia OAuth é uma das mais seguras para autenticação em ambiente web na atualidade. 

Veja na screenshot abaixo como a conexão entre o jobs e o twitter é feita:

Após autorizar o jobs a se conectar com sua conta, você já pode twitar pelo nosso site, dessa forma, é bem prático indicar as vagas para os seus seguidores. Olha só:

 
Pronto, foi twitado.

Esta integração foi bem tranquila e eu poderia ter feito utilizando diretamente a API do twitter ou usando o @Anywhere que permite integrar sites com o twitter usando somente javascript de uma maneira bem simples e prática, essa foi a maneira utilizada. 

É isso, espero que os usuários do jobs aproveitem mais essa funcionalidade do site e claro, espero os feedbacks de vocês.

Abraços.
Loading mentions Retweet
Filed under  //  javascript   jobs   rails   twitter  

Comments (0)

May 4 / 12:27pm

Programadores Incompetentes

 
Eu comecei a me tornar um programador por volta de 1993 quando eu criava add-ons (nem era esse o termo usado na época) para o meu BBS.
Tudo começou quando eu montei meu BBS e utilizando BBSs de terceiros eu percebia que algumas tinham recursos que não eram o padrão do Remote Access (gerenciador de BBS que eu usava) e ao perguntar para os respectivos Sysops desses BBSs onde eles haviam encontrado estas aplicações, a resposta que eu recebia era: 
 
-- Foi eu quem fez
-- Você quem fez? Como assim? Não vem embutido com o RA? Eu me perguntava
-- Não. Esse foi eu quem programei usando Turbo Pascal. 
-- UAU! Passa pra mim? Quero colocar no meu BBS.
-- NÃO! Era a resposta que eu recebia

Read the rest of this post »

Loading mentions Retweet

Comments (9)

Apr 28 / 12:11pm

Treinamento de Zend Framework

Alô Moçada!


Para aqueles que sempre me perguntam quando haverá treinamento de Zend Framework, eu informo que tem novas turmas previstas na X25 Treinamentos e Consultoria que é a empresa onde ministro treinamentos de PHP e JAVA.

Entre estas turmas previstas, tem uma turma que está confirmada então se você tem interesse em aprender a usar o Zend Frameworkveja como se matricular e conheça mais sobre o treinamento.

Espero te ver lá.

Um grande abraço.
Loading mentions Retweet
Filed under  //  PHP   treinamento   Zend Framework  

Comments (0)

Apr 25 / 10:24am

Atualizem suas agendas

       
Click here to download:
Atualizem_suas_agendas_tags_ph.zip (50 KB)
Esse post é especial para aqueles que fazem parte da comunidade PHP brasileira e/ou estão buscando conhecer mais a linguagem.
 
Decidi postar aqui todos os eventos que tenho conhecimento que já foram divulgados por aí, colocando todos em um único ponto para que vocês possam analisar as datas com antecedência e começarem a se planejar.
 
Este ano, seguindo a tendência do ano passado, a nossa comunidade está bem servida de eventos que nos permitem aprofundar mais o nosso conhecimento em áreas que já conhecemos e também conhecer outras que ainda não tivemos oportunidade de trabalhar, além é claro, de fazer o tão importante networking. 
 
Bom, segundo estou sabendo, os seguintes eventos já estão confirmados:

Read the rest of this post »

Loading mentions Retweet
Filed under  //  eventos   php  

Comments (0)

Apr 19 / 8:02am

Unindo o útil ao agradável: jobs.adlermedrado.com.br

Olá pessoal.

Apresento a vocês neste post um novo serviço que foi implementado por mim chamado jobs.adlermedrado.com.br, que se trata basicamente de um site bem simples onde pretendo agrupar vagas de emprego e disponibilizar a aqueles que se interessarem.

Você pode estar se perguntando nesse momento: Porque você fez isso? E a minha resposta é:

  1. Como eu sou instrutor de cursos como PHP e JAVA por exemplo, sempre me perguntam se existem alunos que eu possa indicar para empregos
  2. Pelo fato de estar sempre em contato com a comunidade, sempre me perguntam se conheço alguém para indicar a alguma vaga
  3. Eu precisava de um pequeno projeto para passar meu tempo
  4. Os principais sites de empregos que conheço possuem formulários enormes que me fazem ter dores de barriga todas as vezes que penso em me cadastrar neles
Baseado nos ítens acima, eu realizei a união do útil ao agradável porque eu pude passar o meu tempo desenvolvendo nas horas vagas, vou publicar oportunidades de emprego  quando me perguntarem se conheço alguém pra indicar e também pude treinar mais um pouco o desenvolvimento com ruby on rails (xiitas de outras linguagens: Não percam o seu tempo me enchendo o saco).

A minha idéia ao desenvolver este pequeno site foi a de tornar esse processo o mais simples possível, mais ou menos assim:

  • Encontramos vagas disponibilizadas na Internet e cadastramos ela aqui, ou:
  • Alguém encontra vagas disponibilizadas na Internet e cadastra ela aqui, ou:
  • Uma empresa vem aqui e cadastra sua vaga
O profissional vem ao site e pesquisa pelas vagas.
  • Encontra a vaga que deseja se candidatar
  • Envia seu currículo conforme solicitado pela empresa
  • E pronto. Aguarda pelo retorno
Ninguém vai precisar se cadastrar, ninguém vai precisar pagar, ninguém vai precisar preencher formulários enormes e cansativos como os exigidos pelas empresas de recrutamento tradicionais que existem por aí.

A propósito, antes que me perguntem: "Eu não quero viver disso e sinceramente acho que nunca terei lucro financeiro com esse site".

Ainda preciso aparar algumas arestas, terminar de implementar a integração do site com o twitter, mas acho que já dá para ser usado, inclusive, peço a gentileza para caso você perceba algum funcionamento estranho, me informar pelo meu email adler arroba adlermedrado ponto com ponto br para que eu corrija.

Espero que meu site seja útil e simples como eu desejo e que as pessoas utilizem.

Ah, o endereço é: http://jobs.adlermedrado.com.br

Um grande abraço.

Loading mentions Retweet

Comments (8)

Apr 5 / 8:05am

Dropbox - Uma excelente opção para backup remoto

Se você precisa de espaço em servidores remotos para fazer backups de documentos e congêneres o Dropbox é uma opção a ser considerada. 
Eu o utilizo desde Setembro de 2009 e posso dizer que ele não deixa nada a desejar pois ele é simples de usar, sem burocacria para assinar (leia-se: Não precisa deixar número de cartão de crédito pré-registrado) e muito conveniente. 

Read the rest of this post »

Loading mentions Retweet

Comments (4)