quinta-feira, 14 de dezembro de 2006

Software Factories

Há muitos que consideram que o ciclo de desenvolvimento e manutenção de software, está demasiado complexo e dispendioso, sendo necessário algo mais do que modelos, patterns e metodologias mais ou menos menos ágeis.

Algo também recentemente abordado neste fórum sobre a complexidade do J2EE e que o CASE/RAD tentou resolver a partir dos anos 80 mas sem sucesso.

A Microsoft já tinha feito em 2004 um pouco de luz sobre a coisa, com a publicação do livro Software Factories e artigos, assunto que tem não só sido debatido e desenvolvido em alguns sites da Microsoft mas também em outros, mais, e mais, basta uma pesquisa no Google, ou similar, ou ver na Wikipedia, para nos apercebermos que a discussão mal ainda começou.

As DSL - Domain-Specific Language fazem lembrar a construção de compiladores, mas mais simples, tudo (ou quase) construção modelar gráfica e com geração de código a 100% (ou quase).

Trata-se de um assunto controverso, mesmo problemático, e nem todos vão chegar a um acordo (o que é normal, e soluções diversas é melhor do que nenhuma solução), mas este mês o jornal de arquitecturas (da Microsoft) é dedicado inteiramente às Software Factories, vale a pena ! a edição online não tem todos os artigos disponíveis (as edições anteriores estão lá na integra), mas a versão integral é gratuita e só têm de fazer um registo para terem acesso ao PDF respectivo, em várias línguas, e podem pedir também uma edição (gratuita) em papel.

Mas nada como ver estas coisas na prática, porque de falar já andamos todos um pouco cansados, vamos lá experimentar, têm uma Software Factory disponível em máquina virtual aqui. Que tal ?

quarta-feira, 13 de dezembro de 2006

Na vida há três coisas seguras: a morte, os impostos e os computadores que perdem os dados

Deve ser por influência da onda mística do milénio. A malta parece acreditar que as tecnologias de informação são qualquer coisa de mágico. Mas, de facto, trata-se apenas de máquinas construídas por engenheiros muito espertos. :-)

Em todos os ramos de engenharia sabe-se uma coisa fundamental: as máquinas avariam sempre. Mais tarde ou mais cedo. Mas sempre. Nunca falha.

Se calhar, os computadores deviam ser vendidos com uma banda semelhante aos maços de tabaco, a dizer: "ESTE COMPUTADOR VAI PERDER OS DADOS QUE LÁ ESTÃO REGISTADOS E NÃO HÁ NADA QUE O POSSA IMPEDIR".

Portanto façam backups. Tenham computadores de reserva. Preparem-se, porque a avaria vem aí. Só não sabemos quando. A crer na sabedoria popular e nas leis de Murphy, será na altura em que o computador faz mais falta.

Vem isto a propósito de quê? É que uma organização nossa conhecida teve ontem um percalço absolutamente desnecessário: têm a base de dados corrompida por uma provável falha no hardware e o último backup é de há 3 semanas atrás. Para cúmulo, há seis meses atrás, o servidor já tinha avisado que o disco se estava a queixar de uma provável falha e que devia ser substituído.

É uma pena que ainda haja quem pense que a informática é milagreira. Não é.

quarta-feira, 6 de dezembro de 2006

"Número de desempregados licenciados quadruplicou"

Há uns dias apareceu esta notícia por aí. A frase não conta a verdadeira história, e é alarmista. De facto, não nos diz uma coisa fundamental: quanto tempo levou a dar-se este aumento. Também não nos podemos esquecer que o desemprego de licenciados tende a aumentar no final dos anos lectivos. Mas isso são pormenores de somenos importância, para quem está essencialmente preocupado com aumentar as audiências ou tiragens, mesmo que seja à custa de desinformação ou alarmismos desnecessários.

Enfim, a notícia está exagerada. O que não quer dizer que seja falsa e que o problema não exista. Há, realmente, um número cada vez maior de licenciados à procura de trabalho. E o que fazer em relação a isto? O fundamental, parece-me, é que as licenciaturas têm que dar algo mais que o canudo ao fim dos anos de estudo. Vejamos o caso da informática...

