Gource, uma forma estilosa de ver logs do seu controle de versão

20 de janeiro de 2013 ~ Comente! ~ Tags:,

O Catarse é uma plataforma brasileira de crowdfunding que em 2 anos já apoiou mais de 700 projetos, movimentando quase 5 milhões de reais. São números impressionantes, estão todos de parabéns por fazer acontecer, mas não é essa a razão do meu post :)

Ao me deparar com seu post de estatísticas, o vídeo da evolução do código-fonte do app deles me chamou a atenção. Ele foi feito com o Gource, que até o momento não conhecia. Esse aplicativo lê os logs do sistema de controle de versão (Git, Mercurial, Bazaar, Subversion) do seu projeto e gera a visualização gráfica da evolução do desenvolvimento. Por exemplo, o vídeo abaixo mostra a evolução dos commits de 2004 a 2009 do Rails:



O Youtube está cheio de vídeos desse tipo. Se você usa Mac OS, pode instalar o gource via port:

  1. port install gource

Dicas aleatórias para gestão de código

6 de janeiro de 2013 ~ Comente! ~

No post anterior mostrei como migrar um repositório de SVN para Git. No meu caso, eram mais de 2000 commits, 1 GB de código, feito por meia dúzia de programadores. Abaixo compartilho algumas dicas que podem ser úteis na gestão de todo esse código:

Controle de Banda

Ao fazer a migração dos repositórios, comi uma boa parte da banda de Internet e vi que no servidor local de Internet não havia nada para balancear velocidade. Fazendo meu dever de casa, descobri que é possível controlar a banda do que o Mac OS transfere, através do utilitário ipfw. Por exemplo, se você quer limitar a 200KB o tráfego que sai de sua máquina pela porta 22 – execução de um git push, por exemplo – digite:

  1. sudo ipfw add pipe 1 ip from any to any out dst-port 22
  2. sudo ipfw pipe 1 config bw 200KBytes/s

Isso criará uma regra em seu sistema operacional. Para conferir as regras em execução:

  1. sudo ipfw pipe list

…e para apagar a regra criada:

  1. sudo ipfw pipe delete 1

Gitlab

O Gitlab é feito com Rails e faz o gerencimento de repositórios Git. Sua interface e funcionalidades lembram muito o GitHub. Você cria e edita repositórios com cliques, adiciona membros ao time com facilidade e ainda tem a possibilidade de criar wikis para seus projetos. Só me arrependo de não o ter instalado antes.

StatSVN

O StatSVN é um programa em Java que lê seu log do Subversion e produz várias estatísticas. Se você é ligado a números, teste esse programa!


Migrando um repositório SVN para GIT

4 de janeiro de 2013 ~ 1 comentário ~ Tags:,

Nos últimos dias, pesquisei uma forma de migrar um repositório de SVN para GIT e quando consegui fazer, percebi que era mais fácil que eu imagina. Com isso, resolvi escrever uma receitinha de como fazer isso.

Inicialmente você deve criar um arquivo mapeando seus usuários do SVN para o GIT. Ele deverá ter o formato abaixo:

  1. leonardo = Leonardo Faria <leonardo @email.com>
  2. autor2 = Autor <autor @email.com>

Nota: caso você não queira manualmente escrever esse arquivo, vasculhe o log do seu projeto SVN e obtenha a lista de autores automaticamente:

  1. svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" < "$2">"}' | sort -u > authors.txt

Continue lendo →


Configurando o Sublime Text 2

31 de dezembro de 2012 ~ Comente! ~ Tags:

Tempos atrás tinha instalado o Sublime, mas não o usei efetivamente. O Nando Vieira fez um ótimo post detalhado sobre o editor, e após isso, resolvi dar uma olhada mais a fundo. O Sublime é altamente configurável e abaixo cito algumas modificações que fiz.

Plugins

O Sublime possui um gerenciador de plugins que extendem as funcionalidades do editor. O post que citei do Nando mostra como instalá-los. Esses são os plugins que andei testando:

  • Git: integra funcionalidades do Git a seu projeto;
  • SidebarGit: integrar comandos do Git a sidebar do projeto;
  • MacTerminal: integra o iTerm 2 ao Sublime;
  • BracketHighlighter: destaca blocos de código. Útil quando você pega código alheiro e se perde tentando entender onde começam e terminam funções e métodos;
  • Sublime Lint: valida a sintaxe inline de códigos JavaScript, Ruby e PHP. Nunca fui fã desses recursos, mas resolvi instalar para experimentar;

Tema

No Textmate eu usava o esquema de cor All Hallow’s Eve. Esse e todos os outros esquemas de cores podem ser usados no Sublime. Para isso você precisará do tema Soda. Criei um fork do tema original para colocar ícones nas pastas, baseado em um hack que encontrei. Para instalar o tema, clona o repositório:

  1. cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages
  2. git clone https://github.com/leonardofaria/soda-theme.git "Theme - Soda"

