blog do Zé

30/3 de 2009

Telefônicas em geral: A incrível mágica do bug que só erra contra o cliente. (E cuidado com seu Blackberry, caso cancele o plano ilimitado!)

Categoria: Blah, hmmm, etc — jfonseca @ 6:10 pm

Não sei se é assim com vocês, mas comigo essas telecoms todas só “erram” à favor delas mesmas.

É uma espécie de Lei de Murphy seletiva. Tudo que pode dar errado, dará errado contra o cliente.

Hoje a dor de cabeça foi cortesia da TIM. Foram exatos 33:22 minutos ao telefone, segundo o histórico do Blackberry.

Eu programo computadores há 22 anos, e todos meus sistemas, é claro, tiveram alguns bugs. Bugs podem, de fato, ocorrer na parte financeira do sistema. O sistema pode errar o preço para baixo, por exemplo no arredondamento de centavos. Ou podem errar para cima, talvez errando a taxa de câmbio de um sistema que trabalhe com algum tipo de “forex”.

No entanto os sistemas das telecoms parecem só errar à favor delas. Pelo menos comigo sempre foi assim.

Vamos ao caso de hoje
Cancelei meu Blackberry faz algum tempo. Uso o aparelho como uma agenda pessoal e telefone celular, mais nada. Com essas internets 3G tornando-se mais acessíveis, o serviço EDGE do Blackberry fica muito para trás, em torno de 20 vezes mais lento para alguns planos.

E esse negócio de receber email à qualquer hora tornou-se um inimigo da qualidade de vida no mundo. Um dos maiores cientistas da computação do mundo, Dr. Don Knuth, só responde FAX. E olhe lá. Não vou chegar a esse extremo, mas email móvel nunca mais.

Você pagaria R$ 20.300,00 para enviar um CD-ROM? Então olho aberto com os megabytes de ouro da TIM

Se cancelar o serviço Blackberry, configure imediatamente seu aparelho para desabilitar o “acesso a dados”! Caso contrário o telefone acessa sozinho o EDGE e a TIM cobra cada Kilobyte de dados a preço de ouro(literalmente). Quando você desabilita o serviço de dados, a sigla de conexão fica em minúsculas no indicador de sinal do Blackberry. Ao cancelar seu serviço de dados lembre-se de fazer isso, senão a conta virá gigantesca. Eles cobrarão por kilobyte(isso mesmo, kilobyte…). Lembre-se: O preço do megabyte da TIM é cerca de R$ 29,00!!! Um CD-ROM de 700MB transferido via EDGE custaria R$ 20.300,00!!!!

Bug Mágico entra em Ação

Não há na minha conta um só acesso ao serviço de dados após a data do cancelamento. É aí que entra o “bug” magico: eles cobraram a última semana do mês anterior como tendo sido acessado, 24 horas por dia, sem plano ilimitado. Como é que o sistema é programado para fazer isso? Eu penso na lógica de tal sistema e não consigo enxergar uma rotina que não verifique se a data do que está sendo cobrado não é anterior a algum eventual cancelamento do plano…. Se eu cancelei na data X, nada anterior a essa data pode ser alterado, certo? “Estranhíssimo” esse bug. Talvez Dr. Knuth explique.

Após 33 minutos, conseguí o protocolo e uma promessa de que, no mês que vem, não irá ocorrer novamente.


 

27/3 de 2009

Bife Brasil – P/ Exportação: “Brazil Beef”

Categoria: Blah, hmmm, etc — jfonseca @ 3:00 pm

Hoje no almoço tive o privilégio de experimentar o Brazil Beef.

Bife Brasil / Exportação: Brazil Beef

Análise Geográfica do Brazil Beef
Mapa do Brasil / Map of Brazil

Sobreposição Geopolítica do Beef
Estudo Geográfico do Brazil Beef


 

The Pirate Bay lança serviço criptográfico(VPN)para proteger trocas de arquivos

Categoria: Noticias de Tecnologia — jfonseca @ 2:22 pm

