Gestão, Manutenção e Inovação de Softwares

    A alguns anos eu falo e vejo acontecer de gestores trabalharem com suas equipes dando manutenção em softwares de seus clientes sem se preocupar em evoluí-los. Tendo apenas o trabalho de mantê-los. Grande e enorme erro de gerenciamento, pois é fato que softwares tem vida útil. O papel de um profissional que faz software é construir algo o melhor possível para seus clientes assim como em qualquer profissão. Fazer sistemas bem feitos, que tenham um planejamento para sua vida útil. Assim seus clientes o adorarão e falarão bem de você para outros. Sabendo que em alguns anos de acordo com o andamento do mercado e tudo mais o software dele já não o atenderá como antes. Ai entra aquele planejamento de evolução e inovação que a grande maioria não faz. Algumas poucas empresas tem inclusive equipes responsáveis pela inovação dos seus softwares. O grande erro é, na maiorira das vezes, por falta de conhecimento técnico, imaginar que lucrar com a manutenção de um software é apenas continuar mantendo-o no ar e de vez enquando criar algo novo que o cliente solicita. E não planejar ou calcular o óbvio que é saber o quanto de tempo(tempo = $) uma equipe vai gastar para desenvolver ou manter um software pois as diferenças podem ser enormes. Imagine que em um software com tecnologia java de 12 anos atrás, um cadastro com 10 campos e algumas regras de negócios poderia levar 1 semana para se desenvolver devido a tecnologia da época. Nos dias de hoje com as tecnologias java atuais pode-se desenvolver o mesmo cadastro em 1 hora ou menos. 
    O que quero passar aqui é que apenas ficar dando manutenção em um software legado imaginando que vai continuar tendo aquele lucro pode não estar errado. Mas se você mensurar que poderia desenvolver aquele mesmo software com tecnologias atuais em aproximadamente 40 vezes menos tempo que o legado. Poderia programar para um futuro próximo um lucro muito maior do que simplesmente dar manutenção e poder focar em novas funcionalidades e apenas em regras de negócios. Lembrando que sistemas legados muitas vezes dão mais dor de cabeça para continuar rodando do que implementar novas funcionalidades. E o mais importante: Os profissionais vão continuar tendo "TESÃO" de trabalhar. E a rotatividade das equipes vai diminuir com certeza.

Customizar um thema para primefaces-5.1 com jQuery 1.11.3


    Como acabei de testar, vou colocar aqui os passos rapidamente para quem estiver passando dificuldades. Depois deixarei o post melhor.

Eu tentei seguir este post: http://www.mkyong.com/jsf2/primefaces/create-a-custom-theme-in-primefaces/ mas ao segui-lo as coisas não rolaram como deveriam. Não que ele esteja errado mas o ThemeRoller com o jQuery na versão 1.11.3 agora não gera o thema conforme ele explica com as pastas cssdevelopment-bundle e js folders. Agora ele gera pastas neste formato:


Então os passos que eu consegui pra conseguir utilizar o thema neste formato são:

1 - Após customizar o thema, gerar o zip
     com o toogle all deselecionado E com a versão 1.10.4 selecionada.




2 - Descompactar o zip e fazer como o post mencionado:

3 - Entrar na pasta jquery-ui-1.10.4.custom/css/nome-to-thema e alterar o nome do arquivo jquery-ui-1.10.4.custom.css para theme.css

