Mais um post morrendo de sono :P
Hoje foi a prova coelho... 20 problemas em 2 horas. Meu pessoal chegou uns 20 minutos atrasados (sim, precisamos cuidar mais do horário... coisas como o Circular da USP demorar acontecem.....) e eu demorei mais uns 15 até a máquina virtual com linux rodar aqui (notebook com 1 Gb de RAM é foda...). Consegui passar 9 e acho que conseguiria 15 ou 16 se tivesse o tempo total, não sei se conseguiria fechar os 20.
E o 3G me salvou de novo... estou começando a adorar esse negócio, até agora não me deixou na mão =]
Após isso ficamos la no laboratório, pois é um lugar melhor de se trabalhar, e terminei de escrever o resumo da aula de Algoritmos Aproximativos que fiquei responsável por fazer. Caso alguem queria ver, esta aqui ou aqui (Se encontrarem algum erro ou alguma parte que ficou enrolada/difícil de entender, podem me avisar =).
(Há... acharam que não ia ter mais chuva hoje por aqui... se enganaram!!!)
Quando fomos sair, São Pedro resolveu dar uma trollada sagaz e caiu *aquela* chuva... ae ficamos rodando pela USP no circular e tinha umas partes tensas... rotatórias totalmente alagadas =X
E acho que contrataram uns motoristas de 485 para os ônibus da USP :P
Aqui no albergue rolou uma pizza... 26 reais por 2 pizzas + Dolly (me recuso a chamar Dolly de refrigerante) =D
PS: Não foi dessa vez ainda que tiveram fotos xD
Mostrando postagens com marcador programação. Mostrar todas as postagens
Mostrando postagens com marcador programação. Mostrar todas as postagens
quarta-feira, 6 de janeiro de 2010
segunda-feira, 4 de janeiro de 2010
SP - dia 2 - Chuva e compras
Segundo dia em SP chegando ao fim...
Acordamos - desnecessariamente - cedo pra caramba para ir pro curso... anyway, atrasado não chegamos :P
Tivemos na parte da manhã do curso a prova da final mundial de 2009... e de fato foi vergonhoso (apesar de não ter problema fácil lá) ter conseguido fazer nenhum. =/
Após a parte da manhã do curso, fomos almoçar no Bandejão Central da USP.... pena que encontramos ele fechado -_-' Então apelamos pro bom e velho McDonalds =D
De tarde, mais alguns avisos (esporros por causa do "resultado" do pessoal nessa primeira prova) e escolhemos o nome do meu time.... n00bs com b :P
Na saída, pegamos uma *chuva do caralho*, ficamos todos encharcados... e descobri que minha mochila da Case Logic não é impermeável como disse a mulher que me vendeu, resultado alguns livros (inclusive meu Manber =[ ) molhados embaixo e meu notebook bem húmido... mas nada foi perdido.
30 minutos depois de chegarmos ao albergue, parou de chover -_-'
WTF *mesmo*... Muphy total.
Apesar do albergue ser super simples, o pessoal foi super solícito ao pedirmos uma toalha extra =)
No final da tarde fizemos as compras domês quinzena semana e eu de fato acho que sou como meu pai... não tenho paciência pra supermercado... prefiro ir ja sabendo o que vou comprar, estilo Hit'n'Run :P
No final compramos uma cacetade de miojos (de trocentos sabores) com varios add-ons diferentes, desde queijo ralado, passando por farofa, até catch-up e mostarda :P
Agora estou aqui acabando de comer um super prato de meio miojo de tomate (já que não estou com muita fome e prefiro evitar reações nuclear internas... *cof cof*).
Acordamos - desnecessariamente - cedo pra caramba para ir pro curso... anyway, atrasado não chegamos :P
Tivemos na parte da manhã do curso a prova da final mundial de 2009... e de fato foi vergonhoso (apesar de não ter problema fácil lá) ter conseguido fazer nenhum. =/
Após a parte da manhã do curso, fomos almoçar no Bandejão Central da USP.... pena que encontramos ele fechado -_-' Então apelamos pro bom e velho McDonalds =D
De tarde, mais alguns avisos (esporros por causa do "resultado" do pessoal nessa primeira prova) e escolhemos o nome do meu time.... n00bs com b :P
Na saída, pegamos uma *chuva do caralho*, ficamos todos encharcados... e descobri que minha mochila da Case Logic não é impermeável como disse a mulher que me vendeu, resultado alguns livros (inclusive meu Manber =[ ) molhados embaixo e meu notebook bem húmido... mas nada foi perdido.
30 minutos depois de chegarmos ao albergue, parou de chover -_-'
WTF *mesmo*... Muphy total.
Apesar do albergue ser super simples, o pessoal foi super solícito ao pedirmos uma toalha extra =)
No final da tarde fizemos as compras do
No final compramos uma cacetade de miojos (de trocentos sabores) com varios add-ons diferentes, desde queijo ralado, passando por farofa, até catch-up e mostarda :P
Agora estou aqui acabando de comer um super prato de meio miojo de tomate (já que não estou com muita fome e prefiro evitar reações nuclear internas... *cof cof*).
domingo, 3 de janeiro de 2010
SP - dia 1
Cheguei hoje em SP, junto com minha namorada para o curso de verão na USP de maratona de programação =]
A viagem de ônibus foi tranquila - empresa Expresso do Sul - a única coisa ruim foi que a viagem levou 7 horas por causa de alguns problemas na Dutra e para entrar no terminal Tiête aqui de SP...
(Taísa jogando Bakugan do DS na viagem, toda feliz... xD)
De lá, viemos para o albergue onde vamos ficar... e tenho que dizer, acho que eu não me dou mto bem com albergues :P
Aqui é tudo no estilo Mogli (aka necessário, somente o necessário)... não que isso seja um *grande* problema... mas eu gosto assim só de um pouquinho de conforto... ainda mais quando vou passar quase 1 mês :P
Enquanto o Mascote e Penélope estão na "cobertura", estamos aqui no sub-sub-sub-solo, junto com um pessoal que fala espanhol e eu não entendo *nada* (mas graças a deus a Taísa entende :P) e provavelmente o Mestre Splinter xD
Bem, veremos como vou me sair com isso durante esses 20 e poucos dias :P
Hoje ja demos uma volta aqui pelo bairro e se não fosse meu senso de direção super-aguçado (e claro, uma olhadinha no google maps alguns dias antes), o pessoal ontem iria por uma caminho 4x maior para chegar andando até a USP :P
Então fomos comer uma pizza sagaz, e vai ser o alimento mais caro que a gente vai comer nesses dias por aqui provavelmente hehehe. Além disso compramos um "toddy pronto", para backup do café da manhã que ainda não entendi se vamos ganhar ou não la na USP (espero que sim :P).
Além disso, estou aquigastando utilizando o meu Vivo 3G porque a placa wifi do meu note resolveu fazer greve -_-'
(E no geral to gostando dele, talvez eu faça um post sobre ele quando tiver mais experiência sobre =)
A viagem de ônibus foi tranquila - empresa Expresso do Sul - a única coisa ruim foi que a viagem levou 7 horas por causa de alguns problemas na Dutra e para entrar no terminal Tiête aqui de SP...
(Taísa jogando Bakugan do DS na viagem, toda feliz... xD)
De lá, viemos para o albergue onde vamos ficar... e tenho que dizer, acho que eu não me dou mto bem com albergues :P
Aqui é tudo no estilo Mogli (aka necessário, somente o necessário)... não que isso seja um *grande* problema... mas eu gosto assim só de um pouquinho de conforto... ainda mais quando vou passar quase 1 mês :P
Enquanto o Mascote e Penélope estão na "cobertura", estamos aqui no sub-sub-sub-solo, junto com um pessoal que fala espanhol e eu não entendo *nada* (mas graças a deus a Taísa entende :P) e provavelmente o Mestre Splinter xD
Bem, veremos como vou me sair com isso durante esses 20 e poucos dias :P
Hoje ja demos uma volta aqui pelo bairro e se não fosse meu senso de direção super-aguçado (e claro, uma olhadinha no google maps alguns dias antes), o pessoal ontem iria por uma caminho 4x maior para chegar andando até a USP :P
Então fomos comer uma pizza sagaz, e vai ser o alimento mais caro que a gente vai comer nesses dias por aqui provavelmente hehehe. Além disso compramos um "toddy pronto", para backup do café da manhã que ainda não entendi se vamos ganhar ou não la na USP (espero que sim :P).
Além disso, estou aqui
(E no geral to gostando dele, talvez eu faça um post sobre ele quando tiver mais experiência sobre =)
segunda-feira, 13 de julho de 2009
Migrando repositórios SVN para GIT
Resolvi migrar dois projetos do Google Code, que estão guardados em repositórios SVN para repositórios GIT e armazena-los no GitHub.
Os dois projetos em questão, foram projetos feitos em grupo para a faculdade e que pararam completamente de serem desenvolvidos logo após a entrega (novidade :P), na verdade um deles nem chegou a ser concluído (eu disse para não fazer em Java...).
Como o Google Code limita o número de projetos que você pode ter e estes estão apenas ocupando espaço, resolvi migra-los.
Realmente é muito facil, bastou apenas:
a) Criar um arquivo - que chamei de 'authors' - com as seguintes informacões de todo mundo que já tinha feito commit no svn:
nomedousuario = Nome Completo
Ai ficou algo do tipo:
"bruno.buss = Bruno Caricchio Buss
..."
b) Fazer um: git svn clone --authors-file=authors http://seuprojeto.googlecode.com/svn/trunk.
Molezinha!
Inclusive ja subi os 2 para o GitHub:
LojaSim: https://github.com/brunobuss/lojasim/tree
Piscemu: https://github.com/brunobuss/piscemu/tree
Para quem quiser ver mais informacões de como trabalhar com svn e git juntos, a documentação do git-svn é muito boa:
http://www.kernel.org/pub/software/scm/git/docs/v1.6.0.6/git-svn.html
(Essa documentação não é a da última versão do git, mas da versão que tem no Fedora 10).
PS: Apesar de depois de fazer o primeiro descobrir que o GitHub faz import de repos públicos de svn... fiz na mão mesmo :P
Os dois projetos em questão, foram projetos feitos em grupo para a faculdade e que pararam completamente de serem desenvolvidos logo após a entrega (novidade :P), na verdade um deles nem chegou a ser concluído (eu disse para não fazer em Java...).
Como o Google Code limita o número de projetos que você pode ter e estes estão apenas ocupando espaço, resolvi migra-los.
Realmente é muito facil, bastou apenas:
a) Criar um arquivo - que chamei de 'authors' - com as seguintes informacões de todo mundo que já tinha feito commit no svn:
nomedousuario = Nome Completo
Ai ficou algo do tipo:
"bruno.buss = Bruno Caricchio Buss
..."
b) Fazer um: git svn clone --authors-file=authors http://seuprojeto.googlecode.com/svn/trunk.
Molezinha!
Inclusive ja subi os 2 para o GitHub:
LojaSim: https://github.com/brunobuss/lojasim/tree
Piscemu: https://github.com/brunobuss/piscemu/tree
Para quem quiser ver mais informacões de como trabalhar com svn e git juntos, a documentação do git-svn é muito boa:
http://www.kernel.org/pub/software/scm/git/docs/v1.6.0.6/git-svn.html
(Essa documentação não é a da última versão do git, mas da versão que tem no Fedora 10).
PS: Apesar de depois de fazer o primeiro descobrir que o GitHub faz import de repos públicos de svn... fiz na mão mesmo :P
quarta-feira, 8 de julho de 2009
Tentando ficar online de novo....
Não que eu não tenha estado online... somente sem tempo/disposição para postar nada aqui.
Normalmente eu estava postando apenas no meu twitter, esse negócio de microblogging é legal quando você não tá afim de realmente escrever, como aqui estou agora :P
Esse período na faculdade foi *TENSO*, fica a dica... nunca puxem 8 matérias (31 créditos =X). Sério, foi algo insano (e que ainda não acabou... mas está no finalzinho).
Muitas das matérias também não ajudaram o que acabou me desempolgando sériamente durante o período, mas entre mortos e feridos todos se salvaram.
Mas também tiveram coisas legais que fiz e gostaria de ter postado aqui sobre o desenvolvimento delas e como foram progredindo... mas não deu :P
Enfim, finalmente fiz um projeto em QT. Um não, dois! \o/
(E não fui só eu claro, foi meu grupo =)
Um deles foi um jogo para a disciplina de Inteligência Artificial. Um Othello (aka Reversi) que utiliza o Min-Max como algoritmo para a IA.
Esse projeto utilizou QT basicamente para fazer a GUI.
Vocês podem conferir o grandOthello aqui:
http://code.google.com/p/grandothello/
Outro foi um projeto para a disciplina de Sistemas Operacionais, que fazia uma simulação de uma loja (é, eu também não gostei muito não...). Nesse utilizamos somente a parte do QTCore, para podermos fazer uma aplicação Multi-thread, utilizar memória compartilhada entre threads e semáforos para sincronização e exclusão mútua, tudo rodando em sistemas Win32 e Linux sem nenhuma alteração no código =D
Iríamos fazer uma GUI também, mas acabou que não deu tempo =/
O repositório do projeto está aqui, mas provavelmente como não faremos mais nada com ele, na melhor da hipóteses eu irei passa-lo para o meu GitHub:
http://code.google.com/p/lojasim/
Consegui tirar um incrível 9.5 (perdi 0.5 porque não fiz uma questão :P) na Prova Final de Física 3... e acreditem foi uma façanha para mim, acabei conseguindo passar com 7.4.
Voltei a mexer um pouco com Perl, para começar a brincar com Catalyst... e ele é estranho, pois é complicado e simples ao mesmo tempo.
Anyway... vamos ver se nessas 2/3 semanas de "férias" eu consigo voltar a postar no blog =]
Normalmente eu estava postando apenas no meu twitter, esse negócio de microblogging é legal quando você não tá afim de realmente escrever, como aqui estou agora :P
Esse período na faculdade foi *TENSO*, fica a dica... nunca puxem 8 matérias (31 créditos =X). Sério, foi algo insano (e que ainda não acabou... mas está no finalzinho).
Muitas das matérias também não ajudaram o que acabou me desempolgando sériamente durante o período, mas entre mortos e feridos todos se salvaram.
Mas também tiveram coisas legais que fiz e gostaria de ter postado aqui sobre o desenvolvimento delas e como foram progredindo... mas não deu :P
Enfim, finalmente fiz um projeto em QT. Um não, dois! \o/
(E não fui só eu claro, foi meu grupo =)
Um deles foi um jogo para a disciplina de Inteligência Artificial. Um Othello (aka Reversi) que utiliza o Min-Max como algoritmo para a IA.
Esse projeto utilizou QT basicamente para fazer a GUI.
Vocês podem conferir o grandOthello aqui:
http://code.google.com/p/grandothello/
Outro foi um projeto para a disciplina de Sistemas Operacionais, que fazia uma simulação de uma loja (é, eu também não gostei muito não...). Nesse utilizamos somente a parte do QTCore, para podermos fazer uma aplicação Multi-thread, utilizar memória compartilhada entre threads e semáforos para sincronização e exclusão mútua, tudo rodando em sistemas Win32 e Linux sem nenhuma alteração no código =D
Iríamos fazer uma GUI também, mas acabou que não deu tempo =/
O repositório do projeto está aqui, mas provavelmente como não faremos mais nada com ele, na melhor da hipóteses eu irei passa-lo para o meu GitHub:
http://code.google.com/p/lojasim/
Consegui tirar um incrível 9.5 (perdi 0.5 porque não fiz uma questão :P) na Prova Final de Física 3... e acreditem foi uma façanha para mim, acabei conseguindo passar com 7.4.
Voltei a mexer um pouco com Perl, para começar a brincar com Catalyst... e ele é estranho, pois é complicado e simples ao mesmo tempo.
Anyway... vamos ver se nessas 2/3 semanas de "férias" eu consigo voltar a postar no blog =]
domingo, 28 de dezembro de 2008
É a hora da verdade... e como ficou a minha lista de coisas a fazer em 2008?
É pessoal... faltando 3 dias para o novo ano (ou ano novo :P), resolvi verificar a minha lista de coisas que eu gostaria de ter feito em 2008 e ver o que eu fiz, o que fiz mais ou menos ou o que chutei de vez :P
Para cada coisa eu irei me dar uma pontuação:
+1 => se eu fiz direitinho
0 => se eu fiz mais ou menos
-1 => se nem com muita boa vontade da para salvar :P
Então, here we go:
Vixe... acho que vou começar mal aqui.
Perl: Apesar de ter programado uma coisa ou outra... foi muita coisa no estilo "preciso de algo rápido para resolver um treco". Um dos casos foi quando fiz um programa em Perl para automatizar uns testes de alguns programas que rodaram em paralelo utilizando PVM, MPI e OpenMP.
C/C++: Bem... talvez a parte de C++ tenha sido a menos pior. Acabei estudando um pouquinho mais de C++ por alguns motivos... mas sinceramente, nada que eu considere perto de "estudo" mesmo.
C#: Não escrevi 1 linha de código. Nada...
Asm: O máximo que fiz, foi ler os programas da Taísa :P
Então... neste ponto eu estou me dando um -1.
Subtotal: -1.
Err... vamos lá.
Em 2008-1 se não fosse a maldita Física 3, eu teria conseguido fácil. Mas como consegui na verdade me estrepar de cara nela.. meu CRA acabou indo para 7.6 no primeiro semestre.
Agora em 2008-2 eu não tenho certeza, acho pouco provável. Porém das 7 matérias que fiz (30 créditos, um recorde no meu boletim), somente a nota de 4 entraram. Como espero passar nas outras 3 com uma nota boa também... então acho que este poderá ser o período onde meu CR (do período) voltará a subir :P (Essa coisa de ir caindo 1 décimo a cada período é muito triste)
Então assim que sair as outras 3 notas eu atualizo isso aqui.
De qualquer jeito, estou me dando um 0 aqui... pois acho que não conseguirei chegar no CRA = 8, porque dei muito mole com Física 3... mas também não deixei tudo ir pro buraco, e fui relativamente bem em tudo neste segundo semestre (nem fiz PF de Física 2 e Calculo 3 \o/).
Subtotal: -1.
Essa foi mal formulada :P
Enfim... não foi perfeito, mas não foi um completo desastre.
Percebi que as vezes fica muito complicado você ler tudo que quer quando tem que dividir o tempo com livros de Calculo, Física, apostilas, etc...
Não é impossível, mas requer uma organização melhor, que não tive esse ano.
Mas os livros off-facul que li durante o ano:
Não técnicos:
- Elite da Tropa
- The Art Of Intrusion
- Field Guide to The Apocalypse, Movie Survival Skills for the End of the World
- How to Argue & Win Every Time: At Home, At Work, In Court, Everywhere, Everyday
- Where's My Jetpack?: A Guide to the Amazing Science Fiction Future that Never Arrived
- O Universo Numa Casca de Noz
Técnicos:
- Rootkits: Subverting the Windows Kernel
- Buffer Overflow Attacks: Detect, Exploit, Prevent
- Hacking Exposed: Computer Forensics
Total: 9 livros.
Não foi um espetáculo realmente... mas com muita boa vontade, posso dizer que me esforcei. Então aqui também vou me dar um 0, neutro.
Subtotal: -1.
Ok... esse foi triste e nem vale comentários.
Merecia até um -2... anyway...
Subtotal: -2.
Há! Finalmente algo que eu consegui fazer!
Começou no Workshop I, teve continuidade com as apresentações na semana da Jornada de Iniciação Científica e que finalizaram com o Workshop II.
Todas as apresentações podem ser obtidas aqui:
http://www.gris.dcc.ufrj.br/apresentacoes.php
Aqui eu acho que posso me dar um +1 \o/
Subtotal: -1.
Sacanagem... quando eu ja tava ficando feliz.
Outra negação... -1.
Subtotal: -2.
Esse foi aos 35 do segundo tempo, as foi!
No início de janeiro, resolvi tomar vergonha na cara... e aceitei a um "chamado" por voluntários ao KernelTeam do Gentoo. Apesar disso, acabei me desviando bastante para o SecurityTeam :P
Pretendo continuar contribuindo com o SecurityTeam, mas voltar a ajudar o KernelTeam =]
Hoje, minha conta no Bugzilla, contem 14 bugs reportados (13 de segurança) =]
Acho que aqui... posso me dar um +1 também. Afinal, antes tarde do que nunca... e o negócio é continuar sempre para quem sabe, conseguir me tornar um Gentoo Developer!
Subtotal: -1.
Este e o de cima foram meus maiores orgulhos :P
Meu time DCC-Drunk C Coders, junto com o Felipe (Mascote) e o Leonardo Inácio... eu realmente não esperava formar time com eles. Afinal eles tinham feito TEP e sabiam um monte de macetes/dicas... mas que foram me passando tudo durante toda esse periodo de seletiva e na maratona mesmo.
Bem, nosso time foi para a fase carioca e acabou ficando na quinta colocação.
Mesmo com 5 vagas para o RJ, infelizmente, não fomos por causa do limite de 2 times por universidade, onde a UFRJ também ficou com o terceiro e quarto lugar da fase carioca.
A fase do RJ é uma das mais fortes e disputadas, junto com a de São Paulo emho.
Times bons da PUC, UERJ e IME disputam e foi bem legal colocarmos 3 times no Top5 da fase carioca =]
De qualquer modo, é apenas mais um incentivo a este ano de 2009, para treinarmos e irmos a fase brasileira... quem sabe mundial?!
É isso... Drunk C Coders estará de volta... e com 2 garrafas de vodka e 1 de amigo zé! :P
Então... resumindo tudo, acho que posso me dar +1 aqui =]
Score final: 0.
Este foi o diff entre meus planos para 2008 e o que realmente eu fiz.
Agora esta na hora de começar a pensar nos meus objetivos para 2009. Vamos ver... e que em 2009 eu consiga um score positivo =]
Para cada coisa eu irei me dar uma pontuação:
+1 => se eu fiz direitinho
0 => se eu fiz mais ou menos
-1 => se nem com muita boa vontade da para salvar :P
Então, here we go:
1 - Estudar (aprender ou me aprofundar em) as seguintes linguagens de programação: Perl, C/C++, C# e Assembly. De todas as existentes, quero dar mais ênfase nestas 4 este ano.
Vixe... acho que vou começar mal aqui.
Perl: Apesar de ter programado uma coisa ou outra... foi muita coisa no estilo "preciso de algo rápido para resolver um treco". Um dos casos foi quando fiz um programa em Perl para automatizar uns testes de alguns programas que rodaram em paralelo utilizando PVM, MPI e OpenMP.
C/C++: Bem... talvez a parte de C++ tenha sido a menos pior. Acabei estudando um pouquinho mais de C++ por alguns motivos... mas sinceramente, nada que eu considere perto de "estudo" mesmo.
C#: Não escrevi 1 linha de código. Nada...
Asm: O máximo que fiz, foi ler os programas da Taísa :P
Então... neste ponto eu estou me dando um -1.
Subtotal: -1.
2 - Elevar meu CRA na faculdade para > 8. Sim, não está dos piores, 7.7. Mas quero subir ele para acima de 8.
Err... vamos lá.
Em 2008-1 se não fosse a maldita Física 3, eu teria conseguido fácil. Mas como consegui na verdade me estrepar de cara nela.. meu CRA acabou indo para 7.6 no primeiro semestre.
Agora em 2008-2 eu não tenho certeza, acho pouco provável. Porém das 7 matérias que fiz (30 créditos, um recorde no meu boletim), somente a nota de 4 entraram. Como espero passar nas outras 3 com uma nota boa também... então acho que este poderá ser o período onde meu CR (do período) voltará a subir :P (Essa coisa de ir caindo 1 décimo a cada período é muito triste)
Então assim que sair as outras 3 notas eu atualizo isso aqui.
De qualquer jeito, estou me dando um 0 aqui... pois acho que não conseguirei chegar no CRA = 8, porque dei muito mole com Física 3... mas também não deixei tudo ir pro buraco, e fui relativamente bem em tudo neste segundo semestre (nem fiz PF de Física 2 e Calculo 3 \o/).
Subtotal: -1.
3 - Ler pelo menos 1 livro técnico por mês. Mais os que eu tenho e não li por inteiro até hoje.
Essa foi mal formulada :P
Enfim... não foi perfeito, mas não foi um completo desastre.
Percebi que as vezes fica muito complicado você ler tudo que quer quando tem que dividir o tempo com livros de Calculo, Física, apostilas, etc...
Não é impossível, mas requer uma organização melhor, que não tive esse ano.
Mas os livros off-facul que li durante o ano:
Não técnicos:
- Elite da Tropa
- The Art Of Intrusion
- Field Guide to The Apocalypse, Movie Survival Skills for the End of the World
- How to Argue & Win Every Time: At Home, At Work, In Court, Everywhere, Everyday
- Where's My Jetpack?: A Guide to the Amazing Science Fiction Future that Never Arrived
- O Universo Numa Casca de Noz
Técnicos:
- Rootkits: Subverting the Windows Kernel
- Buffer Overflow Attacks: Detect, Exploit, Prevent
- Hacking Exposed: Computer Forensics
Total: 9 livros.
Não foi um espetáculo realmente... mas com muita boa vontade, posso dizer que me esforcei. Então aqui também vou me dar um 0, neutro.
Subtotal: -1.
4 - Publicar pelo menos 4 artigos/how-to/tutoriais, documentos, pelo GRIS.
Ok... esse foi triste e nem vale comentários.
Merecia até um -2... anyway...
Subtotal: -2.
5 - Fazer com que o GRIS apresente trabalhos/pesquisas próprios em pelo menos 2 eventos.
Há! Finalmente algo que eu consegui fazer!
Começou no Workshop I, teve continuidade com as apresentações na semana da Jornada de Iniciação Científica e que finalizaram com o Workshop II.
Todas as apresentações podem ser obtidas aqui:
http://www.gris.dcc.ufrj.br/apresentacoes.php
Aqui eu acho que posso me dar um +1 \o/
Subtotal: -1.
6 - Bombar no desenvolvimento do Labrador =]
Sacanagem... quando eu ja tava ficando feliz.
Outra negação... -1.
Subtotal: -2.
7 - Contribuir com pelo menos 1 destes projetos, nem que seja com patch, bug-reports, etc...: KDE, Amarok, Linux(Kernel), Gentoo/Sabayon, Fedora, Kubuntu.
Esse foi aos 35 do segundo tempo, as foi!
No início de janeiro, resolvi tomar vergonha na cara... e aceitei a um "chamado" por voluntários ao KernelTeam do Gentoo. Apesar disso, acabei me desviando bastante para o SecurityTeam :P
Pretendo continuar contribuindo com o SecurityTeam, mas voltar a ajudar o KernelTeam =]
Hoje, minha conta no Bugzilla, contem 14 bugs reportados (13 de segurança) =]
Acho que aqui... posso me dar um +1 também. Afinal, antes tarde do que nunca... e o negócio é continuar sempre para quem sabe, conseguir me tornar um Gentoo Developer!
Subtotal: -1.
8 - Participar do torneio interno de programação da UFRJ. Montar um time, participar da seletiva da UFRJ e quem sabe da etapa do RJ.
Este e o de cima foram meus maiores orgulhos :P
Meu time DCC-Drunk C Coders, junto com o Felipe (Mascote) e o Leonardo Inácio... eu realmente não esperava formar time com eles. Afinal eles tinham feito TEP e sabiam um monte de macetes/dicas... mas que foram me passando tudo durante toda esse periodo de seletiva e na maratona mesmo.
Bem, nosso time foi para a fase carioca e acabou ficando na quinta colocação.
Mesmo com 5 vagas para o RJ, infelizmente, não fomos por causa do limite de 2 times por universidade, onde a UFRJ também ficou com o terceiro e quarto lugar da fase carioca.
A fase do RJ é uma das mais fortes e disputadas, junto com a de São Paulo emho.
Times bons da PUC, UERJ e IME disputam e foi bem legal colocarmos 3 times no Top5 da fase carioca =]
De qualquer modo, é apenas mais um incentivo a este ano de 2009, para treinarmos e irmos a fase brasileira... quem sabe mundial?!
É isso... Drunk C Coders estará de volta... e com 2 garrafas de vodka e 1 de amigo zé! :P
Então... resumindo tudo, acho que posso me dar +1 aqui =]
Score final: 0.
Este foi o diff entre meus planos para 2008 e o que realmente eu fiz.
Agora esta na hora de começar a pensar nos meus objetivos para 2009. Vamos ver... e que em 2009 eu consiga um score positivo =]
Marcadores:
ciência da computação,
gentoo,
GRIS,
linux,
perl,
programação,
segurança da informação,
ufrj
quinta-feira, 4 de dezembro de 2008
Calendários do Advento Natalino
Perl-Mode-On ;)
Muito legal essa idéia e tem *muitas* dicas boas!
Aqui vai o e-mail original enviado pelo Breno para a lista RioPM:
"O calendário Perl do advento natalino é uma tradição na comunidade
desde o ano 2000. A idéia é apresentar um módulo bacana (para qualquer
definição de "bacana") do CPAN em cada dia de dezembro que antecede o
Natal.
O desse ano já está no ar!
http://perladvent.pm.org/2008/
O dia 1 fala do ToolSet, um módulo que agrega todos os seus módulos
mais usados em um único import, evitando assim o "ctrl-c/ctrl-v".
Dia 2 fala de um módulo que eu particularmente acho o maior barato, o
Math::Prime::TiedArray, que cria um array virtual com todos os números
primos.Todos?! Todos. Afinal, é um array virtual, ele computa o número
primo que ocupa a posição desejada conforme a demanda ;-)
Fiquem atentos ao site oficial do calendário! Quem tiver curiosidade é
só olhar o histórico para os outros anos, e se vc acha que seu [insira
módulo xodó aqui] está sendo injustiçado por não ter sido apresentado
até hoje, escreva para eles! O pessoal do calendário está sempre atrás
de idéias (e escritores!!!!!)
Finalmente, mas não menos importante, já saiu também o calendário
Catalyst do advento natalino, que desde 2005 complementa o calendário
do Perl com dicas e módulos específicos para o Catalyst!
http://www.catalystframework.org/calendar/2008/
O dia 1 apresenta as estatísticas da pesquisa de Catalyst (que
circulou inclusive pela lista, infelizmente apenas 2 brasileiros
responderam).
Dia 2 mostra as diferentes formas de se implantar o Catalyst em
servidores Web (servidor built-in, mod_perl, fastcgi, etc)
O dia 3 apresenta um módulo bonitão que já mencionei por aqui, o
Chart::Clicker, e como usá-lo junto com o Catalyst para exibir páginas
com gráficos informativos.
Como sempre, é possível ver calendários de anos anteriores, e eles
também adoram voluntários!
[]s, e boas festas ;-)
-b"
Muito legal essa idéia e tem *muitas* dicas boas!
Aqui vai o e-mail original enviado pelo Breno para a lista RioPM:
"O calendário Perl do advento natalino é uma tradição na comunidade
desde o ano 2000. A idéia é apresentar um módulo bacana (para qualquer
definição de "bacana") do CPAN em cada dia de dezembro que antecede o
Natal.
O desse ano já está no ar!
http://perladvent.pm.org/2008/
O dia 1 fala do ToolSet, um módulo que agrega todos os seus módulos
mais usados em um único import, evitando assim o "ctrl-c/ctrl-v".
Dia 2 fala de um módulo que eu particularmente acho o maior barato, o
Math::Prime::TiedArray, que cria um array virtual com todos os números
primos.Todos?! Todos. Afinal, é um array virtual, ele computa o número
primo que ocupa a posição desejada conforme a demanda ;-)
Fiquem atentos ao site oficial do calendário! Quem tiver curiosidade é
só olhar o histórico para os outros anos, e se vc acha que seu [insira
módulo xodó aqui] está sendo injustiçado por não ter sido apresentado
até hoje, escreva para eles! O pessoal do calendário está sempre atrás
de idéias (e escritores!!!!!)
Finalmente, mas não menos importante, já saiu também o calendário
Catalyst do advento natalino, que desde 2005 complementa o calendário
do Perl com dicas e módulos específicos para o Catalyst!
http://www.catalystframework.org/calendar/2008/
O dia 1 apresenta as estatísticas da pesquisa de Catalyst (que
circulou inclusive pela lista, infelizmente apenas 2 brasileiros
responderam).
Dia 2 mostra as diferentes formas de se implantar o Catalyst em
servidores Web (servidor built-in, mod_perl, fastcgi, etc)
O dia 3 apresenta um módulo bonitão que já mencionei por aqui, o
Chart::Clicker, e como usá-lo junto com o Catalyst para exibir páginas
com gráficos informativos.
Como sempre, é possível ver calendários de anos anteriores, e eles
também adoram voluntários!
[]s, e boas festas ;-)
-b"
domingo, 30 de novembro de 2008
GCC -Wpadded e alinhamento de dados em uma struct
Estou lendo a documentação do GCC (sim... só por esporte) sobre as opções de warning e entre umas e outras que quero testar (mas tenho que antes ler sobre as outras flags). Então agora vou falar sobre a -Wpadded.
Basicamente, ela diz ao GCC para imprimir warnings quando for necessário fazer padding para ajustar o alinhamento de alguma struct.
(Para dúvidas do que seria o alinhamento na memória: http://en.wikipedia.org/wiki/Data_structure_alignment)
Por exemplo:
Quando compilo com -Wpadded, ele avisa:
$ gcc -o struct_align.o struct_align.c -Wpadded
struct_align.c:4: warning: padding struct to align ‘res’
struct_align.c:6: warning: padding struct size to alignment boundary
Ou seja... ele teve que fazer um padding (basicamente, encher com 0 ou porcarias que não serão utilizadas) a região entre bchar[2] e res, para poder deixar res alinhado.
E novamente, teve que fazer um padding no final, para deixar a struct toda (o final dela) alinhada.
Para comprovar isto, vamos ver que através do sizeof() vamos pegar o tamanho dos dados:
Epa!
A struct era para ter 1 int, 2 vetores de 2 chars cada e 1 double.
Logo o total deveria ser 1x4 + 2x2x1 + 1x8 = 16 bytes.
Mas por que essa joça ficou ocupando 20 bytes? Exatamente por causa do padding.
Vamos criar um mapa de como a struct deveria ficar na memória, se não houvesse o padding:
(Vamos supor que nossa memória começa no 0x0000)
0x0000 - tam
0x0004 - bchar[0]
0x0005 - bchar[1]
0x0006 - res
0x000E - bcode[0]
0x000F - bcode[1]
Ou seja, num diagrama ficaria algo assim:
Eu tentei fazer o diagrama de modo a simplificar, com cada linha contendo 4 bytes, ou seja 32 bits... o tamanho de uma palavra de dados de um processador de 32 bits (ou um de 64 operando em modo de 32 ;).
Mas como dito antes (veja o link para a wikipedia mais acima), os dados devem estar alinhados na struct, de acordo com o maior (que ocupa mais espaço) tipo de dados utilizado na struct, então o GCC insere um padding, logo ficamos assim:
0x0000 - tam
0x0004 - bchar[0]
0x0005 - bchar[1]
0x0008 - res
0x0010 - bcode[0]
0x0011 - bcode[1]
E assim no diagrama:
Até aqui temos 18 bytes utilizados (16 que queremos e 2 de padding).
Então, o GCC preenche os 2 bytes finais também (ver OBS1 no final):
Logo, temos uma estrutura que utiliza 20 bytes, quando realmente desejamos utilizar 16... isso é um overhead de 25%!
Para corrigir este tipo de problema é simples, vamos agrupar os dados que estão quebrando o alinhamento, ou seja, nesse caso vamos deixar os dois vetores de char juntos:
Poderíamos também ter movido o bcode[] para antes do res... os dois modos irão arrumar o alinhamento da struct e com isso ela passará a ocupar os 16 bytes que desejávamos. Porém eu pessoalmente acho melhor colocar todos os char[] no final, pois se desejarmos alterar o tamanho de algum deles, não teremos que nos preocupar em reorganizar tudo.
Bem... espero que tenham gostado... e pensar que escrevi isso tudo, pois só queria comentar sobre a opção -Wpadded que não é ativada pelo -Wall nem pelo -Wextra :P
Para quem quiser, estou disponibilizando um fonte (struct_align.c) aqui:
http://www.dcc.ufrj.br/~brunobuss/code/struct_align.c
Todas os testes foram feitos com a seguinte versão do GCC:
$ gcc --version
gcc (Ubuntu 4.3.2-1ubuntu11) 4.3.2
OBS1:
Naquele caso, o gcc preencheu o final da struct, pois na mesma tínhamos dados que eram alinhados em 4 bytes (ou múltiplos de 4 bytes), em um caso de uma struct do tipo:
O GCC não irá incluir nenhum padding, pois não será necessário alinhar a estrutura. Logo esta struct irá ocupar 9 bytes como esperado.
Porem, caso tenhamos:
O GCC irá fazer padding no final da struct para alinha-la com o short, ou seja... caso o tamanho de b, não seja múltiplo de 2 (short == 2 bytes), então o GCC irá colocar um byte a mais para o alinhamento.
Basicamente, ela diz ao GCC para imprimir warnings quando for necessário fazer padding para ajustar o alinhamento de alguma struct.
(Para dúvidas do que seria o alinhamento na memória: http://en.wikipedia.org/wiki/Data_structure_alignment)
Por exemplo:
typedef struct _mystruct{
int tam;
char bchar[2];
double res;
char bcode[2];
} mystruct;Quando compilo com -Wpadded, ele avisa:
$ gcc -o struct_align.o struct_align.c -Wpadded
struct_align.c:4: warning: padding struct to align ‘res’
struct_align.c:6: warning: padding struct size to alignment boundary
Ou seja... ele teve que fazer um padding (basicamente, encher com 0 ou porcarias que não serão utilizadas) a região entre bchar[2] e res, para poder deixar res alinhado.
E novamente, teve que fazer um padding no final, para deixar a struct toda (o final dela) alinhada.
Para comprovar isto, vamos ver que através do sizeof() vamos pegar o tamanho dos dados:
Sizes:
-int = 4
-char = 1
-double = 8
-mystruct = 20
Epa!
A struct era para ter 1 int, 2 vetores de 2 chars cada e 1 double.
Logo o total deveria ser 1x4 + 2x2x1 + 1x8 = 16 bytes.
Mas por que essa joça ficou ocupando 20 bytes? Exatamente por causa do padding.
Vamos criar um mapa de como a struct deveria ficar na memória, se não houvesse o padding:
(Vamos supor que nossa memória começa no 0x0000)
0x0000 - tam
0x0004 - bchar[0]
0x0005 - bchar[1]
0x0006 - res
0x000E - bcode[0]
0x000F - bcode[1]
Ou seja, num diagrama ficaria algo assim:
|----------------------------------------------------|
| END | BYTE0 | BYTE1 | BYTE2 | BYTE3 |
|----------------------------------------------------|
| 0x0000 | tam | tam | tam | tam |
|----------------------------------------------------|
| 0x0004 | bchar[0] | bchar[1] | res | res |
|----------------------------------------------------|
| 0x0008 | res | res | res | res |
|----------------------------------------------------|
| 0x000C | res | res | bcode[0] | bcode[1] |
|----------------------------------------------------|
| 0x0010 | ........................................ |
|----------------------------------------------------|
Eu tentei fazer o diagrama de modo a simplificar, com cada linha contendo 4 bytes, ou seja 32 bits... o tamanho de uma palavra de dados de um processador de 32 bits (ou um de 64 operando em modo de 32 ;).
Mas como dito antes (veja o link para a wikipedia mais acima), os dados devem estar alinhados na struct, de acordo com o maior (que ocupa mais espaço) tipo de dados utilizado na struct, então o GCC insere um padding, logo ficamos assim:
0x0000 - tam
0x0004 - bchar[0]
0x0005 - bchar[1]
0x0008 - res
0x0010 - bcode[0]
0x0011 - bcode[1]
E assim no diagrama:
|----------------------------------------------------|
| END | BYTE0 | BYTE1 | BYTE2 | BYTE3 |
|----------------------------------------------------|
| 0x0000 | tam | tam | tam | tam |
|----------------------------------------------------|
| 0x0004 | bchar[0] | bchar[1] | PAD | PAD |
|----------------------------------------------------|
| 0x0008 | res | res | res | res |
|----------------------------------------------------|
| 0x000C | res | res | res | res |
|----------------------------------------------------|
| 0x0010 | bcode[0] | bcode[1] | ............... |
|----------------------------------------------------|
Até aqui temos 18 bytes utilizados (16 que queremos e 2 de padding).
Então, o GCC preenche os 2 bytes finais também (ver OBS1 no final):
|----------------------------------------------------|
| END | BYTE0 | BYTE1 | BYTE2 | BYTE3 |
|----------------------------------------------------|
| 0x0000 | tam | tam | tam | tam |
|----------------------------------------------------|
| 0x0004 | bchar[0] | bchar[1] | PAD | PAD |
|----------------------------------------------------|
| 0x0008 | res | res | res | res |
|----------------------------------------------------|
| 0x000C | res | res | res | res |
|----------------------------------------------------|
| 0x0010 | bcode[0] | bcode[1] | PAD | PAD |
|----------------------------------------------------|
| 0x0014 | ....................................... |
|----------------------------------------------------|
Logo, temos uma estrutura que utiliza 20 bytes, quando realmente desejamos utilizar 16... isso é um overhead de 25%!
Para corrigir este tipo de problema é simples, vamos agrupar os dados que estão quebrando o alinhamento, ou seja, nesse caso vamos deixar os dois vetores de char juntos:
typedef struct _mystruct_fixed{
int tam;
double res;
char bchar[2];
char bcode[2];
} mystruct_fixed;
Poderíamos também ter movido o bcode[] para antes do res... os dois modos irão arrumar o alinhamento da struct e com isso ela passará a ocupar os 16 bytes que desejávamos. Porém eu pessoalmente acho melhor colocar todos os char[] no final, pois se desejarmos alterar o tamanho de algum deles, não teremos que nos preocupar em reorganizar tudo.
Bem... espero que tenham gostado... e pensar que escrevi isso tudo, pois só queria comentar sobre a opção -Wpadded que não é ativada pelo -Wall nem pelo -Wextra :P
Para quem quiser, estou disponibilizando um fonte (struct_align.c) aqui:
http://www.dcc.ufrj.br/~brunobuss/code/struct_align.c
Todas os testes foram feitos com a seguinte versão do GCC:
$ gcc --version
gcc (Ubuntu 4.3.2-1ubuntu11) 4.3.2
OBS1:
Naquele caso, o gcc preencheu o final da struct, pois na mesma tínhamos dados que eram alinhados em 4 bytes (ou múltiplos de 4 bytes), em um caso de uma struct do tipo:
typedef struct _mycharstruct{
char bchar[5];
char bcode[4];
} mycharstruct;
O GCC não irá incluir nenhum padding, pois não será necessário alinhar a estrutura. Logo esta struct irá ocupar 9 bytes como esperado.
Porem, caso tenhamos:
typedef struct _myshortcharstruct{
short a;
char b[1];
} myshortcharstruct;
O GCC irá fazer padding no final da struct para alinha-la com o short, ou seja... caso o tamanho de b, não seja múltiplo de 2 (short == 2 bytes), então o GCC irá colocar um byte a mais para o alinhamento.
sábado, 22 de novembro de 2008
WinHEC 2008 e novidades no Windows 7
Estava lendo coisas aleatórias na wikipedia, quando comecei a ler um artigo sobre as novidades do Windows 7, que deverá ser lançado no meio de 2009.
Realmente, hoje utilizo linux a maior parte do tempo em que faço algo útil... apenas indo para o Windows na hora de jogar (e não.. não fica bom no wine, ou no cedega ou no que for). Mas mesmo assim, eu adoro ler sobre os novos recursos dele.
Enfim... clica aqui, clica alí... fui parar no site do WinHEC 2008: Windows Hardware Engineering Conference.
E comecei a ver algumas apresentações e aqui estão algumas das que eu achei mais legais (não se preocupem... OpenOffice abre .pptx... meio capado, mas basta usar sua imaginação aonde ele não conseguir renderizar da forma correta):
The Manycore Shift: Microsoft Makes Parallel Computing Personal [WinHEC 2008; 3.9 MB]:
Fala sobre o suporte a programação paralela no Visual Studio 2010.
UEFI Momentum - the AMD Perspective [WinHEC 2008; 1.2 MB]:
Eu nem sabia que existia esse raio de UEFI.
Direct3D 11: New GPU Compute Shader [WinHEC 2008; 6.2 MB].
DirectX11: New Hardware and APIs [WinHEC 2008; 4.3 MB]:
As novidades do DirectX 11 ;)
Infelizmente, algumas apresentações eu não consegui abrir pois travaram o OpenOffice...
Making Technology and Products Matter for Developers [WinHEC 2008; 12.1 MB]
DirectX: Core Graphics for Windows 7 [WinHEC 2008; 6.8 MB]
Realmente, hoje utilizo linux a maior parte do tempo em que faço algo útil... apenas indo para o Windows na hora de jogar (e não.. não fica bom no wine, ou no cedega ou no que for). Mas mesmo assim, eu adoro ler sobre os novos recursos dele.
Enfim... clica aqui, clica alí... fui parar no site do WinHEC 2008: Windows Hardware Engineering Conference.
E comecei a ver algumas apresentações e aqui estão algumas das que eu achei mais legais (não se preocupem... OpenOffice abre .pptx... meio capado, mas basta usar sua imaginação aonde ele não conseguir renderizar da forma correta):
The Manycore Shift: Microsoft Makes Parallel Computing Personal [WinHEC 2008; 3.9 MB]:
Fala sobre o suporte a programação paralela no Visual Studio 2010.
UEFI Momentum - the AMD Perspective [WinHEC 2008; 1.2 MB]:
Eu nem sabia que existia esse raio de UEFI.
Direct3D 11: New GPU Compute Shader [WinHEC 2008; 6.2 MB].
DirectX11: New Hardware and APIs [WinHEC 2008; 4.3 MB]:
As novidades do DirectX 11 ;)
Infelizmente, algumas apresentações eu não consegui abrir pois travaram o OpenOffice...
Making Technology and Products Matter for Developers [WinHEC 2008; 12.1 MB]
DirectX: Core Graphics for Windows 7 [WinHEC 2008; 6.8 MB]
domingo, 14 de setembro de 2008
Rootkits: Subverting the Windows Kernel