Ao longo dos últimos anos tenho estado frequentemente envolvido em processos de contratação de colaboradores para o desenvolvimento de sistemas de informação, que é a actividade principal da nossa empresa. E o que me é dado a observar é que há cada vez mais gente a ostentar orgulhosamente uma licenciatura num qualquer tipo de informática. Infelizmente quando, durante as entrevistas, se procura avaliar a capacidade técnica dos tais licenciados, chega-se à conclusão que uma boa parte deles andou a ser enganado e a licenciatura não os torna minimamente qualificados para a profissão. De facto, uma confrangedora percentagem destes licenciados não têm mais capacidade do que aquela que lhes permite andar pelas empresas a instalar PC's, configurar impressoras e pouco mais. Ora isto dificilmente lhes permitirá arranjar trabalho...

O meu conselho aos actuais estudantes de informática é o seguinte: avaliem o vosso curso logo que possível - se está a ser fácil, desconfiem!

A informática não é fácil. É complexa, dinâmica e muito trabalhosa. Se a vossa licenciatura não corresponde a esta imagem, o melhor mesmo é mudarem de escola ou de curso. Ou isso ou arriscam-se a engrossar as estatísticas dos licenciados desempregados.

segunda-feira, 4 de dezembro de 2006

SIMPLEX 2007: Uma oportunidade a não perder

O tão falado programa SIMPLEX vai ter uma versão 2007. A versão corrente foi algo criticada, como não podia deixar de ser. A versão 2007 está actualmente em consulta pública no site da Unidade de Coordenação da Modernização Administrativa.

Sendo que as Tecnologias de Informação são um pilar fundamental de qualquer modernização das organizações, sugiro a todos os leitores que dêem uma olhadela pelo programa, gastem um bocadinho de tempo a pensar nele e, se lhes ocorrer, façam sugestões.

segunda-feira, 13 de novembro de 2006

Ultimate Programming Language

Há já alguns anos que programo e tenho notado que há uma discussão que é sempre actual.

Qual a linguagem de programação definitiva. A melhor que as outras todas? Aquela que toda a gente deve de aprender, porque é sem sombra de dúvida melhor.

Será o Java? Será o .Net? O Perl? O Ruby? O C/C++? o Cobol? o Smaltalk? o LISP? o PHP? o ASP? o J2EE? ETC ...

Encontro um paralelo na discussão de qual melhor a Arte Marcial de todas. Será o Karaté, o Judo, o Jiu Jitsu, o Kempo, o Kung Fu o Taekwondo, o Tai chi Chuan, etc.

Penso que a resposta acaba por ser idêntica! Nos vários Campeonatos organizados para avaliar qual das artes é melhor, numas vezes ganhava uma, noutras ganhava outra. É impossível alguém assegurar que a arte A é sem dúvida melhor que a arte B. Até porque de vez em quando aparece alguém excepcional numa arte que é capaz de surpreender tudo e todos. Mais tarde aparece outro que ganha destaque noutra arte, etc. O que conta é a eficácia que cada um tem na arte que domina. Sempre levei em consideração a máxima do meu Sensei:
"A estrada tem duas bermas. Estar numa é seguro, estar noutra é seguro, estar no meio é perigoso, podes ser atropelado."

Será que quando uma empresa contrata seguranças está preocupada com as artes marciais que os seus seguranças dominam? Ou apenas exige que sejam eficazes a garantir a segurança contratada?

Transpondo isso para as tecnologias de informação. Das imensas tecnologias(linguagens) disponíveis, há algumas que são mais iguais, isto é, que disponibilizam as mesmas potencialidades. Entre Actualização de bases de dados, páginas html dinâmicas, webservices, ligação a sockets, multiprocessamento, processamento de lotes (batch), etc. Entre essas não posso dizer que uma é melhor do que outra. Talvez para mim, tendo em conta a minha experiência, uma seja mais fácil, do que outra. Mas outro terá uma opinião diferente. Será que isso faz com que eu seja melhor do que o outro? Será que o devo convencer a seguir o meu caminho de aprendizagem? O melhor que lhe posso dizer é:

"Sai debaixo das pedras
E vai
Vai

