sábado, 14 de abril de 2012

Depois de um ano sem postar...

Pouco mais de um ano sem postar neste blog, estou aqui para responder uma mensagem
postada pela Nê e atualizar este blog também. Recebi dela algumas questões, meme dos 11.
Vou respondê-las agora. Contudo, vou ser um pouco mala e vou romper a corrente depois
de responder rs. É um questionário interessante para quem visita o blog poder me conhecer
um pouco mais.

Meme dos 11

Fatos aleatórios sobre mim: 

1. Nasci em São Paulo. Não conheço muitas cidades e nunca saí do Brasil. Quando viajo, normalmente é para Muriaé-MG ou para Praia Grande-SP. Um lugar que conheci em 2010 foi Belo Horizonte-MG. Gostei da cidade e até me interessei em morar lá. Parece uma cidade grande como São Paulo, mas não tão estressante e no horizonte ainda se poder ver o verde da natureza =).

2. Atualmente só estudo. Faço mestrado em Ciência da Computação na USP e pretendo terminar ainda neste ano.

3. Moro com meus pais, mas começo a pensar em quando terminar o mestrado, voltar a trabalhar e alcançar uma certa independência para só depois pensar em fazer Doutorado.

4. Namoro há cerca de 1 ano e 3 meses. Pela primeira vez estou feliz com otimismo diante do relacionamento mesmo depois dos primeiros meses de namoro.

5. Sou apaixonado por cinema, filmes e seriados.

6. Gosto muito de blues e de rock também.

7. Toco violão/guitarra, apesar de ser péssimo para cantar. Não estudei música por muito tempo, por este motivo aprendo as músicas com cifras ou tablaturas. Já tentei aprender a tocar gaita também, mas não deu muito certo.
8. Gosto muito de jogos eletrônicos também. Principalmente das séries Resident Evil e Pro Evolution Soccer (PES). Quando mais jovem, fazia campeonatos de PES aqui em casa com os colegas do colégio, era divertido.

9. Tenho o sonho de desenvolver jogos, mas até hoje o máximo que eu implementei foi um Pong (aquele do Telejogo), mas não detecta as colisões da bolinha (que na verdade é um quadrado) tão bem. Apesar disso, quando acabar o mestrado, quero deixar um tempinho para programar alguns jogos 2D (para PC ou para Android) e distribuir na Internet.

10. Tenho um blog sobre games com a contribuição de alguns gamers do  Orkut que participam da minha comunidade. Visitem o blog! e se ainda tiverem Orkut, a comunidade!

11. Gosto de caminhar e correr, mas faz muito tempo que não faço isso. =\

Perguntas:
1. Três coisas que você não poderia viver sem.
Oxigênio, Água e Comida. Mas se relaxarmos essas condições, não conseguiria viver sem:
Pessoas Queridas por perto, Música e Computador com Internet. Fato é que 3 coisas não são o suficiente.

2. Qual música te dá a sensação que a letra foi feita para você?
Difícil essa pergunta. Lembro de músicas que me identifico com partes, refrão ou coisas assim. Só para não deixar em branco: A Estrada (Cidade Negra).

3. Uma mania sua que não gostaria de ter.
Mania de sedentarismo e mania de tomar muito café achando que será a solução de todos os meus problemas.

4. Um filme que te fez enxergar alguma coisa com outros olhos.
À procura da felicidade: fez eu ver que realmente a felicidade verdadeira
demora para ser conquistada, mas que vale muito a pena buscá-la e nunca
desistir dos nossos sonhos.

5. A paisagem mais linda que você já viu.
Não sou uma pessoa de viajar muito para lugares bonitos, apesar de ter vontade. 
Então fica meio complicado, a natureza como um todo, quando bem cuidada, é sempre
bonita.

6. Em que lugar gostaria de estar neste exato momento.
Não sei onde, mas sei com quem...

7. Uma pessoa que te faz suspirar.
Regina.

8. Qual o livro que está lendo no momento.
Nenhum. Ultimamente só tenho lido artigos do mestrado e estudado um pouco
para concursos públicos.

9. Um objetivo a ser cumprido durante esse ano.
Terminar o mestrado e conseguir um emprego após terminar.

10. Um site que entra com certa frequência e recomenda.
http://www.folha.com.br (é bom se manter informado).

