Mostrando postagens com marcador vim. Mostrar todas as postagens
Mostrando postagens com marcador vim. Mostrar todas as postagens

terça-feira, 6 de outubro de 2009

Primeiro Festival de Software Livre de Belo Horizonte

Impressionante, quase mais de uma semana depois e cá estou eu mineirando[1] um tempo livre pra conseguir escrever algumas linhas sobre o assunto.

o primeiro de muitos
(cartaz do evento)

Organização e Infra:
A organização foi bastante competente, não houve nenhum gap - ou pelo menos nenhum que eu tenha percebido. Wifi funcionando em quase 100% do evento e horários de palestras ok - exceto por uns palestrantes furões. Falando em palestrantes...

Palestras:
Ok, confesso que acordei tarde e que cheguei quase na hora do almoço no evento. Ok, *na hora do almoço*. Gastei boa parte da tarde revisando e corrigindo a minha própria palestra.

Mas uma palestra em especial merece algumas linhas a mais: Deixo aqui os parabéns ao Lamarque pela sua palestra-história-de-vida. Passou quase uma hora e meia falando de suas experiências pessoais em escrever driver de kernel, postar na LKML, ser tratorado, resolver bugs postar patches e por ai vai. Gostei disso por dois motivos claros: 1) Isso representa fortemente o espírito de nerd && computeiro - fazer a coisa funcionar por que *pode* e não por que quer provar alguma coisa ou por que alguém mandou. Pelo simples fato de estar interessado e querer resolver. 2) O conteúdo técnico pouco importava, a idéia era que "contribuir com SL não é um bixo de 9 cabeças". Vai lá, leia a documentação, fale com a galera no canal, poste e por ai vai. No fear.

(minha palestra do vimbook - crédito: Djavan)

Falando em palestras, a minha sobre vimbook foi bem divertida. O público era bastante interessado, os exemplos funcionaram na hora e o mais importante: As minhas piadas sem graça mantiveram as pessoas acordadas mesmo depois do devastador almoço de comida mineira. Great! Piadas a parte, o que gostei mesmo foi que as pessoas ficaram interessadas no vimbook, muitos anotaram a URL, perguntaram sobre o projeto e tal. Mission accomplished feelings.



E uma coisa que eu não canso de repetir: Em eventos desse tipo, a coisa que menos importa é ficar na sala prestando atenção na palestra. O networking no boteco pós evento é sempre mais importante. Conhecer pessoas novas, em que trabalham, trocar idéias, links, conexões em redes sociais e por ai vai :-)

o baile todo
(pessoas de belzônte, porto alegre-tchê e bahia, networking é isso aí ó)

Parabéns a todos da orgzanização, palestrantes e amigos. E que venha o próximo! :-)
Algumas fotos do evento no meu flickr, no flickr do Tuliom e no picasa do Djavan.

[update] os slides da minha palestra estão aqui:


[1] - Ahn?! Ahn?! Entendeu?!

quinta-feira, 24 de setembro de 2009

Otubo no 1o Festival de Software Livre de BH

Bem, é isso mesmo que vocês viram. Virei um pop-star e agora dou palestra pelo mundo todo. Sério? Lógico que não. A verdade é que conheci um pessoal muito bacana de BH no FISL10, eles elaboraram um evento muito legal e abriram para chamada de trabalhos. Pensei: Pô! Taí uma oportunidade de divulgar o Vimbook! Voilá, amanhã embarcarei às 20h pra terrinha do pão de queijo pra falar um pouco de Vim pra moçada de Software Livre de Belo Horizonte :)

quinta-feira, 8 de janeiro de 2009

Ajude a promover o grupo em torno do Livro do VIM

"VIM! Typing like a hurricane!"
Mini-paródia de Rock You Like a Hurricane dos Scorpions