Notícias diárias sobre batidas policiais em residências de suspeitos de trocas de arquivos tem assustado a comunidade P2P. O ARS Technica traz hoje traz uma interessante notícia sobre novo serviço criptográfico, através de VPN(Virtual Private Network), para codificar o tráfego de modo que provedores de acesso não saibam que arquivos estão sendo trocados.

O que pode acontecer agora?
Bem, é sabido que a criptografia é o grande nivelador de forças no meio digital. Com um sistema criptográfico, você pode passar uma mensagem de ameaça a um chefe de Estado sem que seja interceptada. Ou pode produzir um DVD que, em tese, só deveria ser reproduzido em determinado continente. Note que mencionei “sistema criptográfico” e não algoritmo criptográfico.

Se a criptografia passar a servir como ferramenta para pirataria, ao invés de proteger a privacidade de cidadãos, pode começar um movimento para tornar o uso de criptografia tão controlado quanto o uso de armas, por exemplo. Digamos que uma lei nesse sentido fosse passada, a polícia poderia considerar arquivos criptografados como algo ilegal. Provedores de acesso poderiam exigir tráfego sem criptografia(verificando cabeçalhos, por exemplo) para oferecer seu serviços, e por aí vai.

Deve-se tomar cuidado no uso de uma ferramenta(ou arma?) tão poderosa quanto a criptografia. No momento não sei se devemos louvar ou criticar a decisão do The Pirate Bay de partir para a criptografia como meio de proteção de troca de arquivos.


 

Sistema criptográfico vs. algoritmo criptográfico

Categoria: Segurança de Redes — jfonseca @ 2:16 pm

Algoritmo Criptográfico
O algoritmo criptográfico é um procedimento computacional, finito, e inequivocamente especificado, que processa os dados de entrada, produzindo uma saída que, em tese, é legível apenas pelo detentor de um dado qualquer(o segredo).

Sistema Criptográfico
O sistema criptográfico formaliza todos os protocolos para uso de um, ou mais, algoritmos criptográficos.

Explico: o sistema criptográfico compreende um, ou mais, algoritmos, a logística e o treinamento de quem usa. De que adianta uma chave de 2048 bits se o usuário gravar a senha no pendrive e sair por aí sujeito a um assalto?

Um bom sistema criptográfico utiliza senhas de um uso apenas, impede que apenas um usuário abra o segredo sozinho e obriga a mudança de senha periodicamente.

Por que este post?
Bem, muita gente confunde o PGP e o RSA como sendo algoritmos criptográficos. Não são. São sistemas criptográficos completos.

É claro que, para obeter um conjunto de chave privada, chave pública, chave simétrica da chave privada e mensagem encriptada, o sistema RSA segue um algoritmo(patenteado e caríssimo, diga-se de passagem). Porém esse algoritmo não é o algoritmo criptográfico propriamente dito.

RSA, PGP e o GPG são sistemas criptográficos que utilizam diversos algoritmos.

Leia mais:
Página pessoal do Bruce Schneier, criador do algoritmo Blowfish e autor de vários livros de criptografia
Descrição Wikipédia do Sistema RSA
Descrição (resumo apenas)Wikipédia do Sistema PGP
Descrição Wikipédia do Algoritmo Blowfish
Descrição Wikipédia do Algoritmo DES


 

O Coletivo: Boas práticas para blogs corporativos

Categoria: Dicas para Webmasters — jfonseca @ 1:07 pm

Opa! Após alguns meses aguardando um novo post, o O Coletivo traz até nós um excelente post com dicas para manter um blog corporativo.

Tenho lido blogs de empresas diversas, e confesso que a idéia de manter um contato mais “pessoal” com clientes é excelente. No entanto pouquíssimas empresas tem alavancado esse potencial de forma simpática, eficiente e que realmente traga mais vendas(ou valor à sua marca). O blog cita um estudo da consultoria Price Waterhouse Coopers originalmente em inglês.


 

O site de Noah Stokes é um viral bem sucedido

Categoria: Blah, hmmm, etc — jfonseca @ 12:53 pm