11. Objeto preferido.
Computador.

 Bom, é isso. Até mais!

segunda-feira, 28 de março de 2011

RC100

Imagem retirada de imagensgratis.com.br

Oi pessoal, li uma notícia no Terra ontem que mostrava algumas curiosidades sobre os gols do Rogério Ceni (RC), criei esta postagem para homenagear o goleiro do tricolor e reunir alguns dos gols marcados em goleiros que possuem certa reputação por terem jogado em grandes clubes.

Goleiros conhecidos que foram vítimas do RC

Fábio (Cruzeiro)

Marcos (Palmeiras)

Tiago (Vasco)

Carlos Germano (Santos)

Clemer (Inter)

Sérgio (Palmeiras)

Bosco (Portuguesa)

Castillo (Botafogo)

Danrlei (Grêmio)

Diego Cavallieri (Palmeiras)

Fernando Henrique (Fluminense)

Julio César (Corinthians) que sofreu o centésimo gol de RC (Video 1)

Julio César (Corinthians) que sofreu o centésimo gol de RC (Video 2)

Marcelo (Corinthians)

Roger (Portuguesa)

Velloso (Atlético-MG)

Zetti do (Santos)

Curiosidades:

  • O Corinthians sofreu o centésimo, mas o time que mais foi vítima do RC foi o Palmeiras (que sofreu 7 gols do RC). E o único time que sofreu gol de RC em finais foi o Santos, na época o goleiro do Santos era o Carlos Germano.
  • O goleiro que mais foi vítima do RC foi o Fabio (5 gols sofridos pelo Cruzeiro e 1 pelo Vasco).
  • RC fez gols em outros goleiros que atuaram ou viriam a atuar com ele no SPFC: Zetti, Roger e Bosco.
  • O primeiro gol de RC foi contra o União São João no Campeonato Paulista de 1997, o goleiro se chamava Adnan. Veja o gol.
  • Rogério atualmente é o artilheiro do SPFC em Libertadores da América com 11 gols (somando os gols de todas as participações do SPFC). O vídeo a seguir exibe um desses gols.
Bom, e por hoje é só! Saudações tricolores!

Fontes:
http://www.terra.com.br/esportes/infograficos/gols-de-rogerio-ceni/
http://www.imagensgratis.com.br/foto-rogerio-ceni.html

sábado, 13 de novembro de 2010

Me desafiando...

Oi pessoal, já faz uns meses que não escrevo aqui, mas resolvi voltar. Neste segundo semestre do mestrado estou cursando três disciplinas: Análise de Algoritmos, Sistemas Operacionais e Introdução à Computação Paralela e Distribuída. Acho que por isso está sobrando menos tempo para escrever por aqui. Além disso, tenho gastado parte do meu tempo livre treinando programação com problemas típicos de maratonas de programação. Não que eu tenha interesse em participar destas maratonas, mas gosto de resolver os problemas propostos nelas, sem compromisso, apenas para treinar conceitos que já aprendi.

Há algum tempo já sou cadastrado no UVA e recentemente me cadastrei no SPOJ e no SPOJ_BR, e me animei bastante pois sem ter resolvido tantos problemas já apareci no ranking e aí o ânimo/vício fica como quando jogamos um RPG e ganhamos um nível de experiência. Queremos então evoluir e evoluir a cada vez mais, o que agora vejo como possibilidade nestes desafios. Só que o vício de programar é um vício bom na minha opinião (que sou desta área), diferente dos RPGs e jogos online onde o tempo se esvai e você nem percebe o que aprendeu depois. Ou seja, quem evolui sou eu, e não meu avatar que nem se quer é "real" e posso acabar apagando o mesmo daqui alguns dias/meses/anos (o que confirmaria que joguei meu tempo no lixo).

Desde que comecei a resolver os problemas do SPOJ, sinto que melhorei na concepção de algoritmos e na programação com linguagem C e até um pouquinho com a C++. Utilizei de funções como a qsort da stdlib.h na linguagem C (que antes eu só ouvia falar) e que é uma implementação do algoritmo QuickSort. Para problemas que envolviam números primos, utilizei o Crivo De Eratóstenes, que já tinha visto na graduação mas nunca tinha utilizado em implementações e percebi que sem ele, quando os números são muitos grandes, é Time Limit Exceeded (TLE) com certeza.