Ano novo, projeto novo. Os primeiros dias de 09 nem chegaram direito ainda e eu já me meti num projeto novo e no mínimo interessante. Iniciado pelo colega (e também vim-addicted) voyeg3r, o Vimbook é um projeto de um livro opensource escrito em LaTex que tem por objetivo reunir e explicar (em claro pt_BR) comandos básicos, funções avançadas e dicas interessantes do editor mais legal que existe :-). Gosteu? Junte-se a nós e contribua! :-)

sexta-feira, 4 de abril de 2008

Vim, taglist e ctags: Programando com produtividade

Cof! Cof! Quanta poeira! Sim, eu sei. Já faz quase um mês que não escrevo. Mas tenho algumas boas descuplas: Fui contratado no LTC e muita coisa mudou: Rotina nova - acordar e chegar em casa em horários diferentes e aula na Unicamp. Computador novo - sim a Lisa se foi. Com a chegada do notebook da IBM a sempre presente Lisa deu lugar ao Maizena.

Bom, o fato é que já dentro da IBM entrei em um projeto majoritariamente em Python. Uns pedaços em shell script, mas a grande maioria em Python. O que me forçou a ser um pouco mais produtivo do que o normal. Com Vim e ferramentas adequadas isso é bastante fácil. :-)

Indo direto ao assunto, ao final deste breve tutorial, iremos ter algo parecido com o screenshot acima: Teremos uma lista de classes e métodos do projeto todo em uma janelinha (split) do Vim. A tela lateral é gerada com o plugin TagList e a lista de classes e métodos (as informações em si) é com o ctags. Tudo muito simples.

Primeiro vamos entender o programa ctags: Ele lê arquivos fonte (e até agora eu já testei com C e Python) e gera um arquivo de tags que contém informações relevantes tais como: Declaração de variáveis, declaração de funções (em caso de linguagem estruturada), classes e seus métodos (em caso de linguagem orientada a objeto) e por ai vai. As tags são orientadas ao caminho do arquivo de onde foram lidas as informações, isso quer dizer que gerar um arquivo de tagas com o caminho absoluto do arquivo é mais interessante do que gerar o mesmo arquivo com o caminho relativo já que vamos manipular informações dentro de um projeto inteiro. Trocando em miudos:

$ find $(pwd) -regex ".*py$" | xargs ctags

Execute este comando na raiz do projeto, ele irá ler todos os arquivos .py e irá mapeá-los com ctags gerando o arquivo tags. Note que o diretório de procura será $(pwd), isto fará com que as tags tenham o caminho absoluto do arquivo mapeado.

Agora, você terá que copiar o arquivo de tags para cada um dos diretórios do projeto:

$ find $(pwd) -type d -exec cp -v tags {} \;


(Quem tiver dúvidas no shell só deixar nas caixas de comentários que eu explico)

Depois de criar e copiar o arquivo de tags para cada diretório de seu projeto, agora é hora de usar TagList dentro do vim. Baixe o arquivo, descompacte e copie o arquivo taglist.vim para dentro de ~/.vim/plugin e taglist.txt para ~/.vim/doc:

$ cp taglist.vim ~/.vim/plugin
$ cp taglist.txt ~/.vim/doc


Agora é só correr pro abraço. O comando mais importante que você deve aprender agora é TlistOpen. Deve saber também que dentro do split você pode apertar F1 e receber ajuda sobre os comandos e keybinds que pode usar para navegar nas classes e métodos.

:TlistOpen

E agora, o mais legal de tudo: Com a split aberta (e com as classes e métodos do arquivo atual lá), você pode usar as keybinds do ctags para pular diretamente para métodos em outras classes e em outros arquivos. Por exemplo, com o cursor em cima de um método qualquer você pode apertar Ctrl+] e pular automaticamente para o arquivo onde está implementado o método. A split irá mostrar a classe em questão e seus métodos como mostra a figura abaixo:

Espero ter ajudado os programadores por ai! :-)

sábado, 24 de março de 2007

Dicas legais de programação usando vim: Vim-tips parte 1!

No meu trabalho, temos uma comunidade bastante grande que usa Vim e por isso acumulamos várias dicas úteis. Vou tentar escrever por aqui (dividindo em alguns capítulos) algumas features que usamos e achamos bastante produtivas e úteis.

