Ir para o conteúdo
ou

Software livre Brasil

Tela cheia
 Feed RSS

Gustavo Dutra - Um pouco de tudo, nada de pouco

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

Vim e suas gerações

7 de Outubro de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Vim, um editor para todos.

Vim Man Vim Nerd Vim Boy Vim Woman Vim Kid

Engenharia de Software

4 de Outubro de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Faz um tempo que quero escrever algo sobre engenharia de software, pois tenho aprendido muito disso nos últimos 6 meses, principalmente. Na verdade, tudo parte de observações e leituras que fiz por ai. Às vezes elas foram forçadas por professores ou espontâneas a ponto de eu apenas saber.

Inaugarado o blog da F1 Soluções, que não é a empresa na qual trabalho, mas é do mesmo sócio e ainda tenho grande participação no processo de desenvolvimento de software da mesma, eu resolvi postar algumas coisas lá. Fiz, então, meu primeiro post sobre engenharia de software. O post se chama Filosofando sobre Engenharia de Software.

Críticas aqui ou lá, lerei os dois comentários. Até mais!



Usando Vim dentro do Eclipse

1 de Setembro de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Pois é, quem nunca mexeu com java que atire a primeira pedra. Trabalhar com java fora de um IDE é realmente muito ruim. Mas deveria eu criar uma IDE em modo texto para o Vim ou ver alguma solução para o meu problema no google?

Eu já sabia da existência, mas nunca tinha visto um motivo para fazê-lo. Trata-se do vim ou gvim dentro do Eclipse. Alguns motivos que me tentaram a usá-lo:

  • Compilar é muito mais simples no eclipse.
  • Achar arquivos em pacotes é mais fácil com o Project Browser
  • Pode-se utilizar outros plugins do Eclipse, como o de modelagem pra Swing, AWT, etc
  • Integração com o SVN

Instalação

A instalação está descrita no próprio site do Vimplugin, e pode ser encontrada em http://vimplugin.org/installation.

Na configuração, ignore o campo de porta e senha, deixe como está. Apenas passe o caminho para o vim (geralmente /usr/bin/vim ou /usr/bin/gvim) e marque a opção “Embed vim to eclipse”. Pois se ela não estiver marcada, o vim é aberto externamente. Com o gvim, ao invés do vim, o eclipse coloca até os menus e toolbars, caso não estejam escondidos com o guioptions.

Pelo fato de se poder especificar argumentos opcionais para o vim, é possível fazer um .vimrc específico para utilização com o Eclipse. Muito útil.

Utilização

Para abrir um arquivo pelo vim: Botão direito sobre o arquivo > Open with > Vim.

Todas as funcionalidades estão presentes. Só não consegui fazer funcionar o DELETE, tem que ser no backspace ou x. Pode-se abrir vários arquivos em buffers e/ou abas, usar macros e substituições por expressões regulares, igual como quando independente.

Conclusão

Ainda prefiro o (g)vim sozinho, é mais leve e prático. Mas convenhamos, para java, talvez essa realmente seja a melhor opção. Alguém tem crítica sobre outros plugins?



Várias Dicas Simples de Legibilidade de Códigos PHP

14 de Agosto de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Faz um tempo que venho observando códigos que considero estranhos. Apesar de entendê-los, são necessários um esforço e um tempinho disponível. Alguns ainda exigem uns debugs ou até mesmo perguntar ao autor qual foi a intenção daquele trecho.

Baseado nisso e no comentário que recebi recentemente e inspirado pelo post de um amigo, vou fazer uma lista de coisas que proponho. São coisas simples, mas que facilitam na manutenção.

Umas das coisas que aprendi com Uncle Bob (Robert C. Martin), no seu livro Clean Code foi: escrevemos o código apenas uma vez, porém o mesmo é lido várias vezes. Então, não custa usarmos 5min a mais documentando alguma coisa ou escrevendo variáveis legíveis, que nos pouparão tempo mais tarde!

1. Clareza e objetivadade nos nomes das variáveis

É incrível como as pessoas conseguem dar nomes criativos para variáveis. O alfabeto tem tantas letras que formam tantas palavras, por que insistem em usar apenas 1 letra como nome de variável? Pior, Por que usar sempre as mesmas?

$d = 3;
$dias = 2;

A primeira variável simplesmente não diz nada. Olhando ela não se consegue ter noção nenhuma do que ela representa, o que é o 3? Do mesmo modo se aplica a segunda variável, sabemos que são 2 dias, mas 2 dias não nos diz nada também. Olhando assim, só sabemos a unidade de medida!

$dia_vencimento = 3;
$qtde_dias_para_pagamento  = 2;

Há quem reclame do tamanho das variáveis. Mas hoje em dia, que editor não auto-completa para você? Se o seu não, por favor, considere trocar =).

O que se deve cuidar ao se nomear uma variável, é não por algum nome que venha a ter mais de uma possibilidade de significado. Por exemplo:

$valor_frete_desconto = 11.3;

O valor acima citado, é referente ao desconto dado ao frete, ao valor do frete a ser descontado ou o valor do frete com o desconto? Eu não afirmo nenhuma hipótese à partir do nome dado. Se me perguntarem, eu diria que olharia o código para afirmar. Por tanto, seja CLARO E OBJETIVO.

$valor_frete = 13.4;
$valor_desconto_frete = 2.3;
$valor_frete_descontado = $valor_frete - $valor_desconto_frete;

