Node.js

Continuando a montagem e testes com ambientes e novas arquiteturas, uma me chama muito a atenção, Node.js.

Node.js é uma plataforma construída sobre o motor JavaScript do Google Chrome (JavaScript V8) para facilmente construir aplicações de rede rápidas e escaláveis. Node.js usa um modelo de I/O direcionada a evento não bloqueante que o torna leve e eficiente, ideal para aplicações em tempo real com troca intensa de dados através de dispositivos distribuídos.

nodejs-logo

Na JSConf 2009 Europeia, um programador jovem chamado Ryan Dahl, apresentou um projeto em que estava trabalhando. Este projeto era uma plataforma que combinava a máquina virtual JavaScript V8 da Google e um laço de eventos. O projeto tinha apontava para uma direção diferente das outras plataformas em JavaScript que rodam no servidor: todos I/O primitivos são orientado a evento. Aproveitando o poder e a simplicidade do Javascript, isso tornou tarefas difíceis de escrever aplicações assíncronas em tarefas fáceis.

Como o Node funciona

O Node roda em uma JavaScript V8 VM. JavaScript no lado do servidor pode ser um conceito novo para todos que trabalharam exclusivamente com o JavaScript no lado do cliente, mas a ideia em si não é tão absurda, eu diria, nem um pouco.

O que é V8?

O motor JavaScript V8 é o motor que a Google usa com seu navegador Chrome. Poucas pessoas pensam sobre o que realmente acontece com o JavaScript no lado do cliente. Bem, a engine JavaScript realmente interpreta o código e o executa. Com o V8 a Google criou um ultra-rápido interpretador escrito em C++, com um outro aspecto único: você pode baixar a engine e incorporá-la em qualquer aplicação desejada. Isso não está restrito em rodar em um navegador. Para que criar uma nova linguagem quando há uma boa solução já disponível?

 

Fonte(s):

http://nodejs.org

http://nodebr.com

http://www.ibm.com/developerworks/br/library/os-nodejs/

Jetty

Jetty é um servidor HTTP e Servlet Container 100% escrito em Java. Grande concorrente do Tomcat que ficou famoso por ter sido utilizado como o servlet container do JBoss antigamente.

jetty-logo-80x22

A grande vantagem do Jetty com relação ao Tomcat é a sua fácil configuração. Ele também foi o pioneiro a usar I/O assíncrono para aguentar uma carga maior de usuários simultâneos sem depender da antiga estratégia thread-per-connection.

Iniciando o Jetty
Basta executar o jar “start.jar” para iniciar seu Jetty que por padrão atende na porta 8080.

java -jar start.jar

Para alterar a porta, basta passar o parâmetro de sistema ${jetty.port}:

java -jar -Djetty.port=80 start.jar

A pasta /${jetty.home}/webapps é onde ficam as aplicações (default). Caso você possua um arquivo *.war, basta copiá-lo para esta pasta para fazer o deploy.

Para os práticos de plantão, podem utiliza um bat tipo o abaixo:

@echo off
cls
echo ——————————————
echo Rodar Jetty
echo ——————————————
CD\
CD C:\PROGRAM~1\jetty-distribution-9.0.3.v20130506
java -jar start.jar
goto:EOF

 

Fonte(s):
http://pt.wikipedia.org/wiki/Jetty
http://docs.codehaus.org/display/JETTY/Jetty+Wiki

 

 

 

 

Jenkins (Servidor de Integração)

Jenkins é um servidor de integração continua, um dos mais utilizados e populares. Através da integração contínua é possível agilizar tarefas(Compilação de projeto, execução de testes automatizados, etc), como deploy de um war em um servidor de produção, gerar relatórios de cobertura de testes, calcular métricas sobre o código do projeto, etc. Que de certa forma podem ser demoradas.

jenkins_logo

Podemos então executar tais tarefas a cada mudança no repositório de código(commit), também podendo apontar erros de compilação ou falhas em testes automatizados, avisando todos os envolvidos.
Muita coisa pode ser feita ou alterada através dos diversos Plugins existentes em seu site.

 

Fonte(s):
http://jenkins-ci.org/
http://en.wikipedia.org/wiki/Jenkins_%28software%29