Para ativá-lo, abra o arquivo de preferências do Sublime (Sublime Text 2 > Preferences > Settings – User ou command + ,) e adicione:

  1. {
  2.   "theme": "Soda Light.sublime-theme",
  3.   "color_scheme": "Packages/Color Scheme - User/All Hallow's Eve Custom.tmTheme"
  4. }

Os temas do Textmate podem ser encontrados nesse repositório do Github. O tema Soda permite a customização das abas, tornando-as semelhantes as abas do Google Chrome.

Para usar o estilo clássico de abas, acrescente no seu arquivo de preferências:

  1. "soda_classic_tabs": true

Ícone

Eu particulamente não gosto do ícone padrão do Sublime. No Dribbble, vi alguns designers fazendo releituras do icone original. Uma busca no site retorna dezenas de boas opções.




Escolhido o ícone, basta copiá-lo do site e substituí-lo no Sublime. Vá na pasta Aplicativos do seu Mac OS, clique com o botão direito no ícone do Sublime e escolha “Mostrar Conteúdo do Pacote”. Em seguida, localize a pasta Contents > Resources. O arquivo a ser substituído é o “Sublime Text 2.icns”.


Raspberry Pi

30 de dezembro de 2012 ~ Comente! ~ Tags:,

A alguns dias atrás comprei um Raspberry Pi. Ele é um computador do tamanho de um cartão de crédito, possui um processador de 700 MHz, 512 MB de Ram e você pode usar um cartão de memória como disco de boot. Para alimentação, um carregador de celular basta. Estou usando um teclado de um iMac capacete e um adaptador wifi xing ling para acessar a rede sem fio de casa.

Existe uma versão de Debian específica para ele, mas se você não gosta dessa distribuição, pode usar o Arch Linux. Escolhi o Debian, configurei Apache e PHP para me enviarem email com o IP do computador e assim trabalho remotamente com ele. Ainda não dei um destino final a ele, mas pela Internet dá para imaginar várias possibilidades:

Painel de fotos;
Media Center, para reproduzir seus filmes, usando o conhecido XBMC;
Portão eletrônico de garagem;
Wireless airplay speaker, muito bacana para quem não tem um Apple TV.


Para agilizar o desenvolvimento do frontend

21 de novembro de 2012 ~ Comente! ~ Tags:, ,

Uso o Chrome como browser padrão em minha máquina e algumas extensões interessantes para desenvolvedores.


mytop, para monitorar seu MySQL

4 de outubro de 2012 ~ Comente! ~ Tags:

O mytop é um clone do comando top para o MySQL. Ele é usado para monitorar a performance do seu banco, sem precisar de softwares caros, complexos ou pesados. Ele é escrito em Perl e abaixo está um mini-roteiro de como instalá-lo – no meu caso, Mac OS Mountain Lion.



Antes de compilar o mytop é necessário instalar o pré-requisito DBD-Mysql. No terminal, digite:
  1. perl -MCPAN -e 'shell'

Em seguida, execute:

  1. get DBD::mysql
  2. exit

Ao sair do prompt do cpan, digite:

  1. cd ~/.cpan/build/DBD-mysql-<version>/
  2. perl Makefile.PL--testuser='mysql_user_name' --testpassword='mysql_passwd'
  3. make
  4. make test
  5. make install

Faça o download do pacote porque já é hora de compilá-lo:

  1. tar -zxvf mytop-<version>.tar.gz
  2. cd mytop-<version>
  3. perl Makefile.PL
  4. make
  5. make test
  6. make install

Execute o mytop pela primeira vez:

  1. mytop

Pode acontecer o seguinte erro:

  1. Error in option spec: "long|!"

Caso esse erro aconteça, é necessário editarmos o mytop. Abra o arquivo – aqui instalado em /usr/local/bin e edite a linha 159:

  1. "long|long_nums|l!" => \$config{long_nums},

Além disso, substitua as linhas 958 e 959 pelas linhas seguintes:

  1. if ($host)
  2.     {
  3.         $host =~ s/^([^.]+).*/$1/;
  4.         $thread->{Host} = $host;
  5.     }

Usando o mytop

Você pode monitorar seu banco passando as configurações de conexão via shell:

  1. mytop -u 'seuusuario' -p 'suasenha' -h 127.0.0.1 -d 'seubanco'

…ou pode criar um arquivo .mytop em sua pasta de usuários, como o abaixo:

  1. user=seuusuario
  2. pass=suasenha
  3. host=127.0.0.1
  4. db=seubanco

WordPress Plugin: Fast Flickr

1 de julho de 2012 ~ Comente! ~ Tags:,

Portuguese version / Versão em português
Fast Flickr is a fast way to show a Flickr set using a lightbox window.

Demo:

IMG_3258 IMG_2546 moto_0508 IMG_1591 IMG_1354 IMG_1353 IMG_1029 IMG_0927

Uso:

  1. Download files, copy the folder (fastflickr) into /wp-content/plugins;
  2. Active the plugin;
  3. Use in your posts or pages:
  1. [ fastflickr set=SET ID ]