4 - Editar o arquivo theme.css e substituir as seguintes linhas:
url(images por url("#{resource['primefaces-nome-do-thema:images


.png por .png']}"

5 - Editar no web.xml a configuração do thema:


6 - Copiar a pasta images e o arquivo theme.css para dentro da pasta /projeto-war/src/main/webapp/resources. Buildar e rodar.

Thema customizado:





Weblogic - The user must supply a JDBC connection ?


Yes, you must put that configuration on your config.xml:

<jdbc-system-resource>
  <name>TestXADS</name>
  <target>AdminServer</target>
  <descriptor-file-name>jdbc/TestXADS-jdbc.xml</descriptor-file-name>
</jdbc-system-resource>
 But, You must restart the server after that.

And another detail:

If you are using oracle, I d'ont know why but you cannot use this:
name="hibernate.hbm2ddl.auto" value="create-drop" />

You only get use with this:
 name="hibernate.hbm2ddl.auto" value="update" />

My opinion? Weblogic is a shut. JBoss as releases are the best.

Como desenvolver software em ambientes adversos


    A algum tempo eu observo ambientes de trabalho em empresas de desenvolvimento de software. Em especial empresas que mantém muitos desenvolvedores em um espaços muito pequenos. São diferentes equipes , diferentes tecnologias, diferentes projetos, estimativas curtas e opiniões contrárias. Ou seja, a "palha" para explodir um ambiente. E como colocar fogo nisso? Conversando e muito.  Em uma empresa em especial observei um ambiente com 16 pessoas em uma sala de 24 metros quadrados incluindo banheiro e sala de reuniões de 5 lugares.

    As pessoas começavam a chegar no trabalho pelas 7h da manhã. Geralmente quem chegava primeiro fazia o primeiro café do dia. Detalhe: Com apenas uma cafeteira de 1.5 litros para todos. Isso por si só gera um custo altíssimo em torno de R$-8.000,00/ano levando-se am conta o custo/hora do profissional que pára de trabalhar para fazer café incluindo o custo de cada colher e outros fatores como a média de cafeteiras feitas por dia. Enquanto que se tivesse uma cafeteira de 6 ou 9 litros faria-se café apenas uma vez por dia e o custo baixaria para R$-1.500,00 por ano. Mas não irei detalhar este tipo de cálculo agora.

    Mas vamos a produtividade. É fato que num ambiente de desenvolvimento de software não se trabalha realmente mais do que 80% de todo o horário comercial. Pensando no tempo gasto indo ao banheriro, reuniões e ou discussões necessárias ou não. Se fosse sempre assim até seria uma boa média. Só que no final é pior porque, em média, apenas 50% dos dias em que se espera ter aqueles 80% produtivos são realmente assim. Pois nestes esperados(inesperados) 50% acontecem sempre coisas para diminuir nossas estimativas.

    Acontecem coisas como problemas de infra-estrutura, tempo de gerenciamento seja ele auto ou para a equipe, reuniões não programadas junto as estimativas ou que não sejam relacionadas ao trabalho de desenvolvimento, pessoas que chegam ao ambiente trazendo demandas ou cobrando algo para a equipe em voz alta ou achando que estão contribuindo para maior agilidade no cumprimento de tarefas. Sem falar em falhas técnicas ou no que menos se dá importância: Processos. Sim processos. Empresas que tem até uma lindíssima descrição, não seguem o seu próprio processo. Começando por aqueles que deveriam dar o exemplo infelizmente. Esquecem-se de que até uma reunião de RH deveria ter um agendamento e registro de participação dos envolvidos. Ou seja, MONITORAMENTO. Puro e simples.

    E, ao levar em conta o que foi mencionado no primeiro parágrafo sobre muitas pessoas em ambientes pequenos chega a diminuir a produtividade de algumas pessoas em mais de 50%(dos 50% já mencionados).

    Ou seja, uma pessoa que ganha R$-2.000,00 que renderia normalmente R$-1.600,00 tem seu rendimento baixado para R$-800,00 devido a acontecimentos inesperados e baixado para R$-400,00 devido perda de concentração em ambientes com muitas pessoas. Não esquecendo que a empresa continua com um custo em torno de R$-4.000,00 levando em conta os encargos que a empresa precisa arcar com o contratado.

    No final, há melhores maneiras para conseguir trabalhar em ambientes em que não possuem processos é montar seu próprio processo de trabalho individual. Utilizando uma ferramenta pessoal para se organizar. E para o barulho nada melhor do que, após organizar seu trabalho, colocar um bom ou excelente fone de ouvidos, programar suas músicas preferidas ou rádio e esquecer do resto da empresa. Para que assim voce consiga render por volta de 45/50% a mais daqueles primeiros já perdidos pela desorganização dos processos e perda de foco. Se você for um desenvolvedor que normalmente rende mais que o resto da equipe então tudo bem. Você voltou a média que deveria ter mantido. ;)







Como entender ligações SQL (How to learn SQL)

Simples e direto:

Aprenda visualizando esta imagem como funcionam as ligações na hora de criar um SQL. 
Indo além do "select * from tabela" com, no máximo um "where id = ?"


Java - The Alphabet (Sopa de Letrinhas)

Apresentação Sobre o Universo Java. 

The Beginning:

    O Java foi criado em 1992 por uma equipe de engenheiros de tecnologia da sun.


Inicialmente batizado de oak(carvalho) e em 1995 foi rebatizado para Java. Existem várias histórias sobre a origem do nome. Ela foi criada para ser uma linguagem limpa(green-sem poluição) e assim ser independente
de plataforma e poder rodar em dispositivos eletronicos como video-cassestes, televisores, etc.
Como foi criado para ser uma linguagem limpa o conceito de maquina virtual foi o principio de tudo. É a JVM(Java Virtual Machine) que faz a mágica acontecer. Que interpreta os arquivos java e assim começa o desenrolar do "Alfabeto Java".

JVM – Java Virtual Machine(Máquina Virtual Java)

    É responsável por carregar os programas e fazer a conversão do
bytecodes em Linguagem de Máquina, definida para cada estrutura de (SO)Sistema Operacional.
Trocando em miúdos, o desenvolvedor pode criar um código que será independente de SO.

JRE – Java Runtime Environment(Ambiente de Tempo de Execução)

    É o Java que vem instalado nos computadores novos. Serve para que os softwares feitos em
java possam rodar nos pcs.

JSE – Java Standard Edition(Java Edição Básico)

    Ambiente com a estrutura básica necessária para criação de programas Java, contém a JVM,
o compilador e as bibliotecas Java necessárias.

JEE – Java Enterprise Edition(Java Edição Empresarial)

    Assim como JSE, o JEE é uma edição do ambiente Java para desenvolvimento de programas,
porém, com número de recursos superior, permitindo o desenvolvimento em multicamadas,
componentes distribuídos, ambientes de internet, etc. Hoje se encontra na versão JEE6.

JME – Java Micro Edition(Java Micro Edição)

    Edição do Java voltado para dispositivos capacidade de memória compacta como
celulares, PDAs, e outros dispositivos.

JSDK – Java Standard Development Kit(Java Kit Básico de Desenvolvimento)

    Contém o JRE, JSE, os fontes das classes Java e o JavaDoc, com isto, fornecendo o
ambiente para desenvolvimento e execução de programas Java.

API - Application Programming Interface(Interface de Programação de Aplicativos)

    É o conjunto de padrões de programação que permite a construção de aplicativos e a sua
utilização de maneira não tão evidente para os usuários.
É um conjunto de Classes prontas disponíveis para uso.

JPA - Java Persistence API(API de Persistencia Java)

    É uma especificação para a persistencia de dados.
Ela define um padrão de mapeamento objeto-relacional que frameworks devem implementar para
poderem ser considerados frameworks padrão JEE.

Hibernate (Hibernador)

    Implementa a especificação JPA e facilita o mapeamento objeto-relacional além de inúmeras
outras utilidades que auxiliam no desenvolvimento Java.

Framework (FrameWork)

    É uma estrutura de suporte definida em que um outro projeto de software pode ser
organizado e desenvolvido para servir a outros. Ou seja, voce pode utilizar vários
frameworks para desenvolver seu software. Para desenvolvimento de telas,
de camadas de negócio, de cálculos, de persistência de dados, etc.

Alguns exemplos de Frameworks:

AWT - Abstract Window ToolKit(Kit de Ferramentas para Telas Abstratas)

    É um framework que contém uma gama de componentes básicos utilizados no desenvolvimento
de telas desktop. Alguns consideram o AWT uma API.

Exemplo tela com AWT:














SWING

    Possui uma diversidade maior de componentes para serem utilizados no desenvolvimento de
Telas Desktop.

Exemplo tela com Swing:













SWT - Standard Widget Toolkit(Kit de Ferramentas Básicas para Componentes Gráficos)

    É uma implementação feita pela IBM para o desenvolvimento de telas desktop.

Exemplo tela com SWT:



Servlet(Pequeno Servidor)

    São classes java que, ao serem configuradas e implantadas em um servidor ou
container Java vão o mesmo vai interpretar o código dessas classes  e montar uma
estrutura de retorno seguindo um protocolo web como o html criando assim páginas web.

EJB - 
Enterprise JavaBeans(Componentes de nìvel Empresarial)
    É um componente da plataforma JEE. Consiste em fornecer um desenvolvimento rápido e simplificado de aplicações Java, com base em componentes distribuídos, transacionais, seguros e portáveis.

JSP - Java Server Pages(Servidor de Páginas Java)
    Foi uma das primeiras tecnologias Java para Web utilizadas para simplificar o processo de
desenvolvimento de páginas dinâmicas.

JSTL - Java Standard Tag Library(Biblioteca Básica para Etiquetas JavaServer)

    É um framework utilitário de desenvolvimento que estende a especificação JSP.
Era utilizado como complemento no desenvolvimento das páginas JSP.

JSF - Java Server Faces(Servidor Java de Faces)

    É um framework java usado para construção de interfaces de usuário baseadas em
componentes para aplicações web. O JSF é uma evolução do JSP pois além de possibilitar o
desenvolvimento de componentes customizados ele abstraiu a utilização de JSTL.
Ou seja, utilizando JSF o desenvolvimento realmente tornou-se ágil.

Implementções mais conhecidas de JSF:

RichFaces - http://showcase.richfaces.org/
Primefaces - http://primefaces.org/

Ajax - Asynchronous JavaScript And XML(Javascript Assíncrono e XML)

    Ajax é um conjunto de tecnologias (JavaScript, DOM, CSS e XML) que permite buscar de forma
assíncrona os dados requisitados no servidor sem ter que retornar todas as informações que
já estavam na tela. Ou seja, não causa o chamado “reload” na tela ou tela branca enquanto
carrega os dados da requisição.

Webservices(Serviços Web)

    Web service é uma solução utilizada na integração de sistemas e na comunicação entre
aplicações diferentes. Permitem que sistemas desenvolvidos em plataformas diferentes
sejam compatíveis.

REST - Representational State Transfer(Transferência de Estado Representacional)

   É um conjunto de princípios de arquitectura usado para desenvolver 
serviços web simplificados utilizando XML, HTTP, JSON, etc.
Com relativa facilidade de integração e Escalabilidade.

SOAP -Simple Object Access Protocol(Protocolo Simples de Acesso a Objetos)

    É um protocolo para troca de informações estruturadas em uma plataforma descentralizada e distribuída. É um um conjunto de regras codificadas que pode ser montado utilizando outros protocolos como RPC(Remote Procedure Call), XML e HTTP.

JSON - JavaScript Object Notation(Notação de Objeto Javascript)

    É uma estrutura de dados em javascript. Assim como o xml segue um padrão de estrutura de formatação de dados o json tem seu próprio padrão de estrutura. Por ser mais simples de trabalhar o json é muitas vezes mais rápido de trabalhar do que xml.

MAVEN

    É uma ferramenta de automação de compilação utilizada primariamente em projetos Java.
Ou seja, é uma ferramenta que serve para montar toda a estrutura de um projeto.

ANT - (Formiga)

    Também é uma ferramenta de compilação de projetos. É considerada o "pai" do maven. Mas com muito menos automação.

Versionadores(Controladores de versão) 

      Ferramentas para salvar e gerenciaar histórico de todas as alterações em arquivos e documentos.

CVS - Concurrent Versions System(Sistema de Versões Concorrentes)
     É um dos mais antigos e famosos sistemas de controle de versão.
SVN - Subversion(Subversão)
   É um sistema de controle de versão desenhado especificamente para ser um substituto moderno do CVS.

Git - "GIT" é uma gíria inglesa para “idiota, estúpido, ou pessoa que não vale a pena”
    É um sistema de controle de versão distribuído e um sistema de gerenciamento de código fonte, com ênfase em velocidade.

Servidores:
    Aplicações que rodam aplicativos comuns normalmente em rede. Também chamados de Containers.

Exemplos de Servidores:

GlassFish
    É o servidor padrão da especificação do Java. Ou seja, todos os outros servidores para serem considerados de padrão JEE devem ter, no mínimo, as mesmas funcionalidades do glassfish.

TomCat

    É um servidor Java, mas não é um servidor padrão JEE pois ele não faz tudo que o glassfish faz. Como rodar EJB.

JBoss - Versão atual é chamada de WildFly(Vôo Selvagem)

    É um servidor de aplicações enterprise JEE6. Considerado um dos melhores servidores de aplicações Java do mercado. Implementa a especificação, ou seja, ele segue o padrão mínimo do glassfish. Mas ele possui funcionalidades além do mesmo. Dividido em versões org(free) e eap(é free mas o suporte é pago).

Apple Resources from JVM in Mac IOS


If you have troubles in your JBoss(eap or 7.1) Applications like com.apple.laf or com.apple.laf.resources looking for LookAndFeel or MaskFormatters here are the solutions:

1 - Find for /jboss-(eap/7.1)/bin/standalone.conf

2 - Find for this code:

if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then
   JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman"
fi

3 - Put this line below execution like this:

if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then
   JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman"
   JBOSS_MODULES_SYSTEM_PKGS="$JBOSS_MODULES_SYSTEM_PKGS,com.apple.laf,com.apple.laf.resources"
fi

Ok.. restart you JBoss and enjoy ;)


