May 5, 2010
Opensource Software I want to give a try
Varnish HTTP accelerator.
Memcached for caching.
BCFG2 for configuration management.
The Grinder for load testing.
May 5, 2010
Varnish HTTP accelerator.
Memcached for caching.
BCFG2 for configuration management.
The Grinder for load testing.
April 15, 2010
- eu digo assim:
“a escolha da tecnologia, a opção por determinado software deve ser baseada no TCO (total cost of ownership)…. despesas com licença, despesas de aquisição de hardware, despesas com tempo de administração e manutenção, despesas associadas à dependência do fabricante, etc etc… Se os serviços estão a funcionar sem problemas em Linux, não vejo porque se tenha que mudar!”
- e respondem-me assim:
“Actualmente os hospitais podem efectuar download de software da Microsoft completamente livre. Se temos direito a ele porque não devemos usar?”
Mas há alguém que acredita realmente que o software Microsoft (via Campus Agreement) é completamente livre??
March 16, 2010

No próximo sábado dia 20 de Março, vai-se realizar o primeiro encontro técnico do PortoLinux deste ano, na já habitual e fantástica sala de eventos do DEEC, da Faculdade de Engenharia da Universidade do Porto.
O encontro desta vez tem os seguintes temas agendados:
NoMachine / FreeNX (Fernando “BUGabundo” Pereira)
Como (não) fazer apresentações – mais uma sem nada preparado (Manuel Silva)
There’s no place like 127.0.0.1 (Os servidores lá de casa – Joel Bastos)
Mais informações podem ser consultadas aqui na página oficial do evento.
March 9, 2010
Esta semana ando a fazer testes com softwares de virtualização baseado em XEN. Especialmente com dois que me merecem mais atenção: XenServer da Citrix e o Oracle VM. Em tempos cheguei a fazer uma instalação de ambos num único servidor, mas agora tive acesso a duas máquinas que me permitiram aprofundar melhor as potencialidades de ambos. Hoje acabei os testes com o primeiro software e até ao final da semana espero contar mais acerca do segundo.
O XenServer está disponível numa único ISO (actualmente na versão 5.5.0) e que se instala muito facilmente ao fim de poucos minutos. Para os hosts usei dois computadores Dell OptiPlex 780, processador Intel Dual Core 2.60Ghz e 4Gb de RAM.
Minutos depois, os meus dois hosts estavam up and runnning e à espera da instalação das VM’s, que pode ser feito localmente ou através de uma ligação SSH à máquina, tudo usando o CLI.
Para quem preferir uma gestão mais gráfica, temos que recorrer a um pc com Windows, no meu caso optei por usar uma VM com o Windows XP SP2 e instalar o XenCenter. Embora existam outras alternativas para a consola de gestão, até ao momento não tive tempo para testar nenhuma delas, que diga-se que à primeira vista ficam muito há quem da solução “nativa” da Citrix.
Instalada a framework .Net 2.0, eis que depois o XenCenter fica disponível para utilização no pc e pronto para se ligar aos hosts, usando as credenciais que anteriormente se definiu na fase de instalação.
Com a ajuda de um quarto pc a correr Ubuntu 9.10, instalei o nfs-kernel-server para exportar um directório com vários ISO’s de instalação de SO e que usei para criar o primeiro repositório por NFS. Também temos a opção de criar uma storage por CIFS ou ainda copiar as ISO para a storage local do host, mas esta última apenas com a ajuda do CLI. Em qualquer dos casos, os medias de instalação ficam imediatamente disponíveis, sendo possível ter os três tipos de storage activos ao mesmo tempo. Primeiro comecei por criar uma VM com o Windows XP sem qualquer problema, mas quando fui para a segunda com Debian, a máquina simplesmente falha ao fazer o boot pela ISO, aparentemente porque depois de montar o ficheiro, o path para o bootstrap aponta para um caminho que não está totalmente correcto. Isto aconteceu-me com ISO’s diferentes e só consegui por uma vez arrancar a VM. Bug?
A seguir criei uma pool com os hosts, onde se pode adicionar os diversos storages ou atribuir apenas a um dado host e com a configuração de um outro repositório NFS para a criação dos discos virtuais p. ex., consegue-se migrar manualmente VM’s de um host para outro, sem qualquer downtime ou perda de performance. Muito bom mesmo.
Finalmente a cereja em cima do bolo, é ter o Citrix Essentials instalado para se poder gozar de uma solução HA com balanceamento de carga. E chegados aqui começa-se a perceber qual é o modelo de negócio da Citrix, já que a licença mais barata para este software custa a módica quantia de $2,750 dólares na versão Enterprise.
Ainda assim sempre se pode instalar a versão trial por 30 dias e ver o funcionamento da coisa, ou não. É que o Citrix Essentials só funciona se tivermos um repositório partilhado entre os hosts que funcione em cima de iSCSI ou FC e não é o meu caso :-/ Embora até haja, primeiro ainda tenho que conseguir por a mão em dois servidores que tenham acesso à SAN.
E a experiência acaba por aqui, pelo menos para já. Em resumo, devo dizer que o interface do XenCenter está muito bem conseguido e é muito fácil de utilizar. A instalação do Essentials deu um bocado mais dor de cabeça e foi necessário instalar antes o SQL Server Client Tools, a framework do Microsoft .Net 2.5, um update do Windows Installer 3.1 e ainda o SQL Server 2005 Express…. e num ápice ficamos presos a um fornecedor que nada tem a ver com a escolha inicial do produto. Na volta mais valia ter partido logo para o Hyper-V…. :P
February 25, 2010
Quando me dizem (sysadmin windows) que o Linux não suporta muitos drivers, claro que fico chateado!
Eu só conheço duas formas de escrever drivers: por iniciativa do fabricante ou então um programador “freelancer” quando as especificações do hardware são abertas e conhecidas.
O Linux suporta qualquer driver, o problema está quando o driver (aka fabricante) não suporta o Linux, ora porque não vê cota de mercado suficientemente interessante para se dar ao trabalho de escrever um driver, ora porque as especificações não são disponibilizadas, inviabilizando quem tem conhecimentos ou interesse em pagar a alguém parao desenvolver (registe-se mais uma oportunidade de negócio no SL).
Agora que está muito em voga a União Europeia meter o dedo em tudo o que é concentração de mercado, porque não obrigar os fabricantes que queiram vender hardware informático na Europa, a disponibilizarem sempre drivers para, pelo menos dois Sistemas Operativos diferentes?
Vale a pena pensar nisto…..
February 22, 2010