Vai mais longe mais fundo
Não mudes de assunto
Só porque é mais fácil

Vai
Vai mais longe vai
Vai ao fundo do fundo
Não mudes de assunto
Há sempre um perigo"

Esta pérola da cultura portuguesa, ilustra o meu pensamento.

Muitas vezes no percurso do nosso caminho somos confrontados com pretensas facilidades que nos afastam do nosso caminho inicialmente traçado. No entanto o problema é que logo a seguir aparece outra novidade qualquer que também ela é mais fácil, melhor, mais eficiente. Tentam sempre nos fazer passar por tolos por não estarmos na berra da tecnologia. Se seguirmos o impulso de saltar de novidade em novidade, corremos o perigo de não conhecermos uma tecnologia o suficiente para fazermos algo de útil com ela. O que compromete a realização de um processo de fio a pavio. Normalmente no fim ficamos sempre com a sensação que afinal o que aparentemente era difícil é na realidade muito fácil.

Se queres realmente fazer a diferença como programador, escolhe a tecnologia que é mais simpática para ti e para a industria em que queres trabalhar e procura aprender o máximo que puderes, para seres eficáz na realização de qualquer projecto que te proponham. Porque o que avaliam realmente é a tua eficácia no processamento da informação e não a tecnologia por ti escolhida.

A prova disso é questionas-te acerca de qual a linguagem de programação usada no Google? Ou basta-te saber que as tuas pesquisas são praticamente instantâneas? Ao utilizador final, o que conta é a eficácia com que acede à informação e não a tecnologia que a veícula.

Já agora valia pensar nisso!

segunda-feira, 16 de outubro de 2006

JavaPT 06

Não podíamos deixar passar aqui em claro a realização da 5ª edição do "forum" anual das tecnologias Java. Este ano designado JavaPT06, este evento realiza-se no Centro de Congressos de Lisboa, na Junqueira (antigas instalações da FIL).

Como todos os anos, o evento é organizado pela Sun Microsystems e é de inscrição gratuita.

A inscrição pode ser feita em www.sun.pt e a agenda é muito variada. Segundo a Sun, vêm cá diversos especialistas mundais falar sobre Java, Ajax, SOA, Gestão de Identidade e muito mais.

terça-feira, 29 de agosto de 2006

Segurança em VoIP (SIP)

