sexta-feira, 28 de abril de 2006

Compiladores (1) - Introdução

A informática saiu da sua "idade média" em parte ajudado pelo aparecimento de linguagens de programação de mais alto nível do que o assembler dos CPU(s).
Os computadores,no entanto, executam sequências de instruções muito particulares. Estas variam normalmente de versão para versão de um CPU e entre fabricantes de CPU(s).
Com as linguagens de programação consegue-se criar programas que funcionem em várias máquinas.

Para executar o código (normalmente textos numa linguagem com uma gramática bem definida) existem programas que convertem essa linguagem para a da máquina concreta. A esses programas chamam-se compiladores. Os compiladores fazem parte da computação desde os anos 50.

Um compilador é um programa complexo. Em 1958, um compilador de fortran demorava algo como 18 meses / homem a ser construído.

No inicio o maior problema dos compiladores era a quantidade de memória ram ou disco disponível. Por isso era tentava-se construir os compiladores em passo-único . Isto significa que o programa era lido e convertido apenas numa leitura do seu código fonte.

Nos últimos anos, o disco e a memória não são claramente um problema. Desta forma os compiladores evoluíram muito e a sua arquitectura actual é bastante completa, com fases bem divididas e com interfaces bem definidos entre fases.

Este post é uma introdução pois participo no desenvolvimento de um compilador da linguagem Informix 4gl. Já à algum tempo que iniciei uma mudança com os seguintes objectivos:
  • Aplicar uma arquitectura moderna (com separação clara e interfaces entre fases).
  • Atingir um nível de produtividade de produção e manutenção.
  • Criar um compilador cuja gramática (na altura da sua compilação) pode facilmente variar.

Para onde levar as baterias velhas das UPS's e outras sucatas informáticas respeitando o principio da reciclagem ?


Solução:

1) Entregar os equipamentos, ou componentes, inúteis às empresas que os
venderam para que estas tratem da sua reciclagem.

2) Levar os equipamentos e ou componentes para reciclar para o
Eco-centro da Valorsul cuja morada e horário de funcionamento são os
seguintes:

- Morada: Vale do Forno no Lumiar, Lisboa;
- Horário: Dias úteis das 10:00 às 18:00 e sábados das 9:00 às 17:00.

PS:

Como nao confio muito na Criterium vou levar as baterias velhas para o Eco-centro do Lumiar.

BITITES

A propósito de um Post sobre lenhadores, ocorreu-me postar sobre processos de trabalho. E já agora que se posta sobre a questão da standardização, porque não postar sobre a standardização de processos de trabalho?

Todos conhecemos empresas/departamentos que prestam serviços de informática. Ao fim de tantos anos de IT, o British Standards Institute (BSI) resolveu criar um grupo de trabalho com o objectivo de observar e descrever as melhores práticas neste âmbito. Nasceu assim em 1998 (salvo erro), o Information Technology Infrastruture Library (ITIL) que normaliza (não é um standard) os processos de trabalho na prestação de serviços de IT, baseado nas melhores práticas das empresas no mercado.

Tirei a certificação em ITIL e durante o curso fizémos um jogo que começava no início do curso e acabava no fim deste. É fascinante como os resultados foram melhorando ao ponto de, no final não existirem praticamente paragens. Todos sabiam o que fazer, com resultados mesuráveis.

Tenho que postar mais sobre isto...

quinta-feira, 27 de abril de 2006

Sabotagem ou desleixo?

Já só tenho uns dias mais para preencher a minha declaração de IRS e fui ao site da DGCI buscar o simulador do IRS para 2005.

Foi fácil dar com o link mas, ao segui-lo, apanhei um 404 - File not found. "Olha! Isto está mal", pensei.

Entretanto lembrei-me que já não é a primeira vez que me acontece. Acho que caio todos os anos na asneira de ir ao site da DGCI sem usar o IE ... ;-)

Lá me submeti aos desígnios do Senhor (BG) e lancei o Explorer, com o qual fiz o download do simulador.

A instalação é fraca. Não cria links nos menus nem no desktop. É preciso adivinhar (ou ler uma eventual documentação?) que há um ficheiro de HTML que tem que se abrir para se ter acesso ao simulador. Nunca ouviram falar do Nullsoft Installer? É open source e tudo!

Dou dois cliques no ficheiro e lá o abro. Aparece-me uma linda imagem e um título que parece ser um botão dizendo "(clique aqui para iniciar)".

Eu clico.

E nada.

