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é!

Pebble anuncia novo Smartwatch – Pebble Time

Pebble é um smartwatch que impressiona. O projeto lançado e fundado no Kickstarter em 2012 é atualmente um dos recordistas o recordista em financiamento da plataforma. Desenhado por uma equipe pequena, atualmente, conta com com mais de 1 milhão de unidades vendidas por todo o mundo e é também o smatwatch mais vendido na Amazon.

Dessa vez, a equipe repete o sucesso lançando a segunda geração do relógio. O Peeble Time necessitava de 500 mil Dólares para que o projeto pudesse acontecer, até a data desse post já havia recebido de mais de 11 Milhões de Dólares para financiamento e ainda restavam 29 dias para o fechamento. Provavelmente, será um dos recordistas da plataforma Kickstarter por um bom tempo, atualmente esta na segunda posição de projetos com mais recursos. Em 3 de março de 2015 o Pebble Time passou a ser o projeto que mais recolheu recursos no Kickstarter.

O relógio que na sua primeira versão possuía suporte a aplicativos e diferentes skins, agora possui além das funcionalidades anteriores, comandos de voz, novo layout e display colorido. Possui ainda um aplicativo de gerenciamento do relógio disponível para as plataformas iPhone, Samsung e Android.

Sucesso a equipe do Pebble. Para saber mais sobre o Pebble Time e até mesmo ajudar a financiar o projeto, clique aqui.

Pebble Time
Pebble Time

 

Automatizando tarefas com Crontab

Crontab é um aplicativo disponível na console do Linux muito utilizado para programar  atividades agendadas no sistema. Sendo muito utilizado para manutenção do sistema operacional. Permitindo que arquivos sejam copiados ou removidos periodicamente por exemplo, sem a necessidade de ações do usuário.

A lógica de programação e configuração do Crontab é bem simples. Nele, cada tarefa pode será programada em uma linha da tabela de Crontab. Seguindo a lógica abaixo :

A B C D E Comando

O campo A corresponde aos minutos. O campo B corresponde a horas, o campo C corresponde ao dia do mês, o campo D corresponde ao mês e o campo E corresponde ao dia da semana. O Comando será executado sempre que a sentença for verdadeira.

 

crontab-syntax

 

Dica: Os campos aceitam múltiplas entradas e coringa para representação.

Alguns exemplos :

Executa o comando updatedb associado a cada minuto, todos os dias de todos os meses independente do  dia da semana

* * * * * updatedb

Executar o mesmo comando a cada 5 minutos, todos os dias de todos os meses independente do dia da semana.

*/5 * * * * updatedb

Agora vamos executar o mesmo comando, somente as 10:15 minutos do dia 1 de cada mês.

15 10 01 * * updatedb

Para consultar sua programação no Crontab, aplique o comando “crontab -l” na console do linux.

 

 

Curso ajuda empreendedores em tecnologia

O Coursera abriu recentemente uma turma para o curso que visa ensinar as pessoas interessadas em trabalhar no mercado de tecnologia a como comercializar produtos tecnológicos. O conteúdo é dividido em módulos. A parte um contempla como elaborar um filtro para viabilizar idéias e aprendendo como direcionar seus esforços pra chegar ao resultado.

O mercado demanda cada vez mais profissionais capazes de entender as diversas etapas do processo de comercialização de tecnologia e até mesmo como entender a viabilidade de um projeto.

A página do curso é essa aqui: https://www.coursera.org/course/techcommercialpart1

 

Guia de estudos com Evernote

Quando se pretende dominar um assunto, diferentes formatos de conteúdo são explorados : vídeos, textos, imagens, apresentações, etc… Esses formatos servem como fonte de material para aprendizado e futuro material de referência para consulta.

Evernote peek

 

O uso de ferramentas de catalogação e armazenagem de conteúdo são de grande valia para essa finalidade. Com o Evernote por exemplo, é possível organizar os estudos separando em cadernos e mantendo o assunto indexado por data. Até então, o armazenamento tradicional também funcionaria. As principais vantagens por optar pelo Evernote para guia de estudos são:
– concatenar diferentes conteúdos em uma mesma nota;
– indexar adicionando tags que podem auxiliar na catalogação ;
– pesquisar por tópicos nas notas ou até mesmo em anexos ou imagens
– usar aplicativos parceiros do Evernote para potencializar a experiência de estudo ou mesmo permitindo o estudo sem papel.

Com o aplicativo de browser ( Evernote Web cliper ) nos permite capturar conteúdos de sites. Já falei anteriormente sobre as vantagens da coleta de informações usando o Evernote. Dessa forma, podemos agrupar, conteúdo de sites, arquivos PDF, imagens ou mesmo texto simples em notas que podem estar separadas por temas e cadernos que podem representar disciplinas.

Experimente !