segunda-feira, 15 de dezembro de 2008

eSeminário Flex e PHP

A Adobe está disponibilizando um seminário virtual sobre sua ferramente Flex.

Lee Brimelow, ira mostrar como criar uma aplicação Flex com PHP e o Zend Framework. Veremos ainda como executar nossa aplicação em um desktop com a ajuda do Adobe AIR runtime.

Mais informações:
http://www.adobe.com/cfusion/event/index.cfm?event=detail&id=462539&loc=en_us

terça-feira, 9 de dezembro de 2008

Cheat Sheet PHP

Para quem é iniciante e acha uma tarefa hercúlea decorar os principais comandos em PHP, existem as cheat sheet.
São guias de referência rápida, tudo que você precisa em uma única página.

http://www.ilovejackdaniels.com/cheat-sheets/php-cheat-sheet/

Dump no Mysql em linha de comando


mysqldump -u [usuario] -p [banco] > [arquivo.sql]

Simples como a vida :)

segunda-feira, 24 de novembro de 2008

ezPDF vs IE via SSL

Ao utilizar a classe ezPDF para gerar relatórios no php, tive um problema interessante, no IE6 e IE7 o pdf não funcionava, simplesmente apresentava erro no download via SSL. Certamente o cabeçalho HTTP estava sendo gerado de forma "incompatível" com os IEs. Mas no firefox estava tudo certo.

Como não era meu interesse alterar a classe, o que poderia gerar uma explosão de versões, simplesmente mudei a forma de utilização.

Código usado anteriormente:


include ('class.ezpdf.php');
$pdf = new Cezpdf();

... geração do relatório

$pdf->ezStream();

Código novo:

include ('class.ezpdf.php');
$pdf = new Cezpdf();

... geração do relatório

header("Cache-Control: cache, must-revalidate");
header("Pragma: public");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"relatorio.pdf\"");
echo $pdf->output();
exit;

Minha idéia foi simples, forçar o download via http :)
Se quiser saber mais sobre a ezPDF use este tutorial Hello Word.

domingo, 29 de junho de 2008

Como instalar Rails no Ubuntu

Como ter um ambiente de desenvolvimento para Ruby on Rails no Ubuntu? Simples:

Primeirio temos que instalar o interpretador Ruby:

sudo apt-get install ruby rubygems irb ri rdoc ruby1.8-dev build-essential


depois os gems do Rails:

sudo gem install rake activesupport activerecord actionpack actionmailer activeresource rails



Assim teremos a versão mais atual do Rails.

Mas ainda falta registrar os gems nas variáveis de ambiente.

sudo gedit /etc/bash.bashrc


inclua a linha

#Rails
export PATH=$PATH:/var/lib/gems/1.8/bin

Agora é só testar
rails -v


:)

terça-feira, 24 de junho de 2008

Diretórios Virtuais no Apache

Hoje precisei criar uma diretório virtual, ou seja, uma url que não corresponde a um diretório no mapeamento padrão do servidor web, tudo isso usando Apache.

Ex:
http://www.google.com.br/maps
A pasta maps deve estar na raiz do diretório.
Mas se eu quiser colocar a pasta em outro local, como /meuDir/maps?

A tarefa bem simples. Basta editar o httpd.conf incluindo a seguinte entrada.


Alias /maps /meuD/maps

Não esqueça de dar um restart/reload para atualizar o httpd.conf.

quarta-feira, 6 de fevereiro de 2008

40 sinais de que você realmente é um reles programador PHP

Eu estava trabalhando em uma lista de "pecados" para programadores PHP, mas o Reinhold Weber se adiantou. Melhor, porque a lista dele é bem maior que a minha :)
Resolvi fazer uma tradução livre. Vamos lá:

Isto é o que eu prefiro chamar de minha "lista de programação da vergonha".
Embora tendo uma educação universitária formal com aulas sobre engenharia de software, arquitetura de software empresarial e design de banco de dados eu tenho sido culpado por todas essas coisas uma vez ou outra.
A lista é completamente subjetiva e baseada no Eclipse.