No rodapé da imagem aparece o texto:
"Simulador de Cálculo IRS v 1.4 ©2006 DGCI.
Compatível com versões da Sun Virtual Machine (Java Plugin) superiores a 1.3."

Eu tenho uma 1.5. Deve servir...

Volto a clicar.

E nada.

Decido abrir a Java Console. E que vejo?!?!?

O simulador manda uma mensagem para a consola a dizer:
"É necessário a vm da microsoft"

PORRA!!

(respiro fundo)

Ó pessoal da DGCI: vocês andam a gozar connosco?

Desenvolver as coisas em Java é uma excelente estratégia para combater a dependência de um único fornecedor. A estratégia está bem definida. Quem é que a anda a sabotá-la?

Apache toma mais uma liderança

O servidor web Apache chega pela primeira vez à liderança nos servidores web seguros (ver mais).

Actualmente o apache detem 44 % dos sites ssl contra 43 % da microsoft.

Embora este resultado seja atribuído à inclusão do mod_ssl na versão 2, esta era já uma tendência desde 2003.

Parabéns à fundação !

quarta-feira, 26 de abril de 2006

Padrões de desenho (2) - O que são

O conceito dos padrões está presente em quase tudo. Os escritores escrevem de acordo com um padrão ; os gestores gerem (ou deviam) usando um conjunto de boas práticas, os professores ensinam com as formas concretas que aprenderam nas suas cadeiras de pedagogia.
O termo padrão de desenho foi sistematizado por um arquitecto chamado Christopher Alexander.
A grande diferença para algo que parece de senso comum foi ter proposto uma linguagem para descrição de padrões. O seu trabalho foi descrito no seu livro "A pattern language".
O objectivo de tal linguagem foi organizar o conhecimento implicito que as pessoas têm de como resolver problemas recorrentes.
Alexander disse : "Cada padrão descreve um problema que ocorre várias vezes no nosso ambiente, descrevendo depois o centro da solução (do problema), de forma a que esta (a solução) pode ser usada muitas vezes, mesmo sem nunca fazer as coisas da mesma maneira ".
Esta sistematização agradou aos técnicos de TI de forma que passaram a usá-la para o seu problema concreto.
O mais conhecido foi o famoso "gang of four" ao publicar o livro de que já falámos.
Neste define-se sistematiza-se o padrão descrevendo os seguintes elementos básicos:
  1. O seu nome - Uma ou duas palavras que rápidamente nos informam sobre o seu conteudo.
  2. O problema - Explica o problema e o seu contexto por forma a que se perceba quando usar um padrão.
  3. A solução - Descreve os elementos que compõe o desenho que resolve o problema
  4. As consequências - Os resultados obtidos e o que deve ser esperado ao aplicar o padrão.

No próximo post irei apresentar mais em detalhe como se descreve um padrão de desenho.

WWW Compatible

O post acerca do IE ter inundado o funcionalismo público, fez-me meditar um pouco acerca do assunto. Não própriamente acerca das opções do nosso governo em particular, que não passa de um espectador num espectáculo que lhe é superior.

A pergunta que se coloca é:
Porque razão as SoftwareHouses fogem às normas? Impondo as suas soluções milagrosas?

Claro que elas conhecem os Standards, muitas delas até contribuem activamente na sua normalização, no entanto há sempre uma novidade, algo inovador, etc ... este filme já vamos conhecendo. Será que as soluções apresentadas são realmente inovadoras e fazem a diferença? Será que justificam essa diferença?

Como se sabe há uma guerra desde que há www para procurar normalizar a web. Que está longe de estar ganha. Quer a prova? Mesmo no ambiente OpenSource. Faça lá o teste ao seu browser. Visite o site http://webstandards.org/action/acid2/ ficará surpreso. Conheça quais os Browsers que passaram no Teste (aqui). Claro que não ficou admirado, o IE não está lá. Mas o FireFox também não está lá. O que quer dizer que visto estes serem os dois browsers mais na moda actualmente, coloca-nos a todos fora das normas.

É óbvio que nós enquanto consumidores temos todo o interesse em ter a web normalizada, porque isso nos liberta da ditadura da industria, no entanto essa não é o interesse das softwarehouses. Que nos alicia com novidades Patenteadas que servem apenas para alimentar os seus fartos rendimentos. Um pouco à semelhança da industria farmaceutica. Apenas quando expirarem as patentes sobre as novidades, teremos uma informática realmente normalizada e democrática. Exemplo do mp3. Hoje todos os fabricantes usam o mp3 para música, porque se soube impôr no mercado e é transversal às Softwarehouses. Creio que ainda está patenteado, mas todas as empresas se renderam ao seu sucesso. Tal como já aconteceu no Jpeg no que toca às imagens, acontecerá o mesmo ao Vídeo, Ao documento escrito, etc.

