January 4, 2010
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.
September 23, 2009
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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
November 10, 2008
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!
July 22, 2008
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”.
May 2, 2008
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.