Há alguns dias que o site NoahStokes.com(sem link…explico no fim do post) tornou-se uma sensação. Chegou à primeira página do Digg e do Reddit, entre outros. O tráfego proveniente da primeira página desses aglomeradores sociais de notícias costuma derrubar servidores e provedores inteiros, ou seja, em termos de marketing o site de Noah Stokes foi um sucesso absoluto.

O que tem de especial nele? Nada. Pelo contrário, é o anti-site.

Tenho a leve sensação de que fomos todos “vítimas” de uma campanha de marketing viral muito bem sucedida. (Um amigo meu, comunicador experiente e macaco velho do marketing, acaba de me informar por email que aparentemente estou apenas constatando o óbvio….)

Vejam o que diz o whois:

[root@hendrix ~]# whois noahstokes.com
[Querying whois.verisign-grs.com]
[Redirected to whois.dreamhost.com]
[Querying whois.dreamhost.com]
[whois.dreamhost.com]
Legal Stuff:
[ ... CORTE ... ]

Domain Name: noahstokes.com

Registrant Contact:
noahstokes.com Private Registrant noahstokes.com@proxy.dreamhost.com
DreamHost Web Hosting
417 Associated Rd #324
Brea, CA 92821
US
+1.2139471032

Administrative Contact:
noahstokes.com Private Registrant noahstokes.com@proxy.dreamhost.com
DreamHost Web Hosting
417 Associated Rd #324
Brea, CA 92821
US
+1.2139471032

Technical Contact:
Noah Stokes nstokes@mac.com
Noah Stokes
1076 Westridge Avenue
Danville, CA 94526
US
+1.9259807116

Billing Contact:
noahstokes.com Private Registrant noahstokes.com@proxy.dreamhost.com
DreamHost Web Hosting
417 Associated Rd #324
Brea, CA 92821
US
+1.2139471032

Record created on 2005-09-29 10:08:26.
Record expires on 2009-09-29 10:08:26.

Domain servers in listed order:

ns1.dreamhost.com
ns2.dreamhost.com
ns3.dreamhost.com

“Quase” protegeu sua identidade…

Foi registrado através de um proxy, ou registro “privado”. Ou seja, colocam o nome de um terceiro, contratado pelo registrante, para receber spam e proteger a identidade do registrante.

No entanto, “seeem querer”, deixaram uma dica(nada sutil) da origem do site:

Technical Contact:
Noah Stokes nstokes@mac.com
Noah Stokes
1076 Westridge Avenue
Danville, CA 94526
US
+1.9259807116

Mac.com!!!

Noah Stokes é funcionário da Apple…

Mandou bem Stokes! Agora seu domínio vale $$$ e possivelmente surgirá nele um blog sobre design na Apple, enfim, ele pode fazer o que quiser com o domínio porque deve ter recebido 200.000 links só nesta jogada.

Reparem que não liguei diretamente para o site dele à partir deste blog. Não gosto de ser vítima desse tipo de “tacada” comercial.


 

Para que serve kill -0(kill zero) no UNIX?

Categoria: Linux,UNIX — jfonseca @ 12:45 pm

Encontrei esta dica interessante hoje : o que faz o sinal zero, enviado através do kill -0 no UNIX?

Resposta: nada.

Então para que serve? Para saber se um processo existe.

Ao enviar um kill -0 [PID] o kill retorna 0 (tudo ok) se o processo existe, ou 1 (“erro”) caso contrário. Como diz o post original, é uma forma até elegante de saber se um PID existe à partir de um shell script.


 

O Globo mostra como não fazer publicidade em seu site

Categoria: Dicas para Webmasters — jfonseca @ 11:14 am

Há um bom tempo o site do jornal O Globo vende esses anúncios Flash que descem uma DIV e apresentam conteúdo maior. Esse tipo de anúncio funciona bem quando ele “desce” na tela, e desaparece, a pedido do visitante.

A coisa começa a se complicar quando o jornal veicula um anuncio que só foi testado no Internet Explorer, por exemplo.

Neste exemplo o anúncio aparece sem qualquer ação do cliente, e não há nada que se possa fazer para retirá-lo de lá pois o botão “fechar” sumiu.

Como resultado, o resto do mundo vê isso aí embaixo:
Propaganda no Globo encobre conteúdo


 