Espero pelo dia em que a minha vida informática seja mais "normal".

mais alguém pensou nisto: http://ask.slashdot.org/article.pl?sid=06/05/16/2127212

terça-feira, 25 de abril de 2006

Scott McNealy deixa de ser CEO da Sun

Depois de 22 anos à frente da Sun, Scott McNealy deixa a direcção executiva e passa a ser "apenas" chairman da Sun.
Isto significa que lhe arranjaram uma prateleira dourada.

McNealy era uma das lideranças fortes de Silicon Valley e a sua saída poderá reflectir-se no funcionamento da empresa deixando-a à mercê das vontades dos investidores (cuja estratégia normalmente é apenas o valor da acção na bolsa).

Por outro lado McNealy é substituido por Jonathan Schwartz que era até aqui Chief Operating Officer. Schwartz é um conhecido tecnólogo o que pode significar que a Sun irá continuar a sua senda de inovação e diferença no mercado.

segunda-feira, 24 de abril de 2006

Copy Paste para o vim/gvim

Muitas vezes tenho de fazer copy num browser ou noutro qualquer programa e quero fazer paste do conteúdo para o vim, esteja ele numa janela de telnet ou de ssh ou local no windows o x-windows.
O que acontece é que fica tudo em escada. Quando se faz o paste ele aparentemente coloca apenas os new lines esquecendo-se do carriage return.

O Vasco ensinou-me um truque muito fiche.

Basta activar o modo paste :-) com :set paste.

Et voilá. Fazer paste já fica bem.

sábado, 22 de abril de 2006

Padrões de desenho (1)


Há algum tempo que ando a tentar usar “padrões de desenho”.

Os padrões de desenho descrevem soluções para problemas recorrentes no desenvolvimento de software .

Comecei por comprar o livro que tornou esta tendência mais conhecida. O famoso “Gof”. Gof significa Gang of Four que corresponde aos autores : Erich Gamma, Richar Elm, Ralph Johnson e John Vlissides. O nome verdadeiro é : Design Patterns: Elements of Reusable Object-Oriented Software.


Infelizmente cada vez que tentava ler o livro ficava com sono e quando precisava de os aplicar não tinha tempo para o ler.

Continuava, no entanto a precisar desta ferramenta “como de pão para a boca”. Tentei então os sites de padrões. O mesmo problema.

No entanto, há um mês atrás comprei um livro da nova coleção da O'Reilly : Head first Design Patterns.

Finalmente consegui ler e perceber vários dos padrões do principio ao fim.

Este livro tem uma abordagem bastante diferente do tradicional livro técnico. Faz-me lembrar um livro que li há anos chamado “Kermit : A File Transfer Protocol de Frank da Cruz”.

A diferença de abordagem consiste em: Apresentar os assuntos visualmente ; Usar um estilo personalizado de conversação ; Obrigar o leitor a pensar mais profundamente ; Tocar as emoções do leitor.

Ou seja : Tem muita bonecada ; Apresenta exemplos cómicos ou que façam sentido na vida real ; Comenta o código em linguagem natural.

Começo a achar que valeu a pena. Alguns dos próximos post(s) serão a apresentação da minha compreensão dos padrões que li.

sexta-feira, 21 de abril de 2006

O machado do lenhador


Há muitos anos atrás, quando os viajantes andavam a pé e as casas se aqueciam com madeira, um homem ia por uma estrada solitária e encontrou um lenhador a cortar umas árvores. Como já vinha a caminhar havia horas sem encontrar ninguém, parou e tentou meter conversa.

O lenhador, por seu lado não estava muito falador. Atarefado com o seu trabalho resmungou uma resposta mal encarada ao alegre "Boas tardes!" que o viajante lhe atirara. E o "Está um lindo dia, hoje!" recebeu apenas como resposta um olhar atravessado e carrancudo.

Aproveitando para descansar um pouco, o viajante entreteve-se a observar o lenhador no seu trabalho.

Este estava nitidamente incomodado. A labuta corria-lhe mal. As árvores recusavam-se a cair e o lenhador bufava e suava. O machado resvalava e resaltava na madeira como se esta fosse mágica e invulnerável. Com muito esforço, uma árvorezita mais franzina lá se deixava abater de vez em quando.

