PHP + Zend + PDO + MySQL

MySQL, PHP, Uncategorized 2 Comments

Hoje eu estava fazendo um site utilizando php, Zend Framework, PDO e MySQL.

Quando fui fazer uma tela que se conectava com o banco de dados, ocorria o seguinte erro:

SQLSTATE[HY000] [2005] Unknown MySQL server host ''localhost'' (1)

Removi do arquivo de configuração a linha que informava o host onde estava o banco de dados e o erro passou a ser:

SQLSTATE[28000] [1045] Access denied for user 'user'@'localhost' (using password: YES)

Não, as permissões não estavam erradas. O problema todo era o arquivo de configuração do zend (application.ini), que estava assim:

resources.db.params.host = 'localhost'
resources.db.params.username = 'user'
resources.db.params.password = 'pass'
resources.db.params.dbname = 'db'

O problema todo era as aspas simples, deveriam ser aspas duplas:

resources.db.params.host = "localhost"
resources.db.params.username = "user"
resources.db.params.password = "pass"
resources.db.params.dbname = "db"

Acabei perdendo a manhã toda até achar este pequeno problema.

As coisas estúpidas feitas quando se trabalha com programação

Java, Java EE, Programação, Uncategorized No Comments

Este post foi traduzido e alterado deste link:
http://blog.cherouvim.com/the-stupidest-things-ive-done-in-my-programming-job/

Observação: Não fui eu quem escreveu este post. Apenas fiz a tradução e alteração pois achei muito interessante.

As coisas estúpidas feitas quando se trabalho com programação

  1. ORM
    • Estupidez
      Construir um framework próprio de ORM.
    • Consequências
      O projeto vira uma bagunça depois de 2 anos de manutenção com gambiarras para passar pelo meu framework ORM desenvolvido e chamar comandos SQL’s customizados.
    • O que deveria ter sido feito?
      Usar hibernate, iBATIS, Cayenne ou outros parecidos.
  2. EAV
    • Estupidez
      Usar uma modelagem de banco de dados do tipo Entity-Attribute-Value model.
    • Consequências
      Solução não escalável e impossibilidade de rodar queries úteis no banco de dados.
    • O que deveria ter sido feito?
      Usar uma modelagem de banco de dados normalizada.
  3. Acesso ao Banco de dados
    • Estupidez
      Sincronizar o acesso ao banco de dados com uma conexão compartilhada.
    • Consequências
      Escalabilidade zero. Tempos de respostas muito lentos quando mais de 10 usuários estavam utilizando a aplicação.
    • O que deveria ter sido feito?
      Não fazer isto e utilizar um pool de conexões como c3p0 e usar uma “nova” (reutilizada) conexão retornada do pool para cada ciclo de request / response.
  4. IDE
    • Estupidez
      Evitar aprender e utilizar uma IDE.
    • Consequências
      Falta de habilidade de compilar, testar e fazer o deploy da aplicação rapidamente e / ou geralmente fazer qualquer coisa útil.
    • O que deveria ter sido feito?
      Familiarizar-me com uma IDE. Ex.: NetBeans, eclipse, etc.
  5. Transações
    • Estupidez
      Não usá-las.
    • Consequências
      Corromper os dados da aplicação.
    • O que deveria ter sido feito?
      Usar transações do banco de dados. No MySQL usar InnoDB.
  6. Prepared Statements
    • Estupidez
      Usar Statements, concatenação de strings e escapar caracteres para montar queries “seguras”.
    • Consequências
      Possibilidade de SQL Injections na aplicação. É possível logar utilizando por exemplo “or 1=1;delete from users;” e alterar o estado do banco de dados de uma forma muito desagradável.
    • O que deveria ter sido feito?
      Usar Prepared Statements que montam e escapam corretamente as queries dependendo do driver JDBC utilizado.
  7. Lógica de Negócios
    • Estupidez
      Fazer isto nos templates (JSP).
    • Consequências
      Aplicação de manutenção difícil.
    • O que deveria ter sido feito?
      Fazer isto utilizando o padrão MVC com servlets ou com um Front Controller. Melhor se utilizar um framework MVC open source como Struts, Spring MVC, etc.

ORA-12519, TNS:no appropriate service handler found

Uncategorized No Comments

Tenho o oracle xe instalado no computador do trabalho. Após algumas horas trabalhando a aplicação não consegue mais se conectar com o banco de dados dando o erro “ORA-12519, TNS:no appropriate service handler found”.

Neste blog: http://en.newinstance.it/2007/06/01/ora-12519-tnsno-appropriate-service-handler-found/ a solução dada foi executar o seguinte comando como system:

ALTER SYSTEM SET PROCESSES=150 SCOPE=SPFILE;

Executei o comando e até agora não tive mais este erro!

Archlinux HP Pavilion dv9000 – Suspend e Hibernate

ArchLinux, Linux, Megadeth, Programas, Shows, Uncategorized No Comments

Como mencionado no último post, não estava conseguindo fazer meu notebook hibernar ou suspender no modo gráfico no Archlinux. Após uma simples pesquisa no google encontrei a solução: bastou colocar o meu usuário no grupo “power”.

O primeiro post

Uncategorized No Comments

Talvez esta seja uma tarefa difícil, escolher o que escrever no seu primeiro post, ainda mais se este for o seu primeiro blog. Nesta hora surgem diversas dúvidas: o que escrever, como escrever, pra que criar um blog, onde iremos chegar, etc…
Acho que devo dividir este post em algumas partes:

  • Por que criei o blog
  • Quais assuntos serão escritos neste blog
  • O que quero com este blog

Vamos então definir cada uma destas partes:

Por que criei o blog?
Criei o blog simplesmente porque surgiu a oportunidade de possuir um domínio .com.br com um CPF e não mais com o CNPJ. Mas este não é o único motivo, um outro seria a possibilidade de repassar conhecimentos adquiridos no trabalho / faculdade / pós-graduação / vida. Outro motivo seria postar dúvidas e, de preferência, que alguém me ajuda-se a solucioná-las.

Quais assuntos serão escritos neste blog?
Com certeza, a maior parte dos posts escritos neste blog terão referência direta à área de informática, na qual trabalho há pelo menos 5 anos e estou envolvido com programação desde os 12 anos de idade (12 anos atrás!!!).
Outros assuntos poderão ser abordados neste blog também, como por exemplo shows que irei, discussões sobre assuntos diversos, etc…

O que quero com este blog?
Pergunta muito difícil de responder, mas com certeza a melhor resposta é adquirir conhecimentos com os post aqui discutidos.