No momento estou tentando aumentar o nível de dificuldade dos problemas que estou resolvendo, pois percebo que só assim vou conseguir aprender mais. Os problemas que estou tentando atualmente são basicamente sobre a utilização de grafos, aliás, acabo de resolver este que é relacionado a conexidade em grafos. Resolvi utilizando busca em profundidade.

Gostei de escrever sobre minhas experiências com os desafios de programação, possivelmente minhas próximas postagens serão sobre o mesmo assunto. Para quem se interessa no assunto, existe um livro chamado Programming Challenges, onde os exercícios são problemas do UVA, recomendo também. E nas minhas próximas férias, provavelmente vou gastar alguns dias lendo esse livro.


Bom, por hoje é só, espero que tenham gostado.

Abraços

segunda-feira, 6 de setembro de 2010

O Brasil pode mais



Oi pessoal, o título ficou meio político, mas hoje li uma notícia que me deixou contente e resolvi deixar anotado aqui no blog.

Normalmente, quando abrimos páginas na web sobre notícias aqui no Brasil sempre tem aquelas mesmas informações sobre futebol, corrupção ou escândalos de pessoas famosas. Muitas pessoas que passam a vida se esforçando e superando diversos obstáculos acabam não sendo tão reconhecidas apesar de merecerem.

O que me deixou contente foi ver que um matemático brasileiro, chamado Jacob Palis Júnior (professor do IMPA - Instituto De Matemática Pura e Aplicada), conquistou um prêmio reconhecido internacionalmente chamado Prêmio Balzan que é concedido anualmente para pesquisa científica desenvolvida em determinadas áreas emergentes. A área de pesquisa deste brasileiro é chamada Sistemas Dinâmicos (para quem quiser pesquisar a respeito =)).

Postei esta notícia porque além de ter ficado contente, algo que eu sempre quis ver é um brasileiro conquistando o Prêmio Turing. O Prêmio Turing tem esse nome como homenagem a Alan Turing, que foi um famoso cientista da computação. Esse prêmio é visto como o "Prêmio Nobel da Computação". Ainda não tive a oportunidade de ver um brasileiro ganhando, mas sei que é possível.

A tabela a seguir mostra de onde são os premiados até então e o número de pessoas premiadas na região (de acordo com a Wikipédia):













PaísLaureados
Estados Unidos 38
Reino Unido 5
Israel 3
Canadá 2
Noruega 2
Holanda 1
Suíça 1
Dinamarca 1
Grécia 1
Venezuela 1
China 1


Achei curioso o fato de uma pessoa ter sido premiada na Venezuela.
O nome desse Venezuelano é Manuel Blum, e foi premiado em 1995 por pesquisas em Complexidade Computacional e a aplicação desta para a Criptografia.

Para quem tiver interesse, clique aqui para visitar a página de Manuel Blum que possui inclusive alguns links para artigos e notas de aula do mesmo.

Seguem alguns dos nomes de cientistas da computação que já receberam o prêmio e que são muitas vezes citados em livros. Os nomes dos cientistas aparecem seguidos por alguns de seus feitos:

Ronald L. Rivest, Adi Shamir e Leonard M. Adleman - Se lembra do RSA? Observe os nomes dos autores de "Introduction to Algorithms" também, um deles está nesta lista.

Ivan Sutherland - Alguns algoritmos que resolvem problemas da computação gráfica levam o nome Sutherland.

C. A. R. Hoare - Lembram do Quicksort? E das cláusulas de Hoare?

Donald E. Knuth - Talvez na próxima postagem eu escreva um tutorial bem iniciante (já que é assim que me sinto) sobre LaTeX.

Edsger W. Dijkstra - Algoritmo de Dijkstra para caminhos mínimos em grafos e a utilização de semáforos nos problemas de concorrência.

Richard Hamming - Códigos de Hamming para detecção e correção de erros.

Alan J. Perlis - O primeiro a conquistar um prêmio e que tinha idéias interessantes sobre programação. Uma que eu não me esqueço é a seguinte, "se a sua função recebe dez parâmetros, provavelmente você está esquecendo algum...".