Depois de passar um bocado a observar este triste espectáculo, o viajante perguntou ao lenhador:
- Ó bom lenhador! Não achais que é altura de parar um pouco e afiar o machado?
O lenhador, ouvindo isto explodiu:
- Não sejais idiota! Não vedes que tenho todas estas árvores para abater e não tenho tempo para isso?!? Metei-vos ao caminho e deixai-me trabalhar!

E dito isto virou as costas ao viajante, que por sua vez pegou na sua trouxa e se fez de novo à estrada, espantado com tamanho bruto.


Moral da história: a tua produtividade é directamente proporcional à qualidade das tuas ferramentas e à tua capacidade de as usares em todo o seu potencial.

quinta-feira, 20 de abril de 2006

Disco de rede

Por causa das minhas ideias para a rede lá de casa tenho andado à procura de um disco de rede.

Aparentemente não existe muita coisa.
Houve um gadget, no entanto que me chamou a atenção.
É da Linksys e chama-se NSLU2.
Básicamente disponibiliza discos USB numa rede sob a forma de um file system SMB.

Investiguei mais um bocadinho e descobri que tem Linux lá dentro a tratar de tudo. Entretanto houve para aí na net pessoal que já andou a fazer hacking sobre ele ( ver ).

Descobri mesmo que existe uma comunidade só de desenvolvimentos sobre o NSLU2 ( ver ).

Uma das coisas interessantes é a existência de distribuições alternativas ao standard que vem da linksys. A base é o SlugOS.
Com este software pode-se modificar a box para fazer mais coisas do que aquilo para que foi desenhada (partilha de disco), nomeadamente:
  • Partilha de impressora (fazendo dele um servidor de impressão)
  • Ligar uma webcam
  • Ligar uma tape para fazer backup
  • Adicionar um bluetoth USB adapter
  • Disponibilizar os discos por NFS (para alem do SMB)
As primeiras versões só aceitavam discos formato com filesystem ext3 mas com as distribuições próprias já pode ser outra coisa coo por exemplo NTFS. A única vantagem é a possibilidade de usar os discos USB em windows, linux ou partilhados na rede.
O único senão é o preço. O animal custa 129 € na FNAC, mas existem por menos de 10 USD no eBay. E para além disso ainda tenho de comprar o(s) disco(s) USB.

Idioma RAII em C++ (2)

Desta vez deixo-vos um exemplo trivial de RAII em C++, trata-se do tratamento de ficheiros na biblioteca standard. Contráriamenet ao C em C++ não é necessário abrir ou fechar explicitamente um ficheiro onde se queira escrever ou donde se queira ler, o constructor abre o ficheiro e o destructor fecha-o. Aqui vai um pequeno exemplo:

#include <fstream>
#include <cmath>

int main(int argc, char*argv[])
{
if (argc<2)
return 1;
std::ofstream out(argv[1]);

for (double x=0.0; x<10.0; x+=0.01)
out << x << " " << sin(x) << std::endl;
}


Penso que este exemplo mostra bem que se quisermos fazer tratar um recurso do tipo socket o ideal é escrever ume pequena classe utilitária que possa gerir a abertura e o fecho do socket.

quarta-feira, 19 de abril de 2006

ANTs - Uma base de dados com ambições

O ANTs é um SGBD que tem como ambição ser uma base de dados super rápida e completamente interoperativa com os SGBD(s) existentes.

Don Haderle, um dos lideres do desenvolvimento do DB2 desde 1968 é um dos consultores responsáveis pela arquitectura deste motor.

ANTs significa : Asynchronous Non-preemptive Tasks o que quer que isso signifique :-)

Tem algumas características interessantes:
  • Não tem locks e desenvolveram uma teoria que diz que eles não são necessários
  • Permite modificações simultâneas a uma linha desde que a colunas diferentes
  • Afirma ser 15 vezes mais rápida que as bd(s) relacionais existentes
  • Tem suporte para as stored procedures de Oracle, Informix, SQL server e outras
  • Os query(s) funcionam com as sintaxes das várias bases de dados
É de homem lançar uma nova BD nesta altura do campeonato em que mesmo os fabricantes existentes metem em causa se conseguem continuar a ganhar dinheiro. Estaremos aqui para ir seguindo esta história.

Idioma RAII em C++ (1)

