George on Tech

Tecnologia, computação, novidades, startups, geek stuff e afins

No início, o Universo foi criado.
Isso irritou profundamente muitas pessoas e, no geral, foi encarado como uma péssima idéia.

Veja e Doctor Who

Published by George Guimarães

Alguém na revista Veja assiste Doctor Who.

Capa de Veja de 2 de julho de 2008 (edição 2067):

Capa da Veja de 3 de julho de 2008

Doctor Who 2005 S01E02 (The End of the World):

Lady Cassandra, do seriado Doctor Who

A personagem acima é Lady Cassandra O’Brien.Δ17. O Doutor e Rose viajam 5 bilhões de anos no futuro e Lady Cassandra é a última humana “pura” do universo. Ela ficou assim após 708 cirurgia plásticas e se transformou num ser de pele esticada numa moldura. Seu cérebro fica alojado num jarro abaixo da moldura (não mostrado).

Na hora que vi a revista lembrei do seriado (ajudou o fato de eu ter começado a assistir há mais ou menos uma semana atrás). Achei curioso. Será que o diagramador/designer/seja-lá-quem-faz-isso sabia do seriado?

Comment now » . June 30th, 2008

Susto com roteador wifi

Published by George Guimarães

Tenho um Linksys Wrt54G modificado pra funcionar com o firmware alternativo DD-WRT.

Hoje tomei um baita susto. Todas as luzes das portas cabeadas estavam acesas. O wifi funcionava, mas não conseguia conectar ao meu modem. Aliás, as portas cabeadas estavam “mortas”, sem sinal quando ligava no computador.

Já tava xingando e vendo o preço de um novo no Submarino, mas consegui ressuscitar o maldito. Foi só reescrever o bendito firmware de novo (pelo wifi, o que não é recomendado). Mas na procura por soluções tive até que abrir o roteador e tava quase curto-circuitando a memória flash (posto fotos depois).

Enfim…. faz tempo que não postava e tô aproveitando o impulso de resolver o problema. Nem vou colocar links nem nada. Depois posto uma história melhor. Só queria deixar claro que esse não é um problema do DD-WRT. Parece ser um problema do próprio hardware da Linksys (que nunca havia dado problema até agora). Nem o hard reset funcionou.

1 Comment » . June 3rd, 2008

Apresentação no WebDevCamp

Published by George Guimarães

Aqui está a apresentação que eu fiz no WebDevCamp SP 07.

Os dois dias do evento foram muito proveitosos. Foi corrido pra caramba (tinha também que entregar o trabalho de formatura, mas enfim.. isso é história pra outro post).

Logo devem sair os vídeos do evento. Depois eu coloco no blog.

Comment now » . December 9th, 2007

Permalinks do Wordpress no Nginx

Published by George Guimarães

Este blog funciona sem Apache (e, portanto, sem mod_php).

Ele é “servido” através de uma combinação do nginx (um http server e proxy reverso rápido e simples) e do FastCGI (que é onde eu interpreto os códigos PHP do Wordpress). Só essa combinação já daria um post (está anotado).

Mas eu quero deixar aqui uma dica. Para mudar os permalinks do Wordpress para algo como /ano/mês/post, ao invés do tradicional ?p=num-do-post, você precisa alterar alguns paramêtros de redirecionamento. O Wordpress até te dá uma receita de como fazer isso no Apache.

No nginx, basta usar o trecho abaixo dentro de uma seção “server”.

if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}

O que o trecho acima faz é checar se a URL acessada corresponder a um arquivo. Se o arquivo (ou diretório) existir, o nginx retorna sem modificar nada. Se a URL não corresponde a um arquivo/diretório, ele é interpretado como um permalink. A opção ‘last’ garante que essa será a última vez que a URL será redirecionado (para evitar loops infinitos).

1 Comment » . November 23rd, 2007

Gmail novo, problema novo

Published by George Guimarães

Tenho usado a nova versão da interface do Gmail. Não gostei muito. Achei que ficou lerda na hora de carregar da primeira vez, e os cliques ficaram mais insensíveis (parece que estão anestesiados.)