Arquivo(s):
http://www.eclipse.org/hudson/the-hudson-book/book-hudson.pdf
http://bitnami.org/stack/jenkins
http://www.site.lalitbhatt.com/jenkins

 

 

 

 

 

É o Momento de Simplificar?

Quando o mais deve se tornar menos. As vezes complicamos as coisas, eu por exemplo, estou usando uma excelente ferramenta online chamada Kanbanize + Microsoft Project 2013Enterprise Architect Professional para o gerenciamento dos meus projetos pessoais. Tudo isso complementado com técnicas pomodoro, fichas e listas.

loucura_edersonmelo

Tanta organização tem me feito aproveitar melhor e ao mesmo tempo perder tempo. Isso tudo em organizar e projetar antes de implementar, que é justamente aonde tenho o ganho de tempo, na implementação. Ganho também experiência cada vez mais com as técnicas e ferramentas utilizadas, isto com uma visão otimista.

O bom de saber e conhecer tantas técnicas e ferramentas é que isso te possibilita simplificar.

Simplificar não é fazer menos ou não fazer, é simplesmente fazer o que deve ser feito e ponto.

 

Agile Soccer

Metodologia Baseada no Futebol(Agile Soccer)

Sim, utilizamos uma metodologia ágil chamada Agile Soccer(AS, daqui por diante). A ideia é simples e está em fase de teste. É uma mescla de muitas metodologias e sua similaridade com o Scrum não será mera coincidência.
Dentro de uma equipe multidisciplinar temos talentos, posições e outras características similares a um jogo de futebol. Claro que poderíamos ter os mesmos salários, mas fazer o que.
Você pode formatar times de 11, 7 e 5 jogadores, que ainda podem ser compostas por um técnico, auxiliares técnicos e um ou uma equipe de árbitros. Que serão escalados para este jogo(projeto).
Criamos uma estratégia de jogo, não para jogar contra outro time, mas para jogar em busca da vitória em prol a um cliente (nossa torcida).

Agile Soccer
Agile Soccer

Esta estratégia, posiciona os jogadores conforme sua escalação e suas características de jogo (atacante, meio campo, zagueiro, etc).
Todos reunidos, então decidimos como atacar, melhores táticas de jogo, etc.
Cada partida é formada por no máximo 90horas de jogo(ufa). Ou seja, cada projeto pode ter no máximo 90hrs. Sim, existem projetos até maiores que 1600hrs, mas ai caímos no caso de um campeonato. Que segue a mesma regra, você disputa várias partidas.
O tempo de partida é definido em conjunto, focando as características e condições de gols, itens entregáveis. Atrasos que vão e sempre acontecem, entram na regra de morte súbita, ou seja, é dado dois tempos de 15hrs, quando terminar, o jogo acaba, querendo ou não ter atingido este tempo.
As regras básicas estão acima, cada técnico ou clube pode criar sua forma de jogar, tratando cada jogo de forma diferente.
É uma ideia bacana e que posso vir a experimentar, mas continuarei evoluindo.

workrave edersonmelo

Workrave

Uma dica para quem busca mais que simplesmente sentar na cadeira e trabalhar, é a utilização da aplicativos como o workrave. Não sou usuário do aplicativo, mas achei bem interessante.


Workrave is a program that assists in the recovery and prevention of Repetitive Strain Injury (RSI). The program frequently alerts you to take micro-pauses, rest breaks and restricts you to your daily limit. Please refer to the feature comparison for a complete list of features, and how the program performs with respect to other programs on the market. The program runs on GNU/Linux and Microsoft Windows.

Fonte: http://www.workrave.org/

 

Uma nova velha polemica: hack para ie

Como teste do novo app do meu tablet para wordpress,  estarei criando mini posts e dicas rápidas. Como primeiro mini post, uma nova velha polemica : hack para ie.

Muitos desenvolvedores, analistas e especialistas começaram acreditando que evoluímos a ponto de não precisar criar os antigos métodos hacks para navegadores, em principal foco o Internet Explorer.
Infelizmente tais profissionais que se dizem tao experientes e atualizados estão errados.
Qualquer livro sobre linguagem e inovacao acaba entrando nesse polemico assunto. A implementacao jsf prime faces por exemplo sugere a utilizacao de tags para identificacao para o ie: if lt ie 9
Alem disso, temos o detalhe de que elementos html e css apresentara diferenca na exibicao quando exibido em diferentes navegadores.

