RESOLVIDO: RequestExpiredRequest timestamp

Bom dia pessoal! tudo certo?

Esses dias tivemos um problema relacionado a integração com o AmazonSES, estava retornando a seguinte mensagem:

RequestExpiredRequest timestamp: Mon, 14 Feb 2011 10:13:32 GMT expired.
It must be within 300 secs/ of server time

Verificamos o timezone do PHP na máquina e estava tudo certo, porém, notamos que existia uma diferença de alguns minutos entre o servidor que rodava a nossa aplicação e o servidor de integração da Amazon.

Aí rodamos o comando date para checar a data, e retornou o seguinte:

$ date
Mon Feb 14 10:16:24 UTC 2011

Chegamos a conclusão que a data do servidor não estava sincronizada com o NTP (Network Time Protocol). Para resolver esse problema, rodamos o seguinte comando:

$ sudo ntpdate pool.ntp.org
14 Feb 10:08:55 ntpdate[25724]: step time server 38.229.71.1 offset -639.622800 sec

And the magic happens.

Um forte abraço pessoal, espero que isso ajude vocês também!

😉

Problemas de conexão com banco de dados Oracle no Linux

Boa noite pessoal, tudo bem?

Pode ser que você esteja buscando essa solução há algumas horas, dias ou até semanas. Pois é, eu me bati muito com esse tipo de problema.

Basicamente o que aconteceu foi o seguinte:

De uma hora para a outra as conexões com o banco de dados Oracle em um servidor Linux (em produção) pararam de funcionar do nada.

Eu fiquei muito bravo, pois não conseguia entender onde estava o problema, checava tudo quanto é tipo de operação que a aplicação fazia, e estava tudo certo. Testes rodando local perfeito, aí descartei a hipótese de ser falha na aplicação.

Comecei a revirar a web atrás da solução desse problema, e é até um problema muito difícil de se procurar algo no “stackoverflow”. Não fazia nem idéia de qual termo poderia colocar para descrever esse problema.

Uma hora, quando eu estava bem cabreiro já com a situação, eu lembrei que o pessoal da Infra havia trocado o “Hostname” recentemente da máquina, e comecei a notar um comportamento estranho quando eu digitava “sudo -s” para pegar permissões de root na máquina, retornava uma mensagem: “sudo:unable to resolve host linux-server“.

Aí me veio na idéia de adicionar o hostname novamente no /etc/hosts, basicamente editei o arquivo e adicionei uma linha assim:

127.0.0.1                                   linux-server.local                            linux-server

Depois tentei rodar novamente o comando “sudo” e funcionou sem dar nenhum tipo de erro no terminal. Depois disso, já tentei reiniciar o apache, e advinhem?

As coisas voltaram a funcionar e todos os problemas do mundo foram resolvidos num passe de mágica.

Espero que você consiga resolver rapidamente seu problema com essa ajuda aí!

Um forte abraço!

Os 3 problemas mais comuns no universo web

internet-of-things-2Hoje eu gostaria de compartilhar com vocês alguns problemas que são recorrentes no mundo web e que as vezes passam despercebido, e são problemas muitas vezes banais, cuja solução na maioria dos casos é simples e o retorno é altíssimo.

Tentando ser bem objetivo, vamos falar basicamente dos seguintes pontos:

  1. Domínios (endereço do site/sítio) sem o “www.”
  2. Formulários de contato que não enviam e-mail por falta de configuração
  3. Esquecer de colocar o código de Acompanhamento do Google Analytics

1. Domínios (endereço do site/sítio) sem o “www.”

Uma boa parte dos usuários na rede mundial de computadores ainda utilizam os sites com o prefixo “www.”, é uma prática comum, que as vezes é esquecida na hora de fazer a definição dos sub domínios no gerenciamento de DNS do domínio. Pra quem não sabe, DNS significa Domain Name Server (Servidor de Nomes de Domínios), ele é responsável por traduzir o nome que você digita na barra de endereços para um endereço IP (Exemplo: rosseti.eti.br -> 127.0.0.1).

Se os usuários não alcançam seu site colocando o “www.” você pode estar perdendo “leads”, que são possíveis clientes ou interessados naquilo que você está vendendo ou oferecendo. A solução para esse problema é simples, basta ir até o sistema de gerenciamento do seu domínio e acrescentar a entrada “www” do tipo A e apontar para o IP do seu servidor. E pronto, só aguardar uns 30 minutos para propagar e o problema estará resolvido!

2. Formulários de contato que não enviam e-mail por falta de configuração

Esse problema é mais comum do que a gente imagina, as vezes um site é publicado na internet e essa parte acaba não sendo testada de forma efetiva. O problema pode estar relacionado a várias circunstâncias, que vão desde esquecer os parâmetros de configuração do servidor de disparos de e-mail, parametrização incorreta de parâmetros de envio, as vezes o servidor não possui as características de envio necessários.

Basta fazer os ajustes necessários e começar a receber os contatos de possíveis clientes.