HIBERNATE X MICKEY MOUSE

    Sim.. Este é mesmo o título deste desabafo.
Desabafo este vindo de uma enorme indignação. Vinda de uma situação pela qual passei nos últimos tempos e que preciso compartilhar.
    Vamos lá:
 - Tudo começou quando comecei a trabalhar em uma empresa(a qual não posso contar o nome) que tinha uma equipe pequena, com salário acima do mercado e com projetos simples e legados. Achei ótimo, pois pensei que poderia trabalhar num lugar sossegado, com salário bom e o melhor, ajudar a equipe a evoluir os projetos, pois eram todos desenvolvidos com tecnologias mais antigas, o que fazia a manutenção e o desenvolvimento ficar muito custosos.
Imagine um ERP feito com jdbc. Isso é terrível não é? sim, nos tempos de hoje é.. pois então:: Foi me passado a minha primeira tarefa: - Desenvolver um sistema de geração de arquivos fiscais para a receita federal. Tranquilo e fácil não é? Seria se.. Se não tivessem alguns detalhes que diferenciavam a TI da empresa. Eu não dispunha de um dump da base de produção. Apenas de uma cópia do DDL do banco e com apenas duas notas fiscais na base local.
    A princípio não haviam problemas. Desenvolvi o sistema em 4 dias(1/2 dia pra gerar arquivos e montar uma arquitetura jdbc. E outros pra desenvolver e testar as regras). Pronto. Agora é só testar  em produção certo? ERRADO.. Eu não podia testar em produção e nem dispôr do dump para homologar o sistema. Mas aí vc vai dizer: Mas nem todo mundo tem acesso ao banco de dados de produção. CORRETO. Eu pedi um DUMP.. E a resposta que tive: Me enviaram papéis impressos com as tabelas e alguns dados.
    Quando perguntei prq não tínhamos um dump me disseram que não era possível porque o banco possuia muitas foreign keys. AHAHAH.. que piada.. Contei a alguns especialistas em banco e rimos muito juntos. Foi quando comecei a desistir de trabalhar. Pois o processo para terminar o tal sistema, que já estava pronto, era: GERAR UM JAR E MANDAR POR E-MAIL PRO "RESPONSÁVEL" TESTAR. E ele me mandava de volta os logs de erros pois ele testava na base de produção com milhares de notas fiscais. E achava que não dariam erros. Que incrível!!! Que idiota.
  Quando falei pro resto do pessoal a minha indignação com esta situação o pessoal me disse que infelizmente era assim. O cara que tinha acesso, mais chamado pelos outros de "MICKEY", pois foi apelidado por se tratar de um "FILINHO DE PAPAI", que provavelmente foi o que deixou essa "PESSOA" com a arrogância que ele tinha. E que fazia ela pensar que era melhor que os outros profissionais da equipe.. O pessoal me contou que o "MICKEY", também um PUXA SACO, já tinha feito a cabeça dos chefes e convencido eles de que o processo deveria ser assim. Que somente ele teria acesso a tudo.
  De início não acreditei, mas depois do que estava acontecendo comecei a acreditar..
  Ai, ficamos nesse vai e vem de e-mails com os jars da aplicação e logs pra eu "TENTAR DESCOBRIR OS ERROS SEM VER OS DADOS" por TRES SEMANAS. Acreditam? Prq eu ainda não acredito. Pensei em pedir demissão no início, mas não queria fazer um ato de rebeldia e me controlei.

