Geek-Press Geeky Blog about software development

27Fev/130

LMD – Linux Malware Detect

malware

Quem é administrador de servidores para hosting sabe muito bem a dor de cabeça que é ter manter um imenso numero de contas de clientes. Clientes este que metem todo o tipo de scripts e mais alguns nos sites deles e que causam enormes buracos de segurança nos seus próprios site e para alem disso podem comprometer o servidor onde estão.

Foi a pensar nisso que a R-FX Networks desenvolveu  o LMD - Linux Malware Detect.

Trata-se de um pequeno programa que deteta e monitoriza varias ameaças no seu servidor.  Para mim, o ponto chave neste pequeno programa é o facto de podermos contribuir para o crescimento da base de dados de signatures de malware contra o qual os utilizadores estão protegido. Para isso basta reportar qualquer ficheiro que ache estranho que este é enviado para posteriormente ser analizado.

O unico contra que encontro é os falsos positivos que apresenta, no entanto é possivel criar uma lista de ficheiro ignorados.

Para saberem mais acerca deste projecto consultem o site http://www.rfxn.com/projects/linux-malware-detect/

18Nov/120

Codebits VI e o projecto PNS

Mais um codebits se passou!

Mais um ano cheio de coisas boas, boas talks, bons projetos, bons brindes.....

Este ano trouxe comigo o André Gil, Claudia Frutuoso e o Gonçalo Basto para fazer um projeto engraçado.

O Projeto chama-se PNS - Personal Notification System.

O conceito é simples, um device que pode ser adicionado a qualquer peça de vestuário ou acessório que permite uma ponte de comunicação entre o utilizador e o seu telemóvel via bluetooth.

Este device permite então interagir com o telemóvel sem ter de o retirar do bolso, o que pode ser útil durante a nossa sessão de jogging, uma reunião enquanto conduzimos ou até mesmo numa situação em que expor o nosso telemóvel em publico pode não ser a nossa intenção.

 

Desse modo podemos programar padrões em leds RGB que nos permitem identificar o que estamos a receber no nosso telemóvel: por exemplo um twitt, um post no facebook dirigido a nos, um SMS, uma chamada de uma determinada pessoa. Podemos também programar cada botão para executar uma ação no telemóvel. Assim podemos, rejeitar ou encaminhar uma chamada, enviar uma mensagem de volta a quem nos ligou a dizer que não podemos atender de momento, enviar um twitt ou post no foursquare com a nossa localização geográfica, podemos até programar um botão para verificar o estado do tempo na internet e mostrar numa sequencia de leds como estará o tempo.

O limite entre as coisas podemos fazer com este dispositivo e um smartphone é a imaginação.

Para que este serviço possa ser usado tanto por utilizadores avançados como basicos, por trás deve existir um pagina de uma comunidade de utilizadores onde seria possível colocar code snippets onde o utilizador pode fazer download desses snippets para o telemóvel e depois assigna-los ao nosso dispositivo.

Para a realização deste projeto usamos um telemóvel android, um arduino Uno, um modulo bluetooth e uma webapp feita com Ink.

Como é óbvio um dispositivo com estas características tem de ser pequeno e de fácil modularização e a versão final do nosso prototipo era tudo menos pequeno mas funcional!

Se estiverem interessados em saber mais acerca deste projeto não hesitem em contactar-me 🙂

 

28Ago/120

Mais um projecto que já rola!

A uns meses atrás o Nuno Ferro convidou-me a ajuda-lo a participar num projecto interessante.

A ideia é fazer uma plataforma de aluguer de bicicletas em que as bicicletas estão colocadas em diversos pontos de uma determinada localidade com auxilio de uns devices engraçados que permitem apenas aos utilizadores com um cartão, devidamente carregado com saldo, levantar as bicicletas para darem as suas passeatas.

Aqui esta o resultado

30Jul/120

Arduino Leonardo

Arduino Leonardo

Arduino Leonardo

Para quem não sabe, foi lançado o Arduino Leonardo, que diga-se de passagem traz excelentes novidades e muitas features. Para mim das melhores features que este novo arduino tem é o facto de deixar de ter um USB to Serial chip pois o seu novo microprocessador Atmel’s ATmegaXU4  já tem essa funcionalidade embutida! Isto permitiu uma pequena redução de custos na produção. Por isso não se admirem se os arduinos uno deixarem de ser produzidos num futuro próximo.

