Avançar para o conteúdo principal

Mensagens

A mostrar mensagens de abril, 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 signifi

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álcul

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 form

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

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.

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.

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 qu

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 espe

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 di

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.

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

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. Connect

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.

Atalhos na linha de comando do bash

O bash é talvez o shell mais usado tanto em Linux como em window s (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 : !!

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?

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 p

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.