Month: March 2009

Turbinando sua internet – OpenDNS

Você sabia que uma boa parte do tempo que um site demora para abrir e culpa do servidor de DNS?

Sim, antes de abrir qualquer site seu browser consulta o servidor de DNS para encontrar o IP do mesmo.

Encontrei um comentário sobre o OpenDNS, que teoricamente seria um servidor de DNS muito rapido.
De imediato não acreditei que isto fosse verdade, então resolvi tirar a prova dos 9.

E para minha surpresa o resultado foi surpreendente, principalmente porque uso GPRS/EDGE. Mas pelo que vi ele tornará mais rápida qualquer tipo de conexão.

Você deve estar perguntando: se o serviço é de graça como eles ganham dinheiro com isto? Simples, eles colocam propagandas nas paginas cuja URL não existe.

Para testar acesse:
https://www.opendns.com/start

Você pode usar no seu computador, roteador ou diretamente no seu servidor de DNS.

Nostalgia ponto COM

Hoje resolvi procurar uma forma de rodar os antigos programas gráficos que eu havia feito há mais de 10 anos usando o Turbo C da Borland. Felizmente descobri que existe uma lib que abstrai as funções gráficas em funções da SDL.

Se você também já brincou com o Turbo C e deseja rodar seus programas no Linux então siga as intruções:
http://zaher14.blogspot.com/2007/01/graphicsh-in-linux.html

Este é o exemplo de um relógio que eu fiz usando o Turbo C e agora rodando com a libgraphic no Linux:

relogio

//----------------------------------------------------------------------------
//Programa: Relogio.c
//Autor: Alan Carvalho de Assis
//Compilador:Borland C++ Versao 2.0 ou 3.0
//Descricao:Exibe um relogio com os ponteiros de horas,minutos e segundos
//Compile: gcc relogio.c -o relogio -lgraph -lm
//-----------------------------------------------------------------------------
#include <stdlib.h>
#include <graphics.h>
#include <time.h>
#include <math.h>

#define	PI  3.14159265358979323846 //constante pi

float seno(int ang) //Calcula o seno recebendo como argumento o angulo em vez de radiano
{
  return sin(ang*PI/180);
}

float coseno(int ang) //Calcula o coseno recebendo como argumento o angulo em vez de radiano
{
  return cos(ang*PI/180);
}
int hora,minu,segu,seguant;
//struct  time t;
void main()
{
      int gdriver = DETECT, gmode=VGAMAX;
      float ang=0,xsegu=0,ysegu=0,xseguant,yseguant,xminu,yminu,xminuant,
	    yminuant,xhora=0,yhora=0,xhoraant,yhoraant,raio=100;
      char tempo[9];
      initgraph(&gdriver, &gmode, 0);
      circle(320,240,110);
      for(segu=0;segu<60;segu++)
      {
	ang = segu * 6;
	xsegu = coseno(ang) * 110;
	ysegu = seno(ang) * 110;
	setcolor(15);
	line(320,240,320+xsegu,240+ysegu);
      }
      setcolor(0);
      //setfillstyle(1,0);
      fillellipse(320,240,105,105);
      setcolor(15);
      outtextxy(310,120,"12");
      outtextxy(317,355,"6");
      outtextxy(200,235,"9");
      outtextxy(434,235,"3");
      outtextxy(374,133,"1");
      outtextxy(419,175,"2");
      outtextxy(419,293,"4");
      outtextxy(378,340,"5");
      outtextxy(260,342,"7");
      outtextxy(215,298,"8");
      outtextxy(206,179,"10");
      outtextxy(250,134,"11");
      while(1)
      {
       //gettime(&t);

       time_t t = time(NULL);
       struct tm tm = *localtime(&t);

       hora = tm.tm_hour;
       minu = tm.tm_min;
       segu = tm.tm_sec;

       ang = segu * 6 - 90;
       xsegu = coseno(ang) * raio;
       ysegu = seno(ang) * raio;
       setcolor(15);
       line(320,240,320+xsegu,240+ysegu);
       sprintf(tempo, "%02d:%02d:%02d",hora,minu,segu);

       ang = minu * 6 - 90;
       xminu = coseno(ang) * (raio - 10);
       yminu = seno(ang) * (raio - 10);
       setcolor(9);
       line(320,240,320+xminu,240+yminu);

       ang = ( (hora * 30) + (6 * (minu/12)) ) - 90;
       xhora = coseno(ang) * (raio - 20);
       yhora = seno(ang) * (raio - 20);
       setcolor(2);
       line(320,240,320+xhora,240+yhora);
       if(seguant != segu){
	 setcolor(0);
	 line(320,240,320+xhoraant,240+yhoraant);
	 line(320,240,320+xseguant,240+yseguant);
	 line(320,240,320+xminuant,240+yminuant);
         setcolor(0);
         fillellipse(315,415,105,10);
	 setcolor(15);
	 outtextxy(290,410,tempo);
	}
       seguant = segu;
       xseguant = xsegu;
       yseguant = ysegu;
       xminuant = xminu;
       yminuant = yminu;
       xhoraant = xhora;
       yhoraant = yhora;
      }
      closegraph();
}

Usando cscope no vim

Caso ainda não tenha instalado o cscope no seu computador, instale:
$ sudo apt-get install cscope

Baixe o arquivo cscope_maps.vim:
http://cscope.sourceforge.net/cscope_maps.vim

Voce pode instala-lo copiando para $HOME/.vim/plugin, acrescentando o conteudo no seu $HOME/.vimrc ou da forma como eu fiz:

$ sudo cp cscope_maps.vim /etc/vim/

Agora edite o arquivo /etc/vim/vimrc e acrescente:
$ sudo vi /etc/vim/vimrc