Aproveito o curso de C++ que estou actualmente a leccionar para discutir algumas técnicas interessantes. Hoje apetece-me falar de RAII, ou seja Resource Aquisition Is Initialization, um idioma que pode fácilmente ser implementado em C++ e que pode resolver muitas dores de cabeça.

Quem vem do C já foi muitas vezes confrontado ao problema da libertação dos recursos, um exemplo clássico (em C++) será:


void my_func()
{
...
char *my_val=f();
...
delete my_val;
}

char *f()
{
...
char * res=new char;
return res;
}


Esta solução é pouco elegante e potencialmente perigosa: o utilizador de f() pode esquecer-se de libertar a memória gerando uma fuga de memória (memory leak).

A solução do problema passa pela utilização de uma classe que assegure a libertação automática da memória, ou seja o pointer passará a ser gerido por um objecto que libertará a memória no destructor, como este é chamado automáticamente deixa de ser necessário chamar manualmente o delete. Usando a livraria standard isto daria:

void my_func()
{
...
std::auto_ptr<char> my_val=f();
...
}

auto_ptr<char> f()
{
...
std::auto_ptr<char> res(new char);
return res;
}


Neste exemplo o destructor de auto_ptr é executado automáticamente no fim de my_func o que provoca a libertação da memória sem nenhuma intervenção do programador.

Um livro sobre um pouco de tudo

Para quem não conhece, o livro chama-se "Freakonomics" e o autor é o Steven D. Levitt. O tipo é economista mas diz que não percebe nada de matemática nem de econometria, limita-se a tentar encontrar explicações para as coisas.
Por exemplo, por que é que o crime nos EUA desceu vertiginosamente nos anos 90, quando estava numa escalada com progressão quase geométrica? O autor demonstra que foi por causa da decisão do Supremo nos anos 70, de autorizar o aborto. A lógica é que, os criminosos, pura e simplesmente não nasceram.
Existem mais observações igualmente interessantes.
A não perder
BITITES

terça-feira, 18 de abril de 2006

O que é uma POOL ?

Tenho andado a fazer implementações de mecanismos de pooling em Java 2 Enterprise Edition.
Como me parece um conceito algo lato tentei a abordagem do dicionário. Alguns mostram que de facto a palavra é usada para muita coisa. A definição mais comum é "piscina".
A que mais me agradou foi o que descobri na wikipedia, onde pooling é apresentada como uma técnica para guardar qualquer coisa que já não é necessária em determinado sitio (a que se chama pool) com o objectivo de a usar quando necessário optimizando assim a utilização de recursos disponíveis.

Partindo para a computação, existem vários tipos de pools:
  • Thread Pool - Conjunto de threads livres que se vão adicionando a um fifo quando não necessárias e retirando quando se quiserem usar.
  • Memory Pool - Conjunto de blocos de memória, todos da mesma dimensão, que se alocam inicialmente e usam à medida que necessário garantindo que o tempo de alocação de memória é constante e a fragmentação minima.
  • Connection Pool - Conjunto de conexões livres a um recurso remoto que são usadas quando necessário. Evita consumir muito tempo a estabelecer conexões muitas vezes.
De todas as definições fico sem resolver o meu principal problema:
  • Todos os elementos numa pool são iguais ?
  • Dentro de uma pool podem existir elementos subconjuntos (ex: numa pool de conexões podem existir conjuntos de vários utilizadores diferentes sendo o pedido à pool efectuado por chave) ?

segunda-feira, 17 de abril de 2006

Afinal tinha mais um linux em casa

Afinal o meu router wireless tem um linux lá dentro ( ver artigo ).

Faz algum sentido já que o linux funciona em processadores com baixo consumo, que aquecem pouco e que chegam perfeitamente para resolver tarefas mais especializadas.

Já agora. Estou a montar em casa mais um linux, agora numa set-top box (a dream que podem aqui ver ). Uma das coisas que me permite é montar um disco de nfs ou cifs e aceder aos mp3, fotos, divx que lá tiver e visualizá-los na TV. Quero comprar um disco de rede e não faço ideia o que hei-de comprar. Alguém tem alguma ideia ?

Ando também a ponderar mais outro dispositivo Linux. Trata-se da Fritz!Box .
E um dispositivo que tem modem ADSL, router wireless, ligação de linha telefónica analógica e de dois telefones analógicos. Tem Qos. Faz dele o dispositivo ideal para ter numa rede caseira. Dá para usar Voip, rede sem fios e ADSL.

quinta-feira, 13 de abril de 2006