No comentário de F. Fernández ao post “Asterisk em Máquina Virtual” (http://bitites.blogspot.com/2006/05/asterisk-em-mquina-virtual.html), é levantada a questão da segurança VoIP, pelo que por se tratar de um tema tão importante resolvi não colocar um comentário mas um post (mais visível para todos). É afirmado (sic) “eles sugerem fortemente que a máquina tenha possibilidade de se ligar a qualquer máquina/port remoto, e, pior, que esteja exposta à net, directamente ou por NAT, em determinados ports para receber chamadas. Ora isto, do ponto de vista da segurança de uma rede empresarial, é completamente inaceitável.”

Estou de acordo, no entanto a realidade é que o SIP obriga a que os firewalls sejam SIP friendly, ou seja se portem bem para com o VoIP e como é necessário abrir a porta 5060 (SIP - sinalização) e um range dinâmico para o RTP (voz), os firewals clássicos ou ficam vulneráveis ou não conseguem distinguir entre um ataque e uma chamada VoIP e neste caso bloqueiam a comunicação em parte ou na totalidade.

Isto resolve-se com um firewall SIP friendly, que alguns routers VoIP já têm incorporado (como os Draytek, ver http://www.lusosis.pt/ADSL.htm#08 link “2700”), além de que por NAT tem de se usar o STUN (http://www.voip-info.org/wiki-STUN, porta 3478, forma de os dispositivos descobrirem o seu IP Público e o tipo de NAT) para os telefones IP ou softphones se conseguirem registar no Operador VoIP (ou servidor IP/SIP exterior). Não esquecer também o QoS, para a voz ter prioridade sobre os dados !

Abreviando, como os Operadores de banda larga (ADSL ou Cabo) normalmente fornecem routers económicos e com poucas funcionalidades, quem os tiver e pretender usar VoIP com segurança, tem de os trocar por routers VoIP, o que normalmente é um investimento que se recupera em um ou dois meses devido às chamadas VoIP serem em alguns casos gratuitas e para qualquer destino terem um custo muito inferior aos das chamadas dos Operadores de rede fixa. Os routers VoIP já podem ser encontrados no mercado de forma abrangente e entre 150€ e 250€ (o tal Draytek Vigor 2700VG é um bom exemplo).

O VoIP não obriga à utilização de um telefone IP SIP, pode-se usar um softphone em qualquer PC (disponíveis para vários sistemas operativos), no entanto há utilizadores que não usam PCs para as suas funções, pelo que aqui se justifica a utilização de um telefone IP (como o AT-320, http://www.lusosis.pt/VoIP_SIP.htm#06, com SDK gratuito para quem quiser alterar o firmware, CPU compatível com o 8051).

Para testar a rede VoIP, sigam o link do título deste post.

Mais questões ?

Benefícios da implementação do VoIP

Numa altura em que as empresas começam a preparar o orçamento do próximo ano, e através da redução de custos efectiva que esta tecnologia permite, a informação transmitida durante esta sessão poderá ter um impacto positivo na realização desse exercício.

A sessão tem como objectivo alertar os participantes para as diferentes ofertas de Voz sobre IP (Voice over IP- VoIP) do mercado, desmistificar esta tecnologia e de forma estimada calcular os custos envolvidos na implementação do VoIP, incluindo comparação com tarifários dos Operadores de Rede Fixa e GSM/UMTS.

O VoIP é uma forma de telefonar que, aproveitando um acesso de banda larga ADSL, Cabo ou Satélite, permite fazer chamadas dentro da Internet a custo zero, e terminando a chamada na rede pública telefónica (nacional ou internacional) com um custo mais baixo do que o normalmente praticado por qualquer operador de Rede Fixa. Para empresas com mais que um edifício, que normalmente já têm banda larga, o custo das chamadas entre os edifícios passaria a ser nulo.

Mais informações e inscrições em : http://www.aerlis.pt/programa_voip.html ou http://www.lusosis.pt/VoIP_SIP.htm#15 .

terça-feira, 25 de julho de 2006

Uso e abuso de recursos informáticos

O problema começou com a generalização da micro-informática nos anos 80 mas agravou-se enormemente com o aparecimento da Internet, o email e os sites web. Todos conhecemos demasiados casos de pessoas que passam o dia agarradas ao computador pessoal no seu posto de trabalho mas, estranhamente, o trabalho não aparece feito. ;-)

Estes abusos têm duas facetas negativas: por um lado o trabalhador está a ganhar o seu salário enquanto está em actividades claramente pessoais e não produtivas e por outro, está a aproveitar-se indevidamente de recursos que lhe foram confiados para outros fins. Em todo o caso está claramente a prejudicar a empresa, os clientes e os colegas.

Por causa disso os responsáveis pela informática das empresas vêem-se confrontados com a necessidade de monitorizar o uso dos recursos, o que é especialmente complexo nos ambientes tecnológicos actuais.

Curiosamente "passou-me à frente" um artigo sobre estas questões (url mais abaixo) que apresentava umas estatísticas sobre o que fazem as empresas americanas sobre esta questão:
  • 75% das empresas monitorizam o acesso a sites web
  • a grande maioria deste grupo usam filtros para bloquear sites não produtivos
  • mais de 50% analizam e arquivam o email dos funcionários
  • cerca de 30% registam as sequências de teclas no PC
  • mais de 80% avisam os seus funcionários destas práticas de monitorização
Hoje em dia, esta questão, já de si muito delicada, é agravada pelo facto de cada vez mais instituições disponibilizarem sites web para que o cidadão trate dos seus assuntos. Dever-se-á impedir que um utilizador aceda ao seu homebanking? Ou ao site das Finanças para ver como está o seu IRS? Será contraprodutivo estar ligado à família por Instant Messaging?

Parece que o mais importante é garantir um bom equilíbrio entre privacidade e monitorização, sempre de olho na produtividade e na ética, de modo a que todos possam ficar contentes. Todos, excepto os abusadores, claro.

Entretanto, quem quiser saber mais sobre isto pode consultar:

quarta-feira, 5 de julho de 2006

Segurança nas Mensagens Instantâneas

Como sabem, os sistemas de mensagens instantâneas do tipo MSN Messenger, ICQ, gaim, etc. comunicam em texto simples, vulgo "clear text".
Independentemente do conteúdo da maior parte das mensagens ser inócuo, não é agradável saber que podem ser lidas sem nossa autorização.

Não conheço muitas mais soluções, mas existe uma aplicação, o Simp Lite, para cifrar as mensagens que enviamos e recebemos, desde que instalada em ambos os clientes. Mantém-se o problema de as nossas credênciais viajarem na internet em texto simples, mas ao menos as mensagens não são completamente abertas.

Curioso não é?

quarta-feira, 31 de maio de 2006

Copianço generalizado nas universidades

Deu há dias num telejornal esta notícia do género "o rei vai nú" mas que me merece algumas considerações. Diziam os jornalistas que, nas universidades portuguesas, 2/3 dos estudantes recorriam à cábula para passar nos exames. E que isto é um hábito que já trazem do secundário.

Isto diz-nos várias coisas, a começar pelo facto e os estudantes andarem na universidade só para obter o canudo, sem se preocuparem se aprendem ou não. Veja-se bem o equívoco: o que é importante para eles é o grau obtido, em vez das competências!

Pois eu tenho uma novidade para vocês, estudantes: aqui fora, no mercado, valem as competências e não os graus obtidos! Acham que vão conseguir competir num mundo global com um canudo tirado com base na batota? Espera-vos a fila do desemprego! E nem pensem em emigrar, porque aqui ainda têm a vantagem da língua. Se forem lá para fora têm mesmo que saber fazer o que dizem saber, porque senão acabam por voltar com o rabo entre as pernas.

Claro que os professores também são responsáveis. Porque alinham em sistemas de avaliação que permitem a batota. Alguns podem dizer que, sabendo disto, aumentam a dificuldade dos testes, para compensar. E a minoria dos que não fazem batota? Como fica? Esses acabam prejudicados por estarem a competir em circunstâncias desiguais. Pergunto eu: os professores não sentirão alguma vergonha de estarem a participar neste esquema? ;-)

Nisto tudo, os intervenientes que mais pena dão são os pais. Pagam as propinas aos filhos, pagam-lhes o carrito e a gasolina para irem para as aulas (estranhamente, os transportes públicos parecem não servir as universidades, de há uns anos para cá, e os estudantes têm que ir de carro, pobrezitos). Os pais ficam todos descansados por estarem a "garantir um futuro" às crianças. E até acham graça se vêm o filho a preparar a cábula para passar naquela cadeira que tem o professor mais exigente. Coitadinhos... E vão ficar muito tristes quando, passados anos e tantas provações, o filho não conseguir emprego. "Malditos políticos, que lixaram isto tudo", pensarão eles nessa altura.

Coitadinhos de nós todos, digo eu!

Quanto à cábula, há uma solução simples: acabe-se com os testes sem consulta. Oficialize-se a cábula. Todos os estudantes podem levar a documentação que quiserem. Afinal, na vida real é asim mesmo que se passa.

E entretanto esperemos que os alunos se convençam que têm que ganhar competências, apesar do sistema!

quinta-feira, 25 de maio de 2006

DB2 Viper - Overview de funcionalidades

A IBM anunciou a disponibilidade de uma nova versão da sua base de dados DB2, denominada DB2 Viper.

Nesta versão foram implementadas muitas novas funcionalidades e corrigidos bugs.

A principal nova característica consiste no suporte "puro" de XML nas bases de dados, mantendo - como é óbvio - todas as funcionalidades relacionais e object relational.
O suporte para XML até aqui existente no DB2 era:
  • Inserção do XML em Blob(s), com um sql alterado para o facilitar.
  • Mapeamento de tag(s) XML com colunas da base de dados relacional fazendo com que os ficheiros XML ao serem inseridos fossem convertidos em informação em colunas de tabelas numa bd relacional tradicional.
Já existiam várias bases de dados XML (ex : Apache Xindice, Software AG Tamino). Esta versão disponibiliza o melhor de dois mundos (Relacional e XML).
Por suporte "puro" entende-se:
  • A gravação da informação XML de uma forma hierarquica.
  • O suporte da linguagem XQuery para consulta da informação.
A arquitectura simplificada deste acesso descreve-se no seguinte diagrama:










De notar que em termos de organização tabular nada muda. Passa é a existir um novo tipo de dados XML, como se pode ver na tabela que se segue:

create table cliente (
numero smallint,
nome char(100),
info_contacto xml
);

Para inserir em tal tabela usa-se uma instrução SQL normal, como por exemplo:
insert into clients values (77, 'josé manuel',
'Rua das pretas111Lisboa');

Os query(s) podem ser executados em SQL puro ou em Xquery.

sexta-feira, 12 de maio de 2006

Sarbanes-Oxley

Na sequência dos escândalos da Enron e da Worldcom, que minaram a confiança dos investidores nas acções em geral, os EUA pediram ao Senador Sarbanes e ao técnico Oxley que legislassem no sentido de evitar que situações semelhantes voltassem a acontecer. O resultado foi o Sarbanes-Oxley Act. O que esta lei trouxe de novo, foi basicamente responsabilizar criminalmente auditores e gestores, por falta de controlo ou por prestarem contas falsas (ver resumo).

Cá pela Europa, o escândalo financeiro da Parmalat fazia prever o pior. No sentido de evitar maiores prejuízos a União Europeia alterou a 8ª Directiva (Directiva n.º 84/253/CEE) para garantir a independência dos Revisores Oficiais de Contas bem como responsabilizar as Administrações das empresas pelas contas apresentadas.

Cá em Portugal, espera-se que esta directiva seja transposta para a legislação portuguesa ainda este ano de 2006.

As consequências são só para as empresas cotadas em bolsa, no entanto, espera-se conseguir a garantia para os investidores em como a gestão das empresas não "aldrabam" as contas em conivência com os auditores. Caso o façam, arriscam uns anitos de prisão.

Para os consultores, esta vai ser uma fonte de trabalho extra, uma vez que conseguir garantir que as empresas controlam a sua actividade é difícil. Garantir que as empresas estão em condições de medir o seu desempenho e que cumprem os seus compromissos é hercúleo.

No meio disto tudo, só não percebo como é que nomearam o Santana Lopes para consultor jurídico da EDP. Deve ter a ver com algum controlo SOX ( a EDP está cotada na no NYSE).

segunda-feira, 8 de maio de 2006

Asterisk em Máquina Virtual

Saiu hoje a nova versão da AstLinux, versão que corre em sistemas embeddeb com 64 MB RAM, e que também está disponível numa máquina virtual para ser corrida com o VMware Player (em Linux ou Windows).

Encontram no mesmo link mais um manual sobre a Asterisk para download, com bons detalhes sobre o SIP, nomeadamente como o testar usando o Ethereal.

Bom VoIP!

sexta-feira, 5 de maio de 2006

Anúncios Ilustrados - Um projecto de "classificados" que teve o seu tempo

"Dez anos
É muito tempo"

Os Anúncios Ilustrados foram desligados.

Foi um projecto lançado em 1996, quando a net era uma criança e que, de forma inovadora, permitia anunciar gratuitamente com imagem. Para os clientes, havia pesquisa geográfica e avisos automáticos.

As suas três versões serviram para que diversos estagiários de universidades e escolas profissionais pudessem consolidar os seus conhecimentos.

Chegou a ter milhares de anúncios registados e muitas centenas de visitas diárias. Foi referido nos "100 melhores" da Net em Portugal, num inventário feito pelo SAPO em mil novecentos e trocópasso.

Agora já não faz sentido e por isso foi desligado.

R.I.P.


P.S.: E já que estamos numa de Paulo de Carvalho
"Vocês sabem lá..."
... a seca que era limpar a porcaria que lá punham nos anúncios com imagem... ;-)