Lembra daquelas IDEs de desenvolvimento cheias de features para debug que você já usou? Nenhuma fica atrás do Vim. O Vim possui algumas features não muito famosas porém que são extremamente úteis na hora de debugar ou seguir declarações de funções. Vou listar aqui algumas coisas interessantes que achamos.


Ctags, rastreando declarações de funções e identificadores.

Por vezes você estará em um ambiente de código fonte que você não conhecerá exatamente todas as funções ou variáveis. Um projeto que veio de outra pessoa ou até mesmo um computeiro de software livre contribuindo com a comunidade não tem obrigação de conhecer todo o sistema.

Instalando ctags em seu sistema Linux: Será fácil. Algo como um "./configure && make && sudo make install" não resolva. Ou então "apt-get install ctags" e até mesmo "emerge ctags" deve ser bastante útil dependendo da sua distro :-)

Direto ao ponto: Vá ao diretório raiz de seu projeto e digite:

$ ctags *.[ch] -R # no caso de ser um projeto desenvolvido em C

Você estará criando um arquivo de tags lendo palavras-chave percorrendo seus arquivos .c e .h recursivamente (-R). Isso irá criar um arquivo "tags".

Para usar ctags dentro do Vim, entre em modo de comando e coloque seu cursor sobre uma função ou uma variável e aperte:

Control+]

Pronto você pulará diretamente para a declaração da função! Amazing! :-P Para voltar a ver o arquivo que você estava editando, aperte:

Control+T

Ah! Mas você não quer deixar de ver o arquivo que você está editando enquanto navega pelas tags?

Control+W_Control+]

Isso splittará a janela em duas horizontalmente.


Identificando funções e variáveis sem instalar nada a mais no seu Vim.

Em algumas situações, esta feature é bem mais interessante e útil do que ctags. Mas apenas em algumas situações. Entre em modo de comando e posicione o cursor sobre uma função ou variável que deseja descobrir a declaração e aperte:

Control+W_

Você splittará a janela em duas horizontalmente e pulará para a declaração. Se for uma função, irá para o header (.h). A vantagem de usar Control+W_ é que você poderá ver declarações mesmo em funções da glibc: malloc, printf e afins.

Espero que sejam úteis as dicas. Aguardem que ainda tem mais!

terça-feira, 27 de fevereiro de 2007

Vim e diffsplit: Diversão garantida programando!

Acredito que muitos de vocês conhecem o comando diff. Ele mostra a diferença entre dois arquivos em uma forma não muito fácil de se ler. Seu formalismo as vezes pode confundir e dificultar naquela hora de pegar um bug chato. Eu mesmo não entendo muito bem como diff funciona :-\ , pensei então em fazer algo mais visual e legível. Você, leitor computeiro, já vai pensar: Mas tem o tkdiff! O gtkdiff! O kdiff! O insira_aqui_sua_lib_predileta_diff... Muitos deles! Mas, já que estamos com o vim aberto, vamos aproveitar e fazer algo de útil por aqui mesmo, nada de mouses! :-P Just screen!

Primeiro vejamos as diferenças entre os arquivos exemplo manualmente:

otubo@lisa /tmp/example $ cat helloworld.c
#include
int main(){
printf("Hello World!!!\n");
return 0;
}

otubo@lisa /tmp/example $ cat helloworld2.c
#include

int main(){
printf("Hello Vimmers!!!\n");

return 0;
}
Agora, vamos editar helloworld.c. Uma vez dentro do ambiente vim, entre em modo de comando e digite:

:vert diffsplit helloworld2.c

Você deve ver algo assim:
Como você pode ver, as diferenças entre os arquivos são completamente gráficas e fáceis de vizualizar :-) Obviamente, nosso exemplo não mostra todo o poder real que essa ferramenta possui, mas quando estiver trabalhando com projetos grandes, complexos e cheios de bugs malas a serem rastreados, verá que será um grande amigo.