Para além disso este novo arduino tem mais estas features:

-Mais 4 portas digitais,
-Mais 1 porta PWM e com timers melhores,
-Mais 6 portas analógicas,
-Diferenças  na utilização das portas Serial
-Portas SDA/SCL
-Emulação Teclado e Rato.

Este ultimo ponto da emulação de teclado e rato é uma feature brutal que nos permite facilmente com 2 POTs e um botão fazer um dispositivo tipo mouse que o sistema operativo irá reonhecer como tal, outra grande aplicação para isto é por exemplo fazer um leitor de dados que introduz os dados numa aplicação qualquer como se um teclado se trata-se (ao estilo dos leitores de codigos de barras).

 

Para mais detalhes acerca desta fantastica adição a familia Arduino consultem o seguinte link: http://arduino.cc/en/Main/ArduinoBoardLeonardo

 

21Jul/120

Codebits 2012

Codebits VI

 

Aqui está. O evento mais esperado do ano em Portugal! A sexta edição do Codebits está a começar a aquecer os motores.

Para aqueles que não conhecem o Codebits eu vou escrever um pouco acerca do evento.

O Codebits é um evento organizado pela SAPO.PT e acreditem eles trabalham mesmo no duro para que este evento seja concretizavel. O evento além de ser gratuito, eles disponibilizam comida e bebida, oferecem um monte de brindes, montes de palestras e apresentações e os stands dos parceiros costumam ter novidades excelentes.

Este é o maior e mais geek evento técnologico em Portugal e o tempo que passamos la vale mesmo a pena.

Este ano o evento vai ser realizado no mesmo lugar que no ano passado mas ao que parece vai sofrer algumas alterações que tudo aponta que seja para melhor! Por exemplo em vez de uma parede preta a dividir o palco principal do restante espaço do evento vão colocar uma cortinha semi-transparente de modo a que se possa sempre saber o que se passa no palco.