Atalhos na linha de comando do bash

O bash é talvez o shell mais usado tanto em Linux como em windows (o default do cygwin).
Fui alertado por um colega de que a maioria das pessoas apenas sabe usar a seta para cima e para baixo para escolher o comando anterior e o comando seguinte.
Podem aceder a uma artigo mais detalhado no Linux Br sobre os atalhos do bash.

Ficam aqui os meus atalhos preferidos :
  • Fazer uma pesquisa : Control-r seguido da string a pesquisar (control-r novamente segue para o comando seguinte).
  • Mover cursor : Para o inicio - Control -a ; Para o fim - Control-e ; Para o inicio da palavra corrente - Esc B ; Para o fim da palavra corrente - Esc-F
  • Apagar até ao final da palavra - Esc-D
  • Apagar a linha toda : Control-U
  • Limpar o ecrã : Control-L
  • Executar directamente o último comando começado por uma string : !str
  • Executar o último comando : !!

quarta-feira, 12 de abril de 2006

Regras para sites de serviço público

Para uma coisa tão simples como saber se um avião partiu à hora do aeroporto de Lisboa sou obrigado a usar o Internet Explorer (ver o meu post aqui).

Numa época em que tanto se fala da defesa do consumidor por que razão os serviços públicos não são obrigados a um minimo de compatibilidade com as normas?

terça-feira, 11 de abril de 2006

Livros técnicos livres

O nosso companheiro bloggista António Mota apontou-me um site que contem edições on line de livros.

Alguns deles estão licenciados em GPL outros nem por isso.

A maioria está disponível em HTML.

Podem aceder em http://www.freebookzone.com

Método de Monte Carlo

Este meu primeiro post é para vos apresentar de uma forma lúdica um método muito utilizado na matemática computacional. Trata-se do método de Monte Carlo. O nome vem do facto de a geração de números aleatórios estar na base do método, e de o Mónaco ser conhecido pela roleta que é um excelente gerador de números aleatórios.

Históricamente o primeiro exemplo é o cálculo de π realizado por Buffon no século XVII, usando uma agulha e um soalho. Mais fácil de compreender é o seguinte método de cálculo de π. Tiramos à sorte pontos num quadrado de lado 1 (usando uma distribuição uniforme) conta-se o número de pontos que ficam dentro do quarto de círculo de raio 1, a proporção de pontos no circulo é uma aproximação da proporção entre a área do quarto de cículo e a área do quadrado, ou seja π/4.

Este método usa-se em inúmeros problemas nomeadamente em física e na simulação dos mercados financeiros.

Se quiserem ver um programa em C que utiliza o Método de Monte Carlo para verificar a solução do problema de Monty-Hall vejam aqui.

Fica aqui o desafio: quem é o primeiro a publicar um programa para aproximar π (ou π/4) pelo método de Monte-Carlo?

Red Hat compra JBoss

A JBoss chegou a acordo com a Red Hat para ser comprada (ver anuncio).
A JBoss é uma companhia criada por alguns developers do servidor aplicacional JBoss para vender serviços (desenvolvimento, instalação, formação) sobre este produto.
O sucesso foi tal que chegaram aos 200 empregados no final do ano passado e o seu servidor é por muitos considerado o servidor aplicacional de Java mais usado (a contabilização é dificil e discutível).

A Red Hat até aqui vendia serviços sobre o Jonas - um produto livre mas concorrente.
Com esta aquisição a Red Hat posiciona-se com uma oferta completa nas componentes para aplicações Java 2 Enterprise Edition.

Vamos ver se 1 + 1 = 2.

Bitaites avulso

No dia 10 de Abril do ano da graça de 2006 aceitei com prazer aderir à nobre arte de blogar.
Não tenho qualquer experiência nestas lides e não prometo pormenores técnicos de elevado gabarito.
Para citar qualquer jogador da bola da nossa praça, vamos continuar a trabalhar e a pensar Post a Post, as vitórias surgirão naturalmente.

Lanço desde já uma acha para a fogueira das novas tecnologias.
Não se aprendeu nada com o passado!? Surgiram duas normas para DVDs de elevada capacidade. Sou eu que estou a ficar velho ou já existiram os sistemas de video VHS e Beta, com o consequente prejuízo para quem adquiriu equipamentos da norma que não vingou?

Lá vamos ter de esperar para ver o que os maiores mercados vão adoptar para depois tomar uma decisão...
main() {
printf("Olá mundo da programação e tecnologia\n");
}