MQ Series

O Vinny, do Use Strict.net está fazendo uma série de posts documentando suas aventuras integrando o Perl com o Websphere MQ, uma das tecnlogias que eu gosto de trabalhar. Ele já começou em grande estilo, documentando em detalhes como instalar o módulo CPAN do MQ no Windows.

O Websphere MQ, para quem não conhece, é um produto desenvolvido pela IBM que, entre outras coisas, oferece transmissão de mensagens com alto grau de disponibilidade. Esse tipo de tecnlogia é comumente utilizado em grandes arquiteturas orientadas a serviço, com sistemas específicos atuando cada um na sua área de negócio.

Documentando com Docbook: aprofundando seu conhecimento

Interessado em documentar sua aplicação utilizando o formato DocBook? Aqui vão alguns links, em inglês, para aprofundar seu conhecimento a respeito (por ordem de relevância e facilidade):

Gnome Handbook Of Writing Software Documentation

The KDE Docbook Authors Guide

Introducing DocBook

http://wiki.docbook.org/topic/DocBookTutorials

DocBook Demystification HOWTO

DocBook On Windows Bliss

DocBook XSL: The Complete Guide

MySQL vs. PostreSQL

O site BR-Linux.org postou hoje um link para um artigo comparando as características do PostgreSQL e do MySQL. De modo geral, o artigo confirma a superioridade do PostrgreSQL em termos de funcionalidades, mesmo quando comparado com o MySQL e a engine InnoDB, e escabilidade e afirma que o desempenho do PostreSQL pode ser igual ou superior a do MySQL sob certas condições.

Deixando de lado todos os aspectos técnicos e, no que diz respeito a resolver os meus problemas, eu prefiro o PostgreSQL, porque considero sua documentação mais acessível e organizada e, eu sei que isso é subjetivo, porque o projeto parece ter uma relação mais saudável com a comunidade de usuários e desenvolvedores. Isso é um tanto quanto irônico, já que meu projeto open source atualmente suporta MySQL e não o PostreSQL – pura falta de tempo pra escrever o código.

Blog sobre Perl

Meu colega Vinicius, um grande entusiasta do Perl e um hacker no melhor sentido da palavra, está escrevendo um blog sobre Perl, desmistificando os detalhes da linguagem e quebrando várias concepções erradas desta linguagem (muitas das quais, admito, eu mesmo tinha até pouco tempo atrás). Recomendo seriamente.

Testando o Haiku OS

Hoje, como eu estava com algumas horas livres enquanto esperava que algumas tarefas ficassem prontas, resolvi instalar o Haiku, um clone livre do finado BeOS pra ver como ele estava.

A idéia era instala-lo em uma máquina virtual dentro do VirtualBox, já que o projeto fornece uma imagem VmWare pronta e, sim o VirtualBox trabalha com imagens do VmWare :). Não é minha intenção fazer um review do sistema, já que ele ainda não está pronto e tem coisas para serem finalizadas, apesar disso devo dizer que o resultado me surpreendeu: ele funcionou sem maiores problemas no VirtualBox. A única alteração que eu tive que fazer foi mudar a placa de rede para uma Intel PRO/1000 MT Desktop, pois a PCnet-Fast III que o VirtualBox usa por padrão não foi reconhecida. No Haiku o único problema foi conseguir instalar um navegador, já que ele não vem (???) com um navegador por padrão. Para isso baixei direto pelo linux, criei uma ISO e montei como CD pelo VirtualBox, uma operação que teve sucesso após reiniciar a máquina virtual.

Enfim, como eu disse, me surpreendi muito com o estado do sistema e tive menos problemas com ele do que com várias distribuições Linux que já tive o desprazer de usar. Outro ponto interessante do projeto é que ele é programado em C++, então é um prato cheio pra quem quiser se envolver com um projeto nessa linguagem. Se alguém quiser conferir o resultado da brincadeira, recomendo que dê uma olhada nas screenshots que eu postei aqui. Não deixe de conferir, também, a entrevista de um dos líderes do Projeto, o brasileiro Bruno Albuquerque, feita pelo MeioBit.

Funcionalidades obscuras das linguagens de programação

Recebi um link hoje, num chat via MSN, sobre features escondidas de linguagens de programação.