Como em todos os anos vai existir o concurso de programação de 24Horas em que são mostrados sempre projectos incriveis e tem prémios excelentes (eu ate dispensava os prémios, a minha participação é sempre a lutar pelo trofeu do codebits que a meu parecer deve ser um prestigio enorme poder leva-lo para casa!

Como é normal apenas 800 geeks vão poder participar e serão escolhidos através de uma pré-seleção, por isso mantenham-se atentos ao site!

19Jul/120

Alterar o tamanho de todos os componentes numa java.awt.Frame em Java

Quando estamos demasiado habituados a uma linguagem de programação por vezes automatizamos alguns procedimentos...

Eu vinha de um background em C# e agora estou a fazer umas tarefas em JAVA e deparei logo com algumas diferenças "subtis".

Tarefa: Alterar o tamanho de todos os componentes e respectivas fontes dentro de uma dialog composta por uma java.awt.Frame.

Depois de algumas tentativas aqui esta o código com que consegui obter resultados:

protected void changeContent(Container parent) 
{
    for (Component comp : parent.getComponents()) 
    {
        changeFont(comp);
        comp.setMaximumSize( new java.awt.Dimension(comp.getWidth()*2, comp.getHeight()*2) );
        comp.setPreferredSize( new java.awt.Dimension(comp.getWidth()*2, comp.getHeight()*2) );
        comp.setSize( comp.getWidth()*2, comp.getHeight()*2);
        if (comp instanceof Container) 
        {
            changeContent((Container)comp);
        }
    }
}
protected void changeFont(Component comp) 
{
    AffineTransform at = AffineTransform.getScaleInstance(2, 2);
    if (comp.getFont() != null)
    {
        Font font = comp.getFont().deriveFont(at);
        comp.setFont(font);
    }
}

 

No meu caso, estas duas pequenas funções resolveram os meus problemas. Como é obvio no constructor do formulário coloquei no parametro do ChangeContent() o objecto que representava a Frame.

19Jun/120

Arduino + WebCam = Volumetria

Um dos projectos que tenho trabalhado ocasionalmente nos ultimos meses foi arranjar maneira de medir volumes com material "low-cost"!

Pensei no desafio e comecei a meter mãos ao trabalho e consegui resultados surpreendentes a usar um webcam comum e um arduino com um sensor.

Para começar vamos falar do hardware:

- Arduino + Sharp Distance Sensor GP2Y0A02 (20-150cm)  : Devo dizer que pensei que era o mais simples mas falhei redondamente.

Para conseguir resultados aceitaveis (cerca de 1 centimetro de desvio em distancias perto do limite do sensor) tive de seguir um conjunto de procedimentos manhosos isto porque o sensor tende a retornar montes de ruido e assim não temos resultados precisos.

Primeiro faço 10 leituras do valor e determino a media, seguindamente determinamos o limite superior e inferior de valores a partir desta primeira media, exluimos os valores que ultrapassam este valor capturamos mais uns 10 valores e fazemos a media de tudo.

Devo dizer que isto resultou muito bem

 

float GetAverage(float * _values, uint8_t size)
{
	float avg = 0;
	for(int i = 0; i< size; i++)
	{
		avg += _values[i];
	}
	avg = avg / size;
 
	float setMax = avg * 1.15;
	float setMin = avg * 0.85;
	float precisionAvg;
	int counter = 0;
	for(int i = 0; i < size; i++)
	{
		if((setMin < _values[i]) && (_values[i] < setMax))
		{
			precisionAvg += _values[i];
			counter++;
		}
	}
	return precisionAvg / counter;
}

Para conseguir volumetria usei a biblioteca Emgu e uns quantos filtros para conseguir encontrar os contornos do objecto com base numa mascara. Ou seja temos de ter uma mascara do ambiente de fundo para poder fazer a exclusão do que ja la estava e ficarmos apenas com o novo objecto na imagem. Usamos uns quantos truques de image processing, uns calculos trigonometricos e voilá aqui esta o resultado

 

12Jan/121

Smart Defrag

Defrag

Durante uma semana andei as voltas no meu portatil no escritório a tentar desfragmentar o disco, todos os dias a noite fazia uma tentativa e por e simplesmente não melhorava nada e a cor vermelha no desfragmentador do disco dominava o gráfico.

Hoje decidi procurar ferramentas para fazer desfragmentação e encontrei uma que me pareceu apelativa

Smart Defrag 2:

Até agora os prós nesta aplicação são:

-consome poucos recursos
-é pequena
-extremamente rápida
-eficiente
-freeware

Os contras:
-Temos de ter em atenção na instalação para não instalar tralha que não necessitamos!

Relativamente à utilização, é uma aplicação muito simples, poucas opções mas mesmo assim as poucas que tem são capazes e cobrir todas as necessidade

O Smart Defrag permite-nos fazer 3 tipos de desfragmentação:

- Desgragmentação
-Desfragmentação com Optimização Rápida
-Desfragmentação com Optimização Completa

Basicamente isto permite escolher a velocidade da desfragmentação e a sua eficiência. Um aspecto muito curioso neste software é que ele analisa quais os ficheiros e pastas mais usados e move-os para as localização mais rápidas do disco.

 

Também é de salientar que existe a possibilidade de manter a desfragmentação constantemente a correr em background e também a possibilidade de fazer desfragmentação no boot de modo a que ficheiros que geralmente ficam lockados no arranque do sistema!
A partir de hoje este programa vai ser um software obrigatório para instalar nas minhas maquinas!

Podem fazer o download aqui

 

14Nov/110

meo|kinect @ codebits 2011

Mais uma vez o SAPO Codebits 2011 foi bestial, o unico senão foi a minha apresentação de projecto que teve de passar por "pequenas" dificulades.

Bom vou então falar do pojecto e depois da desastrosa apresentação

Meo|Kinect

Um dia antes do concurso vi na pagina do codebits o seguinte post e no post logo a seguir a falarem que estaria la uma equipa da Microsft para dar o suporte necessário!

ora bem: 1+1= meo|Kinect

O objectivo estava decidido,  fazer um interface entre o kinect e a meo box usando um pc no meio para fazer a comunicação entre os dois dispositivos

Desde o primeiro dia o Gonçalo Basto (um os membro da minha equipa), estava a fazer uns widgets para a meo box de modo a que pudéssemos explorar ainda mais o uso do kinect. Falamos várias vezes com o pessoal da PT Inovação, Microsoft,  sapo.labs teams e gradualmente fomos nos apercebendo que teríamos de mudar de ideias e que a apresentação no Main Stage estava um pouco comprometida. Disseram que não era impossível fazer a apresentação com uma box no palco, e que isso iria dar algum trabalho a organização. E as ultimas palavras que nos deram foi:
- Mantém-te em contacto connosco que nos vamos ver o que podemos fazer, entretanto falem com a organização.

Perdemos bastante tempo de desenvolvimento com estas questões burocráticas.

Mesmo assim conseguimos desenvolver o interface de gestos usando hotspot que iriam enviar comandos para a box. O tempo para terminar o pojecto estava a terminar mas conseguimos ir testar os resultados finais no equipamento de demonstração da PT Inovação.

Foi um sucesso, mas apenas faltavam 4 horas para a apresentação e nada estava feito para nos no palco.

Fomos para o palco para testar tudo 1 hora antes das apresentações e só nessa altura mandaram alguém ir buscar um router a meo com um cabo de rede e uma box. Montaram tudo mas mesmo assim não estava a funcionar.

Falei com o  Celso sobre as nossas dificuldades e ele disseque era tarde demais para resolver problemas destes. Eu disse-lhe que andava desde quinta-feira a tentar resolver este problema e expliquei a nossa situação. Ele agarrou no telefone e disse que ia ver o que era possível fazer...mas que não prometia nada.

 

Estava desesperado....O resto da nossa equipa desmotivada, pensei em desistir, mas alguém da organização apareceu e disse que iriam fazer com que fosse possível apresentar a nossa aplicação.

O Miguel Vicente da Microsoft, a quem a nossa equipa agradece por toda a atenção, esteve sempre a dar-nos bons conselhos e a dizer para não desistir-mos, a PT Inovação estava muito interessada que a apresentação fosse feita e de repente, fez luz e as coisas começaram a acontecer.

A organização moveu o nosso projecto para o ultimo da lista a ser apresentado para dar mais um tempo extra, a PT Inovação enviou um membro da equipa deles para fazer o setup no palco, e ficamos no chão a frente do palco a configurar todo o hardware e a rede para que tudo funciona-se na apresentação, apesar de não estar nada testado e não sabermos se as coisas iriam funcionar.

Acabamos o setup quando faltavam 5 minutos para a nossa vez no palco, o nosso "porta-voz" estava muito nervoso e nos não acreditávamos que tudo pudesse funcionar mas FUNCIONOU!!!, contudo o nosso orador estava sobre uma pressão enorme acreditando que tudo ia falhar diante aquelas 800 pessoas e acabou por não conseguir fazer o melhor discurso na apresentação... bloqueou e só disse palha para encher os 90 segundos... A apresentação que preparamos acerca de fazer da TV Interactiva um novo conceito, falar acerca do reconhecimento de gestos e voz, um novo mercado possível, etc tudo foi deixado de lado e ficamos a ouvir apenas: "como podem ver eu vou-me mexendo e tal, e entrei num menu... isto é porreiro porque até da para fazer exercício..."

A apresentação foi um fracasso, embora tudo estivesse funcional.

Quero então agradecer a toda a organização do codebits que fizeram o impossível acontecer, a equipa da PT Inovação por nos terem dado uma valiosa ajuda (não é todos os dias que metemos um dos top developers de Portugal em MediaRoom, no chão a configurar DNS's), ao Migue Vicente por toda a motivação que nos deu, a para a minha equipa que apesar de grande pressão até se portou bem.

Mais tarde irei publicar aqui o projecto, incluindo vídeos dele a funcionar.

Foi um excelente codebits e um desafio brutal.

8Nov/110

Codebits 2011 is comming…

O maior evento para nerds, techies e geeks esta a chegar novamente.

Faltam apenas 2 dias para começar o codebits!

Sim, vai haver um concurso de 48 horas de programação
Sim, vai haver um quiz
Sim, vão haver livros da O'Reilly
Sim, vai haver montes de comida e bebida
Sim, vão haver arduinos
Sim, vai haver Tacos Nucleares
Sim, CODEBITS FTW!

e não, não devemos dormir!

Estejam atentos...!