OBS.: PRESTE ATENÇAO NISSO: Quando finalizei o sistema, na primeira semana, e os arquivos passaram na validação do sistema validador da receita-federal, Tive que repassar algumas vezes as regras no código porque ele funcionava comigo, mas quando o MICKEY executava na máquina dele os arquivos não passavam na validação. Após ter certeza de que estava tudo ok, resolvi enviar os arquivos para o suporte da própria receita-federal verificar o que era o problema. Após dois dias tive a confirmação de que OS ARQUIVOS ESTAVAM CORRETOS. E que o PROBLEMA ESTAVA NO COMPUTADOR QUE ESTAVA GERANDO OS ARQUIVOS QUE ESTAVA COM UMA CONFIGURÇAO DE CARACTERES QUE FERRAVA OS ARQUIVOS.
    Ou seja, se tivesse simplesmente executado o sistema no meu computador conectando na base de produção, provavelmente os arquivos tivessem sido gerados ok e validados pelo sistema da receita-federal logo de início.

    O MICKEY era conhecido por "QUEIMAR AS PESSOAS" e resolvi esperar pra ver no que ia dar.
    OUTRA COISA.. o MICKEY era pra ser o responsável por passar as tarefas para todos da equipe, pois também não tinha-se um sistema de gerenciamento para isto.
   "ELE NUNCA ME DIRIGIU A PALAVRA". A não ser quando os chefes ligaram pra ele pra cobrar sobre o sistema que EU ESTAVA FAZENDO, mas ele dizia aos chefes que ELE QUE ESTAVA FAZENDO.
    MAIS OUTRA COISA.. o MICKEY perguntou quando ficava pronto o outro sistema? que sistema? Ele não passou a informação sobre outro sistema e estava cobrando..
 
    MAIS OUTRA COISA.. O MICKEY não gostava do hibernate. Ora ora. Como a maioria dos caras de banco de dados ele também não gostava do hibernate. Mas tem um detalhe interessante. Ele só sabia trabalhar com banco de dados enquanto que verdadeiros administradores de banco e DBA's, sabem pra que serve o hibernate.
    PS.:  HIBERNATE NAO SERVE PARA FICAR MONTANDO UM MODELO DE DADOS ER CRIADO NUM BANCO DE DADOS. ISSO EH TRABALHO DOBRADO. MESMO QUE SEJA COM PLUGINS, POIS OS PLUGINS(NAO CONFUNDIR COM HIBERNATE OU JPA). NAO FAZEM UMA ENGENHARIA REVERSA PERFEITA. ESSE TRABALHO EH ARDUO E DEMORADO.
            HIBERNATE SERVE PARA ADMINISTRAR E CRIAR UM MODELO DE DADOS ORIENTADO A OBJETOS DE UM SISTEMA E ASSIM, USAR O BANCO APENAS COMO REPOSITORIO DE DADOS.

    AGORA vcs estão começando a concordar comigo.. hein?!?
 
   Enfim, eu não tinha mais motivação, pois eu não conseguia ser produtivo, não tinha autonomia, não tinha confiança da empresa e nem tinha pra quem reclamar, pois os chefes, que deveriam estar a par disso ficavam em SP. Bem distante de nós. Mesmo assim eles já estavam nas mãos do MICKEY.
 
