quarta-feira, dezembro 06, 2006

iPod da Microsoft

Como seria um vídeo sobre o Microsoft Linux?

terça-feira, outubro 31, 2006

Mini-antena deverá substituir estações terrestres de recepção

Notícia muito velha... desta vez não é do Cocadaboa.

Os laboratórios da NASA são virtualmente um sinônimo de tecnologia avançada, repletos de criações que revolucionarão não apenas a exploração espacial, mas a vida cotidiana, na medida em que as maravilhas da engenharia espacial rapidamente deixam de ser exclusividade dos astronautas e atingem o dia-a-dia dos cidadãos comuns.

Mas nem sempre as maravilhas que de lá saem são assim tão mirabolantes. O grupo de pesquisadores chefiados pela Dra. Mary Ann Ingram, por exemplo, reuniu alguns tubos de PVC, papel-alumínio - do tipo utilizado na cozinha - e alguns fios de cobre; o resultado do trabalho é um novo tipo de antena de comunicações que poderá revolucionar a forma como a NASA recebe os sinais de seus inúmeros satélites artificiais.

A simplicidade da nova solução, criada no Instituto de Tecnologia da Georgia, deverá diminuir drasticamente os custos de construção e manutenção das estações terrestres de recepção de dados, normalmente formadas por gigantescas antenas parabólicas. Com essa queda nos custos, haverá a possibilidade de se construir muito mais estações, ampliando a rapidez com que os dados dos satélites ficam disponíveis para os cientistas e para a comunidade em geral.

"O sonho é criar uma cobertura global total com essas antenas, ligando-as em rede, disponibilizando os serviços de informação da NASA para qualquer pessoa com um computador à disposição," afirma a professora Ingram.

Um exemplo prático são as estações de comunicação com o satélite de observação da Terra, o EO-1 ("Earth Observing-1"). Os dados de acompanhamento do clima e da superfície terrestre, coletados pelo satélite, chegam a antenas de 11 metros de diâmetro, instaladas no Círculo Polar Ártico, um local que coloca dificuldades extremas de manutenção e diminui a confiabilidade do equipamento. Satélites como o EO-1 tipicamente entram em contato com suas estações terrestres de cinco a oito vezes por dia, com janelas de transmissão de apenas 10 minutos de cada vez.

Já as novas antenas, por enquanto feitas com material comprado diretamente em lojas, não terão partes móveis e terão seus complicados mecanismos de rastreamento dos satélites substituídos por softwares de última geração, que utilizarão os dados captados por uma inifinidade de pequenas antenas. Se uma delas falhar, o sistema utilizará os dados das demais, sem qualquer prejuízo para a operação toda.

O cientista Dan Mandl, da NASA, compara o novo projeto com o sistema de telefonia celular: "Quando as pessoas utilizam seus telefones celulares, não há partes móveis nas antenas. O que nós queremos é construir uma rede celular contínua ao redor do mundo, que irá nos possibilitar oportunidades ilimitadas de baixar os dados dos satélites."

Ao invés de uma grande antena, os cientistas querem utilizar várias pequenas antenas mais simples. Os sinais captados por essas pequenas antenas serão analisados utilizando-se uma técnica de inteligência artificial que aprende a melhorar seu próprio desempenho, combinando versões refletidas do sinal original transmitido pelo satélite, eliminando ruídos e interferências.

O resultado é tão bom que, com apenas duas antenas construídas com a nova tecnologia, cada uma com 75 centímetros de diâmetro, é possível substituir uma antena parabólica comum de 11 metros de diâmetro.

Outra grande vantagem é que, como as pequenas antenas não dependem de um posicionamento rigorosamente alinhado com o satélite, como as antenas atuais, elas podem ser utilizadas para se comunicar com mais de um satélite ao mesmo tempo. "O que nós realmente queremos é um conjunto compartilhado de antenas, no qual um software é utilizado para separar os sinais," diz Mandl.