20/3 de 2009

Como vai a padronização de software do Gov. Federal?

Categoria: Blah, hmmm, etc — jfonseca @ 11:25 am

Há alguns meses me interessei pela seguinte notícia da ABr: Até o primeiro trimestre deste ano, será implantada a padronização do uso de softwares desenvolvidos para o governo federal. O presidente do Serviço Federal de Processamento de Dados (Serpro), Marcos Mazoni, informou hoje (26) à Agência Brasil que tão logo o processo de certificação das soluções seja concluído, será lançado o edital pelo Serpro e Ministério do Planejamento para aquisição de programas.

Empresas de software independentes, bem como Software Vendors da Microsoft, IBM e Oracle certamente estarão de olho neste assunto. O lobby também deve estar sendo pesado em torno da padronização: os quesitos técnicos adotados definirão se um fornecedor Microsoft ganhará ou perderá, por exemplo, para uma software house trabalhando com Mac ou Linux. O que pode estar em jogo é a carteira milionária(bilionária?) de desenvolvimento de software do Governo Federal.

O governo precisará balancear 2 questões cruciais: o interesse financeiro que inevitavelmente existe da parte de grandes corporações(que também apóiam o software livre, como a IBM) e a possibilidade de manter pequenos fornecedores no páreo. É crucial permitir o acesso democrático ao enorme mercado do Governo Federal, pequenos fornecedores muitas vezes podem oferecer soluções inovadoras, mais velozes, ágeis, e muitas vezes mais em conta financeiramente.

O primeiro trimestre termina em 11 dias, aguardemos!


 

16/3 de 2009

Solucionando Segmentation fault no Apache 1.3.41 + mod_perl-1.30 e perl-5.10

Categoria: Dicas para Webmasters,Linux,Perl — jfonseca @ 8:36 pm

Caso tenha instalado o apache_1.3.41 recentemente com mod_perl-1.30 e perl-5.10 você provavelmente(certamente) estará tendo problemas com Segmentation fault no servidor pai. Digo “certamente” porque o release do mod_perl que corrige esse problema com perl 5.10 jamais foi lançado, está parado no Subversion desde Julho de 2007!

Quando completei o upgrade de rotina nos servidores e verifiquei a lista de Segmentation faults, minha primeira suspeita era encima do DBD::mysql > 4.006. Como já tinha apanhado bastante desse problema em Maio de 2008, fúi direto à solução de abaixar o DBD::mysql para uma versão de 2007. Eis que desta vez não funcionou, e lá se foram mais algumas horas na terra do gdb e do Google para descobrir o problema.

Sintoma
[Mon Mar 16 15:39:32 2009] [notice] child pid 24679 exit signal Segmentation fault (11), possible coredump in /usr/local/apache/coredump/
[Mon Mar 16 15:39:34 2009] [notice] child pid 24678 exit signal Segmentation fault (11), possible coredump in /usr/local/apache/coredump/
[Mon Mar 16 15:39:36 2009] [notice] child pid 24673 exit signal Segmentation fault (11), possible coredump in /usr/local/apache/coredump/
[Mon Mar 16 15:40:00 2009] [notice] child pid 24672 exit signal Segmentation fault (11), possible coredump in /usr/local/apache/coredump/
[Mon Mar 16 15:40:02 2009] [notice] child pid 24668 exit signal Segmentation fault (11), possible coredump in /usr/local/apache/coredump/

Nota: o usuário final não percebe nada, pois o core dump acontece após o atendimento do pedido, conforme verificamos com o gdb :

