Microsoft Azure e a subscrição Dreamspark

Microsoft Azure e a subscrição Dreamspark

Quem é estudante e tem acesso ao Microsoft Azure e a subscrição Dreamspark para este mesmo serviço, através do Ensino Superior, concerteza deparou-se com alguns problemas:

Problema 1 – Caso tenham um email Microsoft institucional ( empresas ou escola ), ao tentarem activar a vossa subscrição Azure DreamsSpark, irão verificar que é impossível activar a subscrição na vossa conta Azure da vossa escola.

 

Problema 2– Como está mencionado pela Microsoft: “Visual Studio Online Continuous Integration is not currently compatible with our Azure offer”. E de facto é verdade, se formos ao VisualStudioOnline e tentar-mos fazer deployments na nossa conta Azure, iremos encontrar uma mensagem igual a apresentada em baixo

message

Como podem ver aqui diz que as contas não irão conectar-se a vossa conta Azure LiveID.

É possivel criar um setup de integração continua entre o VSO e o Azure sem recursos externos!!!

Solução – Ao criarem a conta Dreamspark, mesmo que com o vosso email institucional (OrgID), a Microsoft cria uma conta LiveID associada à mesma. Assim sendo se tiverem iniciado a sessão na vossa conta Azure OrgID, vai aparecer uma fatídica mensagem de erro a dizer que a vossa conta não tem uma conta Dreamspark associada!
Como tal, precisam fazer login no Dreamspark com um browser em modo anónimo, e activar a subscrição desta forma! No passo seguinte irá ser criado uma conta Azure associada à vossa conta liveID.

 

Agora para fazer a integração continua.

No vosso projecto no Visual Studio 2015, se tentarem fazer um deploy no Azure, irá funcionar sem problemas. Quando o fazem dentro da pasta properties ira aparecer uma pasta chamada PublishProfiles e dentro da mesma ira existir um ficheiro *.pubxml.

Esse ficheiro tem os detalhes necessarios para fazer um deployment no Azure, este ficheiro terá de ser commitado no projecto para podermos fazer deployment a partir do VSO.

ATENÇÃO: O vosso repositorio deve ser privado pois esse ficheiro irá conter a vossa password de deploy.

howto

Neste ficheiro devem alterar a linha que contem o elemento: <_SavePWD> e substituir por <Password>.

Para obterem a password, vão ao portal Azure, abre a vossa web app e clicam aqui

howto2

 

Isso irá fazer download de um ficheiro com os dados para fazer deploy do vosso site. La dentro irá aparecer uma password que estará salted, é só colocarem agora a password no elemento xml <Password>

Para finalizar no VSO fazem os seguintes passos:

Quando fazem build ou release adicionem um Visual Studio Builder

howto3

 

E definem as seguintes opções:

howto4

 

Onde diz “StreetFood – Web Deploy.pubxml devem colocar o nome do vosso Publisher Profile, desta forma, sempre que a build é executada, os ficheiros são logo actualizados na conta azure.

Vamos ver uma demonstação:

Temos o seguinte site no azure:

howto5

Vamo então mudar o texto “All Users” para “All Test Users”

Neste caso vamos abrir pagina index.html e vamos alterar o texto que pretendemos mudar:

howto6

 

Após gravar o ficheiro e fazer commit o build foi disparado

howto7

O build correu sem problemas e o deploy foi feito!

howto8

 

 

 

 

 

 

 

 

 

 

 

 

Finalmente vamos fazer refresh a nossa pagina inicial alojada no azure para ver se o texto foi alterado como queríamos:

howto9

 

E pronto, o deployment foi feito com sucesso.

Neste exemplo nem estamos a testar ou validar nada, apenas estamos a compilar e a fazer deploy. Num ambiente de desenvolvimento real não deve ser feito desta maneira pois se alguma coisa falhar vão deixar o vosso site comprometido.

CloudPT API

Andei por ai a vasculhar um pouco a API do serviço CloudPT e achei interessantíssimo.

Para quem não conhece o CloudPT, a maneira mais facil de descrever é: Uma DropBox Portuguesa. No fundo é tão parecido com a dropbox que alguns elementos da API podem ser usados em ambos os serviços de storage.

A primeira coisa que me ocurreu quando comecei a olhar para a api foi fazer um pequeno programinha em python para fazer backups para lá. E assim foi.

Aqui fica o código para o caso de alguem querer fazer fork ou algo do genero:

https://github.com/killercode/CloudPTBackupTool

CryptoEscudo

CryptoEscudoNos últimos tempos tem havido um zum-zum muito grande a volta das crypto-moedas, fala-se muito sobretudo acerca do BitCoin.

Soube na semana da passada da existência de um projecto chamado CryptoEscudo, basicamente alguém se lembrou de criar a crypto-moeda portuguesa com fé que esta pode ser a solução para os problemas do nosso pais.

Recomendo vivamente a visita ao site do CryptoEscudo pois é extremamente interessante a ideia. Eu próprio já alinhei no esquema, e recentemente fiz a uma pré-release de um pequeno programa para tornar a tarefa de “mining” um pouco mais simples a todos os utilizadores

Podem encontrar o código e os binários aqui: https://github.com/killercode/CryptoEscudoMinerTools/

E já agora podem fazer os vossos donativos em CESC, aqui: http://geek-press.com/donations.html

Python

python_sh-600x600

Quando somos programadores, estamos sempre sujeitos a ter de fazer algo numa linguagem de programação que nunca utilizamos. Isso por vezes pode ser assustador (mas desafiante) , sobretudo quando a sintaxe dessa linguagem é um pouco diferente do que estamos habituados.

Foi assim que no inicio de Junho deste ano comecei as minhas aventuras com Python.

Continuar a ler

Jogo de Damas Open Source

Olá a todos!

No passado mês estive a desenvolver um pequeno jogo de damas em C++ para a Unidade Curricular de Programação Por Objectos da Universidade Aberta.
Achei que era um projecto interessante para avançar e fazer um jogo de damas completo.

Para já apenas permite Jogador Vs Jogador, mas gostava de no futuro adicionar melhoramento nos algoritmos de detecção de jogadas obrigatórias (o que foi usado agora serve para desenrascar mas precisa mesmo de melhorias), adicionar capacidade de jogo em rede com um chat, Jogador Vs AI e um substancial melhoramento no interface gráfico!
A quem esteja curioso com o projecto pode consultar a source e os binarios em https://github.com/killercode/damas

Sintam-se a vontade para colaborar e/ou comentar :)

checkers

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

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!

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.

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  

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.