The original source code is avaliable on GitHub.


Plugin WordPress: Fast Flickr

1 de julho de 2012 ~ Comente! ~ Tags:,

Apesar do Flickr não ser mais o mesmo de antes, precisei em um trabalho exibir as fotos de um set em uma janela estilo lightbox. Em 2006 tinha escrito um plugin tosco e resolvi escrever algo novo.

Demo:

IMG_3258 IMG_2546 moto_0508 IMG_1591 IMG_1354 IMG_1353 IMG_1029 IMG_0927

Uso:

  1. Faça o download dos arquivos, copie-os para seu diretório de plugins;
  2. Ative o Fast Flickr em seu administrador;
  3. Use em seus posts ou páginas:
  1. [ fastflickr set=ID DO SET ]

Foi algo que escrevi em poucas horas e faz apenas o básico. O código está no GitHub.


Atualizando o MacBook Pro

29 de maio de 2012 ~ Comente! ~ Tags:

Estive um mês de férias na Califórnia, com direito a visitas a Cupertino na Apple e a Stanford. Aproveitando minha vinda aos Estados Unidos, resolvi fazer um upgrade na minha máquina, trocando memória RAM, substituindo o HD original por um drive SSD e também trocando o SuperDrive pelo HD original. Esse não é um upgrade inédito, o Fábio Akita já fez e o Rafael Gimenez também.

Porque fazer

  • Porque não tinha grana para comprar um MacBook Air;
  • Porque ainda que tivesse grana para um MacBook Air, não poder fazer trocar memória era algo que me incomodava;
  • Porque abrir Macs é divertido.

Lista de compras

Optei por comprar tudo na Amazon, por ter preços mais baixos. A lista:

  1. 8 GB de RAM: teoricamente seria o máximo suportado pelo MacBook Pro, embora seja possível usar 16 GB
  2. Drive SSD: optei pelo OCZ Vertex 3 por ver muita gente usando em MacBooks semelhantes ao meu
  3. Case para Super Drive: esse case é parecido com o driver externo que a Apple vende para o MacBook Air
  4. Data Doubler: case para acomodar o HD no lugar do antigo drive de CD
  5. Jogo de ferramentas: comprei um kit bem bacana ‘especifico para Macs’
  6. CD ou imagem devidamente montada do instalador do Mac OS.

Como fazer

Antes de abrir a máquina, tenha certeza de que você tem um backup atualizado. O Time Machine é perfeito para isso, pois após instalar o Mac OS no novo disco você pode restaurar sua pasta de usuários e aplicativos instalados no HD antigo.

Para abrir o mac, você vai precisar de uma chave Phillips 00, uma chave T6, e um Spudger, que no meu caso estavam entre as ferramentas do kit. Ao abrir a máquina, a primeira coisa a ser feita é desligar o conector da bateria. Eu não vou entrar em detalhes sobre esse processo, uma vez que recorri ao iFixit. Ele explica didaticamente como trocar os pentes de memória RAM, como substituir o drive de cd por um segundo HD e como trocar o disco rígido.

Após fechar o Mac, é hora de instalar o sistema operacional, usando o cd original ou um pendrive / HD externo com o instalador montado. Para ver o gerenciador de inicialização, segure option imediatamente após ligar o computador. Deverão aparecer a partição que possui o instalador e o seu antigo Macintosh HD. Quando instalar o Mac OS, tenha certeza de que está instalando no disco certo.

A restauração do Time Machine é coisa linda de Deus. As únicas coisas que quebraram aqui foram alguns apps da Adobe e alguns arquivos da pasta /etc, que aparentemente não são restaurados.


Página 1 de 3212345Próximo ›Último »

Últimos textos do blog

Tagcloud

abraweb acadêmico actionscript ajax apache apple arteccom asp autosimulado backup benchmark beta bh blogosfera bookmarklet bookmarklets brasil browser censura chrome chucknorris cms codestacker concurso crítica css dashboard deployment desenvolvimento design dicas divinópolis dotmac download dreamhost economia editor empreendedorismo empreendorismo encontro estatísticas extreme programming feedburner firefox fireworks flash flickr ftp game git globo gmail golive google greasemonkey guerrilha hack host howto htaccess html humor ie inss internet banking iphone ipod is® javascript jquery layout leopard linux listas live locomotive mac meme microsoft miguxês minasonrails mod_rails mp3 msn mysql off tropic opensocial opera orkut oscommerce parser passenger pc personalidade pesquisa php plugin plugins pog portfolio produtividade publicidade rails raspberry refurbished regex resenha review ria rss ruby rádio safari sandbox screencast screensaver script.aculo.us seo shoutcast silverlight software spam startup stevejobs subversion suporte swf switch são paulo teste textmate trabalho tumblelog tumblr tutorial twitter ui uml usabilidade validação viral wallop web2.0 webalizer webdesign webdevelopment webkit webmail webmobile webobjects webstandards windows wordpress xml yahoo youtube

Veja todos os textos →