Mas o que me irritou mesmo foi quando eu clico para abrir um anexo. Meu Firefox transforma a aba atual do Gmail em uma aba em branco e mostra a mensagem de “abrir ou salvar o download?”. Geralmente eu escolho salvar e então a aba continua branca. Nem o “Back” funciona.

Contudo, isso é um problema da extensão Tab Mix Plus, e há uma solução. Entre nas opções do Tab Mix Plus, entre em Links, depois clique no ‘editar’ ao lado do “Prevenir abas em branco…”, e remova a linha “/disp=attd&view=att/”.

Pronto. Isso deve funcionar.

2 Comments » . November 22nd, 2007

Adestrando o mongrel com monit

Published by George Guimarães

267322487_db98d4515c1.jpgSe você “serve” suas aplicações rails usando o mongrel, tome cuidado.

Conforme o uso do cluster mongrel que você possui, ele tende a consumir cada vez mais RAM.

É um aumento gradual e lento, mas ocorre. A solução é reiniciar o mongrel_cluster de vez em quando, para liberar a memória RAM acumulada. Claro, cada vez que você inicia o mongrel de novo, o primeiro acesso à sua aplicação é um pouco mais lento. Mas acho que isso é melhor do que deixar os mongréis soltos comendo sua RAM e arriscando a travar (crash) a qualquer momento. (Estou instituindo agora que o plural de mongrel é mongréis).

Para automatizar essa tarefa, podemos utilizar o monit, que nada mais é do que o seu operador-de-datacenter-automatico-tabajara. No site deles há um grande número de exemplos de configurações.

Podemos configurá-lo para checar os processos do mongrel e restartá-los caso alguma coisa esteja errada, seja um aumento no consumo de memória, seja um consumo exagerado de cpu. Obviamente, se o processo desaparecer do nada, o monit se encarrega de iniciá-lo novamente. E tudo isso com um sistema de alertas via email, um servidor http para acompanhar o sistema e uma sintaxe de configuração praticamente humana. Fantástico, não? Deixa o nagios no chinelo, fácil, fácil.

Para instalar, versão Debian:

1
apt-get install monit

Exemplo do meu monitrc (rodando em produção nos servers do Pagestackr):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
set daemon  30          #checa os processos a cada 30 segundos
set logfile syslog facility log_daemon
set mailserver localhost
set mail-format { from: monit@pagestackr.com }
 
set eventqueue          #caso o servidor SMTP não esteja funcionando, guardar os alertas
     basedir /var/monit
     slots 1000          
 
set alert email_do_responsavel@servidor.com
 
set httpd port 2812 and
        use address localhost
        allow localhost
        allow admin:monit
 
  check system localhost
    if loadavg (1min) > 3 then alert
    if loadavg (5min) > 2 then alert
    if memory usage > 60% then alert
    if cpu usage (user) > 70% then alert
    if cpu usage (system) > 30% then alert
    if cpu usage (wait) > 20% then alert
 