3. Esquecer de colocar o código de Acompanhamento do Google Analytics

Esquecer o código de acompanhamento do Google Analytics é imperdoável :P. Hoje é muito importante você ter controle e gestão sobre os acessos ao seu site, conhecer os usuários, o comportamento deles, qual o percentual de rejeição do seu conteúdo. Todas essas coisas são métricas que vão auxiliar você a tomar decisões para melhorar a venda e oferta de seus produtos na web. Isso é tão interessante porque nós estamos o tempo inteiro vendendo, ou estamos vendendo nossa própria imagem, uma idéia, ou um produto específico, e isso vale para todos os casos.

Então não esqueça de adicionar o Tracking do Google Analytics nas próximas páginas.


 

Por hoje é isso pessoal, deixem seus comentários aí e me ajudem a melhorar cada vez mais.

Obrigado!

 

Certificado SSL Gratuito

ssl-vpn1Parece mentira né?! Mas não é não. Eu estava quase comprando um certificado SSL no serviço GoDaddy para um dos servidores que administro, porém, pensei: “A certificação de domínios não deve ser muito complicada, deve existir alguma entidade que faça a certificação gratuitamente, vou fuçar…”.

Minha busca começou e o primeiro resultado no Google já era o serviço StartSSL. Eu entrei no site e a primeira impressão que tive foi: “Que site feio”, mas comecei a navegar e achei muito funcional.

A StartCom oferece o certificado de classe 1 x.509 SSL livre (para uso pessoal) “StartSSL livre”, que funciona para servidores Web (SSL/TLS), bem como para a criptografia de E-mail (S/MIME). Dispõe também dos certificados de classes 2 e 3 bem como Certificados de Validação Estendida, onde uma validação completa (com custos) é obrigatória. (Fonte: Wikipedia)

Para mais detalhes sobre o serviço de gratuito de classe 1 você pode acessar esse endereço: https://www.startssl.com/?app=1

Para começar você deve criar uma conta através desse endereço: https://www.startssl.com/?app=12 e posteriormente clicar na opção “Sign Up“. Basta preencher os dados corretamente e seguir as instruções do site/e-mail.

Vale lembrar que esse serviço de Classe 1 é para utilização Pessoal (No Commercial Use).

Até a próxima.

Resolvido: Problemas com COUNT() + JOIN no MySQL

Há algum tempo eu vinha sofrendo algum ataque de melancolia quando o assunto se tratava de COUNT+JOIN+GROUP em banco de dados. Deixa eu explicar qual era o problema, veja esse comando SQL:

SELECT COUNT(c.codigo) AS total FROM fa_curriculo c
LEFT JOIN fa_curriculo_x_area cxa
ON cxa.cod_curriculo = c.codigo

O resultado desse comando estava produzindo o resultado: 7, porém quando colocava o GROUP BY no final da Query o resultado produzido era parecido com esse:

| total |
| 1      |
| 1      |
| 1      |
| 1      |
| 3      |

Aí eu fiquei muito indignado, fucei a internet inteira pra ver se alguém já tinha passado pelo mesmo problema, porém ninguém com uma solução aplausível. Eu achei por acaso uma pessoa que colocava a solução no meio de um contexto totalmente fora, aí eu falei: “Vou testar, mas isso não vai funcionar”. Advinha?! Não é que funcionou!!!! Olha a maracutáia:

SELECT COUNT(DISTINCT c.codigo) AS total FROM fa_curriculo c
LEFT JOIN fa_curriculo_x_area cxa
ON cxa.cod_curriculo = c.codigo

Resultado produzido: 5 (Exatamente o esperado, e não é que faz sentido?)

Eu espero que isso ajude mais pessoas.

Obrigado!

Crossbrowsing, deu pau no ie6 e agora?

Neste post estarei tratando alguns aspectos relativos a tecnologia XHTML+CSS que é utilizada na codificação de interfaces na web.

Antigamente eu codava CSS e perdia muito tempo alinhando elementos nos browsers da época, as vezes uma ficava sem altura, eu colocava borda e o negócio não funcionava. Até que um dia eu descobri através da leitura na internet de como corrigir esses “bugszinhos” com hack’s.

O hack mais interessante que consegui fazer foi colocar o atributo “overflow: hidden” quando você tem uma div como container e 2 sub-divs com float left e right. O atributo overflow ficaria na DIV container, corrigindo o bug de altura de uma div. Segue um exemplo utilizando CSS apenas:

div#container {
    width: 400px;
    overflow: hidden
}

div#container .left, div#container .right {
    float: left;
    width: 195px
}

Outra dica interessante é utilizar uma classe para alinhar elementos com float. Geralmente tenho utilizado a seguinte definição:

.left {
    float: left;
    display: inline /* este atributo é importante para corrigir bug de padding no IE6 */
}

.right {
    float: right;
    display: inline

}

Essas dicas me auxiliam bastante quando tenho problemas de espaçamento em diferentes browsers.