Pra aqueles que leram isto e devem estar se perguntando, mas você não fez nada?
 - Sim. Eu tentei propôr soluções, reuniões, mandei e-mails que sequer foram respondidos.

Só me restou desanimar e ser "executado", pois tinha resolvido não pedir demissão.  Fui "QUEIMADO PELO MICKEY".

30 MINUTOS DEPOIS EU COMECEI A TRABALHAR EM OUTRA EMPRESA COM OUTRA MENTALIDADE: PRODUTIVIDADE E INOVACAO.

E PRINCIPALMENTE: SEM NENHUM DESENHO ANIMADO E CENTRALIZADOR NA EQUIPE.

    Hoje trabalho com arquitetura, desenvolvimento, orquestração, GESTAO DE CONHECIMENTO e  inovação de sistemas.

FICA A DICA.. SE TIVEREM UM MICKEY NA EQUIPE. SAIA DELA. ATÉ FAÇA O POSSÍVEL, MAS SE NÃO ADIANTAR, ABANDONE. ESTA EMPRESA NÃO VAI EVOLUIR.




Mouse Moving

Pay atention: This is a joke. Just download if your friend understand and d'ont stay angry.

Activate: Click in the app and your mouse will move to a different places in your screen with 5 seconds interval.

Stop: Would you see in your left top screen a gray button. It's will stop the app.