Nas últimas eleições legislativas tinha reflectido para a necessidade do surgimento de uma nova forma de fazer política em Portugal, da vontade íntima de aparecer cidadãos com provas dadas em diferentes áreas da nossa sociedade (que os temos), dispostos a enveredarem pela política e levarem-me a acreditar que é possível neste país ser-se político de um modo diferente do que se tem assistido quase sempre desde o 25 de Abril. Por momentos quase que acreditei que sim, mas infelizmente se verificou que mais uma vez o hemiciclo se constituiu invariavelmente pelos mesmos, com maior ou menor concentração de lugares, segundo a vontade expressa pelo voto popular.
Mas eis que ressurge em mim novamente essa esperança de ver mudados os rostos de quem ocupa e mais importante do que isso, como são desempenhados os cargos de soberania, como é exemplo o de Presidente da República, com a apresentação da candidatura de Fernando Nobre.
“Portugal precisa de um Presidente que venha verdadeiramente da sociedade civil, que seja independente, que nada precise da política e que conheça bem o país e o mundo.” Esta foi a frase que em definito me fez já acreditar nesta candidatura e que tenho vontade de apoiar desde o primeiro minuto.
Infelizmente receio em grande medida que esta iniciativa tenha um desfecho idêntico ao protagonizado no passado por Maria de Lurdes Pintassilgo, que tentou incutir uma mudança significativa na nossa sociedade, ela que era despojada de qualquer demagogia e populismo, mas que o povo português não soube ou não quis aceitar por medo ao desconhecido, do nunca experimentado, da alteração do empobrecimento mas “pacato” dia-a-dia em que acordamos de manhã, ainda hoje!
Porque quero acreditar nesta mudança, acreditar em Portugal, eu acredito em Fernando Nobre!
February 10, 2010

É porque conseguiu por o Benfica a jogar à Benfica, como eu já não via há anos. Não fosse outra equipa de encarnado a tentar o inédito, e o campeonato já estava no papo este ano… ou não :P
February 5, 2010
A licenciatura de Engenharia Informática no ISEP tem uma disciplina no 1º semestre do 1º ano chamada APROG (Algoritmia e Programação). A linguagem de programação utilizada é o JAVA na sua versão 6 (em 2004 altura em que fiz a primeira inscrição aprendia-se linguagem C ) e o IDE mais utilizado nas aulas é o NetBeans. Inicialmente ainda comecei com o Xcode, mas depois de ter instalado a versão com o SDK do iPhone, a opção para a criação de aplicações do tipo JAVA simplesmente desapareceu. Ainda que continuasse a ser possível programar em JAVA no Xcode, acabei por me render ao NetBeans.
Hoje foi dia de exame à cadeira e aproveito o facto para adicionar uma nova categoria “licenciatura” no blog, para disponibilizar algum contéudo que possa ser útil para alguém.
Um dos exercícios pretendidos no exame, era a criação de um método em JAVA que recebe uma matriz quadrada de números reais e retorna dois elementos da matriz: o maior elemento acima da diagonal secundária e o maior elemento abaixo da diagonal secundária. A minha implementação é esta:
private static float[] maiores(float[][] matriz) {
float[] v = new float[2];
float maioracima = matriz[0][0];
int x, y;
x = matriz.length - 1;
y = matriz[0].length - 1;
float maiorabaixo = matriz[x][y];
int k = matriz[0].length - 2;
for (int i = 0; i < matriz.length - 1; i++) {
for (int j = k; j >= 0; j--) {
if (matriz[i][j] > maioracima) {
maioracima = matriz[i][j];
}
}
k--;
}
int j = 1;
k = 1;
for (int i = matriz.length - 1; i >= 1; i--) {
for (j = k; j < matriz[0].length; j++) {
if (matriz[i][j] > maiorabaixo) {
maiorabaixo = matriz[i][j];
}
}
k++;
}
v[0] = maioracima;
v[1] = maiorabaixo;
return v;
}
Finalmente era pedido no método principal, que fosse mostrado o maior elemento acima da diagonal secundária e o maior elemento abaixo da diagonal secundária de uma dada matriz:
public static void main(String[] args) {
float matriz[][] = {{1, 1, 8, 0, 9},
{2, 2, 7, 1, 2},
{3, 3, 5, 2, 7},
{4, 4, 1, 3, 6},
{5, 4, 0, 5, 1}};
float[] mdiag = new float[2];
mdiag = maiores(matriz);
System.out.printf("O maior elemento acima da diagonal secundária é: " + mdiag[0]);
System.out.println();
System.out.printf("O maior elemento abaixo da diagonal secundária é: " + mdiag[1]);
System.out.println();
}