Asterisk + FritzBox = HorstBox Professional

Já falámos um pouco do FritzBox e da Asterisk, agora vêm aí um conjunto num novo equipamento o HorstBox Professional por um preço estimado entre 400€ e 500€.

Vamos aguardar, parece um excelente produto para o SOHO.

Bom VoIP!

Asterisk e YATE para VoIP

A Asterisk e o YATE permitem construir soluções de VoIP, desde muito pequenas (mesmo em sistemas embedded) até milhares de telefones e centrais IP interligadas. O software é gratuito com versões para Linux e Windows, podem encontrar mais informações aqui, incluindo um livro da O´Reilly para download.

Depois para chamadas gratuitas para a rede fixa, podem usar alguns dos operadores indicados aqui.

Alguém já usa/vai usar estas soluções ?

Bom VoIP!

quarta-feira, 3 de maio de 2006

TV Digital por satélite

A TV Cabo emite o seu sinal por cabo e por satélite.

No satélite, o sinal é digital e usa o sistema Nagravision que foi desenvolvido por uma companhia com o mesmo nome.

Existe em duas versões, conhecidas como Navgravision I e 2.

Estes sistemas são sistemas de acesso condicional o que significa que são emitidas de forma encriptada e serão acedidadas mediante um módulo e uma chave.