download here.

Exemplo Job com Java [ Projeto Modelo Quartz ]

[ PRONTO PRA USAR ]  


  Para aqueles que sofrem tentando criar um job com java usando spring ou outra implementação. Aqui vai um projeto modelo que pode ser usado até mesmo em produção. Ele está rodando somente com um sysout para demonstrar onde você deve implementar seu código na classe QuartzManagerJob. 





E no método runScheduler(), na classe CronScheduler, logo na primeira linha você seta o intervalo de tempo que seu job deve rodar. 







O exemplo está demonstrado em segundos, mas existem implementações fáceis para setar valores maiores sem aumentar sempre em segundos. Não entrarei em detalhes quanto a isso. 
    É só baixar o projeto, abrí-lo no eclipse, ter o maven instalado, bem como seu plugin para o eclipse e rodar o install.
*Recomento dar um clean project do eclipse antes, pois algumas versões do plugin não fazem este clean e criam os .class direito. 




                                                               Teste local:
O projeto está configurado para baixar algumas dependências adicionais como as libs do hibernate, driver do oracle e servlet-api. Este último para que o projeto não se torne dependente de apenas um servidor. Os outros eu precisei e deixei-os no projeto. Também poderá usar o arquivo hibernate.cfg.xml para mapear, criar ou colar suas entidades normalmente. Enfim, a "casca" para um simples job está pronta.. é só usar..




