Movimente-se e seja produtivo

Quando se trabalha a frente de um computador é passar horas com pouco movimento do corpo pode virar rotina, essa ausência de movimentação forma pontos de tensão e sobrecarrega músculos, ossos e tendões. Como se não bastasse isso, os movimentos repetitivos relacionados a atividade de digitação podem ocasionar lesões por esforço repetitivo (LER) ou mesmo acumular tensões no pescoço, ombros, punhos e outras partes do corpo, impactando diretamente na vida e nos seus resultados.

Para evitar esse risco, movimentar-se e criar uma rotina de pausas frequentes é muito importante. Mas será que adicionar pausas a uma atividade tão intensa não prejudica a produtividade ? Como se manter produtivo e ainda se movimentar durante o dia de trabalho ? Criar uma cultura de se movimentar pode ser muito difícil para algumas pessoas. Também foi bem difícil pra mim. Descobri que estava detonando a minha saúde quando percebi que bebia pouca água. Certo dia me dei conta que fui beber meu primeiro copo de água do dia quando ja passava das 20:00 h.

Uma forma de se convencer é que quando nos movimentamos mais, irrigamos melhor o cérebro. Com a cabeça trabalhando melhor, pensamos melhor! Sabe aquele bug que esta a horas tentando resolver ou aquele trecho que código que não saia ? A resposta pode ficar mais clara quando se movimentar. Esse também é um exercício interessante, pois voltamos a olhar o problema com uma visão quase limpa.

Algumas dicas que sigo e que estão funcionando bem comigo:

Beba água 

Use seu smartphone como seu aliado, coloque um alarme que lembre de beber água: Beba muita água, ela é um aliada da sua saúde, Influenciando até mesmo na absorção de impactos da sua coluna ( algo relacionado aos discos que separam os ossos ). Além disso, você terá que ir abastecer sua garrafa. Aproveite para se movimentar e conversar com seus colegas de trabalho.

Movimente-se

Se possível programe alarmes ou use um desses apps que monitoram o quanto caminhou durante o dia.  Monitores como Up da Jawbone, Fitbit ou mesmo os aplicativos para contagem de  passos do iPhone podem ser grandes aliados.

Respire melhor

A respiração é parte importante do processo de oxigenação do sangue e do cérebro.

Durma bem

Pode parecer besteira, mas uma noite de sono bem dormida ajuda a melhorar a saúde e aumenta a disposição para os desafios da vida.

 

 

 

Aprendendo Python de maneira Interativa

Uma forma legal de aprendizado para programar uma linguagem de programação, é a possibilidade de durante o aprendizado praticar o assunto abordado e quem sabe fazer um pequeno projeto. Acredito que ajude a fixar e até estimule mais ainda o aprendizado. Durante minhas pesquisas de desenvolvimento usando OpenCV, acabei esbarrando com Python algumas vezes.

Uma delas, durante a montagem do ambiente do OpenCV tive um contato de instalação e recentemente, durante a montagem de protótipo, acabei iniciando um estudo mais aprofundado da linguagem. Um dos sites que me chamou a atenção foi o Learn Python. que se propõe a ser o ponto de entrada com a linguagem e permite os testes de programação online.

Recomendo, vai lá!

Criando um socket server simples com NodeJS

Desenvolvedores de software eventualmente estão envolvidos com algum tipo de solução baseada em socket, principalmente utilizando um cliente para conexão com um server socket.

Com o objetivo de criar um server socket simples, criei um servidor utilizando o NodeJS que me auxilia quando desejo visualizar as mensagens disparadas pelo cliente que estou desenvolvendo e como essa mensagem esta sendo recebida no servidor.

Caso queira conhecer mais sobre o NodeJS, veja o post sobre como acessar comandos do linux usando NodeJS.

Partindo do princípio que o NodeJS esta instalado ( o mesmo pode ser baixado aqui ). Será preciso criar dois arquivos:

1 – Um arquivo javascript (.JS) que contém a lógica do server.

Exemplo de código

// Load the TCP Library
net = require(‘net’);

//Porta para conexao
var porta = 29298;

// Lista de clientes
var clientes = [];