Você é um reles programador PHP se:


  1. Não comentar seu código apropriadamente com algo como phpDoc.

  2. Não ver a necessidade e/ou benefício de uma boa IDE de programação
    como Zend Studio ou Eclipse PDT.

  3. Nunca ter usado uma forma de controle de versão como Subclipse.

  4. Não adotar algum padrão de código/nome e convenção geral e insistir com eles, pelo menos, ao longo de todo o projeto.

  5. Não usar uma metodologia consistente.

  6. Não escapar e/ou propriamente validar entradas ou consultas SQL.

  7. Não planejar sua aplicação minuciosamente antes de começar a codificar.

  8. Não usar desenvolvimento guiado a testes (TDD).

  9. Não programar e testar com error reporting on.

  10. Não ver os benefícios de um debugger.

  11. Não refatorar seu código.

  12. Não separar camadas diferentes usando algo como MVC.

  13. Não saber o significado de: KISS, DRY, MVC, OOP, REST.

  14. Não retornar conteúdo mas sim echo ou print de suas funções
    ou classes.

  15. Nunca ter visto a vantagem de testes unitários ou teses em geral.

  16. Retornar HTML, não dados, string ou objetos.

  17. Mensagens e parâmetros de configuração hard code.

  18. Não otimizar suas consultas SQL.

  19. Não usar __autoload.

  20. Não admitir manipulação de erros inteligente.

  21. usar $_GET no lugar de $_POST em qualquer ação destrutiva.

  22. Não saber como usar expressões regulares.

  23. Nunca ter ouvido sobre SQL injection ou cross-site scripting.

  24. Não permitir configuração simples, podendo ser parâmetros passados a um construtor de classe, métodos set/get chamados depois, ou constantes definidas em runtime.

  25. Não entender os benefícios e limitações da programação orientada a objeto.

  26. POO imprópria / tudo o que escrever, não importa o quão pequena é OO.

  27. Pensar que reuso de software é igual/requer que seu código seja OO.

  28. Não escolher padrões inteligentes.

  29. Não ter apenas um arquivo de configuração.

  30. Não querer que o conteúdo dos arquivos seja visto, mas para isso usar uma extenção .INC ao invés de .PHP.

  31. Não usar camada de abstração de banco de dados.

  32. Não manter o DRY, Don't repeat yourself(Não se repita). Se tem que copiar e colar ou duplicar algo no seu código seu design deve estar errado.

  33. Não fazer uma função/classe/método fazer somente uma coisar e não faze-las interagir.

  34. Não tentar usar as vantagens das características específicas da POO como classes abstratas, interface, herança, polimorfismo e modificadores de acesso.

  35. Não otimizar o design da sua aplicação com padrões de projeto estabelecidos.

  36. Não permitir seu usuário definir um diretório base se tiver múltiplos arquivos e/ou diretórios.

  37. Popular o namespace global, uma opção é prefixar as funções na sua biblioteca com uma string em comum.

  38. Não permitir um prefixo de tabela quando usar tabelas de banco de
    dados.

  39. Usar um template engine separado.

  40. Não dar uma olhada em frameworks estáveis para inspiração, muitos deles tem avançados conceitos de desenvolvimento web e boas práticas no código.
Como o post ficou grande, deixo os comentários com vocês.

domingo, 27 de janeiro de 2008

Acompanhando log de SQL do Rails

Estive curioso para saber quais comandos SQL minha aplicação Rails está gerando e quanto isso demora?

A resposta está na pasta log, lá o Rails coloca seus logs separados em development, test e production, tudo em runtime.
Tudo bem! É meio chato ficar abrindo o arquivo de log toda hora, eu sei. Para isso existe um aplicativo Linux chamado Tail que acompanha o log.

tail -f  [nome_do_arquivo]


Linux e o meu Windows???

Infelizmente não existe solução nativa para acompanhar o log do Rails no windows, mas nem tudo está perdido!

Existe um aplicativo free, para Windows, que simula o Tail em modo gráfico, pode ser baixado em http://sourceforge.net/projects/tailforwin32

Para quem usa o Aptana/RadRails, é só clicar, com o botão direito, no log que você deseja acompanhar e selecionar a opção Tail. Abrirá uma nova view console que acompanha o log da aplicação Rails, inclusive os comandos do modo console.