[ download ] Obs.: (Clique em Download Original).

How to delete JNDI Name in Glassfish? [ RESOLVED ]

If that(delete-jndi-resource sample_jndi_resource) command d'ont resolve use this:

Access http://localhost:4848/management/domain/resources/jdbc-resource/ and click in delete button.

To Start JavaDB inside glassfish[ RESOLVED ]

Before go to glassfish directory for line command.

step 1. First you need to start glassfish server with this command:
- asadmin start-domain domain1
...
Waiting for domain1 to start ...
Successfully started the domain : domain1
domain Location: /Users/marcelomariano/Mariano/java/glassfish/glassfish/domains/domain1
Log File: /Users/marcelomariano/Mariano/java/glassfish/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
...

step 2. After you need to start the database with this command:(PS: server need be started)
- as-install/bin/asadmin start-database --dbhome as-install-parent/javadb
...
sudo ./asadmin start-database --dbhome /Users/marcelomariano/Mariano/java/glassfish/glassfish3/javadb
Starting database in Network Server mode on host 0.0.0.0 and port 1527.
--------- Informa??es sobre o Derby Network Server ---------
Vers?o: CSS10060/10.6.2.1 - (999685) Build: 999685 ID do Produto DRDA: CSS10060
-- listing properties --
derby.drda.traceDirectory=/Users/marcelomariano/Mariano/java/gl...
derby.drda.maxThreads=0
derby.drda.sslMode=off
derby.drda.keepAlive=true
derby.drda.minThreads=0
derby.drda.portNumber=1527
derby.drda.logConnections=false
derby.drda.timeSlice=0
derby.drda.startNetworkServer=false
derby.drda.host=0.0.0.0
derby.drda.traceAll=false
------------------ Informa??es sobre Java ------------------
Vers?o do Java: 1.6.0_26
Fornecedor do Java: Apple Inc.
Diret?rio base do Java: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Caminho de classes do Java: /Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/admin-cli.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/common-util.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-api.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-corba-asm.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-corba-codegen.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-corba-csiv2-idl.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-corba-internal-api.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-corba-newtimer.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-corba-omgapi.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-corba-orb.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-corba-orbgeneric.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-ee-api.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-extra-jre-packages.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-mbeanserver.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-naming.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-oracle-jdbc-driver-packages.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish-registration.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/glassfish/modules/glassfish.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/javadb/lib/derby.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/javadb/lib/derbytools.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/javadb/lib/derbynet.jar:/Users/marcelomariano/Mariano/java/glassfish/glassfish3/javadb/lib/derbyclient.jar
Nome do Sistema Operacional: Mac OS X
Arquitetura do Sistema Operacional: x86_64
Vers?o do Sistema Operacional: 10.6.8
Nome do usu?rio Java: root
Diret?rio base do usu?rio Java: /Users/marcelomariano
Diret?rio do usu?rio Java: /Users/marcelomariano/Mariano/java/glassfish/glassfish3/bin
java.specification.name: Java Platform API Specification
java.specification.version: 1.6
java.runtime.version: 1.6.0_26-b03-384-10M3425
---------------- Informa??es sobre o Derby -----------------
JRE - JDBC: Java SE 6 - JDBC 4.0
[/Users/marcelomariano/Mariano/java/glassfish/glassfish3/javadb/lib/derby.jar] 10.6.2.1 - (999685)
[/Users/marcelomariano/Mariano/java/glassfish/glassfish3/javadb/lib/derbytools.jar] 10.6.2.1 - (999685)
[/Users/marcelomariano/Mariano/java/glassfish/glassfish3/javadb/lib/derbynet.jar] 10.6.2.1 - (999685)
[/Users/marcelomariano/Mariano/java/glassfish/glassfish3/javadb/lib/derbyclient.jar] 10.6.2.1 - (999685)
------------------------------------------------------
---------------- Informa??es sobre o Idioma ----------------
Idioma atual : [portugu?s/Brasil [pt_BR]]
Encontrado suporte para o idioma: [cs]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [de_DE]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [es]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [fr]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [hu]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [it]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [ja_JP]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [ko_KR]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [pl]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [pt_BR]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [ru]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [zh_CN]
vers?o: 10.6.2.1 - (999685)
Encontrado suporte para o idioma: [zh_TW]
vers?o: 10.6.2.1 - (999685)
------------------------------------------------------

