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.

Advertisements

Nostagia 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