[root@hendrix coredump]# /usr/local/apache/coredump/
[root@hendrix coredump]# gdb /usr/local/apache/bin/httpd core.23794
GNU gdb Red Hat Linux (6.6-45.fc8rh)
Copyright (C) 2006 Free Software Foundation, Inc.
[ .... ]
Core was generated by `/usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd.conf’.
Program terminated with signal 11, Segmentation fault.
#0 0x084df82c in Perl_av_fill ()
(gdb) where
#0 0x084df82c in Perl_av_fill ()
#1 0×08387682 in perl_shutdown ()
#2 0x0838789a in perl_child_exit ()
#3 0x083a49b8 in ap_kill_cleanup ()
#4 0x083a3291 in ap_init_alloc ()
#5 0x083a3305 in ap_clear_pool ()
#6 0x083b1ecb in ap_call_close_connection_hook ()
#7 0x083b3f57 in sig_coredump ()
#8
#9 0×40000416 in __kernel_vsyscall ()
#10 0x009cba28 in accept () from /lib/libc.so.6
#11 0x083b570a in child_main ()
#12 0x083b5d6b in make_child ()
#13 0x083b6159 in perform_idle_server_maintenance ()
#14 0x083b67e8 in standalone_main ()
#15 0x083b6e93 in main ()

Ou seja, mesmo sem entrar nos detalhes de Perl_av_fill() vemos que a falta ocorreu após diversas “rotinas de limpeza”( *shutdown() *exit() e *cleanup()). Não sabemos ao certo se esse processo do httpd cumpriu sua missão ou foi interrompido precocemente, ou seja, pode estar causando problemas de performance no site abrindo um novo processo httpd a cada Segmentation fault.

Solução
A solução é simples, porém chama a atenção pelo fato de um bug resolvido em meados de 2007 ainda aparecer no ultimo release do mod_perl 1: o mod_perl-1.31 nunca foi lançado, porém a revisão 555908 do mod_perl-1.30 soluciona o problema. Parece que ninguém mais está usando Apache 1.3 a julgar pela idade desse patch.

Baixe primeiro o patch do mod_perl.c aqui. Logo baixe o patch do mod_perl.h aqui.

Vá até a árvore do mod_perl-1.30:
cd mod_perl-1.30/
cd src/modules/perl/
patch -p7 < mod_perl.patch # para aplicar o patch de mod_perl.c (mude mod_perl.patch para o nome que gravou o .patch acima)
patch -p7 < mod_perl_h.patch # para aplicar o patch de mod_perl.h ( novamente adeque o nome do .patch)
cd ../../../
perl Makefile.PL # etc, parametros completos p/ construir o Apache
make
makeinstall

E pronto! Adeus Segmentation faults.

A seguinte discussão deu a solução do problema. Quem explica é Rafael Garcia-Suarez, cuja explicação logo é endossada por Steve Hay, desenvolvedor do mod_perl.

Atualização 17/3 – Se precisar de mod_perl-1.3 e Apache 1.3.* não use Perl 5.10

A versão 5.10 do Perl traz inúmeras melhorias, infelizmente após 24 horas de testes concluí que realmente o apache_1.3.41 + mod_perl-1.30 não estão em grau de produção para funcionar com Perl 5.10. Os segfaults acabaram, mas surgiram diversos novos problemas. Talvez tenham abandonado o desenvolvimento dessas versões, visto que a série 1.3 do Apache não é mais oficialmente suportada(é apenas mantida). Ocorriam problemas difíceis de diagnosticar, por exemplo: ao atingir MaxRequestsPerChild o servidor filho deveria exit(0) e permitir ao pai criar um novo httpd. Acontece que, estranhamente, isso não ocorria. O httpd pai ficava congelado e os filhos apenas aceitavam conexões sem processá-las, não passavam ao próximo handler, tampouco retornavam ao pai. Para o cliente o navegador apenas mostrava eternamente “carregando”…. Poderiam haver incontáveis causas para isso: semaphores que nunca eram liberados(race condition), o patch aplicado acima no cleanup do mod_perl, etc. Infelizmente a necessidade de concluir o trabalho, e a falta de tempo, me impediram de chegar até a raiz do problema – apenas precisava resolver logo! Então partí pro perl-5.8.9 – é preciso compilar o perl, instalar, e depois fazer tudo de novo com o Apache para ele linkar com esta versão do perl. Terminada mais essa jornada, rodei o Apache benchmark (/usr/local/apache/bin/ab) com 10 conexões simultâneas, 1.000.000 requisições – tudo nos conformes, nenhum core dump ou servidor congelado.


  Proxima Pagina »