#ficaadica

Técnica Pomodoro

Venho testando e definitivamente empregando a técnica chamada pomodoro. Sim, parece a marca daquele molho de tomate. Está técnica esta sendo adicionada no aplicativo tagther como uma opção de desenvolvimento interno e ofertada junto a ferramenta.

pomodoro
Mas definindo, a técnica pomodoro é um método de gerenciamento de tempo desenvolvido por Francesco Cirillo no final dos anos 1980. A técnica utiliza um cronometro para dividir o trabalho em períodos de 25 minutos chamados de ‘pomodoros’.
O método é baseado na ideia de que pausas frequentes podem aumentar a agilidade mental e busca fornecer uma resposta eficaz a um estado provocador de ansiedade chamado de temporal “becoming” nos trabalhos de Henri Bergson e Eugene Minkowski.
Embora a técnica Pomodoro seja extremamente simples e fácil, ela não deve ser usada simplesmente como um processo de acelerar o desenvolvimento da tarefa, mas sim como uma unidade de esforço temporal além do poder que ela tem de focar na tarefa, evitando distrações. Portanto, além de você descobrir ao longo do tempo quais são as atividades em que você seja menos produtivo, você poderá tentar se desenvolver melhor nesses seus pontos mais fracos.

São somente cinco os passos básicos para implementar essa técnica:

  1. Escolher a tarefa a ser executada
  2. Ajustar o pomodoro (alarme) para 25 minutos
  3. Trabalhar na tarefa até que o alarme toque; registrar com um “x”
  4. Fazer uma pausa curta (3 a 5 minutos)
  5. A cada quatro “pomodoros” fazer uma pausa mais longa (15-30 minutos)

Fica como sugestão o aplicativo tomighty(www.tomighty.org) que é muito simples e eficiente.

Fontes: http://pt.wikipedia.org/wiki/T%C3%A9cnica_Pomodoro

;D

Versões Alpha, Beta, Release Candidate e Final

Registrando como eu gosto de trabalhar quando o assunto é a definição de versão do software desenvolvido, utilizo o básico, simples e mais eficiente sistema de definições. Alpha, Beta, Release Candidate e Final.

versao

Alpha

Derivado de uma letra do alfabeto grego e de valor 1, consideramos a primeira fase de um software, ou seja, os primeiros passos. Permitindo o patenteamento e o conhecimento das suas funções, por assim dizer.

Beta

Também derivada do alfabeto grego e de valor 2. É considerada aceitável para ser lançada para os usuários, mas com consciência de que possa ter bugs.

Release Candidate(RC)

Como o nome diz, é a versão na qual o software é um candidato a liberação. Mais próximo da versão final, ainda pode conter bugs, mas deve ser quase perfeita.

Final

Como o próprio nome diz, chegamos ao final, agora é só evolução do software.

 

😉 Ederson Melo

Validadores Personalizados no JSF

Em JSF você podemos trabalhar com dois grupos de validadores de dados: os padrões (que são fornecidos pelo JSF) e os personalizados (que são os podemos criar). Os existentes validam algumas características de dados, tais como: tamanho de campos, limites, etc.
Mas as vezes precisamos validar algo diferente, entra ai a personalização.

Criação de um validador

Basta sobrescrever o método validade(), estendendo a interface javax.faces.validator.Validator, e registrá-lo no contexto do JSF.

1. Criando o validador

public void validateEmail(FacesContext context, UIComponent toValidate, Object value) {
String email = (String) value;
if (email.indexOf(‘@’) == -1) {
((UIInput) toValidate).setValid(false);
FacesMessage message = new FacesMessage(“Email Invalido”);
context.addMessage(toValidate.getClientId(context), message);
}
}

2. Registrando o validador

Devemos registrar o validador no Faces-config, conforme o exemplo abaixo:

<validator>
<h:inputText id=”email” value=”#Bean.user.email}”
validator=”#{validateEmail}” required=”true”/>
<validator-class>
</validator-class>
</validator>

3. Usando o validador

Após criar e registrar o validador, basta usa-lo por meio do marcador <f:validator …/>:

<h:inputtext id=”email” required=”true” validator=”#{validateEmail}” value=”#Bean.user.email}”>
</h:inputtext>

[Lembrete Pessoal]