include /etc/monit/*.conf

A configuração do monit é fácil de entender. Neste arquivo, configuramos o monit para checar os processos a cada 30 segundos, usar o servidor SMTP local para enviar emails de alertas, usar o servidor http na porta 2812 (é importante sempre configurar o servidor http do monit. Não se preocupe, a configuração como eu coloquei só aceita conexões locais e através do login admin/monit), e também definimos alguns alertas para a máquina em questão.

A última linha permite que a gente configure cada servico/processo separadamente.

Arquivo mongrel.conf:

1
2
3
4
5
6
7
8
check process mongrel_8000
        with pidfile /var/www/app/pagestackr/shared/pids/mongrel.8000.pid
        start program = "/usr/bin/mongrel_rails cluster::start -C /etc/mongrel_cluster/pagestackr.yml --clean --only 8000"
        stop program = "/usr/bin/mongrel_rails cluster::stop -C /etc/mongrel_cluster/pagestackr.yml --clean --only 8000"
        if totalmem > 40 MB for 4 cycles then restart
        if cpu > 60% for 4 cycles then restart
        if 3 restarts within 5 cycles then timeout
        group mongrel

Aqui definimos onde está o pid do mongrel em questão. Você deve repetir a configuração para cada instância do mongrel. É importante você ter configurado um arquivo de configuração do mongrel_cluster também (no meu caso, o arquivo pagestackr.yml).

Como podemos perceber, caso a instância do mongrel ultrapasse certos valores, ela é reiniciada (e também recebemos um alerta no email). Se houver muitos reinícios consecutivos, o monit desiste e envia um alerta (isso é útil para não ocasionar um loop infinito).

Antes de iniciar o monit, e se você usa Debian, você precisa descomentar a seguinte linha do arquivo /etc/defaults/monit:

# You must set this variable to 1 for monit to start
startup=1

Iniciando o monit:

monit start

Pra finalizar, se você usa o Capistrano pra efetuar o deployment do seu aplicativo no servidor, você precisa alterar as tarefas de start e stop da aplicação para “monit -g mongrel start” e “monit -g mongrel stop”.

É isso. Agora você explorar o comando “monit status” e acessar o servidor http do seu servidor para checar o monit.

Caso você tenha ficado com alguma dúvida, escreva nos comentários (logo abaixo).

3 Comments » . November 22nd, 2007

Apresentação no RejectConf

Published by George Guimarães

Estou “embedando” a apresentação que eu fiz durante o RejectConf 2007 na USP. O slideshare destruiu parte da formatação, mas nada que atrapalhe o conteúdo. O evento foi filmado. Assim que o pessoal editar os vídeos, eu posto aqui.

Minha apresentação focou sobre a nossa história durante o Rails Rumble (competição para criar um aplicativo web em Rails em 48 horas) e sobre temas como deployment e escalabilidade.

O evento foi muito interessante e pude encontrar pessoas que eu só conhecia virtualmente.

Depois eu posto meus comentários sobre o RejectConf. (Assim que minha internet ficar estável. Passei o domingo tentando conectar, sem sucesso. Maldito speedy).

3 Comments » . November 19th, 2007

Brave new blog

Published by George Guimarães

Pessoal, finalmente achei um tema pro Wordpress interessante. O nome desse tema é Greenway 3C, e você pode achar ele neste blog.

Ainda vou modificar ele um pouco, mudar a foto do prédio (vou colocar uma do meu cachorro), talvez mudar o lugar da data do post (prefiro perto do título do blog, não no final do post) e adicionar mais coisas na sidebar.

Se vocês tiverem alguma sugestão, mandem!

3 Comments » . November 14th, 2007

Novos blogs saindo do forno

Published by George Guimarães

Estou com um problema. Sou novo ao mundo do Wordpress. Já usei a conta gratuita deles, mas lá não dá pra configurar temas (dá pra mexer um pouco), nem plugins (que são a diversão do Wordpress).

Acabo de configurar o futuro (aviso quando estiver pronto) endereço deste blog (http://blog.georgeguimaraes.com) e o blog do Pagestackr (http://blog.pagestackr.com).

Agora peço ajuda aos meus amigos blogueiros para saber quais são os plugins essenciais. Já estou navegando pela seção de temas e plugins do Wordpress. Hmm.. o feriado vai ser promissor.. =D

Ah sim… só um comentário. Eu ia usar o Apache e sua configuração de Virtual Hosts pra servir as páginas PHPs. Pois bem. Foi a terceira e (espero) última vez que eu tento configurar virtual hosts no Apache. Não consigo!

Desisti e parti para meu novo amigo, o nginx. Leve, rápido, simples de configurar. (isso também eliminou o problema de ter 2 servidores http na mesma máquina, pois o nginx já estava sendo usado como load-balancer pro mongrel).

3 Comments » . October 31st, 2007

Vou sentir saudades!

Published by George Guimarães

img_0663-1.JPG

1 Comment » . September 30th, 2007

« Previous Entries / Home