Um post de raiva e horror

Usando este humilde espaço eu gostaria de declarar meu ódio por:

  • Notação hungára
  • Funções/métodos com mais de 50 linhas
  • Código sem documentação
  • Métodos de indentação absurdos
  • Código com estruturas de repetição/seleção sem definição de inicio e fim de blocos de código. Por exemplo:
    [code]if (condicao) codigo();[/code]
    ao invés de:
    [code]if (condicao) {
    codigo();
    }[/code]
  • Código díficil de ler sem uma razão específica
  • autoconf, automake, autoheader, etc. Embora, felizmente, já não precise mais usa-los com frequência.

A revolução do Xml: tecnologias para o futuro da Web

A eXtensible Markup Language – XML, tem tido um importante papel no desenvolvimento da Web e no aumento da interoperabilidade entre sistemas nos dias de hoje, embora não seja a solução para todos os problemas de interoperabilidade.

Na internet é possível encontrar diversos artigos e tutoriais sobre XML e suas tecnologias relacionadas (DTDs, Schemas, etc). Um dos meus preferidos, é o The XML Revolution: Technologies For the Future Web e, ainda que não tenha sido atualizado desde 2003, é uma excelente fonte de informações.

Por fim é importante ressaltar que existem várias bibliotecas com suporte a XML para C e C++. Mais sobre o assunto nos próximos posts da série, aonde irei analisar as características de algumas bibliotecas.

Testando a distribuição na spec de um RPM

Eventualmente é preciso testar, no arquivo de spec de um RPM, qual a distribuição na qual está sendo gerado o rpm, desta maneira tornando possível modificar, por exemplo, as dependências de um pacote de acordo com a distribuição. A solução não é das mais limpas, uma vez que é preciso criar uma macro para cada distribuição, mas funciona para os casos mais simples.

A solução que encontrei foi a seguinte:

Continue reading “Testando a distribuição na spec de um RPM”

Top 10: ferramentas de desenvolvimento para Linux/*BSD

Baseado nas ferramentas de desenvolvimento que eu mais uso no dia a dia, resolvi fazer uma lista “top 10” com as mais legais e úteis. Certamente a lista varia de acordo com o tipo de aplicação que você desenvolve, linguagem utilizada, etc. Esta lista é baseada nas minha realidade como desenvolvedor C/C++:

Continue reading “Top 10: ferramentas de desenvolvimento para Linux/*BSD”

Site a prova de idiotas

“Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning” – Rick Cook .

Já viu um site a prova de idiotas? Não, conheça um aqui. Nós, programadores, desenvolvedores e engenheiros temos um longo caminho a percorrer até vencer a corrida contra o universo, com sua imensurável capacidade de produzir idiotas maiores e melhores.

* Programação atualmente é uma corrida entre engenheiros de software esforçando-se para construir maiores e melhores programas a prova de idiotas e o universo, tentando produzir maiores e melhores idiotas. Até agora o universo está ganhando.

Conio.h no Linux/*BSD

Provavelmente uma das maiores dúvidas dos novatos em programação, com algum background em desenvolvimento em DOS/Windows, e que começam a tentar desenvolver usando o GCC (quase sempre em Linux) é “aonde encontrar a conio.h“. Portanto, senhores, eu lhes respondo: vocês não encontrarão, por padrão, a conio.h no GCC – e, por consequência, no linux. Aqui vão 2 maneiras de implementar as funcionalidades da conio.h:

– Implementando-a diretamente usando ANSI Escape Codes.

– Através da ncurses.

Destas duas a mais recomendável é usar a ncurses, uma vez que é uma biblioteca madura, bem testada e com uma ampla gama de funcionalidades.

RPM Guide & Maximum RPM

Pessoalmente eu acho o formato RPM uma maneira bastante prática de distribuir softwares¹ para Linux, especialmente quando o aplicativo tem que ser distribuído em formato binário e não é possível distribuir os fontes. Se você, ainda não distribui seu software em formato RPM, dê uma lida no RPM Guide e no Maximum RPM e veja como é facil.

¹ Estou falando especificamente de software proprietário, de caixinha, que muitas vezes é distribuido em vários formatos absurdos e sem qualquer integração com o SO.

Gerando arquivos core de processos em execução

Eventualmente é necessário depurar um processo atualmente em execução sem que o processo seja iniciado através do gdb. Nem sempre é possível reiniciar um serviço atualmente ativo. Mas isso tem uma solução simples, o gdb permite que você anexe processos a ele, desta maneira permitindo gerar arquivos core, analisar a stack e um monte de outras coisas uteis. Este pequeno tutorial mostra como fazer isso.
Continue reading “Gerando arquivos core de processos em execução”