Para não fechar o console a cada start do server, ative o Pin Console.
E para continuar aparecendo da próxima vez que o RadRails for aberto salve a perspectiva em Window > Save Perspective As ...

Pronto agora você pode acompanhar os logs de suas aplicações Rails no Windows.

domingo, 20 de janeiro de 2008

Dicas: Rails 2.0

Depois de apanhar um pouquinho com o meu amigo Vinicius, acostumei com algumas novidades do Rails 2.0:

O MySQL não é mais o padrão para estrutura básica do projeto, e sim o SqlLite. Então preste atenção ao criar um novo projeto. Se quiser colocar o MySQL como padrão use:

rails [nome_do_projeto] -d  mysql
No lugar do mysql pode ser qualquer adaptador, como oracle, por exemplo.

Lembre-se de usar o generate scaffold com a declaração dos atributos, assim já são criados as migrates da forma correta, o comando é:

ruby script/generate scaffold nome_do_modulo atributo:tipo

exemplo:
ruby script/generate scaffold tasks title:string check:boolean

isso gera a seguinte migrate:

class CreateTasks < ActiveRecord::Migration
def self.up
create_table :tasks do |t|
t.string :title
t.boolean :check

t.timestamps
end
end

def self.down
drop_table :tasks
end
end


O t.timestamp gera os campos created_at e updated_at no banco.

Não precisamos mais criar o banco via SQL. Para o Rails criar o banco baseado no database.yml use:
rake db:create:all
Para chamar um controller padrão podemos usar duas sintaxes no routes.rb :
map.root :controller => "nome_do_controller"
ou
map.connect '', :controller => "nome_do_controller"
Isso não é novo, apenas um outra sintax, e não esqueça de apagar o /public/index.html.

quarta-feira, 9 de janeiro de 2008

Adicionando o Manual do PHP no mecanismo de busca do Firefox

Depois que começei a usar o mecanismo de busca do Firefox apontando para o google, raramente visito a home. É bem mais prático digitar direto no navegador. :)

Que tal colocar o manual do PHP no mecanismo de busca do Firefox?

Certamente o ícone do google estará diferente. Isto significa que existe um mecanísmo de busca novo para adicionar.
Clique no ícone e depois em Adicionar "Manual PHP".


O resultado final será esse.

Como não tenho IE7 instalado, alguém me diga se funciona nele.



sábado, 5 de janeiro de 2008

Testes simultâneos com Selenium

Para quem ficava um tempão executando uma bateria de testes um a um no Selenium, a Thought Works criou o SeleniumGrid capaz de executar vários testes simultâneos, inclusive em sistemas operacionais distintos.

Posts Relacionados:

10 mitos sobre PHP desvendados e PHP-GTK

Jaybill McCarthy discute em seu post 10 mitos sobre PHP.

Concordo em todos, o único que ainda não soa bem para mim é:

Myth #8: PHP is only good for web applications

That was true once, but these days it’s pretty much general purpose. It has a command line interpreter that can be run completely independent of the web server (for scripts) but can still use your existing PHP code libraries. You can even knock together GUI applications using PHP-GTK. Admittedly, PHP’s lineage and primary purpose is web applications, but that’s far from all you can do with it.

Trabalho com o PHP em linha de comando também, mas ainda não me basearia para uma aplicação inteira. Opinião minha. Preciso estudar um pouco mais. Um teste legal seria portar uma aplicação OO Web para Desktop.

Para saber mais sobre PHP-GTK tem o livro do Pablo Dall'Oglio em português ou acesse:
De resto nem preciso comentar, esse é um artigo para esclarecer à várias pessoas que ainda duvidam do PHP.

quinta-feira, 3 de janeiro de 2008

Caio Moritz de endereço novo

Tive que atualizar meu BlogRoll por causa do Caio Moritz, que está de endereço novo, como ele mesmo disse, teve que "abrir a mão e comprar um domínio" :P

O novo endereço é www.caiomoritz.com, comece o ano aproveitando os artigos sobre Rails e PHP!