Feeds:
Posts
Comments

Archive for April, 2008

As I mentioned before, I’ve been working on and off on adding Python scripting support to GDB, with Tom Tromey and Vladimir Prus. We did the work in a git repository, separate from the GDB main repo (which still uses CVS, by the way). Now came the time to get the work we did there, separate it in patches and post them for review on the gdb-patches mailing list.

This is the tale of my patch-producing efforts. I’m sorry, it is most likely boring for everyone but me. Still, I wanted to write it down so you are free to stop reading the post here. 🙂

Anyway, back to where I was: I (foolishly, perhaps?) volunteered to create the patches. One reason for me to do that is that I actually enjoy working with and learning about source code management and related issues, and this was a good opportunity for me to improve my git-fu (since I thought git could help me do the job in a sane way, which fortunately proved to be the case).

I say foolishly because I thought it wouldn’t take too much time to cut out the patches, since I knew what I would have to do… The task of course took longer than I expected, in part because of unforeseen autotools woes, but of course also because I underestimated the effort (I am an optimist).

Here is the method I used:

First of all, I wanted to update the code to the latest CVS version of GDB, because the work in the git repo was done based on a CVS version from February… Nothing to see here, actually. I just created a new branch with the latest CVS update, and rebased the commits on top of that. In hindsight, I should have merged the new CVS update into the python branch, which would have made me deal with less conflicts. I used rebase because I thought I would cherry pick the commits later, so I wanted each of them refreshed.

Then the real fun began. I started using interactive mode of git rebase to squash related commits together (to form the patches), and reorder them. I quickly realised that with this approach I would have a bit of difficulty with commits which touched different areas of the code and crossed the borders I had in my mind for the patches I wanted to generate. I would have to first split those into smaller, more behaving commits and only then squash them with other similar changes. That seemed to be more work than really necessary.

Also, the older commits did things in ways and places which were later changed, and it looked like I would have some trouble reconciling older and newer code to fit in one patch (maybe not though, maybe that would be taken care of more or less naturally). Also, I would need to take some time to familiarise myself with the commits in the branch, because I only authored some of them. The “shuffle commits around” approach wasn’t looking very promising.

I then turned to a different strategy: I generated a big patch containing all of the code in the branch, and applied it (using the plain old patch command) on top of a clean branch which contained only the CVS HEAD version I was using as a base. All I needed to do now was to selectively add to the index the changes that I wanted to include in a patch and then commit those changes together. And repeat the process for the next patch and so on.

It proved to be a good approach, especially because of the interactive mode of git-add. This mode asks you about each change inside a modified file, letting you add that change to the index or skip it, leaving it in the working directory for a future commit. git add -i streamlined the “change picking” process quite a lot, and made the patch-cutting almost mechanical. (By the way, this feature is also available in Mercurial, with the Record extension. I even believe (not sure though) that the Mercurial extension predates git add -i) (I don’t know if Bazaar has it, would be nice to know).

In this phase of the process, git rebase -i was useful. Sometimes I came accross a change in the working directory which would fit better in a patch which I had already committed. It was simply a matter of committing that change and then shuflling it back and squashing with the proper patch.

At each commit I pushed the changes to a pristine repo which I used to build GDB and guarantee that each patch included all the changes it needed.

Voilà, at the end of the process I had a git branch where each commit corresponded to one patch which I wanted to send to the mailing list.

Read Full Post »

Só de zoeira resolvi criar um hackergotchi pra mim. Como esperado, o Google achou rapidinho uns tutoriais de como fazê-los no GIMP.

Uma coisa que achei bem útil foi a lista de cabeças do GNOME Planet. Dá pra ver exemplos de vários estilos e ângulos, pra ver o que fica melhor e também ter uma idéia de como as pessoas fazem os cortes, o que tiram e o que deixam, etc.

Sem mais delongas, eis três que ficaram melhorzinhos, em ordem de preferência:

Hahaha, fala sério, ficou bom não? Bluepages, prepare-se!! 😀