sexta-feira, outubro 27, 2006

O dia em que você nasceu

A Revista Isto É disponibilizou as principais notícias do ano em que você nasceu em uma home page.

Se quiser usar, use o formulário abaixo ou acesse a home page. Da minha parte não é phising. Podem conferir o código desta página!

Digite seu nome, a data de seu nascimento e confira!


Nome

Data de nascimento

                                      
(dd/mm/aaaa)


sexta-feira, outubro 13, 2006

Propaganda da IBM (Linux)

Propaganda que a IBM faz sobre o Linux. Com legendas em português.

segunda-feira, outubro 09, 2006

Raiz Quadrada (Square Root) para Bash

A maioria está acostumada com extração de raiz via método de Newton.
Este script fornece raízes inteiras por um método que talvez cause estranheza por um possível desuso. Você consegue compreender o script? O método é fácil, o problema são os bugs gerados pelo modo como o bash lida com os números. Daí as rotinas adicionais.


#!/bin/bash 

verif (){
    str1="$1"
    [[ -z "$str1" ]] && {
        echo "Use $0 <numero>";
        echo "<numero> entre 0 e 9223372036854775807.";
        echo "Caso ultrapasse, havera erro de calculo.";
        exit 1;
    }

    str2=${str1//[0123456789]/}
    [[ -n "$str2" ]] && {
        echo "Use somente digitos de 0 a 9." 
        exit 1;
    }

}

cortazero(){
    a1=$1;
    while [ "$a1" != "$b1" ]; do
        b1=$a1;
        a1=${a1##0};
    done;
    echo $a1;
}

sqrt(){
    tmp1=$1;
    [[ $((${#tmp1}%2)) -eq 1 ]] && tmp1='0'$tmp1;
    j=0;
    rq='0';
    rt='';

    while [ -n "${tmp1:$j:2}" ]; do
        rt=$rt${tmp1:$j:2};
        rt=`cortazero $rt`;
        [[ -z "$rt" ]] && rt='0';
        rq=`cortazero $rq`;
        [[ -z "$rq" ]] && rq='0';    
        for ((i=1;i<=10;i++));do
            [[ $rt -lt $(( (`cortazero $((2*$rq))`$i) *$i)) ]] && { 
                rt=$((rt-(`cortazero $((2*$rq))`$((i-1)))*$((i-1))));
                rq=$rq$((i-1));
                break;
            }
        done;
        let j+=2;
    done;
    rq=`cortazero $rq`;
    [[ -z "$rq" ]] && rq='0';
    echo $rq;
}

verif $1;
sqrt $1;

terça-feira, novembro 29, 2005

GTK em Pascal

Faz tempo que posto nada!
Aqui vai um código que achei nos arquivos de uma certa lista de discussão.


program gtk1;

{$ifdef Win32}
    {$APPTYPE GUI}
{$endif}

uses glib, gdk, gtk;

var
     window:PGtkWidget;
     msg:PGtkWidget;

begin

    gtk_init(@argc,@argv);
    window:=gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(PGtkWindow(window), 'Teste do GTK+');
    gtk_signal_connect(PGtkObject(window), 'delete_event', GTK_SIGNAL_FUNC(@gtk_main_quit),NIL);
    msg:=gtk_label_new('Criado com o FreePascal !');
    gtk_container_add(PGtkContainer(window),msg);
    gtk_widget_show(msg);
    gtk_widget_show(window);
    gtk_main();

end.


sábado, dezembro 25, 2004

Goldbach

Sobre uma breve discussão a respeito do Teorema de Goldbach.
Pintou no Só Matemática um código sobre.
Reescrevi-o para C. Há uma falha a ser corrigida, mas fica para depois.

#include <stdio.h>
#include <math.h>

int IsPrime (int p){
   int j=0;
   if (p%2 == 0) return 0;
   for (j=3; j<=1+(int)sqrt(p) && (p%j!=0); j+=2);
   return (p%j!=0);
}

int main (int argc, char *argv[]) {
   int i=0, m=0, n=0;

   if (argc!=2){
      puts ("use ./goldbach "); exit(1);
   }
   n=atoi(argv[1]);

   if (n<=4){
      puts ("numero muito pequeno"); exit(1);
   }

   if (n%2==1){
      puts ("numero impar"); exit(1);
   }


   printf ("%d:", n);

   for (i=3; i<=n/2; i+=2) {
      if (IsPrime(i) && IsPrime(n-i)) {
         printf("\n\t %ld = %ld + %ld",n, i, n-i);
         m++;
      }
   }

   printf ("\n%d representacoes distintas\n", m);
   return 0;
}

domingo, dezembro 12, 2004

Links para alguns livros de Matemática

1. (with X.T. Duong) Elementary Mathematics, 148 pp. (web edition, 2000).

2. First Year Mathematics, 365 pp. (web edition, 2003).

3. Discrete Mathematics, 193 pp. (web edition, 2003).

4. Linear Algebra, 71 pp. (web edition, 2003).

5. Multivariable and Vector Analysis,158 pp. (web edition, 2003).

6. Introduction to Complex Analysis, 167 pp. (web edition, 2003).

7. Fundamentals of Analysis, 100 pp. (web edition, 2003).

8. Linear Functional Analysis, 86 pp. (web edition, 2003).

9. Introduction to Lebesgue Integration, 77 pp. (web edition, 2003).

10. Elementary Number Theory, 69 pp. (web edition, 2003).

11. Distribution of Prime Numbers, 81 pp. (web edition, 2003).

12. Lectures on Irregularities of Point Distribution, 63 pp. (web edition, 2000).

quinta-feira, dezembro 09, 2004

Um pouco da história do Projeto GNU

Publicado originalmente no livro "Open Sources"

"Quando eu comecei a trabalhar no Laboratório de Inteligência Artificial do MIT (N.d.T. Massachussets Institute of Technology) em 1971, eu me tornei parte de uma comunidade que compartilhava software que existia a muitos anos. Compartilar software não era limitado apenas para nossa comunidade particular; é tão antigo quanto os computadores, assim como compartilhar receitas é tão antigo quanto cozinhar. Mas nós fizemos mais do que a maioria."

..........

"O Laboratório de IA usava um sistema operacional de tempo compartilhado chamado ITS (N.d.T. Incompatible Timesharing System) que a equipe de hackers do laboratório (1) havia desenvolvido e escrito na linguagem assembler para o Digital PDP-10, um dos maiores computadores da era. Como um membro dessa comunidade, um membro da equipe de hackers do laboratório de IA, meu trabalho era melhorar esse sistema."

..........


"O termo "software livre" é mal interpretado algumas vezes--não tem nada haver com preço. Ele se refere à liberdade. Aqui, então, está a definição de software livre: um programa é software livre, para você, usuário qualquer, se:

* Você tem a liberdade para executar o programa, para qualquer propósito.
* Você tem a liberdade de modificar o programa para se adequar às suas necessidades. (Para tornar este tipo de liberdade efetivo na prática, você deve ter acesso ao código fonte, uma vez que fazer mudanças em um programa sem o código fonte é extremamente difícil.)
* Você tem a liberdade de redistribuir cópias, tanto de graça quanto por uma taxa.
* Você tem a liberdade de distribuir versões modificadas do programa, de modo que a comunidade possa se beneficiar das suas melhorias. "


(1) O uso do termo "hacker" significando "alguém que quebra segurança" é uma confusão por parte da mídia das massas. Nós hackers nos recusamos a reconhecer este significado, e continuamos utilizando a palavra significando "Alguém que ama programar e gosta de saber fazê-lo com esperteza."

Script de substituição em série

Script para bash que lê um arquivo de "configuração" com uma lista de palavras e depois entra interativamente em uma lista de subdiretórios varrendo arquivos de texto um a um e substituindo expressões por outras.

O mesmo lagoritmo pode ser usado para criar semelhante em perl, php, python, c etc. Dependendo da linguagem ele cobrirá outras plataformas.

Foi testado em textos menos complexos distribuídos em árvores de diretórios. Pode ser usado por exemplo em diretórios de páginas de html.


#! /bin/bash
# clontexto - Deve ter um jeito mais facil de se fazer essa @#$%!! de serviço.

[[ $# -ne "3" ]] && echo -e "Parametros errados.\nUse ./clontexto.sh " && exit;
[[ ! -f $1 ]] && echo "$1: Arquivo inexistente" && exit;
[[ ! -d $2 ]] && echo "$2: Diretorio inexistente" && exit;
[[ -d $3 ]] && echo "$3: Destino existente" && exit;

direc () {
    cd $1;
    q=`pwd`;
    d=${q/$dir_mod/};

    [[ ! -d $dest_dir/$d ]] && mkdir $dest_dir/$d;

    for i in *; do
        [[ -d $i ]] && direc "$i"
        [[ -f $i ]] && sed "${f[*]}" "$i" > "$dest_dir/$d$i";
    done;
    cd ..
}

arq_conf=$1;
dir_mod=$2;
dest_dir=$3;

t=1;
while read i; do
    f[$((t++))]="s/${i/://}/g;";
done < $arq_conf;

c=`pwd`; t=1;
direc "$dir_mod" "$dest_dir";
cd $c;

sexta-feira, dezembro 03, 2004

CD Shell - Múltiplos boots em Live CDs

Se LiveCD virou moda, imaginem agora com este novo sistema para selecionar distros em boots múltiplos. Escolhe-se kernel, aplicativos, distros etc.
Se for possível usar com DVD, não irá prestar ...


Ainda não o testei.




"CD Shell is a scriptable menu system that provides the ability to create interactive multi-boot optical discs. It will make PC-bootable compact discs or DVD's that can select from several program loaders or kernels located on the disc, or boot from other local disk drives that are attached to the system."

domingo, novembro 28, 2004

Ensaio Sobre Recursividade

Quero escrever uma referência sobre programação recursiva.
No futuro vou recodificar o excerto abaixo para Perl; talvez uma módulo.

Function TriPascal (p: Integer; q: Integer): Integer;
Var i: Integer;

Begin

If
(p=q) or (p=0) or (q=0) Then i:=1
Else i:=
TriPascal (p-1, q-1) + TriPascal (p-1, q);
TriPascal := i;

End;



Linux em Tamagotchis (Bichos Virtuais)

Seu antigo Tamagotchi está escondido para que seus amigos não te sacaneiem porque você teve um “bichinho virtual” em sua pré-adolescência? Agora você vai ter uma boa razão para voltar a usar este brinquedinho: programadores especializados em Linux criaram uma derivação especial do sistema operacional que pode ser carregado no pequeno aparelho eletrônico, o tranformando em um mini-computador capaz de realizar tarefas simples.

Os responsáveis são os criadores do uClinux, uma versão do Linux 2.0 Kernel desenvolvida especialmente para rodar em equipamentos sem unidades de gerenciamento de memória, ou Memory Management Units (MMUs).

Os recursos do Tamagotchi com Linux não são nada geniais, mas são uma prova de que não há limites para a cultura de software livre que está ganhando cada vez mais adesões. Com o novo sistema operacional, você pode usar o pequeno aparelho eletrônico como uma agenda para até 50 nomes, criar outros tipos de jogos ou até mesmo esconder uma boa “cola” para a sua próxima prova na faculdade.

O procedimento de tranformação do Tamagotchi em mini-computador com Linux embarcado não é simples, mas o passo-a-passo pode ser visto no site dos desenvolvedores do uClinux.