Para a usar é necessário uma antena parabólica e uma set top box digital.

Na antena parabólica (à frente do prato) existe um aparelho chamado LNB (Low Noise Block). O LNB recebe os sinais que vêm do statélite em frequências relativamente elevadas e converte-as em frequências mais baixas que são transmitidas pelos cabos coaxiais.

A set top box recebe a frequência mais baixa que vem do LNB. Existem muitos modelos de set top box(es). A dream é um dos fabricantes destes aparelhos. Usam Linux e têm ligação Ethernet.

A TV Cabo usa o satélite Hispasat 1D .

Ainda tenho muito para perceber acerca deste assunto, mas ando a estudar :-).

Padrões de desenho (3) - Como se classificam

Os padrões de desenho, para que sejam utilizáveis devem ser organizados sob a forma de um catálogo.

Deve ser descrito de uma forma consistente, dividido por secções, de acordo com um template. A estrutura mais tipificada do template torna mais fácil a sua aprendizagem, comparação e utilização.

O padrão proposto pelo Gof é:
  • Nome - Designação sucinta. É vital uma boa escolha pois será a forma pela qual passará a ser conhecido;
  • Classificação - Classificação tipificada;
  • Objectivo - Que problema resolve;
  • Identificação alternativa (AKA) - Se fôr caso disso;
  • Motivação - Um cenário que ilustra o problema de desenho e como a solução se organiza para resolver o problema;
  • Aplicabilidade - Em que situações o padrão deve ser aplicado;
  • Estrutura - Representação gráfica das classes e interacções (normalmente em UML);
  • Participantes - Classes que participam no padrão e respectivas responsabilidades;
  • Colaborações - A forma como os participantes colaboram entre eles para cumprir as responsabilidades;
  • Consequencias -Quais as concessões e resultados de usar o padrão;
  • Implementação - Técnicas que devem ser conhecidas para implementar o padrão;
  • Código de exemplo / POC - Exemplo de implementação simplificada do padrão;
  • Utilizações conhecidas - Exemplos de sistemas reais que o estejam a utilizar. Tentar incluir pelo menos dois exemplos de domínios diferentes
  • Padrões relacionados - Que outros padrões do catálogo estão relacionados usando ou usados por este;