Starting database in the background.
Log redirected to /Users/marcelomariano/Mariano/java/glassfish/glassfish3/javadb/derby.log.
Command start-database executed successfully.
...

step 3. Stop database whit this command:
- asadmin stop-database

step 4. Stop server whit this command:
- asadmin stop-domain domain1

Simple and that's It.

Android Emulator do not start?[ SOLVED]

I pass for this problem today..

It's simple.. We need just delete the AVD (Virtual Device) from your application and create it again.

How to get values in android AlertDialog[ RESOLVED ]

It's simple.. look this code:

private void openDialogLogin(){

LayoutInflater factory = LayoutInflater.from(Jira3Layer.this);

final View textEntryView = factory.inflate(R.layout.alert_dialog_text_entry, null);

AlertDialog.Builder loginPopup = new AlertDialog.Builder(Jira3Layer.this);

loginPopup.setTitle("Login")

.setView(textEntryView)

.setPositiveButton(R.string.login,new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

// HERE IS THE GREATE SOLUTION FOR ALERTDIALOG VALUES.

EditText username = (EditText) textEntryView.findViewById(R.id.username_edit);

EditText password = (EditText) textEntryView.findViewById(R.id.password_edit);

Toast.makeText(YourClass.this, "Values: "+username.getText()+" "+password.getText(), Toast.LENGTH_SHORT).show();


}

})

.setNegativeButton(R.string.calcel,

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

dialog.dismiss();

Toast.makeText(Jira3Layer.this,"open login", Toast.LENGTH_SHORT).show();


}

}).show();

}

Problema para instalar GWT plugin no Eclipse - [RESOLVIDO]

Muitos passam o maior "perrengue" para tentar instalar plugins no eclipse como GWT, SVN e outros. E ao clicar no primeiro 'next' já se deparam com uma mensagem dizendo que uma dependência "tal" não está sendo encontrada. E muitas vezes acabam baixando o arquivo .zip, descompactando-o e copiando os jars para a pasta plugins dentro do eclipse. Algumas vezes funciona, mas acaba deixando o eclipse meio "capenga", pois algumas coisas podem deixar de funcionar como deveriam.
A solução para a instalação de muitos desses plugins é... simples, mas não explicada em nenhum dos sites de nenhum deles: instalar primeiramente o mylyn com essa url: http://download.eclipse.org/mylyn/releases/latest
(Eclipse 3.5, 3.6, 3.7). Não entrarei em detalhes sobre para que serve mesmo o mylyn, mas instale ele antes de instalar outros plugins no eclipse e muitos problemas serão resolvidos.

Exemplo de aplicação Java para iniciantes

Eis aqui um exemplo de aplicação desktop simples desenvolvida em Java com Hibernate..

Para aqueles que estão iniciando na liguagem, analisar este código pode dar um 'norte' para possa ter uma leve, mas bem leve mesmo, noção de como é desenvolver aplicações java..

Você poderá descompactar o projeto e abrí-lo no eclipse..

[ codigo_fonte ] [ executavel ] [ compilado para 32 Bits ]

Mude

Não espere as coisas acontecerem.. Não caia na rotina..
Assista o vídeo e reflita..

Criteria API

Neste post vamos mostrar exemplos mais usados no uso de um dos pricipais utilitários do hibernate. A API Criteria, que é uma inteface que deixa você criar critérios de seleção e depois executa um SQL baseada nesse critério gerado automaticamente pelo hibernate.


Aprenda aqui e veja exemplos de como usar a Criteria API.

iReport ou Birt

Ao tomar as decisões sobre quais as ferramentas usar em um projeto o "arquiteto grand master" precisa definir qual a ferramenta para desenvolvimento de relatórios. Hoje, em grandes cenários, onde é preciso agilidadee e eficiência principalmente em sistemas que necessitam uma gama muito grande de diferentes tipos de relatórios. E para esta árdua tarefa temos disponíveis no mercado algumas boas opções e as mais conhecidas no mundo opensource são o iReport e o Birt.

Mais informações..
"package javax.servlet does not exist"

Quem nunca viu este erro ao compilar um projeto web que atire a primeira pedra.
Como encontrar a "bendita" servlet-api para poder compilar meu projeto?

Mais informações..