Algumas dicas:

  • A ferramenta Free Select é sua grande amiga. Habilite anti-aliasing e feather edges (eu usei raio 5 (imagino que a unidade seja pixels) e achei bom). Não requer prática nem tampouco habilidade!
  • Para tamanhos menores que 100×100, ajuda fazer um sharpen na imagem, antes de colocar a sombra.
  • Use valores modestos na sombra (eu gostei de offset de 1 pixel no X e Y, e raio de 4 pixels).
  • Cabelo é uma dificuldade. Se o seu é curto e bem domado, sorte sua! Infelizmente o meu é o contrário nos dois aspectos, penei um pouco pra ter algo mais ou menos aceitável.
  • Dê preferência para fotos mais claras, com cores vivas (dá pra ver que a minha imagem do meio ali em cima tá meio apagada, por exemplo) e nas quais sua cabeça (principalmente seu cabelo!) se destaque bem do fundo.

Bom, é isso. Se eu acordar amanhã e cair a ficha de que as figuras acimas estão ridículas, eu tiro do post. Por enquanto, parece divertido. 🙂

Comentários? Críticas? Zoações?

Read Full Post »

Dia 10 de abril ocorreu em Amsterdam a première do Big Buck Bunny, o 2º filme “open source” (ou seja, com os arquivos de produção e o próprio filme em si liberados sob uma licença Creative Commons) já feito. O 1º foi o Elephants Dream, lançado em maio de 2006. Ambos foram criados com o Blender, o mais avançado (pelo pouco que eu sei) modelador/renderizador 3D open source disponível.

Pra dizer a verdade, eu nem sabia da existência deste filme, tomei conhecimento esses dias. Parece ter sido um projeto bem interessante. Um dos objetivos era testar e melhorar a maturidade das ferramentas open source disponíveis voltadas à produção de filmes/animações.

Foi desenvolvido por pessoas da própria comunidade do Blender, escolhidas através de submissão de portfolio. Os selecionados ganharam moradia em Amsterdam, um estúdio, bolsa para cobrir despesas, reembolso da viagem etc. enquanto durasse a produção do filme. Tudo custeado pela Blender Foundation, pré-venda de DVDs, patrocinadores e doações.

Há um curto trailer disponível, mas já dá pra ter uma idéia do nível de profissionalismo alcançado (tem até versão HD! e fizeram o som em um estúdio Dolby Digital). Eu particularmente gostei muito do pouco que deu pra ver.

O Elephants Dream tinha muita viagem e psicodelismo, e confesso que não entendi direito. Eu gosto de filmes não-convencionais e viajados, mas dessa vez não deu pra acompanhar (acho que faltou eu cheirar meia!). Com o Big Buck Bunny resolveram fazer algo mais mainstream, na linha dos filmes de computação gráfica dos últimos anos. Acho que vai ser mais popular e mais fácil de agradar…

O filme vai ser lançado mesmo e estar disponível para download só no fim de maio. Tem que esperar mais um pouco ainda. Ah, e ele tem 10 minutos de duração. É bom avisar, antes que alguém crie expectativa demais.

Read Full Post »

Já achei curioso uma notícia sobre um sequestro feito por piratas (eu achava que eles só ficavam procurando tesouros escondidos! E às vezes sitiando cidades e cobrando resgate pra ir embora, nas horas vagas.), achei ainda mais curiosa a forma como tentaram rechaçar o ataque:

“O capitão do Ponant relatou que entre 20 e 30 piratas armados com fuzis Kalashnikov participaram da abordagem ao veleiro, os quais a tripulação tentou sem sucesso afastar com jatos de água.”

HAHAHAHAHA! Fala sério, hein? 😀

Eu sei que a notícia é séria, não deve ser fácil ficar sob custódia de criminosos e sem saber o que vai acontecer… Mas não tem como não rir desse parágrafo.

Fonte: http://www1.folha.uol.com.br/folha/mundo/ult94u392064.shtml

Read Full Post »

Às vezes eu fico impressionado com algumas semelhanças entre alemão e português, principalmente no que se refere a expressões idiomáticas…

Por exemplo: em português se diz muito “ah, vai reclamar pra sua vó!” e coisas do gênero, certo? Bom, em alemão acabo de descobrir que você pode falar “erzähl das deiner Großmutter!”, ou literalmente: “explique isso pra sua vó!”

Read Full Post »