// Inicia o TCP Server
net.createServer(function (socket) {
// Identifica o socket
socket.name = socket.remoteAddress + “:” + socket.remotePort

// Adiciona o socket a lista de clientes
clientes.push(socket);

// Envia uma mensagem de conexao
socket.write(“Cliente ” + socket.name + ” conectado com sucesso\n”);

// Avisa aos demais clientes que um novo cliente foi conectado
broadcast(socket.name + ” conectado\n”, socket);

// Listener de requisicoes dos clientes
socket.on(‘data’, function (data) {
broadcast(data,socket);
});

// Trata a desconexao do cliente
socket.on(‘end’, function () {
clientes.splice(clientes.indexOf(socket), 1);
broadcast(socket.name + ” Desconectou\n”);
});

// Trata possiveis erros na conexao
socket.on(“error”, function () {
console.log(“\n Cliente desconectao por erro “);
clientes.splice(clientes.indexOf(socket), 1);
});

// Envia mensagem para todos os clientes
function broadcast(message, sender) {
clientes.forEach(function (cliente) {
// Tratamento para nao enviar a mesma mensagem a quem originou
if (cliente === sender) return;
cliente.write(message);
});
// Envia a mensagem na console
process.stdout.write(message)
}

}).listen(porta);

// Informa na console que o servidor esta em operacao.
console.log(“Servidor em execucao na porta :”+porta+”\n”);

socketServer.js

2 – Um arquivo para o iniciar o nodeJS, sem a necessidade de digitar. Podendo ser um arquivo .bat ou um shell script com o comando abaixo.

node socketServer.js

Exemplo de execução do socket server
Exemplo de execução do socket server

Até!

Desenvolvimento mobile com AppGyver Steroids

Recentemente, testei o desenvolvimento de aplicativos para iOS usando HTML5, CSS e Javascript através da plataforma Steroids.

A solução da AppGyver permite a criação de soluções usando recursos de Web, Phonegap e Cordova.  A proposta é bem interessante, pelo fato de utilizar conhecimento e recursos que já realizem o desenvolvimento de soluções Web, podendo criar soluções iOS e Android.  A instalação do ambiente de desenvolvimento é bem simples e esta disponível para Windows e Mac.

O que achei mais interessante foi testar a aplicação rodando no iPhone ou iPad sem a necessidade de uma conta de desenvolvedor na Apple Store.

Rodei algumas das aplicações exemplo usando o console.  A experiência de navegação no iPhone 4S não foi boa e muitas vezes a carga da página seguinte levou mais tempo e a ampulheta de carga foi apresentada. Na aplicação nativa isso não aconteceria. Outra desvantagem é que o Steroids não permite drag-and-drop nas interfaces e o suporte a base de dados usando sqlite é bem limitado.

Uma ferramenta lançada recentemente pela AppGyver é o prototyper que permite criar a aplicação, mesmo para pessoas sem o conhecimento de desenvolvimento.

Conclusão

AppGyver pode ser uma excelente solução para apresentação de protótipos e validação de interfaces. Principalmente para a protipação rápida usando o prototyper. A documentação é bem razoável e a capacidade de extensão através do uso de APIs é boa.

Mesmo com toda a facilidade oferecida,  a performance da aplicação ainda esta muito abaixo. Mas não usaria para uma solução comercial.

 

Downgrade do Maven 3 para Maven 2 no MacOS

Recentemente precisei setar um projeto com o Maven 2.2.1 no MacOs. Como a máquina foi recentemente atualizada para a última versão do sistema operacional, descobri que a versão instalada era a versão 3.0.3.

Como saber qual a versão instalada ?

Abra um terminal e digite o seguinte comando :

mvn -version

Caso deseje realizar o downgrade, realize os passos abaixo através do terminal:

1 – Vá para a pasta Share/Java :

cd /usr/share/java

2 – Setup da versão do Maven:

Certifique-se que o Maven esta instalado nessa pasta :

ls -l | grep maven

* É provável que outras versões estejam instaladas. Caso a versão desejada não esteja, realize o download em http://maven.apache.org/ . Uma vez que o download foi concluído, o arquivo zipado deve ser movido para a pasta share/java.

sudo cp ~/Downloads/<Nome do arquivo>.zip /usr/share/java

Feito isso, o arquivo deverá ser explodido na pasta :

sudo unzip <Nome do arquivo>.zip 

3 –  Vá para uma pasta acima ( Vamos fazer o apontamento do Maven )

cd ..

A Pasta atual é /usr/share.

4 – Ajustando o apontamento do Maven

Certifique-se que o apontamento esta nessa pasta :

ls -l | grep maven

 

Deve existir um link simbólico apontando para a versão do Maven, então temos que remover esse link.

sudo rm maven

5 – Crie o novo link apontando para a versão desejada:

sudo ln -s java/<Versão do Maven> maven

6 – Pronto! Para testar a instalação aplique no terminal :

mvn -version

Se tudo estiver certo, a versão apresentada dever ser diferente. No meu caso, a versão foi a 2.2.1:

MacBook-Pro:share fabio$ mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-06 16:16:01-0300)
Java version: 1.6.0_37
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: “mac os x” version: “10.8.2” arch: “x86_64” Family: “mac”
MacBook-Pro:share fabio$