Caso o desconto do frete seja aplicado com porcentagem:

$pct_desconto_frete = 10;
$valor_frete = 13.4;
$valor_desconto_frete = $valor_frete * ($pct_desconto_frete / 100);
$valor_frete_descontado = $valor_frete - $valor_desconto_frete;

A melhor coisa em relação às variáveis é justamente o fato de omitir o valor atrás de um nome inteligível. Por tanto, sempre que possível, esconda os valores, a legibilidade aumenta muito!

    $arr_usrs = array();
    for ($i = 0; $i < count($users); $i++) {
        if ($users[$i][3] == 4)
            $arr_usrs[] = $users[$i];
    }
    return $arr_usrs;
}

Pergunto:

  • $arr_usrs é uma lista gerada à partir de que dados?
  • O que é o índice 3 do array usado no if ?
  • O que diabos quer dizer == 4?
  • O que devo esperar que $arr_usrs contenha?
define("STATUS", 3);
define("ATIVO", 4);
    $contatosAtivos = Array();
    for ($i = 0; $i < count($contatos_do_usuario); $i++) {
        $contato = $contatos_do_usuario[$i];
        $status_do_contato = $contato[STATUS];
        if ($status_do_contato == ATIVO)
            $contatosAtivos[] = $contato;
    }
    return $contatosAtivos;

Acho que não preciso explicar o código, não é?

Outra coisa interessante, CUIDADO com as variáveis de duplo sentido.

$total = count($usuariosDoBanco);

$total recebeu o total de usuários do Banco de Dados ? o total de usuários de um determinado banco (BB, Santander, etc) ?

Sugestão:

$total = count($usuarios_cadastrados);

ou, para o outro caso

$total = count($clientes_santander);

Eu sei que muitas vezes é difícil escrever códigos de forma bonita, mas o esforço vale a pena! Além de ser um diferencial profissional, trabalhar no meio da zona é prejudicial a você mesmo!

Lembrou de algo? Tens outras dicas? Comenta aê!



Criando apresentações Power Point pelo Vim

26 de Julho de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Essa semana eu precisei de uma apresentação Power Point. Abri o Impress, o editor de apresentações do OpenOffice. Comecei meu raciocínio sobre a apresentação. Quando me dei conta, estava colocando negrito e identando um parágrafo. Ao reler o parágrafo, havia 3 erros de gramática. Foi a gota d’água: Não consigo criar apresentações, pensei.

Quando eu vou escrever em algum programa de qualquer suíte de escritório – openoffice, koffice, etc -, eu geralmente me preocupo mais com o negrito da palavra, com identação do parágrafo do que com o conteúdo em si. Isso é um pecado.

Meu primeiro instinto foi: vou escrever tudo no Vim, depois colo no Impress. Boa! Ok, mas e quanto às páginas?
Vou ter que por página por página? Ainda sim eu teria mais trabalho. Eu teria que refazer as listas para que ficassem com as “bolinhas” à esquerda. E teria que modificar todos os títulos para negrito?

Fui pro google e achei um plugin que já conhecia no resultado: VimOutliner. Ele dita uma sintaxe muito intuitiva para hierarquisar (existe esse verbo?) o conteúdo. Algo assim:

Título do documento
 
Tópico Nível 1
	Tópico Nível 2
	: Parágrafo com alinhamento justify
	; Parágrafo fica do jeito que foi escrito
	- Item de lista
	+ Item de lista numérica

O plugin vem com documentação e um shell script que instala automaticamente o plugin. O site tem toda documentação, é bem simples.

Em http://perens.com/FreeSoftware/Outline/ é possível encontrar vários scripts que convertem o documento para outros formatos. Um deles é o vo2odp.rb, um script em ruby para converter arquivos para o OpenOffice Presentation.

Pra fazê-lo rodar, eu sofri um pouquinho. Tive que instalar o ruby (obviamente) e o rubygems. Depois de instalado:

$ gem install builder
$ gem install rubyzip

Também alterei o script, segue o patch das modificações:

29,30c29,30
< require_gem 'builder'
< require_gem 'rubyzip'
---
> require 'builder'
> require 'zip/zip'

Copie o trecho acima em um arquivo, por exemplo: /tmp/patch_vo2odp, depois execute

$ patch /caminho/para/vo2odp.rb < /tmp/patch_vo2odp

Pronto, agora só escrever sua apresentação. Lembre-se que o plugin tem uma extenção própria, a .otl. Sempre que um arquivo for aberto com esta extenção, o Vim irá carregar o syntax highlight apropriado e algumas outras opções para melhor escrever sua apresentação.

Concluída a apresentação, você pode usar

$ ruby /caminho/para/vo2odp.rb apresentacao.otl apresentacao.odp

Abra com o OpenOffice e salve como .ppt. Pronto! Você acabou de fazer sua apresentação no PowerPoint pelo Vim.

Observações importantes

  • O script não quebra as páginas dos slides automaticamente. É separado por capítulos de nível 1. Então, não escreva coisas muito longas dentro de um nível. Lembre-se que é uma apresentação e não um documento de texto.
  • Quando aberto no OpenOffice, use o negrito, sublinhado, coloque imagens, etc. Crie seu layout e não pense nisso durante a criação do conteúdo. Escreva antes e formate depois

E isso ai! Gostou? Não? Comente! Dê dicas e sugestões!