Existem padrões para todos os gostos e existem onLine muitos catálogos. Aqui ficam alguns dos que mais uso:

terça-feira, 2 de maio de 2006

JBoss Mail Server - Status ; Um exemplo com flex

A actualização do estado do servidor de mail da JBoss (ou será Red Hat ;-) ) chamou-me à atenção. Ainda não estamos numa versão 1.0 em qualidade de produção mas já está no milestone 5.

Entre outras coisas diz-se :

....
  • WebMail- ... Pessoal... os mais industriosos de vós vão fazer chichi nas calças ao ver o que fizémos em tão pouco tempo (acredito que os mais industriosos irão provavelmente compilar a partir do head do CVS e estragar-me a surpresa...). Outros que não nomearei vão provavelmente tentar ver e ficar com uma enorme dor de cabeça uma vez que nos estamos a aproximar deles e muito fácilmente os iremos ultrapassar. Para vossa informação, nós fizemo-lo com o Macromedia Flex da Adobe. O Flex é uma framework (baseada em Flash) para desenvolvimento de interfaces GUI. E é livre como na cerveja.
...

Foi a utilização do flex que me chamou a atenção. No desenvolvimento que fazemos em Java usamos sobretudo JSF mas já falámos sobre esta ferramenta.

Não imaginava era ler tão rápidamente um feedback tão positivo de developers que estão a fazer algo real com ela.