Este final de semana, terminei de ler este livro. É estranho pensar que tenho este livro a tanto tempo, mas somente mês passado, peguei ele para ler mesmo (antes eu só dava uma espiada no que me interessava e colocava-o de lado novamente).
O livro Rootkits: Subverting the Windows Kernel da Addison-Wesley, como vocês podem imaginar trata sobre Rootkits... em ambiente Windows! (Eu sei, é muita surpresa.).
Um pequeno resumo sobre os 10 capítulos do livro:
1 - Leave No Trace:
Um capítulo com bem cara de introdução mesmo, formando uma história dos rootkits, como surgiram e para o que surgiram. Como são utilizados, e quais métodos um rootkit usa. Explica também o que um rootkit deve fazer e o que ele não deve fazer.
Sempre dando ênfase na parte do "Stealth" (ou sub-reptício), onde um rootkit deve ser acima de tudo indetectável.
2 - Subverting the Kernel:
Uma introdução a programação de drivers, que é como os rootkits são programados. Instalando as bibliotecas de desenvolvimento... preparando o sistema... e fazendo um HelloWorldDriver. Como fazer registros (no Log do windows) para Debug, modos de carregar o seu driver (rootkit) e uma breve amostragem de integração de User-space com Kernel-space. No final, como fazer seu rootkit sobreviver a um reboot da máquina.
3 - The Hardware Connection:
Neste capítulo é demonstrado como um SO trabalha. Explicando conceitos como Rings (para controle de acesso), as diversas tabelas como GDT, LDT, IDT, SSDT e Page Directory, como funcionam as Páginas de Memória, tradução de um endereço virtual para um endereço físico de memória. Fala ainda sobre os registradores de controle, com ênfase no CR0 (Control Register 0) e um pouco sobre sistemas com multi-processadores.
Até aqui foi uma "mega-introdução" para fixar todos os conceitos básicos necessários. A partir daqui o livro começa a entrar mesmo nos rootkits.
4 - The Age-Old Art of Hooking:
Este capítulo começa com Hooks em User-space, demonstrando como trabalhar na IAT (Import Address Table), como fazer Hooks inline (alterando o assembly do início da função, para que ela faça um jump para um outro lugar), injetando DLLs em processos em User-space.
Então começa a parte de Hooks em Kernel-space, utilizando as ja comentadas tabelas SSDT, IDT e a IRP Function Table.
No final, é discutido como fazer uma abordagem mista, utilizando tanto hooks de user-space quanto de kernel-space.
5 - Runtime Patching:
Mostra a técnica de se "patchear" o que esta na memória. A primeira técnica é o patch de desvio, que basicamente desvia a execução de uma função para outro lugar. Em seguida ele explica a técnica de "Jump Templates" na IDT.
Por fim é feito um pequeno comentário (1 página) sobre variações dos métodos.
6 - Layered Drivers:
Este capitulo trabalha em cima de como os drivers funcionam em um SO Windows e como pode-se colocar vários em sequência (em camadas). Este capítulo demonstra como fazer um Sniffer de Keybord e um driver que esconda determinados arquivos utilizando este método, porem o capítulo inteiro é basicamente um "comentando/explicando o código".
7 - Direct Kernel Object Manipulation:
Este capítulo começa apresentando o que é o DKOM, seus benefícios e seus problemas. A partir dai ele demonstra como se comunicar com um Driver a partir do User-space, como esconder processos e Drivers, elevação de privilégio e até como colocar informações falsas no Windows Event Viewer, tudo isso utilizando o DKOM. Apesar de ser um capítulo com bastante código comentado, eu gostei bastante da apresentação do DKOM e das diversas maneiras que ele pode ser utilizado.
Estes quatro capítulos, trataram das técnicas mais utilizadas por rootkits.
Os 3 próximos (e últimos) capítulos, falam sobre "tópicos diversos" na criação de rootkits.
8 - Hardware Manipulation:
Quando comecei a ler este capítulo, estranhei um pouco o fato dele ter sido posto no final do livro, achei que deveria ter sido posto juntamente com os 3 iniciais. Mas conforme você vai lendo, percebe que a manipulação do hardware aqui, se dá para a criação de rootkits altamente específicos, como por exemplo, que fiquem residente na BIOS/Firmware. Os exemplos aqui são bem teóricos e tem como objetivo somente trabalhar a idéia. No meio do capítulo, há uma parte de como interagir com o Keyboard Controller, infelizmente novamente caímos na parte de "comentando/explicando o código"... e coloca código nisso. No final ele fala um pouco (bem pouco mesmo... 1 página. Mas ja da para viajar bastante) sobre micro-programação dos processadores e como hoje a Intel e a AMD tem processadores que permitem a atualização de suas micro-instruções.
9 - Covert Channels:
Aqui é discutido como fazer para que o rootkit consiga se comunicar (via rede) sem que um firewall, NIDS ou coisa do gênero consiga detectar e/ou bloquear o tráfego. É basicamente apresentado como utilizar o TDI e o NDIS, 2 métodos de se criar canais de comunicação, onde o primeiro é em User-space e mais fácil de usar (porem também de ser detectado), enquanto o segundo é em Kernel-space, mais hardcore, a lá Sockets, onde você pode definir cada bit dos pacotes e inclusive terá que implementar sua própria pilha TCP/IP, veja só quanta diversão!
E mais uma vez, temos a grande quantidade de "comentando/explicando o código".
10 - Rootkit Detection:
Aqui é abordado o lado defensivo da coisa, ou seja, como encontrar rootkits. Desde o duro trabalho de ficar vigiando todos os pontos de entrada por onde um rootkit pode ser carregado (e acreditem... são *muitos*), até procurar na própria memória por hooks e processos escondidos.
Este foi um overview dos capítulos do livro. Gostei bastante do livro, aprendi bastante coisa com ele, não me tornei o mestre h4x0rz l33t dos Rootkits, mas acho que meu leque de conhecimento se expandiu. Aprendi diversos conceitos novos e muito interessantes.
Por um lado, não cheguei a programar nenhum dos exemplos dados no livro, nem fazer os downloads indicados. Me mantive no lado teórico da coisa e talvez por isso, tenha me sentido incomodado com o "comentando/explicando o código", que foi a única coisa negativa que vi no livro: muitas páginas com códigos puros, muitos comentários em cima dos códigos, inclusive de códigos que ja estavam comentados pelo seu programador. Mas não que tenha prejudicado muito o livro.
Talvez por eu estar hoje utilizando *muito* mais o linux do que o windows e ter perdido um pouco do interesse pela parte da pesquisa em segurança (apesar de eu achar que ainda está no sangue =]), eu não me empolguei em digitar e executar os exemplos dados, nem em fazer download dos links recomendados (com código-fonte de rootkits).
Mas para qualquer um que goste da plataforma Windows, tenha interesse na área de segurança e programação e ainda de quebra queira aprender como muitas das coisas funcionam por "de baixo dos panos", o livro é uma ótima pedida e eu recomendo =]
Curiosidades:
1) O livro foi feito com papel reciclado.
2) A capa do livro, muito bonita, foi feita por um brasileiro.
domingo, 31 de agosto de 2008
Codeswarm
O Codeswarm é um projeto open-source, que gera uma "história visual" do desenvolvimento de um determinado software.
Conheci ele hoje lendo a lista do GIT, e aqui segue o Codeswarm do GIT:
Git's codeswarm.
No site do projeto tem outros interessantes também:
Apache:
code_swarm - Apache.
Eclipse:
code_swarm - Eclipse (short ver.).
Conheci ele hoje lendo a lista do GIT, e aqui segue o Codeswarm do GIT:
Git's codeswarm.
No site do projeto tem outros interessantes também:
Apache:
code_swarm - Apache.
Eclipse:
code_swarm - Eclipse (short ver.).
quarta-feira, 20 de agosto de 2008
Yeah! Top 10 baby!
Que emoção... consegui ficar no top 10 e na primeira página do ranking de um problema finalmente:
http://acmicpc-live-archive.uva.es/nuevoportal/rankprob.php?p=3964
Realmente não é nada de demais... o importante é passar... mas que é muito legal é =D
BTW, foi esse problema.
http://acmicpc-live-archive.uva.es/nuevoportal/rankprob.php?p=3964
Realmente não é nada de demais... o importante é passar... mas que é muito legal é =D
BTW, foi esse problema.
segunda-feira, 4 de agosto de 2008
Java owned by ESR
Estava dando copiando o artigo How To Become A Hacker para a lista de documentos interessantes do GUL-UFRJ, quando me reparo com a seguinte entrada no Changelog:
"Revision 1.38: Deprecate Java as a language to learn early."
Continuemos a ler... na parte "1. Learn how to program":
"I used to recommend Java as a good language to learn early, but this critique has changed my mind (search for “The Pitfalls of Java as a First Programming Language” within it). A hacker cannot, as they devastatingly put it “approach problem-solving like a plumber in a hardware store”; you have to know what the components actually do. Now I think it is probably best to learn C and Lisp first, then Java."
Recomendo a lerem a crítica (que eu ja tinha lido a algum tempo atrás, foi algo de bem interessante que rolou pela lista do CAInfo):
http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html
"Revision 1.38: Deprecate Java as a language to learn early."
Continuemos a ler... na parte "1. Learn how to program":
"I used to recommend Java as a good language to learn early, but this critique has changed my mind (search for “The Pitfalls of Java as a First Programming Language” within it). A hacker cannot, as they devastatingly put it “approach problem-solving like a plumber in a hardware store”; you have to know what the components actually do. Now I think it is probably best to learn C and Lisp first, then Java."
Recomendo a lerem a crítica (que eu ja tinha lido a algum tempo atrás, foi algo de bem interessante que rolou pela lista do CAInfo):
http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html
quarta-feira, 30 de julho de 2008
Mitos sobre Perl 5
Tim Bunce deu uma palestra na OSCON deste ano (semana passada), falando sobre alguns "mitos populares" sobre o Perl. Mais especificamente, os 3: Perl está morto, Perl é difícil de ler/testar/manter e Perl 6 esta matando Perl 5.
Se alguem não conhece ele, podem confiar que ele tem experiência para falar de Perl :P
Ele disponibilizou 2 versões, os slides e os slides com anotações.
Se alguem não conhece ele, podem confiar que ele tem experiência para falar de Perl :P
Ele disponibilizou 2 versões, os slides e os slides com anotações.
domingo, 11 de maio de 2008
Quickshots
GCC 4.3.1 Status Report
O GCC 4.3.1 estava agendado para 05/05 mas como ainda existem 3 bugs de Prioridade 1 (máxima), a liberação do RC1 foi adiada.
Os bugs são:
- a restricted pointers bug (36013).
- the x86 direction flag issue (36079). Há uma notícia sobre isso na ultima revista do GRIS.
- ppc64 cacoshl miscompilation (36090).
------
Lançado o OpenSolaris 2008.5
Não tenho o que dizer, apenas que foi bastante comentado... realmente não planejo testa-lo.
------
SP3 do XP finalmente saiu
Depois de sair, voltar, sair de novo... finalmente temos ele ai.
Mas nem tudo são flores no lindo campo verde do Windows XP, parece que algumas pessoas com computadores montados por empresas como HP, e que utilizam processadores AMD, estão tendo problemas de reboot infinitos pois o SP3 futucou os drivers de gerenciamento de energia e acaba misturando coisa da Intel e da AMD.
------
Deputado quer proibir novos feriados no Estado do Rio
Não levantando o mérito se quem propôs a idéia realmente trabalha ou só mama. Mas a idéia foi boa.
O Brasil não é um país de primeiro mundo caralho... e ainda queremos sair criando feriados e enforcando trocentos outros dias. Puta que pariu... e o pior é ver nego defender os feriados.
Que porra de feriado de São Jorge é aquele??? OMFG...
------
Liberado Linux 2.6.25.2, 2.6.25.3, 2.6.25.31415926
O motivo do .2 é uma falha de segurança que por causa de uma Race Condition em conjunto com algumas outras coisas pode permitir uma elevação de privilégio.
O .3 corrige além de outras coisas, 2 bugs que tem implicação com a segurança do sistema também. Também é recomendável que quem estiver usando a série 2.6.24.y atualize para a série 2.6.25.x.
O GCC 4.3.1 estava agendado para 05/05 mas como ainda existem 3 bugs de Prioridade 1 (máxima), a liberação do RC1 foi adiada.
Os bugs são:
- a restricted pointers bug (36013).
- the x86 direction flag issue (36079). Há uma notícia sobre isso na ultima revista do GRIS.
- ppc64 cacoshl miscompilation (36090).
------
Lançado o OpenSolaris 2008.5
Não tenho o que dizer, apenas que foi bastante comentado... realmente não planejo testa-lo.
------
SP3 do XP finalmente saiu
Depois de sair, voltar, sair de novo... finalmente temos ele ai.
Mas nem tudo são flores no lindo campo verde do Windows XP, parece que algumas pessoas com computadores montados por empresas como HP, e que utilizam processadores AMD, estão tendo problemas de reboot infinitos pois o SP3 futucou os drivers de gerenciamento de energia e acaba misturando coisa da Intel e da AMD.
------
Deputado quer proibir novos feriados no Estado do Rio
Não levantando o mérito se quem propôs a idéia realmente trabalha ou só mama. Mas a idéia foi boa.
O Brasil não é um país de primeiro mundo caralho... e ainda queremos sair criando feriados e enforcando trocentos outros dias. Puta que pariu... e o pior é ver nego defender os feriados.
Que porra de feriado de São Jorge é aquele??? OMFG...
------
Liberado Linux 2.6.25.2, 2.6.25.3, 2.6.25.31415926
O motivo do .2 é uma falha de segurança que por causa de uma Race Condition em conjunto com algumas outras coisas pode permitir uma elevação de privilégio.
O .3 corrige além de outras coisas, 2 bugs que tem implicação com a segurança do sistema também. Também é recomendável que quem estiver usando a série 2.6.24.y atualize para a série 2.6.25.x.
Marcadores:
ciência da computação,
GRIS,
informática,
kernel,
linux,
Off-Topic,
programação,
quickshots,
segurança da informação
sábado, 3 de maio de 2008
Quickshots
Hoje tivemos o segundo treino online para maratona de programação... e utilizando problemas bem "difíceis" e com simulação dos times que participaram na época (sim.. eramos nós contra times :P) cheguei a 2 conclusões:
a) OMFG... tenho que treinar muito ainda.
b) OMFG... mesmo resolvendo apenas 2 de 10 fiquei em 59 de 98. Quantos times de 3 pessoas não resolveram nem 2 O.o
------
Saiu o Linux 2.6.26-rc1.
Teve até uma discussão... err... "acalorada" sobre o ritimo em que patches são adicionados ao kernel. OMFG... é pra isso que existe esse tempo de "merge" (não pra enfiar porcaria la, mas para adicionar *muitas* coisas). Depois fica todo mundo mesmo até o -rcX (X >= 7 normalmente :P) arrumando os pequenos problemas. :P
------
Foi lançado o KDE 4.1 Alpha 1.
Ou seja, o primeiro passo na estabilização do que la para Junho/Julho será o KDE 4.1.
Muita gente fala que o KDE 4.0 (atualmente 4.0.3) não é tão bom quanto disseram que seria. Concordo que talvez na parte de aplicativos não seja, pois uma parte ainda não foi portada para o KDE 4 (com QT 4 e os frameworks do KDE 4). Mas para quem se interessa mais pela parte "debaixo dos panos" da coisa, é incrível ver os novos frameworks do KDE. Vale a pena uma estudada rápida =]
Droga! Nem deixaram eu terminar de estudar sobre o QT 4.3 e ja tão indo pro 4.4. Ta ficando o .NET e seus frameworks :P
------
Metal Gear Boobies
Essa tirinha ta *muito* boa =D
------
E para finalizar... eu *odeio* (S)ML (Mas gostaria de aprender Haskell... mas vamos por partes e deixar Haskell para o ano que vem).
a) OMFG... tenho que treinar muito ainda.
b) OMFG... mesmo resolvendo apenas 2 de 10 fiquei em 59 de 98. Quantos times de 3 pessoas não resolveram nem 2 O.o
------
Saiu o Linux 2.6.26-rc1.
Teve até uma discussão... err... "acalorada" sobre o ritimo em que patches são adicionados ao kernel. OMFG... é pra isso que existe esse tempo de "merge" (não pra enfiar porcaria la, mas para adicionar *muitas* coisas). Depois fica todo mundo mesmo até o -rcX (X >= 7 normalmente :P) arrumando os pequenos problemas. :P
------
Foi lançado o KDE 4.1 Alpha 1.
Ou seja, o primeiro passo na estabilização do que la para Junho/Julho será o KDE 4.1.
Muita gente fala que o KDE 4.0 (atualmente 4.0.3) não é tão bom quanto disseram que seria. Concordo que talvez na parte de aplicativos não seja, pois uma parte ainda não foi portada para o KDE 4 (com QT 4 e os frameworks do KDE 4). Mas para quem se interessa mais pela parte "debaixo dos panos" da coisa, é incrível ver os novos frameworks do KDE. Vale a pena uma estudada rápida =]
Droga! Nem deixaram eu terminar de estudar sobre o QT 4.3 e ja tão indo pro 4.4. Ta ficando o .NET e seus frameworks :P
------
Metal Gear Boobies
Essa tirinha ta *muito* boa =D
------
E para finalizar... eu *odeio* (S)ML (Mas gostaria de aprender Haskell... mas vamos por partes e deixar Haskell para o ano que vem).
Marcadores:
kde,
kernel,
linux,
Off-Topic,
programação,
quickshots
terça-feira, 22 de abril de 2008
GSoC 2008: Projetos que foram aceitos
Ainda não foi a vez do meu (até pq eu nao mandei a minha application :P), mas o Google liberou a lista de todas as propostas aceitas.
É uma loooonga e extensa lista, mas bem legal de se ler... pois saber o que está por vir nos seus projetos preferidos =D
http://code.google.com/soc/2008
Alguns projetos com algumas idéias *muito* legais:
- FreeBSD:
Eles estão com MUITAS coisas legais... mas as que mais me chamaram a atenção (por ser sobre segurança?) foi o "802.11 Fuzzing and Testing" e "TCP anomaly detector".
- GCC:
Entre 2 melhorias no Fortran (que eu nem penso em usar) e uma para o C++0x (padrão C++), a que mais me deixa ansioso é a "GCC Improvements on Windows" porque pessoalmente, hoje, eu acho o mingw uma merda. Não faço questão de usa-lo... mas seria bom se pudessemos usar o mesmo compilador no windows e no linux =]
- Gentoo:
Apesar de hoje não utilizar mais o Gentoo e todos os problemas que este incrível projeto vem passando, vejo 2 propostas bem legais para ele: "revdep-rebuild reimplementation" e "Automate It All". A primeira realmente deverá ajudar os usuários e a segunda deverá desafogar os devs.
- GIT:
Apesar de ainda não estar utilizando o GIT muito ativamente, estou adorando acompanhar esse projeto (e a lista de discussão), para ver todas as novidades. Tirando o plugin para o Eclipse, acho que todas as outras propostas serão de um grande benefício geral =D
- KDE:
Meu ambiente gráfico por escolha =]
Tudo que é melhorado ou adicionado nele eu gosto (bem, quase sempre :P).
O que eu achei legal foi a boa quantidade de propostas aceitas em relação ao Amarok... best player ever =D
- Nmap:
Os principais focos são o Zenmap (GUI para o Nmap) e o Nmap Scripting Engine (NSE). Também há uma proposta de refazer o netcat e o hping como ncat e nping... pois são duas partes que o projeto pode se beneficiar extensamente. As outras duas são correções de pequenos bugs em geral.
- OSVDB:
Acho que não tem muita gente que conhece esse projeto, mas foi bem legal ele ter conseguido 3 vagas no GSoC.
Como eu não posso ficar aqui o dia inteiro comentando todos os projetos que eu gosto, então recomendo que vocês deem uma olhada, mesmo que rápida, em (quase) todos, vale a pena =]
É uma loooonga e extensa lista, mas bem legal de se ler... pois saber o que está por vir nos seus projetos preferidos =D
http://code.google.com/soc/2008
Alguns projetos com algumas idéias *muito* legais:
- FreeBSD:
Eles estão com MUITAS coisas legais... mas as que mais me chamaram a atenção (por ser sobre segurança?) foi o "802.11 Fuzzing and Testing" e "TCP anomaly detector".
- GCC:
Entre 2 melhorias no Fortran (que eu nem penso em usar) e uma para o C++0x (padrão C++), a que mais me deixa ansioso é a "GCC Improvements on Windows" porque pessoalmente, hoje, eu acho o mingw uma merda. Não faço questão de usa-lo... mas seria bom se pudessemos usar o mesmo compilador no windows e no linux =]
- Gentoo:
Apesar de hoje não utilizar mais o Gentoo e todos os problemas que este incrível projeto vem passando, vejo 2 propostas bem legais para ele: "revdep-rebuild reimplementation" e "Automate It All". A primeira realmente deverá ajudar os usuários e a segunda deverá desafogar os devs.
- GIT:
Apesar de ainda não estar utilizando o GIT muito ativamente, estou adorando acompanhar esse projeto (e a lista de discussão), para ver todas as novidades. Tirando o plugin para o Eclipse, acho que todas as outras propostas serão de um grande benefício geral =D
- KDE:
Meu ambiente gráfico por escolha =]
Tudo que é melhorado ou adicionado nele eu gosto (bem, quase sempre :P).
O que eu achei legal foi a boa quantidade de propostas aceitas em relação ao Amarok... best player ever =D
- Nmap:
Os principais focos são o Zenmap (GUI para o Nmap) e o Nmap Scripting Engine (NSE). Também há uma proposta de refazer o netcat e o hping como ncat e nping... pois são duas partes que o projeto pode se beneficiar extensamente. As outras duas são correções de pequenos bugs em geral.
- OSVDB:
Acho que não tem muita gente que conhece esse projeto, mas foi bem legal ele ter conseguido 3 vagas no GSoC.
Como eu não posso ficar aqui o dia inteiro comentando todos os projetos que eu gosto, então recomendo que vocês deem uma olhada, mesmo que rápida, em (quase) todos, vale a pena =]
segunda-feira, 4 de fevereiro de 2008
GCC 4.2.3 e 4.3
Bem, foi lançada a versão 4.2.3 do GCC, que contém apenas bug-fixes.
Enquanto isso, a versão 4.3 do GCC acabou de entrar no Stage3, isso significa que só é permitido agora bug-fixes e alterações referentes a documentação. Temos apenas 2 bugs com prioridade 1, quando estes dois forem solucionados (e se nenhum outro aparecer) será liberado o primeiro Release Candidate do GCC 4.3 e o desenvolvimento 4.4, Stage1, terá início =]
O GCC 4.3 terá MUITAS mudanças em relação a linha 4.2... e eu pretendo fazer um apanhado geral delas. Pretendo fazer isso assim que o RC1 sair, e postar aqui =]
Bônus: GIT 1.5.4 lançado.
Bônus 2: PostgreSQL 8.3 lançado.
Enquanto isso, a versão 4.3 do GCC acabou de entrar no Stage3, isso significa que só é permitido agora bug-fixes e alterações referentes a documentação. Temos apenas 2 bugs com prioridade 1, quando estes dois forem solucionados (e se nenhum outro aparecer) será liberado o primeiro Release Candidate do GCC 4.3 e o desenvolvimento 4.4, Stage1, terá início =]
O GCC 4.3 terá MUITAS mudanças em relação a linha 4.2... e eu pretendo fazer um apanhado geral delas. Pretendo fazer isso assim que o RC1 sair, e postar aqui =]
Bônus: GIT 1.5.4 lançado.
Bônus 2: PostgreSQL 8.3 lançado.
quarta-feira, 30 de janeiro de 2008
Com o código fonte tudo seria melhor...
Seria tão mais produtivo se meu código fonte fosse algo assim:
Mas parece ser algo mais assim:
Para compilar:
gcc -o magoo.o magoo.c -Wall -lmagoo
Por favor, utilizem uma versão >= 4.0 do GCC... as 3.x ou menores tem alguns problemas e costumam dar Core Dump.
Esse é um exemplo, ao invés de fazer algo útil... estou escrevendo esses códigos :P
PS: Para quem não sabe o que é: http://en.wikipedia.org/wiki/Procrastination
//Retorna a próxima tarefa a ser feita.
extern tarefa get_next_task_todo();
//Trabalha na tarefa pela quantidade de tempo especificada.
extern int do_task(task tarefa, t_time amount_of_time);
//Procura por novas tarefas.
extern tarefa search_for_tasks_todo();
//Faz coisas inúteis: MSN, ler feeds RSS, e-mails,
//dormir (que é para os fracos)... pelo tempo especificado.
extern void procrastinate(t_time amount_of_time);
int main()
{
task tarefa;
while(1)
{
if(tarefa = get_next_task_todo())
while(!do_task(tarefa, hours(1)));
elseif(tarefa = search_for_tasks_todo())
add_task_in_list(tarefa);
else
procrastinate(minutes(10));
}
return 0;
}
Mas parece ser algo mais assim:
extern tarefa get_next_task_todo();
extern int do_task(task tarefa, t_time amount_of_time);
extern tarefa search_for_tasks_todo();
extern void procrastinate(t_time amount_of_time);
int main()
{
//task tarefa; Desnecessário
srand(time(NULL));
while(1)
{
//Deve acontecer 1 vez a cada 3 anos.
if(rand() == 24895237989578054)
{
//Faz algo...
do_task(get_next_task_todo(), minutes(15));
add_task_in_list(search_for_tasks_todo());
}
procrastinate(hours(3));
}
return 0;
}
Para compilar:
gcc -o magoo.o magoo.c -Wall -lmagoo
Por favor, utilizem uma versão >= 4.0 do GCC... as 3.x ou menores tem alguns problemas e costumam dar Core Dump.
Esse é um exemplo, ao invés de fazer algo útil... estou escrevendo esses códigos :P
PS: Para quem não sabe o que é: http://en.wikipedia.org/wiki/Procrastination
sábado, 12 de janeiro de 2008
Onde estão os programadores de amanhã?
Um artigo interessante surgiu na lista do CAInfo (afinal, algo relacionado ao curso tinha que sair ali :P).
Ele fala sobre a atual preparação que os cursos (Faculdade) de Ciência da Computação estão dando a seus alunos. Ele fala sobre a falta das noções de Cálculo, programação de nível mais baixo, algoritmos, o ensino de uma linguagem de muito alto nível logo no início, etc...
Bem, concordo com o artigo. Talvez hoje as faculdades estejam preparando Tecnólogos e não Cientistas, e olha que o artigo fala da situação nos EUA. E as vezes não são encontrados profissionais qualificados (novidade?).
Então, apesar de as vezes reclamar da quantidade cálculos, físicas e outras dificuldades do curso de CC na UFRJ, tenho que admitir: ELE É FODA! =]
Por isso espero poder aproveitar tudo que ele tem a oferecer. Muitas vezes nos vemos apenas preocupados em quão fácil é uma matéria, se o professor é tranquilão, se ele passa "trabalinhos" fáceis, e se aprova todo mundo.
Pelo amor de deus, estamos em uma faculdade federal, o imposto de uma nação inteira (ou o que sobra dele) está sendo investido em um bando de malucos que no fundo ama computação. Mas quando eu digo ama, é AMA mesmo, computação como OBJETIVO e não como mera ferramenta.
Então venho propor a todos os meus colegas e até os que eu não conheço que alteremos nosso foco, não mais para qual matéria (ok, ok... Cálculo) é mais "fácil de passar", mas vamos tentar absorver todo o conhecimento que a disciplina tem a passar para você, todo o conteúdo a ser adicionado na sua "bagagem intelectual" =]
Esse será um desafio pessoal tambem, mas farei o possível para me preocupar, não em passar, mas em aprender. Creio que um seja mera consequência do outro =]
Ele fala sobre a atual preparação que os cursos (Faculdade) de Ciência da Computação estão dando a seus alunos. Ele fala sobre a falta das noções de Cálculo, programação de nível mais baixo, algoritmos, o ensino de uma linguagem de muito alto nível logo no início, etc...
Bem, concordo com o artigo. Talvez hoje as faculdades estejam preparando Tecnólogos e não Cientistas, e olha que o artigo fala da situação nos EUA. E as vezes não são encontrados profissionais qualificados (novidade?).
Então, apesar de as vezes reclamar da quantidade cálculos, físicas e outras dificuldades do curso de CC na UFRJ, tenho que admitir: ELE É FODA! =]
Por isso espero poder aproveitar tudo que ele tem a oferecer. Muitas vezes nos vemos apenas preocupados em quão fácil é uma matéria, se o professor é tranquilão, se ele passa "trabalinhos" fáceis, e se aprova todo mundo.
Pelo amor de deus, estamos em uma faculdade federal, o imposto de uma nação inteira (ou o que sobra dele) está sendo investido em um bando de malucos que no fundo ama computação. Mas quando eu digo ama, é AMA mesmo, computação como OBJETIVO e não como mera ferramenta.
Então venho propor a todos os meus colegas e até os que eu não conheço que alteremos nosso foco, não mais para qual matéria (ok, ok... Cálculo) é mais "fácil de passar", mas vamos tentar absorver todo o conhecimento que a disciplina tem a passar para você, todo o conteúdo a ser adicionado na sua "bagagem intelectual" =]
Esse será um desafio pessoal tambem, mas farei o possível para me preocupar, não em passar, mas em aprender. Creio que um seja mera consequência do outro =]
Assinar:
Comentários (Atom)