sexta-feira, 18 de setembro de 2015

Diogo convidou você para se inscrever no Campeonato Universitário Dropbox!


Olá,

Você recebeu um convite de Diogo para se inscrever no Campeonato Universitário Dropbox! No Campeonato Universitário, você e seus colegas se unem para ganhar até 25 GB de espaço no Dropbox por dois anos!

Para ganhar espaço, convide amigos e use o Dropbox para compartilhar arquivos, trabalhar em equipe e cuidar de projetos.

Participe do Campeonato Universitário!

Observe que, para poder participar, é preciso ser um aluno atualmente matriculado em uma instituição de ensino superior. Saiba mais sobre o Campeonato Universitário.

Divirta-se com o Dropbox!



Trabalhe em equipe, ganhe em equipe.
Se preferir não receber convites do Dropbox, acesse esta página.
Dropbox, Inc., PO Box 77767, San Francisco, CA 94107
© 2015 Dropbox

segunda-feira, 30 de maio de 2011

Compilar todos os códigos dentro de uma pasta

O OpenCV 2.2 vem com exemplos de C, de C++, entre outros. Tem um scrip de compilação dos exemplos de C, mas não tem de C++. Sendo assim editei o de C para compilar os códigos de C++. Ficou assim:

#!/bin/sh

for i in *.cpp; do
    echo "compiling $i"
    g++ -ggdb `pkg-config --cflags opencv` -o `basename $i .cpp` $i `pkg-config --libs opencv`;
done


Salvei como build_all.sh
Para rodar digitamos no terminal:
sh build_all.sh

sexta-feira, 13 de agosto de 2010

Encontrar a equação da reta no MATLAB

Operação simples, mas as vezes esquecemos. ^^


consultei este site:
http://www.infoescola.com/geometria-analitica/equacoes-da-reta/

e a partir de dois pontos vamos criar uma matriz e encontrar a determinante. O resultado será a equação da reta.

Por exemplo, temos os pontos (3.5 , 0) e (7.5 , 1). No MATLAB digite:

% Primeiramente vamos tornar o x e o y variáveis para o MATLAB:
syms x
syms y
% agora vamos digitar a matriz:
A = [x y 1; 3.5 0 1; 7.5 1 1];
% agora encontramos a determinante:
det(A)

Pronto.

terça-feira, 10 de agosto de 2010

Instalando o abnTeX no Windows 7

Seguindo o tutorial de instalação do próprio abnTeX http://abntex.codigolivre.org.br/node7.html
com algumas modificações.


  • A versão instalada do MikTeX é a 2.8 e o caminho de instalação é "C:\Program Files\MikTeX 2.8"
  • Instalar o setspace pelo gerenciador de pacotes do MikTeX no modo admin
  • Após baixar o abnTeX copiar o conteúdo da pasta texmf para "C:\Program Files\MikTeX 2.8" e aceitar as solicitações de substituição de pasta
  • Ao efetuar a atualização do banco de dados (Refresh FNDB) escolher  modo admin.
UPDATE (21 Jan 2013):
Já existe a versão 2 do abnTeX. Informações em:

terça-feira, 8 de junho de 2010

Medir o tempo de execução de um programa C/C++

Neste tópico mostraremos três formas de calcular o tempo de execução de um código em C/C++

1 - Depois de pesquisar em alguns fóruns lembrei de um código que tinha feito há um tempo atrás. Utilizaremos a função gettimeofday da biblioteca sys/time.h. (Aparentemente só funciona no Linux). Código:

//cal_time.cpp
#include <sys/time.h>
#include <stdio.h>

int main() {

  double ti,tf,tempo; // ti = tempo inicial // tf = tempo final
  ti = tf = tempo = 0;
  timeval tempo_inicio,tempo_fim;
  gettimeofday(&tempo_inicio,NULL);

// SEU CODIGO AQUI

  gettimeofday(&tempo_fim,NULL);
  tf = (double)tempo_fim.tv_usec + ((double)tempo_fim.tv_sec * (1000000.0));
  ti = (double)tempo_inicio.tv_usec + ((double)tempo_inicio.tv_sec * (1000000.0));
  tempo = (tf - ti) / 1000;
  printf("Tempo gasto em milissegundos %.3f\n",tempo);

  return 0;
}

Se quiser o tempo em segundos é só retirar o /1000 depois de (tf - ti).
Contribuição de prof. Thierson (UFG) e Carlos Antonio (PUC-GO).



(adicionado 09/06/2011)

Outras formas:

2 - Utilizando a função omp_get_wtime() da biblioteca omp.h. Para compilar deve inserir a diretiva -fopenmp. Código:

  double timing = omp_get_wtime();
// SEU CODIGO AQUI
  timing = omp_get_wtime() - timing;

Contribuição de Mateus Nin (USP).


3 - Utilizando a função clock() da biblioteca time.h. Código:

  clock_t start_time;
  start_time = clock();

// SEU CÓDIGO AQUI
  double time_in_seconds = (clock() - start_time) / (double)CLOCKS_PER_SEC;

Referência: https://alliance.seas.upenn.edu/~meam620/wiki/index.php?n=Main.Code


(adicionado 13/12/2012)

Outra forma:

4 - Ainda utilizando a biblioteca time.h, mas agora com a função time(), porém não é possível obter em milissegundos:

time_t segundos = time(NULL);

// SEU CÓDIGO AQUI

int tempo_decorrido = time(NULL) - segundos;


Referência: http://www.cplusplus.com/reference/ctime/time/

Por Diogo Correa.

segunda-feira, 7 de junho de 2010

terça-feira, 18 de maio de 2010

Imprimir frente e verso no GNU/Linux

  • Distribuição Ubuntu 9.10
  • Impressora HP D1360

