quarta-feira, 25 de agosto de 2010

Highlighting de código no seu site

Estava fazendo o CSS do blog e lembrei de uma coisa que já estava querendo fazer e nunca lembrava: colocar um highlighting de código.

Pesquisei e vi que o mais utilizado pela galera é o Syntax Highlighter. Comecei a utilizar ele, porém uma característica dele não me agradou: Ele só pode ser utilizado com a tag <pre>. O problema da tag <pre> é que quando seu código contém uma linha grande, dependendo do seu layout, ele simplesmente não mostra a linha inteira (o Google Chrome adiciona uma barra horizontal de rolagem, mas mesmo assim fica aparecendo um ícone ? no meio do código) ou mostra a linha passando por cima do que estiver na reta. Por isso eu gosto de usar a tag <code>, o que o Syntax Highlighter não permite. Dessa forma fui buscar outra ferramenta e achei o google-code-prettify.

O google-code-prettify além de me permitir usar a tag <code>, me permite customizar o estilo facilmente via CSS (coisa que o Syntax Highlighter não permite). Olha como é simples usar o google-code-prettify:

Passo 1: Adicione esse código na sua página, entre as tags <head> e </head>:

<link href="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js"></script>

Passo 2: Adicione na tag <body> um onload='prettyPrint()', ficando assim:

...
<body onload='prettyPrint()'>
...

Pronto! Agora quando você quiser fazer o highlighting de algum código é só colocar a classe prettyprint na tag <code>, dessa forma:

<code class="prettyprint">
Seu código entra aqui
</code>

Só isso?!?! Não preciso falar qual é a linguagem do meu código não?! Não! O google-code-prettify descobre qual é a linguagem e faz o highlighting! =)
Mas se você quiser, pode indicar qual é a linguagem adicionando a classe lang-x onde x é a sigla da linguagem. Você pode ver quais linguagens ele faz o highlighting no README do projeto.

Quer colocar o número das linhas? Simples: adicione a também a classe linenums. Ainda assim não está aparecendo? Isso acontece porque por padrão o google-code-prettify coloca o número da linha apenas para múltiplos de cinco (5, 10, 15, ...). Para colocar o número da linha em todas as linhas, basta adicionar isso no seu CSS:

code ol li {
list-style: decimal !important;
}

Dica para que usa o Blogger/Blogspot: Para usar no seu blog, basta adicionar tudo da mesma forma como foi descrito. Lembrando que os passos 1 e 2 devem ser feitos no seu layout, que pode ser editado indo na aba Design e depois em Editar HTML.

Dica para que usa o Gedit: Como esse post tinha alguns códigos em HTML para fazer o highlighting e como para isso tem que escapar as tags HTML substituindo os caracteres < e > pelas suas respectivas sequencias especiais em HTML, adicionei ao Batraquio o snippet Scape HTML tags. Com ele você seleciona um código, aperta Ctrl+Shift+H e ele substitui tudo para você. Assim, você pode escrever seu código normalmente, e quando for fazer o highlighting, usa o snippet. =)

Lembrando que diferentemente da tag <pre> com tag <code> você precisa adicionar uma tag <br /> ao final de cada linha (no Blogger isso é feito automaticamente).

Lembrando também que você pode usar a tag <pre> ser preferir.

É isso ai! Se quiser mudar o estilo, é só adicionar um CSS com uma borda, uma cor de fundo e o que mais achar que fica legal.

Referências:
[ ]'s

segunda-feira, 19 de julho de 2010

Paródia ágil

Em um post anterior publiquei a letra da paródia "Quem não usa ágil dá um tiro no escuro" e foi prometido que gravaríamos uma versão.
Sendo assim, aí está!
A música está licenciada sob a licença creative commons atribuição

Os componentes da "banda" foram:
  • Thiago Kerzer: guitarra
  • Ciro Corrêa: baixo e guitarra
  • Rodrigo Manhães: programação da bateria (nem na música ele largo a programação!)
  • Carol Maia: vocal e backing vocal
  • Erasmo Júnior: vocal e backing vocal
  • Renato Arpuador (Criador do lendário Jingle do Happy Dog): vocal e backing vocal
  • Eu: vocal e backing vocal
Agradeço ao Renato que cedeu o estúdio para a gravação do vocal e fez a mixagem com a gravação que o Rodrigo, Thiago e Ciro tinham feito nos estúdios Kerzer =)

O Thiago e o Ciro são, respectivamente, guitarrista e baixista da banda Endorama (indie/pop). Os caras lançaram o primeiro CD em maio.
O Rodrigo e o Thiago são, respectivamente, "vocalista" e guitarrista da banda Clássicos Eternos (cabruncometal/lamparãocore).
Para quem não lembra: música e letra original.

Nota: Este post estava no meu blog antigo e não tive como trazer os comentários. Além dos elogios de Eduardo Hertz, Pedro Henrique Linhares, Ramon Durães, Daniel Gonçalves, Mark S. Gonçalves, Alisson Sales, Rafael Carvalho, Rodrigo Branas, Guilherme Chapiewski, Ming e Rodrigo Melo, destaco alguns:
  • Hugo Lopes Tavares

    Amazing :-)

    Só uma coisa, xará: esse finalzinho ficou cortado :| vc podia colocar um fade out aí!

    PS.: Eu vou ficar na casa de um cara que conhece uma das organizadoras do FISL, talvez a gente consiga botar isso pra tocar lá!

    []s

  • Rodrigo Yoshima

    Parabéns! Temos trilha sonora agora em português!

  • Eduardo Fiorezi

    Muito bom, kkk já escutei umas 6 vezes..

    Falta só um videoclip pra ela... Vamos lá designers...