Não tinha também percebido que a versão 2.0 será gratuita, mas aparentemente não livre. Resta compreender até que ponto ficamos ou não "agarrados" à macromedia quando fizermos qualquer coisa com ela.

Com esta referência fiquei agora com a certeza que é algo a seguir atentamente.

ITIL (3)

Vamos lá ao Service Delivey, espero não estar a ser chato...

A Entrega de Serviço é composta pelos seguintes processos, que se podem enquadrar a um nível táctico:

1. Gestão de Nível de Serviço. Este processo está encarregue de gerir todo o relacionamento com o cliente. Definir o catálogo de produtos, estabelecer acordos de nível de serviço com os clientes, monitorizar se os níveis de serviço estão a ser cumpridos, definir prioridades, etc.

2. Gestão de Capacidade. Este processo deve garantir que a entrega é feita na altura certa e com a máxima eficiencia, para tal, deve monitorizar desempenhos, prever crescimentos, antecipar carga. Todos estes factores servem para gerar um plano de capacidade, a propor ao processo de alterações.

3. Gestão de Disponibilidade.
Este processo abrange todos os aspectos que possam afectar a disponibilidade do serviço. Mede e compara com os níveis de serviço acordados e pode propor alterações.

4. Gestão de Contingências.
Este é o processo que garante que as contigências são previstas e os tempos de reposição do serviço são acordados, bem como as condições em que este vai ser prestado.

5. Gestão Financeira do IT.
Este processo identifica custos de operação, atribui valores a todos os aspectos dos serviços prestados, garantindo que se consegue sempre identificar quem paga e quanto.

segunda-feira, 1 de maio de 2006

ITIL (2) - Continuação

Ooops!
Bem observado! Nem um linkzito para amostra.
Corrigindo ITIL - Information Technology Infrastructure Library. Ou mesmo o site do ITSM, onde qualquer documentação é sempre paga.
O objectivo é orientar toda a organização de suporte para o serviço ao cliente.

Divide-se em duas partes:
1. Service Support
2. Service Delivery

Os Serviços de Suporte englobam os seguintes processos de trabalho:

1- Gestão de Incidentes. Qualquer acontecimento gera um incidente, este deve ser registado numa ferramenta apropriada. Seja um pedido de instalação de software, seja uma questão com uma impressora. Estes devem ser tratados por forma a tentar repôr o cliente a funcionar o mais rápido possível.
2- Gestão de Problemas. Um problema é a causa desconhecida de um ou mais incidentes. Deve ser investigado e uma vez encontrada a solução, deve ser comunicada à equipa de gestão de incidentes (através de uma Knowledge Base ou outra) para que possam ser resolvidos os problemas pendentes.
3- Gestão de Configurações. Deve existir uma base de dados com todos os items configuráveis (CI's), até ao nível de detalhe que se pretenda controlar. Quanto maior o detalhe mais caro e moroso vai ser manter a base de dados actualizada (não acho que se justifique controlar os ratos ou monitores).
4- Gestão de Alterações. Este processo controla todas as alterações a efectuar na infraestrutura. Esta entidade avalia o risco e a necessidade de efectuar uma alteração e decide se ela deve ser ou não efectuada. Ainda controla todo o processo de implementação e elabora um relatório pós-implementação onde a opinião do cliente é considerada para as conclusões.
5- Gestão de Entrega (Release). Este processo efectua a implementação, os testes, pede aprovação de passagem a produção e a aceitação do cliente.
6- Service Desk (é uma função, não um processo). Esta função é ponto de entrada de incidentes e pedidos. Ao nível operacional é através do SD que os clientes contactam o serviço de suporte.

No prócimo Post vou abordar a questão ao nível táctico (Service Delivery)

BITITES

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");
}