if filereadable(“/etc/vim/cscope_maps.vim”)
source /etc/vim/cscope_maps.vim
endif

Gere o cscope do kernel:
$ make cscope

$ export CSCOPE_DB=/home/alan/kernel/linux-2.6.29/cscope.out

$ vim -t start_kernel

Para um tutorial mais completo:
http://cscope.sourceforge.net/cscope_vim_tutorial.html
http://www.linux.com/feature/114237

Testando o consumo de memoria do OpenOffice

Resolvi fazer um simples teste comparando o consumo de memoria do OpenOffice (versao 2.4 existente no Ubuntu e versao 3.1 baixada do site do OOo).

Fiz um script baseado no que Scott Scriven fez para testar o consumo de memoria do Dillo.

Aqui está:

OOBINS="/opt/ooo-dev3/program/soffice.bin /usr/lib/openoffice/program/soffice.bin"
OOAPPS="writer calc impress"

for OOBIN in $OOBINS ; do
    echo "$OOBIN:"
    for OOAPP in $OOAPPS ; do
        $OOBIN -$OOAPP  /dev/null 2>&1 &
        PID=$!
        sleep 10
        MEM=`ps axu | grep " $PID " | grep -v grep | awk '{ print $6 }'`
        kill $PID
        echo " $OOAPP = $MEM"
    done
done

Eu estava imaginando que a versao 2.4, apesar de mais antiga, fosse consumir mais memoria, pois o pessoal do Ubuntu sempre acrescenta umas firulas para deixa-lo mais bonito. Ledo engano, realmente a versao 2.4 consumiu menos memoria:

$ ./testingoo.sh
/opt/ooo-dev3/program/soffice.bin:
writer = 63380
calc = 64316
impress = 64472
/usr/lib/openoffice/program/soffice.bin:
writer = 57944
calc = 57468
impress = 58164

Há relatos de pessoas que ficaram impressionados com a velocidade do OpenOffice 3.1:
http://br-linux.org/2009/relato-de-teste-com-o-openoffice-dev300-m44/

Sinceramente, nos testes que fiz, o ganho de velocidade (se é que existe) não é perceptível. Talvez a pessoa do relato acima não chegou a usar a versão 2.4 do OpenOffice, isto explicaria o espanto com o ganho de velocidade.

Mais uma dica de bash

Quase todo mundo sabe que pode usar “$?” para exibir o valor de retorno de um programa que acabou de ser executado. Mas descobri que se voce rodar um programa em background conseguira’ pegar o PID dele atraves do “$!”. Veja o exemplo:

$ find / -name helloworld &
$ echo $!
5306

Kernel 2.6.29 na área

Já está disponível para download o kernel 2.6.29, estranho que até o momento quase ninguém notou isto!

Também, os caras liberaram quase a meia noite de ontem.

Quero avisar que o negocio tá crescendo: 68.6MB!

Piadinha besta neh? rs

Open Prosthetics

Interessante saber que as proteses mais evoluídas usadas por pessoas que tiveram os braços amputados são basicamente do mesmo modelo patenteado em 1912!

Felizmente um engenheiro que teve o antebraço amputado, durante a guerra do Iraque, criou um projeto para desenvolver proteses de forma aberta, da mesma forma como criamos programas de computador.

Mais informações:
http://www.spectrum.ieee.org/mar09/7908
http://www.sciam.com/article.cfm?id=open-source-thinking

Joanna Rutkowska a Marie Currie da Computação

Joanna Rutkowska tem feito incriveis descobertas na area da seguranca de sistemas no inicio deste seculo. Nao seria muito exagero comparar suas descobertas com as que sua compatriota fez ha um seculo atras. Ela descobriu uma falha no sistema SMM* ha’ 3 anos que permitia a criacao de rootkits indetectaveis.

Agora ela encontrou falhas na cache dos processadores Intel que permite infiltrar codigo na SMM:
http://info.abril.com.br/aberto/infonews/032009/20032009-8.shl

Mais info:
http://en.wikipedia.org/wiki/Joanna_Rutkowska

* O SMM por si so’ ja’ e’ uma falha de seguranca, pode-se criar rotinas para executar em modo privilegiado sem o SO nem mesmo saber se sua existencia. E’ usado primariamente para adicionar suporte a Power Management.

Para mais informacoes sobre como explorar o SMM:
http://www.ssi.gouv.fr/fr/sciences/fichiers/lti/cansecwest2006-duflot-paper.pdf

Map mapping to gnome

I knew Freemind some years ago. It is fine, good program, but it is developed in Java and I don’t like to bloat my system install java just to use this program.

Then I did a quick search in the Internet and found a program called Labyrinth. This is a great software developed in python and GTK.

To install:
$ sudo apt-get install labyrinth

É uma armadilha Bino

Da Microsoft pode-se esperar de tudo, tudo pra sacanear a concorrencia.

Apos perceber que o tal Silverlight nao esta’ dando nenhum Ibope, ela tenta desesperadamente contra-atacar.
Sim a Microsoft aparentemente conseguiu convencer a Playboy a disponibilizar todas suas edicoes de 1954 a 2007, adivinhe?, apenas em Silverlight.

A Playboy não precisaria nem ao menos usar Flash para disponibilizar as imagens, mas resolveu depender de mais uma tecnologia inutil da M$.

Não tive paciência pra instalar o tal Moonlight (Silverlight pra Linux) no meu computador, espero que alguma alma caridosa consiga fazer um programa para converter o conteúdo do site em imagens JPEG normais, para que os demais mortais possam ver com mais tranquilidade e gastando menos ciclos de clock do seu PC.

Por favor ajude a Microsoft, clicando no link abaixo e instalando o tal plugin:
http://www.playboyarchive.com/