Primeiro imprime as paginas pares  

    even pages only  
    Depois imprime as paginas impares e reverso. 
     
        odd pages only

    e deixa marcado a caixa

        reverse

    domingo, 25 de abril de 2010

    Instalação e Configuração Ubuntu 9.10 no notebook STI IS 1462

    Opa,
    vou reportar a instalação do Ubuntu 9.10 no meu notebook STI IS 1462. Algumas coisas ainda não estão funcionando. Vídeo 3D e WebCam. Porém não são tão necessárias agora e depois quando eu arrumar postarei aqui.


    • Configuração do Notebook 
      • Marca/modelo: Semp Toshiba Info IS 1462;
      • Processador: Pentium DualCore T3400, 2.16GHz, 1MB cache;
      • Vídeo: VIA Chrome 9 HC;
      • Memória: 2GB;
      • HD: 160GB;
    • Instalação do Ubuntu

    Faça o boot com o CD do Ubuntu9.10 32bit, escolha o idioma preferido e pressione F6.

    Modo xforcevesa

    Adicione a opção xforcevesa antes de initrd=/casper/initrd.gz.  A opção xforcevesa é necessária porque a placa de vídeo VIA não fornece suporte necessário para GNU/Linux e então é necessário utilizar um driver genérico VESA. Por isso, inicialmente, não funcionam os efeitos 3D.

    Intependente se usará modo xforcevesa ou não

    Agora já pode instalar o Ubuntu seguindo as telas. É bem intuitivo.

    • Configurações Iniciais

    Configuração do vídeo 2D e do teclado

    Após instalar o Ubuntu substitui o arquivo xorg.conf que está na pasta /etc/X11/ pelo abaixo descrito (utilizando o comando
    sudo gedit /ect/X11/xorg.conf
    pelo terminal)


    ################################################################################################ Arquivo xorg.conf:
    ##############################################################################################
    Section "Device"
       Identifier "Configured Video Device"
       Driver "vesa"
    EndSection

    Section "Monitor"
       Identifier "Configured Monitor"
       HorizSync 30-68
       VertRefresh 50-85
    EndSection

    Section "Screen"
       Identifier "Default Screen"
       Monitor "Configured Monitor"
       Device "Configured Video Device"
       DefaultDepth    24
    SubSection "Display"
                    Depth           1
                    Modes           "1280x800"
            EndSubSection
            SubSection "Display"
                    Depth           4
                    Modes           "1280x800"
            EndSubSection
            SubSection "Display"
                    Depth           8
                    Modes           "1280x800"
            EndSubSection
            SubSection "Display"
                    Depth           15
                    Modes           "1280x800"
            EndSubSection
            SubSection "Display"
                    Depth           16
                    Modes           "1280x800"
            EndSubSection
            SubSection "Display"
                    Depth           24
                    Modes           "1280x800"
            EndSubSection
    EndSection

    Section "InputDevice"
        Identifier "Generic Keyboard"
        Driver "kbd"
        Option "CoreKeyboard"
        Option "XkbRules" "xorg"
        Option "XkbModel" "abnt2"
        Option "XkbLayout" "br"
        Option "XkbOptions" "lv3:ralt_switch"
    EndSection
    ##############################################################################################
    ##############################################################################################


    Com este arquivo xorg.conf fica resolvido o problema da resolução (1280x800) e do layout do teclado para ABNT2. Sem estas alterações a resolução fica 1280x720. Desagradável.

    Configuração do SOM

    O som já está funcionando logo após instalar o Ubuntu, porém aparecerá um driver disponível para o modem. Este driver conflita com o som. Por isso não instale. Quando eu instalei o som foi desativado. Após desativar o driver do modem o som voltou a funcionar.

    Configuração do GRUB

    O GRUB é o gerenciador de boot. Se você tiver outro SO instalado então o GRUB irá mostrá-lo na inicialização do computador juntamente com o Ubuntu.
    Ative a gravação do arquivo grub.cfg com o comando
    sudo chmod +w /boot/grub.cfg
    e edite o arquivo com o comando
    sudo sudo gedit /boot/grub.cfg
    Neste arquivo eu alterei o timeout para 5 segundos que é tempo que o GRUB esperará até escolher um sistema operacional se o usuário não fizer escolha. É possível escolher também a ordem em que os SO serão apresentados (alterando a posição em que aparecem no arquivo), bem como alterar qual sistema padrão o GRUB irá aceitar (altere o valor de defalt, começa com zero).

    Configurando o fstab

    Este arquivo descreve como partições, discos, ..., serão montados durante o boot.
    Por padrão, no Ubuntu 9.10 as partições windows vem desabilitadas. Habilitei para montar automaticamente. Há duas formas de visualizar as partições:
    pelo comando
    fsdisk -l
    ou graficamente e mais intuitivamente pelo programa GParted. Para instala-lo há também duas formas, pela Central de Programas Ubuntu ou pelo comando
    sudo apt-get install gparted
    Eu prefiro utilizar o comando, que é mais rápido. Após instalar o GParted e visualizar as partições então é possível editar o arquivo fstab.
    Primeiro façamos um backup do fstab com o comando:
    sudo cp /etc/fstab /etc/fstab_backup
    É possível montar as partições do windows no lugar padrão (/media/nome_da_particao). Eu prefiro montar as partições do windows na raiz. Para isso criamos uma pasta para cada partição. No meu caso tenho duas partições. Uma com o windows 7 instalado e outra com arquivos.
    sudo mkdir /win7
    sudo mkdir /arquivos

    Agora vamos adicionar duas entradas no final do arquivo fstab
    /dev/sda2    /win7        ntfs    users,rw,auto,exec    0    0
    /dev/sda3    /arquivos   ntfs    users,rw,auto,exec    0    0

    Perceba que /dev/sda2 e /dev/sda3 é o local das duas partições que foi visualizado no GParted. /win7 e /arquivos é o ponto de montagem e as pastas que eu criei acima. ntfs é o tipo de arquivos das partições. Os parametros users, rw, auto e exec servem, respectivamente, para autorizar usuários montarem as partições, terem acesso de leitura e escrita, serem montadas automaticamente e ser possível executar programas por linha de comando. As duas últimas colunas 0 e 1 significam, respecitvamente, não marcar a partição como backup e não marcar a partição para verificação de disco.
    Pronto. Salva e fecha o arquivo fstab.

    Abaixo vemos uma captura de tela do meu sistema:


    Neste print screen é possivel ver as duas barras de tarefas.
    a superior com "menu iniciar", lançadores de aplicativos: monitor de sistema, terminal e firefox.
    do lado direito superior funções do sistema e relógio.

    Na barra inferior apenas janelas.

    Na janela aberta é possível ver os atalhos para o hd ntfs onde tem arquivos, computacao, programas, ... fica bem mais fácil salvar arquivos desta maneira. Para fazer isto basta arrastar uma pasta na janela principal para a barra da esquerda.
    • Instalação de Alguns Programas Úteis
    A instalação da maioria dos programas do Ubuntu pode ser feita em
    Aplicativos -> Central de Programas do Ubuntu, ou em
    Sistema -> Administração -> Gerenciador de Pacotes Synaptic, ou ainda via terminal usando a seguinte sintaxe
    sudo apt-get install nome_do_programa

    • Alguns programas instalados pela Central de Programas do Ubuntu:
    Acrobat Reader 9 - programa leitor de arquivos pdf. Instalação: procurar acrobat na Central de Programas e clicar em Instalar.

    aMSN - programa de bate-papo. Instalação: procurar amsn na Central de Programas e clicar em Instalar.

    Pidgin - programa de bate-papo. Instalação: procurar pidgin na Central de Programas e clicar em Instalar.

    Despertador - alarme despertador. Instalação: procurar despertador na Central de Programas e clicar em Instalar.

    Java6 - máquina virtual java. Instalação: procurar java na Central de Programas e clicar em Instalar.

    Plugin do Adobe Flash - Execucação de aplicações flash. Útil, por exemplo, para visualizar vídeos do youtube. Instalação: procurar adobe flash na Central de Programas e clicar em Instalar.

    Ubuntu restricted extras - plugins de áudio e vídeo. Instalação: procurar mp3 na Central de Programas e clicar em Instalar.

    Extra plugins GStreamer - plugins de áudio e vídeo. Instalação: procurar mp3 na Central de Programas e clicar em Instalar.

    • Programa instalado pelo Synaptic:
    Firefox 3.6 - atualizar o firefox para versão 3.6. Esta atualização muda o ícone e o nome do firefox para Namoroka. Porém serve para atualizar os temas persona no firefox. Atualização de repositório de pacotes no terminal:
    sudo add-apt-repository ppa:ubuntu-mozilla-daily/ppa
    sudo apt-get update
    Após digitar os dois comandos acima no terminal entre em
    Sistema -> Administração -> Gerenciador de Pacotes Synaptic
    e pesquise por firefox 3.6. Marque para instalação e clique em aplicar. Será desinstalado o firefox 3.5 e instalado o firefox 3.6.

    • Alguns programas instalados via terminal:
    Wine - programa para emular windows e instalar alguns programas do windows no linux. Instalação no terminal:
    sudo apt-get install wine
    winecfg

    PowerPointViewer.exe - programa para windows para visualizar apresentações PowerPoint. Muito útil no linux já que o OpenOffice não mantém corretamente o layout de alguns arquivos ppt. Este aplicativo pode ser baixado no site da Microsoft. Após baixá-lo e instalar o wine basta digitar o seguinte comando no terminal (navegue pelo terminal até a pasta onde baixou o PowerPointViewer):
    wine PowerPointViewer.exe

    Octave - programa utilizado para  computações numéricas. Instalação no terminal:

    sudo apt-get install octave3.2

    LaTeX - programa utilizado para compilar gerar documentos científicos, trabalhos, apresentações. Muito útil e utilizado no meio acadêmico. Instalação no terminal:
    sudo apt-get install texlive texlive-latex-extra tex-live-lang-portuguese

    Kile - ótimo editor de texto e projetos para LaTeX. Instalação no terminal:
    sudo apt-get install kile

    Configuração básica do Kile:
    Para visualizar com o Acrobat Reader:
    * settings -> build -> New -> nome: PDFLaTeX+Acroread
    * Tool -> ViewPDF -> Acroread -> Add
    * Seleciona ViewPDF (Okular) -> remove

    Para Acentuação no Kile:
    * settings -> editor -> open/save -> western european (ISO 8859-1)
    * utilizar fim de linha do windows


    • Considerações Finais 

    Se o seu notebook não tem uma placa VIA então pode não ser necessário seguir algumas partes deste tutorial: modo xforcevesa e configuração do xorg.conf

    O notebook está funcionando muito bem com o Ubuntu 9.10, embora ainda restem algumas configurações e ajustes a fazer:
    * configurar WebCam;
    * instalar driver de vídeo VIA;
    * configurar SAMBA;

    O tempo de inicialização e de desligamento do sistema é bem rápido.

    • Alguns Links:
    Drivers Semp Toshiba: www.suporte-semptoshiba.com.br
    Site com algumas dicas sobre instalação do Ubuntu no IS 1462: http://sites.google.com/site/sti1462/
    LaTex no Ubuntu: http://ubuntued.info/como-instalar-o-latex-no-ubuntu
    Firefox 3.6 no Ubuntu: http://www.vivaolinux.com.br/dica/Instalando-o-Firefox-3.6-no-Ubuntu
    Configuração do fstab no Ubuntu:
    http://www.psychocats.net/ubuntu/mountwindowsfstab
    http://www.vivaolinux.com.br/dica/Montando-automaticamente-sua-particao-no-Ubuntu-9.10-fstab

    terça-feira, 20 de abril de 2010

    O que é Logosofia?


    "Logosofia é uma ciência nova, que revela conhecimentos de natureza transcendente e concede ao espírito humano a prerrogativa de reinar na vida do ser que anima. Conduz o homem ao conhecimento de si mesmo, de Deus, do Universo e de suas leis eternas.

    Apresenta uma concepção original do homem, em sua organização psíquica e mental, e da vida humana em suas mais amplas possibilidades e proporções."


    do site: Logosofia.org.br

    terça-feira, 6 de outubro de 2009

    Paralisia do Sonho


    Opa,
    vou contar algumas experiências interessantes que tive com a paralisía do sonho, um evento que acontece quando acordamos e continuamos com o corpo imóvel, mesmo depois de ter total consciência de ter acordado. E as vezes, sem consciência podemos ter até alucinações.

    Este texto foi postado por mim no blog de um amigo respondendo o post dele sobre sonho lúcido.
    Eis:
    "Bom, a primeira vez que me ocorreu a paralisia,
    tive desespero, não demonstrei isto porque estava
    juntamente com outras pessoas.
    Aconteceu, há uns 4 anos atras, na sala de aula,
    eu acabei adormecendo na sala de aula e
    derrepente alguém estava me chamando na porta para conversar comigo
    e uma colega foi me acordar para ver o que a pessoa na porta queria comigo.
    Me cutucou. Eu acordei, senti a moça me cutucando, me chamando, me balançando.
    Eu estava ouvindo, estava sentindo, queria falar, queria se mexer, mas nada acontecia.
    Tive um pequeno pânico. Logo consegui se mexer e atender quem me chamava.
    Interessante que as pessoas na sala de aula não perceberam o que aconteceu comigo,
    apenas pensaram que eu estava num sono profundo e não conseguia acordar.

    Depois de vários meses aconteceu-me novamente,
    mas agora eu tinha a paralisia do sono na hora em que estava começando a dormir e não na hora em
    que estava acordando.
    Algumas vezes tive terror, ficava tentando me mexer na cama,
    falar e nada acontecia.
    Depois comecei a gostar e a procurar conseguir chegar
    a esta paralisia sempre tentando encontrar este estado de transição entre o acordado e o dormindo.
    Eu ainda não tinha pesquisado sobre o assunto,
    este tópico foi a primeira coisa que eu li sobre, mas já tinha esta idéia de
    que a paralisia do sono acontecia justamente neste estado de transição.
    Quando acontece agora fico mais tranquilo. Gosto. Tento brincar comigo mesmo.
    Só que ainda não consigo projetar uma imagem agradável e sonhar com aquilo.
    Mas uma vez consegui provocar a paralisia na qual tive uma fantasia muito interessante.
    Eu era uma entidade do bem lutando contra uma entidade do mal, algo como um demonio.
    Eu tinha espada, poderes e então nós lutamos. Foi complicado. Eu não lembro o que aconteceu
    mas foi uma experiencia muito interessante.
    Apartir de agora vou tentar criar situações quando acontecer novamente.
    Gostei da experiencia do rapaz o qual é citado no tópico.
    Uma vez consegui a paralisia com os olhos abertos.
    Eu estava deitado na cama, olhos fixos para a porta aberta do meu quarto.
    Senti medo porque eu esperava entrar alguma entidade maligna pela minha porta
    e como estava paralisado não poderia me mexer.
    Geralmente minhas paralisias levam-me ao medo pelo desconhecido e
    pelo fato de eu imaginar seres que podem me fazer mal.

    A úlima vez que me ocorreu foi na semana passada.
    Eu tinha dormido pouco. quando durmo pouco geralmente fico "viajando" nas coisas
    por exemplo, quando estou ouvindo alguém conversar então separo algumas palavras que a pessoa
    está pronunciando e combino com coisas que gosto ou que estou estudando paralelamente e acabo
    fazendo alguma fórmula, alguma teoria virtual, algo geralmente sem sentido.
    Então, ok, voltando a semana passada, eu estava na van de manha indo de Anápolis para Goiânia, onde estudo, tinha dormido pouco,
    e então estava com muito sono e resolvi dormir durante a viagem. E as vezes eu acordava. Uma das das vezes que eu acordei
    percebi que estava dormindo com a boca aberta, quanto acordei ainda estava com a boca entre aberta, mas eu não conseguia
    fechar, foi então que percebi a paralisia. e não consegui abrir os olhos, estava acordado, com a boca aberta.
    E comecei a ter ilusões visuais e sonoras. Foi muito interessante quando eu me dei por conta. O que aconteceu é que eu
    vi as outras pessoas que estavam na van apontando para mim e rindo porque eu estava dormindo de boca aberta. Eu podia escutar
    as pessoas rindo e podia ver os sorrisos. Eu não podia me mexer, estava com raiva das pessoas que estavam rindo de mim,
    então a única coisa que eu consegui mover foi a lingua, mostrei a lingua para as pessoas, isto mesmo, tirei a lingua para fora
    da boca. Mas era tudo um sonho lúcido. Eu consegui sair da paralisia e enfim abri os olhos e o que aconteceu,
    uma surpresa, quando abri os olhos, todos na van estavam dormindo, apenas eu acordado com a boca aberta e a lingua pra fora.
    Foi uma situação muito engraçada que eu consegui construir sozinho. Eu estava vendo e ouvindo os outros rindo de mim, mas
    na verdade estavam todos dormindo. Então eu misturei a realidade com o sonho, porque eu realmente tirei a lingua para fora da boca,
    não apenas no sonho, de verdade e então eu acordei com a lingua fora da boca. Foi uma experiencia muito interessante.
    E engraçada também :)


    De qualquer forma, é muito interessante o sonho lúcido.
    vou tentar fazer mais vezes. E para quem consegue controlar é muito bom.

    Um abraço."

    by douttorx

    domingo, 27 de setembro de 2009

    PRINCÍPIOS EXISTENCIAIS

    Tudo é energia, e permita-me ajudar você um pouco a entender isso: existe o universo, nossa galáxia, nosso sistema estrelar, nosso planeta, e depois os indivíduos, e aí, dentro desse corpo existem os sistemas de órgãos, depois as células, depois as moléculas e depois os átomos. E depois existe a energia. Logo, são muitos níveis em que pensar, mas tudo no universo é energia.


    Deus é luz. Se Ele é luz, então Ele também é energia. A Bíblia diz também que Deus é Espírito. Então o Espírito de Deus também é energia. Por essas razões, Deus é onipresente. Ele está em todos os lugares ao mesmo tempo e está dentro de você.


    Estamos todos conectados uns aos outros. Apenas não nos damos conta. Não existe um "lá fora" e um "aqui dentro". No universo tudo está conectado. É tudo um mesmo campo energético.

    A maioria dos indivíduos se define pelo corpo finito, mas você não é um corpo finito. Mesmo sob o microscópio, você é um campo de energia. O que nós sabemos sobre energia é isto: Você pergunta ao físico quântico "O que cria o mundo?" E ele dirá: "A energia". Ora, descreva energia. "Tudo bem: Ela não pode ser criada nem destruida, ela sempre foi e sempre tem sido tudo que sempre existiu; ela está entrando na forma, atravessando a forma e saindo da forma." Se você perguntar a um pastor, apóstolo, padre ou papa: "O que criou o Universo?" Ele dirá: "Deus". Então descreva Deus. "Sempre foi e sempre será, não pode ser criado nem destruído, tudo que sempre foi e para sempre será, e sempre transformando as coisas". Viu só? É a mesma descrição, mas com outra terminologia.


    by Rafael Dias

    quinta-feira, 27 de novembro de 2008

    Primeiro Código em Qt4

    Primeiro Código em Qt4


    #include
    #include
    int main(int argc, char *argv[])
    {
    QApplication programa(argc, argv);
    QPushButton hello("Hello world!");
    hello.resize(100, 30);
    hello.show();
    return app.exec();
    }


    Explicando o Código


    #include

    Aqui incluímos a classe QApplication. Esta classe gerencia vários recursos das aplicações criadas em Qt, tais como fontes e cursor.

    #include

    Aqui incluímos a classe QPushButton. Para cada classe que existe na API do Qt, existe um arquivo de biblioteca com mesmo nome que contém sua definição.
    A QPushButton é a responsável por criar botões, os quais o usuário da interface criada poderá apertar e soltar.
    Ela gerencia também a forma e como ele aparentará na interface, assim como todas as outras classes de objetos da interface (widget). Uma widget é um objeto de interface do usuário que pode processar dados de entrada do usuário.

    int main(int argc, char *argv[])

    A função acima citada é o ponto de início do programa. Quase sempre usamos o função “main()” apenas para alguma inicialização antes de passarmos o controle para a biblioteca do Qt.
    Os parâmetros “argc” e “argv” já são conhecidos da linguagem C/C++.

    QApplication programa(argc, argv);

    Aqui instanciamos a classe QApplication com o objeto “programa” passando os parâmetros “argc” e “argv”, para q processe argumentos de linha de comando.
    A classe QApplication deve ser instanciada antes de qualquer recurso do Qt ser usado.

    QPushButton hello("Hello world!");

    Instanciamento da classe QPushButton pelo objeto “hello” e já passando o nome do botão para o construtor.
    Como ainda não especificamos uma janela na qual ele deverá se adequar, ele próprio criará uma janela independente.

    hello.resize(100, 30);

    Redimensionando o tamanho do botão em pixels. O primeiro parâmetro é a largura e o segundo parâmetro é altura. Neste caso, colocamos 100 pixels de largura por 30 de altura.

    hello.show();

    Uma interface nunca é visivel quando criamos. Portanto, devemos chamar a função “show()” para torná-la visível.

    return programa.exec()

    É aqui que finalmente a função “main()”, como dito antes, “manda” o controle para o Qt. A função “exec()” irá retornar quando a aplicação da interface fechar. Na função “exec()” o Qt recebe e processa todos os eventos de sistema e de usuário e os repassa para as interfaces designadas.


    Compilando o Código


    Bom, uma vez tendo escrito o código, agora vamos à compilação. Salve o código num arquivo de extensão “.cpp”. Não importa o nome, mas deve ser de extensão “.cpp”.
    Para compilarmos o código do Qt devemos criar um Makefile que inclua todas as bibliotecas e cabeçalhos que nos serão úteis. Mas o próprio Qt já possui em si uma ferramenta de criação de Makefile. Para gerar o Makefile, basta abrir um terminal ou prompt do DOS, ir até a pasta onde está seu código “.cpp” (lembre-se de separar seu código com Qt de outros arquivos “.cpp” que não sejam necessários) e digitar:

    qmake -project

    Este comando diz para o qmake criar um arquivo de projeto do Qt (um arquivo “.pro”).

    qmake

    Este dirá para criar o Makefile de acordo com o sistema que você estará utilizando baseado no arquivo “.pro”.

    make

    Este comando como padrão da linguagem C/C++, executará o Makefile, criando o executável do seu arquivo fonte. Aguarde, e depois execute o aplicativo e veja o resultado.

    domingo, 16 de novembro de 2008

    Teste Sua Mente



    1º TESTE:
    Foi descoberto que o nosso cérebro tem um Bug. Aqui vai um pequeno
    exercício de
    calculo mental !!!! Este cálculo deve fazer-se mentalmente (e rapidamente),
    sem
    utilizar calculadora
    nem papel e caneta!!!
    Seja honesto... faça cálculos mentais...
    Tens 1000, acrescenta-lhe 40. Acrescenta mais 1000. Acrescenta mais 30 e
    novamente 1000. Acrescenta 20.
    Acrescenta 1000 e ainda 10. Qual é o total?



    (resposta abaixo)



    Teu resultado é 5000 , certo ?




    A resposta certa é 4100 !!!!


    Se não acreditar, verifique com a calculadora. O que acontece e que a
    seqüência decimal confunde o nosso cérebro, que salta naturalmente para a
    mais alta decimal (centenas em vez de dezenas).




    2º TESTE:
    Rápido e impressionante: conte, quantas letras 'F' tem no texto abaixo sem
    usar o mouse:

    FINISHED FILES ARE THE RE-
    SULT OF YEARS OF SCIENTIF-
    IC STUDY COMBINED WITH
    THE EXPERIENCE OF YEARS


    Contou?


    Somente leia abaixo após ter contado os 'F'.


    OK?

    quantos??? 3??? Talvez 4???




    Errado, são 6 (seis) - não é piada!

    Volte para cima e leia mais uma vez!
    A explicação está mais abaixo.
    O cérebro não consegue processar a palavra 'OF'.
    Loucura, não?



    Quem conta todos os 6 'F' na primeira vez é um 'gênio', 3 é normal,4 é mais
    raro, 5 mais ainda, e 6 quase ninguém.




    3º Teste:
    Sou Diferente? Faça o teste.
    Alguma vez já se perguntaram se somos mesmo diferentes ou se pensamos
    a mesma coisa? Façam este exercício de reflexão e encontrem a
    resposta!!!


    Siga as instruções e responda as perguntas uma de cada vez MENTALMENTE
    e tão rápido quanto possível mas não siga adiante até ter respondido a
    anterior.
    E se surpreendam com a resposta!!!

    Agora, responda uma de cada vez:

    Quanto é:



    15+6




    ...21...



    3+56




    ...59..




    89+2




    ...91...




    12+53




    ...65...



    75+26




    ...101...



    25+52



    ...77...




    63+32



    ...95...




    Sim, os cálculos mentais são difíceis mas agora vem o verdadeiro teste.

    Seja persistente e siga



    123+5




    ...128...




    RÁPIDO!
    PENSE EM UMA FERRAMENTA E UMA COR!




    .....




    E siga adiante...



    ......




    Mais um pouco...




    .......




    Um pouco mais...




    .......



    Pensou em um martelo vermelho, não é verdade???
    Se não, você é parte de 2% da população que é suficientemente
    diferente para pensar em outra coisa. 98% da população responde
    martelo vermelho quando resolve este exercício.
    Seja qual for a explicação para isso, mandem para seus amigos para que
    vejam se são normais ou não!!!


    Referencia Desconhecida

    //by douttorx

    sexta-feira, 14 de novembro de 2008

    PSICOLOGIA e INFORMÁTICA - O ser humano diante das novas tecnologias

    Vamos Ler??!!

    =]]

    Introdução às Interfaces Gráficas com Qt4 e instalação


    Introdução

    A ferramenta Qt – Q Toolkit - é uma biblioteca de classes C++ para construção de programas GUI – Interface Gráfica de Usuário - multi-plataforma, ou seja, “write once, compile anywhere” (Escreva uma vez, compile em qualquer lugar). Assim, um programa construído em Qt pode ser compilado em Windows, Linux, Mac e outros sistemas operacionais. Esta é também a biblioteca base do ambiente de trabalho KDE - K Desktop Environment.
    Em sua biblioteca, a Qt traz uma infinidade de API’s – Application Programming Interface, que podem ser usadas para diversos fins, desde tratamento de strings, manipulação de arquivos, construção de interfaces gráficas (GUI) a criação de objetos Opengl e muitas outras possibilidades e por ser feita em C++, a Qt utiliza todos os recursos avançados de Orientação a Objetos, além de herdar toda a eficiência dessa linguagem largamente utilizada em sistemas de grande porte.
    Esta biblioteca e respectivas ferramentas de desenvolvimento estão disponíveis para mais plataformas para além do Linux, são elas Win32, MacOSX, Solaris X86, HP-UX, Embedded Linux.
    A filosofia de comunicação entre objetos utilizada pelo QT é do tipo “signals/slots”.



    Instalação


    Windows


    Para instalação do Pacote de Bibliotecas e Utilitários do Qt4 no Windows, acesse o site:

    http://trolltech.com/developer/downloads/qt/windows

    e baixe o arquivo executável:

    qt-win-opensource-4.4.0-mingw.exe

    Segue abaixo passo a passo da instalação:

    1. Execute o arquivo qt-win-opensource-4.4.0-mingw.exe
    2. Clique em Next.
    3. Clique em Next.
    4. Marque a opção “I accept the terms in the License Agreement” e clique em Next.
    5. Clique em Next.
    6. Clique em Next.
    7. Clique em Next.
    8. Se você não tiver o compilador gcc e g++ instalados em sua máquina, marque a opção “Download and install minimal MinGW instalation” e clique Next.
    9. Clique “I Agree”.
    10. E por fim Install.
    11. Ao completar a instalação, clique Next
    12. Desmarque as opções “Run Examples and Demos” e “Show Documentation. E depois Finish”.
    13. Clique no botão direito em “Meu Computador”, vá em Propriedades.
    14. Na aba “Avançado”, clique em ‘Variáveis de Ambiente”.
    15. Em “Variáveis do Sistema”, selecione “Path” e clique em Editar.
    16. No final da linha, acrescente “C:\Qt\4.4.0\bin” e depois “C:\MinGW\bin”, se tiver pedido para instalar o compilador gcc e g++.
    Pronto!


    Linux

    Para instalação do Pacote de Bibliotecas e Utilitários do Qt4 no Linux, acesse o site:

    http://trolltech.com/developer/downloads/qt/x11

    E baixe o arquivo:

    qt-x11-opensource-src-4.4.0.tar.gz

    A partir de agora, deverá estar logado como administrador do sistema (root).
    Descompacte o arquivo por:

    tar -xzvf qt-x11-opensource-src-4.4.0.tar

    Entre na pasta criada:

    cd qt-x11-opensource-src-4.4.0

    Digite os comandos:

    ./configure

    Se tudo ocorrer bem, sem erros, lembrando que precisa ter instalado em sua máquina o compilador de C e C++, digite:

    make

    E por fim, para instalação no sistema:

    make install

    Por padrão, a biblioteca do Qt4 será instalada na pasta:

    /usr/local/Trolltech/Qt-4.4.0

    Para se usar o Qt corretamente, algumas variáveis de ambiente devem ser configuradas. Ainda como administrador de sistema, vá até a pasta “/etc” e edite o arquivo “profile”, adicionando as linhas a seguir:

    PATH=/usr/local/Trolltech/Qt-4.4.0/bin:$PATH
    export PATH

    Pronto! O Qt já está instalado em sua máquina!



    ATENÇÃO:

    Caso sua distribuição de Linux seja umas das especificadas abaixo, por favor, acesse o site do mesmo para melhor adaptação ao seu sistema:

    • Conectiva
    • Debian/Ubuntu
    • FreeBSD
    • Mandriva
    • Red Hat/Fedora
    • Slackware
    • Novell/SuSE
    • Blastwave.org (para quem utiliza OpenSolaris)

    quarta-feira, 12 de novembro de 2008

    Eu sou um Nerd!!

    Você é um Nerd?



    Resultado: 47 Pontos

    Nerd em estágio avançado!

    Com certeza é identificado como um Nerd a quilômetros de distância, talvez por esse motivo é muito provável que você será um exemplo de ser que passará pela terra sem fornicar uma única vez.


    http://www.osvigaristas.com.br/testes/nerd/

    //by douttorx

    domingo, 9 de novembro de 2008

    O Processo de Desenvolvimento de Software - Engenharia de Software

    Construir software não é só sair por ai programando e escrevendo códigos mal feitos.

    É preciso todo um planejamento.

    Isso inclui exaustivas reuniões com os clientes (gerente de empresas, usuáriosdo sistema ...), com o pessoal da programação e muitos outros profissionais que trabalham em cada uma das várias etapas que compoem a construção de software.

    Requisitos, Documentação, Implementação, Testes, Validação, ... Falarei um pouquinho das primeiras fases. A primeira etapa (requisitos - Engenharia de Requisitos) é tida como uma das mais importantes é aquela na qual o cliente irá descrever tudo o que o software deve oferecer, todos os recursos, as funcionalidades. Uma das partes mais difíceis e se não for bem feita pode acarretar prejuizo depois por replanejamento. A partir de tudo o que o cliente descreveu são feitos diagramas de caso-de-uso para facilitar a interação entre a empresa que produz o software e o consumidor do software. Neste ponto a fase da documentação está bem definida. Além de diagramas são escritos textos em linguagem natural descrevendo o sistema.

    Uma grande dificuldade em todo este complexo processo é a comunicação entre o cliente e a empresa de software. Observando a imagem abaixo percebemos o caos causado pelo mal planejamento. Primeiramente o cliente não soube explicar o que queria, os analistas sem entenderem direito não conseguiram fazer uma boa análise de requisitos e uma documentação não foi feita. O programador não fez o trabalho direito, os custos foram bem altos, não houve testes, nem configurações. O software que o cliente queria era algo bem mais simples.


    Referência:
    http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/intro/processo.htm

    //by douttorx

    quinta-feira, 6 de novembro de 2008

    Internet - vantagem ou desvantagem?

    Internet é sinônimo de tecnologia, de informação, de entretenimento.

    Como tratar o meu cágado? Como tocar aquela música que eu gosto? Como
    evitar que meu cachorro faça xixi no pneu do carro? Entro no nosso querido
    Google e pesquiso. Aprendo. Isso é maravilhoso. Ter uma quase infinita
    fonte de informação na minha frente. Basta digitar algo e a informação
    aparece como que num toque de mágica. E sem ocupar espaço na minha
    mesa. Não preciso ir à biblioteca e ficar horas para encontrar um livro e
    depois folheando aquelas páginas empoeiradas para encontrar um texto as
    vezes desatualizado. Tenho a comodidade de aprender coisas da minha e de
    outras áreas rapidamente e sem grandes esforços.

    Não só o acesso a informação, mas também acesso a programas de
    televisão, programas musicais, música, vídeos. Tudo isso a um clique. Isso
    significa entretenimento, A Internet hoje torna a vida mais agradável. E não
    tem como viver sem Internet, não só nós usuários comuns, mas também
    grandes corporações trocam informações com fornecedores, clientes e
    filiais. As vendas on-line são uma maravilha. Você consulta o preço e
    compra no lugar mais barato sem sair de casa. Ou ainda, mesmo que vai na
    loja primeiramente entra no site e consulta se tem o produto e o preço. Vê o
    número da loja, o endereço. A partir do endereço faz uma rota com o uso do
    Google Maps. Entra no Msn e chama o seu amigo para ir junto. Aproveita e
    manda um e-mail para o seu primo que mora a 1700km de distancia. Depois
    de chegar em casa com o produto pesquisa na Internet a melhor forma de
    usar. E por ai vai. A Internet é um grande marco na vida de todos nós.

    E ainda tem o conhecimento coletivo o qual encontramos em fóruns e
    comunidades de discussões de assuntos comuns, discutir idéias e melhorar
    nossos conceitos. Na Internet encontramos pessoas como a gente, que
    gostam de fazer a mesma coisa. Por exemplo, eu moro num bairro onde as
    pessoas não gostam de jogar xadrez, mas eu entro no site chess.com e
    encontro pessoas de todos os cantos do mundo para jogar comigo. Na
    Internet não somos a platéia como na televisão e sim os a(u)tores, somos
    estrela. Temos ainda maior liberdade de expressão e, muito importante,
    liberdade para escolher conteúdo, não estamos presos a determinado
    conteúdo.

    Porém, se tratando em tecnologia, sempre encontramos filósofos,
    antropólogos, psicólogos, sociólogos e outros logistas que advertem sobre
    os problemas da ascensão tecnológica e claro da Internet. Os relatos são
    sobre a perca de produtividade de funcionários e estudantes, uma vez que
    passam horas por dia conversando com amigos e vendo coisas "inúteis" na
    rede. Outro ponto importante a se considerar é o conteúdo inapropriado
    para menores de idade como pornografia e violência.

    Outra desvantagem da Internet, isso acontece comigo também, é o vício.
    Quando eu disse que estudantes e trabalhadores passam horas vendo
    coisas inútei lembrei quando eu começo a pesquisar sobre coisas que não
    deveria, ou ainda, deveria estar fazendo algo mais importante. E passamos
    a ser escravos da Internet, temos que estar sempre vendo e-mails, orkut, e
    outros sites.

    A Internet tende a nos separar das pessoas, temos relações menos afetivas
    e nos tornamos mais agressivos. As relações sociais passam de real para
    virtual. Não há o chamado calor humano. Além disso, a saúde pode ser
    prejudicada. Pessoas como eu as quais ficam muito tempo em frente ao
    computador tendemos ao sedentarismo, ou seja, não conseguimos destinar
    um pouco de nosso tempo para a prática de esportes, para uma simples
    caminhada. Estamos acostumados com o "automaticismo".

    Enfim, a Internet sem dúvidas não deve ser inutilizada simplismente devido
    a alguns problemas que surgem com relação ao seu uso demasiado e ou
    inapropriado. Devemos avaliar o uso e ter consciência nas escolhas as quais
    são postas diante de nós na tela de um computador. Vantagens e
    desvantagens sempre irão surgir. Cabe a nós usar este grande recurso que é
    a Internet com precaução.

    //by douttorx

    Minha vida sem Internet

    A primeira pergunta que surge é: "O que eu estaria fazendo sem Internet?"

    Eu ainda assim estaria cursando Ciência da Computação?

    Lembro que antes de ter acesso à Internet minhas perspectivas eram outras com relação a profissão, futuro. Eu pensava em fazer Engenharia Elétrica. Outros cursos já passaram pela minha cabeça como Engenharia Civil, Engenharia Mecatrônica, Física, Matemática. Enfim, eu iria estar ainda na área de exatas. Mas o computador até então era só uma coisa legal que eu tinha em casa e desenhava no MS Paint e escrevia alguma coisa no Word Pad. Isso foi de 1998 até 2003 quando tínhamos um computador com 16MB de memória RAM e um processador de 100MHz. No final de 2003 compramos um computador e passamos ter acesso à rede mundial de computadores. Minha vida mudou completamente.

    Hoje utilizo a Internet para manter contato com colegas, amigos e parentes de diferentes localidades. Escrever uma carta hoje em dia, para mim é quase uma Mandar carta para mim é quase uma ofensa. Tenho um pouco de preguiça. Escrevi para minha namorada, mas foi mais um aspecto de sedução. Desde 2003 conheci várias pessoas do Brasil. Cheguei a trocar mensagens em fóruns com pessoas do exterior. Sem Internet eu não conheceria estas pessoas. E ainda, não estaria mantendo contato com tantas pessoas (e-mail, mensageiros instantâneos, blog).

    Bom, poderíamos dizer que eu seria um pouco mais, diríamos, ignorante. Sim, hoje tenho tanta facilidade de acesso a informação. Minha página inicial no navegador é o Google. Ligo o computador e já começo pesquisando alguma coisa. Quanta informação navega pelo meu cérebro heim? Porém, de uma certa forma eu seria mais concentrado sem a Internet. Uma vez que eu fico preso às suas maravilhas e de repente me vejo perdido no tempo e sem compreender percebo que não estou fazendo o que deveria, meus estudos, meus livros. Ou seja, sem a conexão à rede mundial de computadores, menos informação trafegaria pelo meu cérebro, mas as que estivessem lá estariam não superficiais, mas bem armazenadas.

    Eu teria uma vida menos agitada e teria mais saúde. Talvez um tempo para caminhar todos os dias. Não estaria lendo e-mails e outras coisas mais.

    Enfim, minha vida sem Internet teria vantagens e desvantagens.

    //by douttorx

    domingo, 2 de novembro de 2008

    Sistema Operacional: Uma Máquina de Níveis?

    Um sistema com hierarquias é considerado uma máquina de níveis. No sistema computacional vamos desde o chip (estrutura física com semicondutores de silício) até os programas aplicativos (instruções de computador que executam tarefas úteis a usuários, seja humano, seja outro computador) passando ainda pelo sistema operacional.

    O SO participa de todos os níveis do sistema computacional, uma vez que ele abstrai o hardware para o usuário, mantendo a integridade e segurança do hardware; outra vez que o SO gerencia recursos de baixo nível (físicos) como memória, E/S; e recursos de alto nível (lógicos) como programas usuário. Em outras palavras, o sistema operacional é considerado uma máquina de níveis porque está presente no processo dos dispositivos físicos, programas, compiladores, editores e aplicativos.

    O conceito de máquina virtual vem da abstração que ocorre quando se liga um sistema computacional à energia elétrica e toma-se gerencia da máquina o SO. Ocorre que ele atua de interface entre o usuário e os dispositivos físicos. Quando ocorre uma interrupção o SO primeiramente valida e então transfere a interrupção para o controlador de interrupções. Voltando a interface entre o usuário e os dispositivos físicos, o termo virtual implica: o que vemos é uma abstração da máquina real, uma simplificação, uma imagem do que é o computador. O SO simula um computador com hardware para o software e o próprio usuário usarem. Estes acessam indiretamente o hardware mantendo o correto funcionamento de todo o sistema.

    //by douttorx

    Eu sou inteligente ^^

    Resultado: 12 pontos

    Você tem um nível de inteligência um pouco acima do normal. Provavelmente já desconfiava disso, mas agora está comprovado. Você está entres os 20% de pessoas com inteligência acima da média. Parabéns, pois falta pouco para se tornar um gênio.

    Teste a Sua Inteligência

    Oferecimento: InterNey.Net

    //by douttorx

    sábado, 1 de novembro de 2008

    Internet - Histórico



    “«A mensagem era simples e profeticamente "Olhai"», diz Leonard Kleinrock, o homem que pôs os computadores a comunicar entre si. Foi do seu laboratório na UCLA - Universidade da Califórnia - que foi enviado a primeira mensagem de correio electrónico para o Instituto de Pesquisa de Stanford, na Califórnia do Norte, há precisamente 35 anos. O primeiro passo daquilo que hoje conhecemos como Internet.”

    Notícia

    Kleinrock instalou, em 1969 o primeiro IMP (interface message processors – processadores de mensagens de interface) na UCLA (Universidade da Califórnia em Los Angeles). Kleinrock foi também um dos pesquisadores que desenvolveram a comutação de pacotes, no início da década de 60. Era, na época doutorando do MIT.

    Dois anos antes, Kleinrock, Roberts e Lawrence começaram o programa de ciência de computadores na ARPA (Advanced Research Projects Agency – Agência de Projetos de Pesquisa Avançada) e criaram a rede ARPAnet, a primeira rede do que seria mais tarde a se tornar na Internet pública de hoje.

    Somente em 1972 a ARPAnet foi publicada na Conferência Internacional sobre Comunicação por Computadores. Ainda neste ano foi escrito o primeiro aplicativo de e-mail. E nesta década começaram a surgir outras redes como Telenet, Cyclades, também isoladas, como a ARPAnet.

    Com o crescimento das redes e o isolamento surgiu a necessidade de criar uma interconexão das redes. O primeiro trabalho foi patrocinado pela DARPA (Defense Advanced Research Projects Agency – Agência de Projetos de Pesquisa Avançada de Defesa) com o nome de internetting. Nesta época começaram a surgir conceitos que seriam usados mais tarde em protocolos como TCP, DNS. Surgiu também a primeira idéia de LANs.

    A principio o interesse em ampliar e interligar as redes era acadêmico. Universidades trocavam mensagens sobre experimentos e pesquisas por meio de redes. E já em 1983 foi adotado o protocolo TCP/IP para as máquinas ARPAnet para substituir o protocolo NCP (network-control protocol – protocolo de controle de rede) utilizado até então.

    No início da década de 1980 o governo francês disponibilizou para todos os lares acesso a rede Minitel com serviços de banco, pesquisa e sites em geral popularizando o que hoje é a Internet.

    A Internet teve um crescimento espantoso na década de 1990 com o surgimento da World Wide Web levando a Internet para milhares de pessoas e empresas. Possibilitou a criação de centenas de aplicativos e negociações de ações e serviços on-line, multimídia e recuperação de informações. E apesar das primeiras noções de redes, interligação de computadores e trocas de mensagens serem descobertas nos EUA, foi na Europa que a Web foi criada entre 1989 e 1991 por Tim Berners-Lee. Foi no CERN (European Center for Nuclear Physics – Centro Europeu para Física Nuclear) que Bernes e outros pesquisadores implementaram os quatro componentes fundamentais para a Web: HTML, HTTP, um servidor para a Web e um navegador.

    Na segunda metade da década de 1990 o crescimento da Internet continuou vertiginoso se destacando os seguintes serviços: e-mail, Web, mensagem instantânea e compartilhamento de arquivos.

    O inicio do século XXI é marcado por novas aplicações multimídia, telefonia por IP, videoconferência e muitos serviços on-line. O mercado financeiro teve um grande impulso com a Internet, surgindo muitas empresas que, mesmo sem espaço físico, eram e são gigantes em ações.

    Ainda há muito por vir em tecnologia no estudo de redes e Internet. Pesquisadores implementando redes de acesso mais rápidas e tecnologias mais acessíveis. Hoje temos wireless (redes sem fio), 3G (Internet móvel de alta velocidade) e pesquisas sendo feitas na tecnologia 4G (Internet móvel a taxas de até 100Mbps) e na Internet via rede elétrica (PLC). Não sabemos ainda nossos limites tecnológicos e nem aonde vamos chegar.

    Referência: link acima e livro de Redes do Kurose.

    //by douttorx

    Autômato Finito Deterministico

    Opa, criei, para a disciplina Linguagens Formais e Autômatos o seguinte AFD (Autômato Finito Determinístico) que reconhece uma cadeia binária e no final nos mostra se o número é par ou ímpar.

    Um autômato é uma máquina de estado
    s que reconhece linguagens.
    É formato por um alfabeto (conjunto de símbolos), estados, função transição, estado inicial e estado final.

    Função transição é a parte mais importa
    nte do autômato, pois é nela que gerenciamos a leitura de símbolos de uma dada cadeia de entrada e mudamos o estado atual do autômato.
    Ou seja, o autômato lê uma cadeia de caracteres e para cada caracter lido estando o autômato em um estado atual então ele muda para outro estado.

    O autômato postado aqui (figura e código fonte abaixo) é bem simples, ele tem três estados, sendo um inícial e três finais (um é final é inicial ao mesmo tempo).
    Vamos entender o funcionamento deste autômato. Veja as setinhas, elas representam as transições. Aquela setinha que vem do espaço representa o inicio do autômato, ou seja, o R é o estado inicial. Nosso alfabeto é formado pelos símbolos 0 e 1 e nossas funções transições possíveis nesse autômato são:

    transição(R,0) = S
    transição(R,1) = T
    transição(S,0) = S
    transição(S,1) = T
    transição(T,0) = S
    transição(T,1) = T


    facilmente percebemos o que significam as transições, sempre que se lê 1 as setinhas (transições) apontam para T, ou seja, é onde simbolizamos nosso número como ímpar, caso contrário, em S temos o número par. O estado R também é final porque o autômato pode processar cadeia vazia, isto é, sem entrada alguma.


    Um breve exemplo do uso deste autômato:
    entramos a cadeia 0010 no autômato finito deterministico.
    As transições serão as seguintes:
    transição(R,0) = S
    transição(S,0) = S
    transição(S,1) = T
    transição(T,0) = S

    e assim nosso autômato termina em S significando que o número é par.



    abaixo conferimos o código fonte na linguagem de programação C++.
    Cole no bloco de notas e salve com o nome afd-par-impar.cpp.
    Para compilar utilize um Terminal (no GNU/Linux) ou o prompt do DOS (no Microsoft Windows) e digite:
    g++ afd-par-impar.cpp -o afd-par-impar
    para executar digite ./afd-par-impar (no GNU/Linux) ou afd-par-impar (no Microsoft Windows).


    /////////////////////////

    //autor: diogo santos ortiz correa
    //arquivo: afd-par-impar.cpp
    //função: um automato finito deterministico
    //que reconhece uma cadeia binária

    //e mostra se é par ou impar
    //conjunto de estados: {R, S, T, E}
    //estado inicial: {R}
    //conjunto de estados finais: {R,S,T}
    //estado de erro: {E} (nem sempre explicito)
    //alfabeto: {0, 1}


    #include
    #include

    using namespace std;

    int main ()
    {
    system("clear || cls");
    string entrada;
    cout<<<"entre>
    getline(cin,entrada);

    int ponteiro = 0;
    char estado = 'R';

    for (ponteiro = 0; entrada[ponteiro]; ponteiro ++)
    {
    cout<<<"transição:>
    switch(estado)
    {
    case 'R':
    {
    switch(entrada[ponteiro])
    {
    case '0':
    estado = 'S';
    break;

    case '1':
    estado = 'T';
    break;

    default:
    estado = 'E';
    break;
    }
    }
    break;

    case 'S':
    {
    switch(entrada[ponteiro])
    {
    case '0':
    estado = 'S';
    break;

    case '1':
    estado = 'T';
    break;

    default:
    estado = 'E';
    break;
    }
    }
    break;

    case 'T':
    {
    switch(entrada[ponteiro])
    {
    case '0':
    estado = 'S';
    break;

    case '1':
    estado = 'T';
    break;

    default:
    estado = 'E';
    break;
    }
    }
    break;

    case 'E':
    break;
    }
    cout<
    }

    cout<<<<"cadeia:>
    if (estado == 'R') cout<<<"cadeia>
    if (estado == 'S') cout<<<"cadeia>
    if (estado == 'T') cout<<<"cadeia>
    if (estado == 'E') cout<<<"cadeia>
    cout<
    }


    //by douttorx

    Técnica e tecnologia e a civilização pré-tecnológica

    Hoje em dia a importancia da tecnificação e da industrialização valorizam mais os cursos destinados a pesquisa científica e tecnológica do que os cursos destinados ao estudo do homem e da sociedade.

    Há quem apóie a tecnologia, quem é cético e quem tenha uma visão pessimista acerca dos avanços tecnológicos. Os pessimistas afirmam sobre nossa contradição acerca da tecnologia, pois enquanto erguemos magníficas construções pessoas morrem de fome em outro lugar próximo. A decisão em qual lado ficar é muito importante e deve ser feita de forma consciente, pois altera não só o ambiente exterior do ser humano, mas também seu interior ferindo sentimentos e valores antigos.

    Na Idade Moderna conhece-se menos sobre nossa própria história do que se conhecia em eras anteriores. Isto pode ser comparado com a Pré-História, quando também não era documentado e não tínhamos conhecimento de nossos povos antigos. Poderíamos viver sem o automóvel e sem a eletricidade, que são objetos da tecnologia, mas não poderíamos viver sem os alimentos, o fogo e a agricultura, que são invenções do homem primitivo. Devemos agradecer aos ancestrais do Paleolítico e do Neolítico, os quais nos deixaram o legado de cruciais invenções como os modos de caçar, o uso do fogo, a construção da linguagem, a agricultura, a roda, a alavanca.

    Teoricamente, técnica é algo que humaniza a natureza, torna a vida do homem mais amena. Técnica é a criatividade do homem paleolítico, neolítico e até moderno. Tecnologia é a abordagem mais recente da criatividade objetiva do homem. Utilizando os conceitos sociológicos de função manifesta e função latente, podemos ver a tecnologia como função latente da técnica. A função manifesta de um empreendimento é pensada antecipadamente e explicitada com clareza, enquanto a função latente acontece sem que percebemos e sem planejamento. Da mesma forma, a função manifesta da técnica é tornar agradável a vida humana. Mas o latente acontece quando a tecnologia cientifica é convertida em interesses econômicos e a criação de necessidades que antes não existiam e não foram planejadas.

    Quando vemos nos jornais e revistas notícias sobre poluição ou problemas ambientais e ecológicos logo lançamos culpa à tecnologia. No entanto, duas modificações justificam as ameaças que sofremos:
    a) Mudança de atitude do ocidental frente à natureza: da realidade natural (homem da Idade Média) para a manipulação objetiva (homem da Idade Moderno).
    b) Subversão da ciência e da técnica pela lógica econômica: desde a Revolução Industrial o homem vem se tornando sinônimo de produção e de dinheiro.

    Estas duas modificações constituem a razão pela qual técnica e tecnologia formam duas tendências distintas da evolução da própria técnica. Todas as inovações tecnológicas devem ser adaptadas a objetivos sociais baseados em considerações ecológicas, ou seja, não se pode usar a tecnologia e esquecer os objetivos humanos de vida. A tecnologia é como um ambiente que envolve e acondiciona o cientista.

    A urbanização é também responsável pelos nossos problemas ambientais. A vida urbana é menos saudável do que a vida rural. As civilizações pré-tecnológicas eram mais personalizadas e diferentes entre si. O mundo das técnicas de hoje em dia esta cada vez mais despersonalizado pela tecnologia. Segundo muitos filósofos, o mundo tecnológico, armado de veículos de comunicação em massa impõem a tecnologia na grande massa que recebem com docilidade e entusiasmo.

    Segundo Bacon Podemos ter ciência ou ter liberdade. Mas devemos optar pela dominação da ciência. Defendia também um governo despótico que atribuísse os caminhos do saber e do progresso. A partir de Galileu a ciência e a técnica nunca puderam se desenvolver separadamente e no Renascimento as técnicas foram denominadas “artes”, pelos gregos. Para Jean-Jacques Rousseau o desenvolvimento científico e tecnológico era uma força desumanizadora. Concordava com a lógica baconiana de que teremos ciência ou liberdade, mas diferente de Bacon opta pela liberdade, já que é um bem maior do homem poder acertar e errar livremente.

    Não que o autor seja contra a tecnologia mas defende a humanização da técnica, umas vez que não há como voltarmos atrás na tecnificação ocidental.

    No período pré-tecnológico percebe-se um melhor desenvolvimento para as crianças quando estão em contato mais ínfimo com a natureza. Mais fácil a elas entender como funciona uma carroça do que um automóvel com seu místico movimento. Mais fácil ainda entender um fogão a lenha do que um fogão a gás com todas as suas tubulações de gás, bicos e botões. Um isqueiro é mais difícil de entender do que um fósforo. Estes objetos da tecnologia trazem um ambiente mágico e mais artificial às crianças. Esta separação do homem à natureza torna aquele mais agressivo e desprezador dos valores vitais.

    Para Friedmann, na “civilização pré-maquinista” a vida urbana não distinguia muito da vida campesina. O lar dos burgueses era alimentado pelos camponeses. Cada casa possuía seus seu curral e seus animais. O transporte era mais rústico. Hoje em dia as cidades estão abarrotadas de grandes construções e há uma distancia horrenda entre cidade e campo.

    O poeta Goethe descreve a vida do ser humano como um conjunto de ritmos. Isso ainda no período pré-tecnológico. Ritmo vital, caracterizado pelo metabolismo e funções vitais do organismo; ritmo pessoal de atividade física, o qual conceitua a capacidade e movimentos físicos de cada um; e ritmo de atividade intelectual que distingue cada ser humano.

    Para a medicina o mundo tecnificado está num ritmo superior ao do ser humano, trazendo por conseqüência problemas à saúde. A biomedicina entende a incrível capacidade de adaptação humana, podendo se adaptar até as condições lastimáveis de vida. Porém, à medida que o homem se adapta a novos ritmos de vida, acontece agressão à qualidade de vida.

    Não esquecemos as melhorias conquistadas com o uso da tecnologia, porém lembrando que a vida na civilização pré-tecnológica teve mais sentido e menos temores.

    Referência bibliográfica: Filosofia da Ciência e da Tecnologia de Regis de Morais.

    //by douttorx

    CSMA/CD

    Um dos principais protocolos da Ethernet é o CSMA/CD.
    Vamos analisar abaixo algumas características deste protocolo:

    CSMA/CD é o protocolo de acesso à camada de enlace com tratamento de colisões em acesso múltiplo.

    Foi desenvolvido nos anos 60 para a Internet Wireless no Hawaii. Hoje em dia é largamente utilizado em redes como a Ethernet.

    Este protocolo usa a técnica de detecção de portadora (dados sendo transportado) e uma função para o controle das colisões.

    As principais características do CSMA/CD são:

    · Capacidade de identificar se está ocorrendo transmissão (analise de níveis de tensão);

    · Suporte vários hosts concorrendo a utilização do meio;

    · Identifica colisões na rede.

    Cada host (computador ou outro dispositivo conectado à rede) tem o algoritmo (CSMA/CD) funcionando independente. Está sempre escutando a rede, mesmo quando está transmitindo. Quando percebe que outro host está transmitindo então aborta a transmissão e gera um sinal de reforço de colisão para que as outras máquinas não comecem a transmitir. O CSMA prove então um algoritmo chamado backoff exponencial o qual faz com que as estações da rede esperem um tempo aleatório para reiniciar a transmissão.

    A idéia é que cada host transmita num intervalo de tempo que outro host não esteja transmitindo. Isso explica uso do tempo aleatório.

    //by douttorx

    Testando

    Um recurso interessante é este de poder fazer postagens no meu blog enviando um e-mail para meu blog.

    --
    _____________________

    Diogo Santos Ortiz Correa.

    segunda-feira, 20 de outubro de 2008

    PPP - Principais Características

    Este é um resumo que fiz para minha disciplina de Redes de Computadores, 6º semestre de Ciência da Computação na Universidade Católica de Goiás:

    O protocolo PPP (do inglês Point-to-Point Protocol – protocolo ponto-a-ponto) é um dos protocolos mais utilizados atualmente devido sua simplicidade. Está na camada de enlace (nível 2) e conecta diretamente dois nós (computadores). Exemplos de protocolo PPP são: linha telefônica discada, enlace SONET/SDH (conexão que utiliza como meio físico a fibra óptica).

    O PPP deve atender os seguintes requisitos:

    · Enquadramento de pacote: o remetente (um computador ou outro dispositivo conectado à rede) encapsula o pacote (dados) e envia pela rede. O destinatário (um computador ou outro dispositivo conectado à rede) é capaz de desencapsular este pacote.
    · Transparência: o protocolo PPP não impõe restrição com relação aos dados que são transportados.
    · Múltiplos protocolos de camada de rede: o PPP oferece suporte a vários protocolos sem problema algum, como por exemplo, TCP e UDP.
    · Múltiplos tipos de enlaces: além de suportar vários protocolos diferentes nas camadas superiores, o PPP também funciona em vários tipos diferentes de camada de enlace.
    · Detecção de erros: um receptor rodando PPP deverá detectar erros de bits no quadro recebido.
    · Vida de conexão: detecta falhas (a nível de enlace) e adverte a camada de rede sobre isso.
    · Negociação do endereço de camada de rede: possui aprendizado de máquina para configurar o protocolo IP.
    · Simplicidade: um dos grandes motivos pelo qual o PPP é largamente utilizado como protocolo ponto a ponto é oferecer tantos serviços e qualidade ao mesmo tempo.
    · Controle de fluxo: através da regulação da velocidade de transmissão e da quantidade de pacotes recebidos é possível controlar o envio de pacotes.
    · Seqüenciamento: não é exigido a numeração de quadros para serem enviados pela rede. Algum protocolo se utiliza desta vantagem. Outros que rodam sobre o PPP necessitam da numeração de pacotes sendo assim atendidos pelo PPP.

    Abaixo vemos o modelo de um quadro de dados utilizando PPP:

    ————————————————————————————————————
    | Flag | Endereço | Controle | Protocolo | Informação | CRC | Flag |
    ————————————————————————————————————

    · Flag delimitador de inicio e fim de quadro. Tamanho do campo: 1byte. Valor fixo: 01111110.
    · Endereço possui 1 byte com o valor fixo 11111111 (não utilizado já que a conexão é ponto-a-ponto).
    · Controle também tem tamanho e valor fixo: 1byte e valor 00000011.
    O motivo pela utilização dos campos de valor fixo é a possibilidade de posterior variação de seus valores.
    · Protocolo é o campo responsável por informar ao receptor qual protocolo está rodando sobre o PPP. Pode ter 1 ou 2 bytes.
    · Informação é um campo de tamanho variável e contém o pacote encapsulado de dados (informação, IP...). Comprimento máximo deste quadro é de 1500bytes.
    · Soma de verificação: utilizado para detectar erros de bits em um pacote transmitido. Usa CRC e contém 2 ou 4bytes.

    Um efeito interessante chamado byte stuffing acontece quando um byte de informação tem o mesmo padrão de bits que um flag, ou seja, 01111110. Se isto não for tratado pode confundir o receptor pensando que é o fim ou o inicio de um novo pacote. Para resolver isto utiliza uma técnica simples chamada byte de escape. Antes de um byte de informação com o mesmo padrão de um flag adiciona um byte com um valor pré-definido para dizer que o próximo byte é um byte de informação e não um byte de flag.

    A tarefa de configurar a primeira conexão de um hospedeiro utilizando o protocolo PPP, bem como manutenção, autenticação e encerramento de conexão é feita pelo protocolo de controle de enlace (LCP - Link Control Protocol). Antes dos dados serem trocados é necessário fazer a sincronização entre o destino e o remetente.

    Quando a conexão de enlace já estiver estabelecida entra em ação o protocolo de controle de rede do PPP (NCP - Network Control Protocol) que configura a camada de rede, já que o PPP roda sob vários protocolos diferentes. Neste momento inclusive acontece a atribuição de IP ao host, geralmente IP dinâmico pelo fato de um provedor não ter controle total de quem quer conectar e quantos usuários irão se conectar. Utilizando IP dinâmico fica mais fácil conectar vários clientes.
    Outro protocolo ponto-a-ponto definido e menos utilizado é o HDLC (High Digital Link Control – Controle de Enlace de Dados de Alto Nível). Dele originou o protocolo PPP. A proposta era criar um protocolo semelhante, inclusive nos campos, a diferença principal entre os dois é que o HDLC é orientado a bits, enquanto o PPP é orientado a bytes. Utilizar um protocolo orientado a caracteres é mais simples e fácil. Por isso a grande utilização do protocolo PPP. Este também pode rodar o protocolo HDLC para conexão entre roteadores, já que o PPP propriamente dito é utilizado para conexões discadas de linha telefônica utilizando modem.


    //by douttorx