Ainda não li por completo, mas achei algumas pérolas, como a história de que implementações antigas do GCC tentavam executar um jogo cada vez que encontrava a diretiva #pragma nos fontes e outras já famosas como os métodos de branch prediction (previsão de fluxo??) __builtin_expect() do GCC. Não deixe de conferir.

Provendo informações uteis na linha de comando

Hoje estava conversando com um amigo sobre como prover informações úteis e ajuda decente para programas de linha de comando (aqui, preciso fazer um adendo: embora pareça arcaico pra algumas pessoas, isso é realidade para muita gente, em especial aquelas desenvolvendo pra UNIX e Linux).

Continue reading “Provendo informações uteis na linha de comando”

Modelagem UML Genérica

Recebi do meu amigo Bruno, lá de Chapecó, essa excelente modelagem UML genérica que se aplica a qualquer aplicação. Agora você não precisa mais perder tempo fazendo a análise e design. É só seguir os diagramas abaixo e tudo ficará bem.

Diagrama de Classes

Diagrama de Classes

Diagrama de Sequência

Diagrama de Sequência

Diagrama de Casos de Uso

Diagrama de Casos de Uso

Dica: Corrigindo erro da user32.lib no CMake com NMake Makefiles

No CMake, quando se usa o gerador NMake Makefiles ele costuma dar o erro:

LINK : fatal error LNK1104: cannot open file 'user32.lib'
LINK Pass 1 failed.  with 2
NMAKE : fatal error U1077: '"C:\Arquivos de programas\CMake
2.6\bin\cmake.exe"' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Arquivos de programas\Microsoft Visual
Studio 8\VC\BIN\nmake.exe"' : return code '0x2'
Stop.

Mesmo que você tenha o Microsoft Platform SDK, isso ocorre porque o linker não consegue encontrar a user32.lib. Para projetos que usam o gerador do Visual Studio você pode configurar isso seguindo as recomendações da configuração do SDK, mas para resolver este problema em projetos que usam a NMake, você precisa adicionar o path da user32.lib na variável de ambiente LIB. Você pode fazer isso na mão, após iniciar o prompt de comando do Visual Studio:

set LIB=%LIB%;"C:\Arquivos de programas\Microsoft Platform SDK\Lib"

Ou então adicionar o path nas variáveis de ambiente do sistema através da aba “Avançado” nas propriedades do sistema.

IDE online

Meu amigo Diego me passou a dica sobre o CodeIDE. Segundo ele, é um site onde pode executar códigos, suporta várias linguagens como Pascal, C++, Perl, JavaScript, HTML, e outras. Você digita o código, e mandar executar, já ve o resultado na página mesmo. O site também oferece suporte a chat e grupos, o que possibilita vc explicar o código para alguém, discutir sobre um código, etc, etc. Aqui tem um artigo sobre o site
http://blog.cidandrade.pro.br/technology/interface-online-para-ensino-de-programacao-codeide/

Eu achei o site uma grande mão na roda pra quando você quer mostrar alguma técnica ou explicar algo para alguém. Além disso, ele tem um recurso de realce de sintaxe (syntax highlight) que melhora a percepção do código.

Dica: XPath

O XPath é uma linguagem para seleção de nós em um documento XML. Entre outas coisas, é bastante utilizada quando se trabalha com XSLT. Como ela também é suportada em diversas bibliotecas ela é comumente utilizada com C (libxml2), C++ (xalan, xerces, etc), Java (jaxp, etc), Python, e muitas outras linguagens
Hoje, precisei fazer uma expressão para obter um nó somente quando o nó pai fosse igual a um determinado valor e tivesse algum atributo específico.

<paises continente=”Europa”/>
<pais nome=”Portugal”/>
<pais nome=”França” />
</paises>
<paises continente=”Africa” />
<pais nome=”Angola”/>
</paises>

Vamos supor que você quisesse obter o nó referente a Angola. Você poderia faze-lo através da seguinte expressão:

[code]
//paises[@continente=’Africa’]/pais[@nome=’Angola’]
[/code]

No caso a expressão // representa os nós descendentes ou o próprio e a expressão @ representa um atributo. A expressão completa representa um caminho para o nó (de modo análogo /usr/share ou C:/windows representam um caminho no disco rígido).
Mais sobre XPath neste excelente tutorial.