Frances E. Allen - Primeira mulher a conquistar o prêmio Turing.

Ainda existem vários outros de grande importância, mas vou parar por aqui. Por hoje é só.

Referências:

http://g1.globo.com/ciencia-e-saude/noticia/2010/09/matematico-brasileiro-ganha-premio-balzan-de-r-128-milhao.html

http://en.wikipedia.org/wiki/Turing_Award

http://pt.wikipedia.org/wiki/Pr%C3%AAmio_Turing

segunda-feira, 30 de agosto de 2010

Recompilando o núcleo (=Kernel) do Ubuntu 9.04



Se forem tentar replicar o que eu fiz, recomendo que criem também máquinas virtuais e não saiam testando tudo no seu próprio SO. Seguem minhas experiências.

Primeira tentativa:
Criei uma instância da Virtual Box com a seguinte configuração:

Nome: Ubuntu
Sistema Operacional: Linux
Versão: Ubuntu
RAM: 640 MB
Armazenamento de Tamanho Fixo com 4.5 GB

Instalei o Ubuntu 9.04 através do CD. (até aqui tudo bem...)

Utilizei 4.5 GB porque estava com pouco espaço em disco e esta limitação gerou um problema
durante a compilação do núcleo. Houve um erro, e quando verifiquei pela manhã, o espaço em disco
da máquina virtual estava zerado. Achei interessante colocar essa experiência aqui.

Segunda tentativa:

Nome: Ubuntu
Sistema Operacional: Linux
Versão: Ubuntu
RAM: 1 GB
Armazenamento de Tamanho Fixo com 8 GB

Utilizei 8 GB porque estava ainda com pouco espaço em disco e esta limitação gerou um outro problema mas
durante a instalação do núcleo. Não houve erros desta vez, mas o espaço do HD foi zerado novamente.
Mas como precisava de mais espaço para gerenciar as versões do núcleo após algumas modificações, ainda achei
8 GB pouco espaço.

Terceira tentativa:

Nome: Ubuntu
Sistema Operacional: Linux
Versão: Ubuntu
RAM: 1 GB
Armazenamento de Tamanho Fixo com 16 GB

Como eu sou um cara que gosta de potências de 2. Para a terceira tentativa coloquei 16 GB do HD para a Virtual Machine.

Instalei o Ubuntu 9.04 através do CD.

Versão do núcleo: 2.6.28-11

Desta vez não houveram problemas.

Compilação

O processo de compilação do núcleo é um pouco demorado. Inicialmente precisaremos baixar alguns pacotes. Segue uma breve descrição de cada um deles e o comando utilizado para baixar os pacotes.

Utilitário para a construção do núcleo Linux.
> apt-get install kernel-package

Bibliotecas e documentação para desenvolvedores ncurses (biblioteca de desenvolvimento de aplicações em linha de comando com um estilo GUI)
> apt-get install libncurses5-dev

Possibilita um ambiente root falso.
> apt-get install fakeroot

Entra no diretório onde será armazenado o código-fonte baixado.
cd /usr/src

Baixa o código fonte do Linux.
apt-get install linux-source

Descompacta o código-fonte baixado.
tar -xjvf linux-source-2.6.28.tar.bz2

Cria um link simbólico para o diretório descompactado e entra no diretório através do link simbólico.
sudo ln -s linux-source-2.6.28 linux
cd linux

Cria uma cópia do arquivo de configuração que contém informações específicas do hardware utilizado reconhecidas durante o boot.
sudo cp /boot/config-2.6.28-11-generic ./.config

O comando seguinte permite abrir uma tela de configuração de recursos específicos do núcleo. Como não conhecemos muito, não faremos nenhuma alteração nesta tela.
make menuconfig

Ao concluir, será salvo um novo arquivo config.

O comando seguinte realiza uma limpeza antes de iniciar a compilação.
make-kpkg clean

O comando seguinte compila o código. É muito importante incluir o parâmetro
--apend-to-version pois ele quem identificará o seu núcleo nas entradas do arquivo de configuração da GRUB.

fakeroot make-kpkg --initrd --revision=nomedasuaversao --append-to-version=-fms-version núcleo_image núcleo_headers

Depois de compilar, basta instalar a versão customizada do núcleo com os
seguintes comandos:

dpkg -i linux-image...NomeDoPacoteGeradoParaImagem.deb
dpkg -i linux-headers...NomeDoPacoteGeradoParaHeaders.deb

Após a instalação, podemos ver o novo núcleo como entrada no arquivo de configuração da grub. Verifique o arquivo /boot/grub/menu.lst.

Reinicie o sistema da máquina virtual. Pressione 'ESC' na tela do GRUB.
Neste momento, deverá ser exibido o núcleo que foi compilado por você. No meu caso, o que aparece de novo é:

Ubuntu 9.04, núcleo 2.6.28.10-fms-version
Ubuntu 9.04, núcleo 2.6.28.10-fms-version (recovery mode)

Achei interessante deixar também o tempo gasto na última compilação:

Hora inicial: 22:12
Hora final: 02:10

Bom, é isso pessoal.
Espero ter sido claro em todas as etapas.
Se eu aprender mais sobre a configuração em si, postarei aqui. =)

Referências:
http://easylinuxcds.com/blog/?p=3244
https://help.ubuntu.com/9.04/installation-guide/i386/núcleo-baking.html

quinta-feira, 5 de agosto de 2010

Aprendendo a usar o Blender

E ae pessoal.
Prometi que ia escrever mais nas férias, mas só agora consegui algo legal para postar.
Estou em Muriaé-MG e aqui não tenho muito o que fazer.
Estava aprendendo a modelar com Blender e resolvi modelar algumas coisas que tem na cozinha da casa onde estou.
Vou passar então em duas imagens o que fiz:


Armário da cozinha

Cozinha

Tentei integrar os objetos das duas imagens anteriores, mas estou tendo problemas. Se eu conseguir, depois mostro o resultado final por aqui. Mas para quem gosta de modelar em 3D, é bem interessante utilizar o Blender. Principalmente por ser software livre e por não ser tão complicado quanto parece no início.

quinta-feira, 8 de julho de 2010

Férias

Oi pessoal, estive bastante ausente nos últimos meses, mas não desisti da ideia de ter um blog.
O mestrado estava agitado com muitos trabalhos, listas de exercícios, provas e cansaço da minha parte é claro, e tudo isso impediu que eu escrevesse aqui. Mas agora terei uns 20 dias de folga e pretendo escrever um pouco.

O que ficou de interessante para escrever aqui foi o que implementei para a disciplina de Estrutura de Dados: uma versão do algoritmo de Dijkstra onde consegui usar Heap (Fila de Prioridade), e para a disciplina de Computação Gráfica: uma ferramenta de modelagem 3D voltada para crianças chamada KLearning. O K vem de Kids.

O mais interessante de apresentar aqui acredito que seja o KLearning. Por ter imagens mais concretas. Mas talvez eu inclua o algoritmo de Dijkstra no VejoGrafos e mostre o resultado aqui também.

Então vamos ao KLearning.

O KLearning foi desenvolvido por mim e por mais 3 colegas do mestrado. Utilizamos Java e JOGL que é a combinação que utilizei em algumas das postagens anteriores. Como já disse, é uma ferramenta que pode ser útil para crianças/pré-adolescentes, principalmente no estudo de geometria espacial, formas geométricas e claro, diversão. Acreditamos que é uma ferramenta que incentiva a criatividade das crianças. Bom, agora seguem algumas imagens da ferramenta. As imagens são desde as primeiras etapas do desenvolvimento até a versão atual que ainda não é completa e merece alguns ajustes.

Uma cena com uma chaleira e um cubo sobre a mesa.


Uma bandeira do Brasil modelada com 3 Cubos e uma Esfera

Essa foi nossa tentativa de implementar Geometria Sólido Construtiva. A operação que tentei fazer para essa imagem foi Cilindro1 - Cilindro0, onde Cilindro0 era mais fino que o Cilindro1 e branco. O Cilindro1 é o de cor laranja. Mas como podem ver, existem algumas falhas no resultado.


Uma pequena vizinhança.

Dois jogadores treinando.

Como podem ver, a interface variou bastante durante o desenvolvimento. A última imagem é do modelo que foi utilizado para a apresentação do trabalho. Vou tentar disponibilizar um .jar da aplicação e como utilizá-la.

Bom, por hoje é só.

Abraços