[ ]'s

sexta-feira, 4 de junho de 2010

Qual versão do ruby estou usando?

Você usa o rvm e nunca sabe qual versão do ruby está em uso?

Seus problemas acabaram! =)

Adicione a seguinte linha no seu arquivo ~/.bashrc:

export PS1="\`ruby=\$(which ruby 1> /dev/null && ruby -v 2> /dev/null | grep -oP \"^.+?[0-9]+(\.[0-9]+)+\") && echo \"(\$ruby) \"\`$PS1"
Atualize o terminal:

$ source ~/.bashrc
E você poderá ter o seguinte:

$ ruby --version
O programa 'ruby' não está instalado atualmente. Você pode instalá-lo digitando:
sudo apt-get install ruby
$ rvm 1.8.7
(ruby 1.8.7) $ rvm rbx
(rubinius 1.0.0) $ rvm 1.4.0
(jruby 1.4.0) $ rvm 1.9.1
(ruby 1.9.1) $ rvm system
$

Legal não?!

Lembre-se apenas que essa linha deve ser a última que manipula a variável $PS1 no seu arquivo ~/.bashrc.

Valeu Rodrigo, pela dica de melhoria!

[]'s

quarta-feira, 19 de maio de 2010

afterFormat para Ubuntu 10.04

Ano passado criei o afterFormat para o Ubuntu 9.10. Para quem não sabe, o afterFormat é um script que instala automaticamente diversos softwares básicos (principalmente para desenvolvedores) que sempre são necessários após uma formatação, além de fazer algumas configurações. Para ver tudo o que ele faz, dê uma olhada no projeto no github.

Como foi uma mão na roda para muita gente, atualizei o script para rodar no Ubuntu 10.04 (fiz um branch para a versão do Ubuntu 9.10). Adicionei algumas coisas novas, retirei algumas que ficaram obsoletas e o script ficou bem legal.

A cara dele está assim:

screenshot do afterFormat para Ubuntu 10.04

Para baixar, basta entrar no aqui, clicar no link Download Source e escolher entre zip ou tar.

Qualquer dúvida ou sugestão, é só comentar!

[ ]'s

sábado, 1 de maio de 2010

Visualizando diff no Git com o Meld

A ferramenta de diff do Git pode muitas vezes ser confusa e difícil de entender. Contudo, existe uma maneira de configurar o Git para usar uma ferramenta externa de visualização do diff. Nesse caso eu vou usar o Meld que é uma ferramenta excelente que te permite visualizar o diff desta forma:

Tela do diff no Meld

Em primeiro lugar, você deve instalar o Meld:

$ sudo apt-get install meld
Em seguida, configurar o git para usar o Meld como ferramenta externa para diff:

$ git config --global diff.external meld
Se agora você for em um diretório versionado com git e der um git diff irá ocorrer um erro como este:

$ git diff arquivo_qualquer
external diff died, stopping at arquivo_qualquer

Esse erro ocorre pelo fato do Git mandar 7 parâmetros para a ferramenta externa de diff, enquanto o Meld recebe apenas dois deles (os nomes dos arquivos para comparar).

Uma maneira de contornar isso é escrever um script para formatar os parâmetros antes de manda-los para o Meld. Para isso, crie em qualquer lugar (recomendo em ~/.config) um script em shell com qualquer nome (recomendo git_meld_diff.sh) contendo o seguinte conteúdo:

#!/bin/bash
meld "$5" "$2"

Agora podemos configurar o Git para para fazer o diff usando o script que criamos (lembre-se de mudar o caminho e o nome do arquivo para o seu caso)

$ git config --global diff.external /home/hugo/.config/git_meld_diff.sh
Agora, quando você fizer o diff, o Meld irá abrir corretamente e você terá um diff como o presentado na imagem.

Este post é uma adaptação deste post do Nathan Hoad.

Nota: Este post estava no meu blog antigo e não tive como trazer os comentários. Como os comentários foram relevantes, seguem aqui:
  • Hugo Lopes Tavares

    E aí chará!
    Cara, eu prefiro ver na ordem inversa: a versão modificada e a versão original, acho mais normal.
    Outra coisa que dá pra fazer é não usar o Python, né:

    #!/bin/bash
    meld $5 $2 # a versão atual e depois a original

    Abração!

  • Hugo Lopes Tavares

    Só uma correção:

    #!/bin/bash
    meld "$5" "$2"

    Senão não consegue fazer o meld com arquivos que tenham espaço no nome.

  • Hugo Maia Vieira

    Fala chará!
    Realmente fica melhor ver na ordem: versão modificada - versão original.
    Nem tinha pensado em usar Shell. Muito mais prático.
    Valeu pelas dicas Hugo!

    Abraço!

    Obs.: Como mudei o post, fica aqui a versão anterior sem as modificações que Hugo comentou:

    Antes usava um script em python com o conteúdo:

    #!/usr/bin/python

    import sys
    import os

    os.system('meld "%s" "%s"' % (sys.argv[2], sys.argv[5]))


[ ]'s