
Olá pessoal,
Venho aqui falar de uma solução criada por mim (Jean Donato) e pelo Daniel Belalian , o ” Quantas Horas “, uma aplicação que permite universitários de todo o Brasil a registrarem seus certificados: de cursos, palestras, eventos, congressos que já participaram. Assim, podem também controlar aquelas ( malditas :] ) horas acadêmicas que a maioria dos universitários precisam apresentar no final do curso.
Já passei por isso, tive que guardar vários certificados de eventos para repassá-los para a faculdade , que estava em processo de troca de sistema (Que diga-se de passagem não foi nada transparente como em quase todas) e que em um belo dia, por algum erro, sumiram com essas informações do sistema. Por sorte eu tinha um backup desses certificados, mas mesmo assim, tive que preencher novamente formulários dos eventos dizendo sobre o que era, quantas horas os mesmos valiam e toda burocracia da época. ” ( Já deixo o convite, a você que está lendo, se já teve alguma experiência não muito legal com essas horas acadêmicas, a escrever algo abaixo
)
( Se você não quer saber da parte técnica, sugiro que pule para o próximo parágrafo)
Bom, o QH foi implementado usando a infraestrutura do google (GAE), assim, sendo fácil de manter e escalar. Aproveitando as mesmas tecnologias escaláveis com as quais rodam os aplicativos do google, sendo disponível full time
. Utitilizamos Java como linguagem de programação, a querida Java Persistence API para persistência de dados, Java Server Faces 2.0 juntamente com RichFaces 4.0 e algumas Servlets.
É uma aplicação bem simples e fácil de utilizar como podemos ver nas imagens abaixo.
Tudo começa com o seu cadastro, onde você informa seu nome, um usuário para aplicação, email (para que possamos enviar seus dados para acesso a aplicação e informações sobre qualquer atualização que ocorra na mesma), universidade ou qualquer instituição que faça algum curso, seu curso e sua senha de acesso.
Nessa tela inicial (Fig.1),que será exibida após seu cadastro ou login, na parte superior, você tem uma lista com todos seus certificados já cadastrados, exibindo seu nome, quantas horas ele vale e também quantas horas você tem com todos seus certificados. Clicando nele, o certificado é exibido e você pode fazer o que quiser com ele, salvá-lo, imprimi-lo e etc.
E depois dessa lista, na parte inferior, você terá informações de Eventos/Palestras/Congressos/Cursos que acontecerão de acordo com o seu curso(Informado no seu cadastro).
Para Salvar seu certificado é muito simples, basta clicar no botão “upload” que a tela abaixo será exibida, onde você irá clicar no botão “choose File” para escolher o arquivo em seu computador, informar no campo abaixo quantas horas ele corresponde e clicar no botão “Carregar Certificado” , pronto, certificado salvo. ( Falei que era simples
)
Bom, por enquanto “isso é tudo pessoal” . O Layout está bem simples, mas vamos melhorá-lo com o tempo.
Esperamos que goste da idéia e de um like nela (haha) e qualquer sugestão, feedback, crítica e afins, são bem vindos. Você pode utilizar o botão que aparece na tela inicial para sugerir algo, entrar em contato por email : jeancarlosgoncalves@gmail.com ou dbelalian@gmail.com , twitter, facebook, SMS, correio, ou seja, da maneira que achar melhor
Acesse o QuantasHoras .
[cya]‘ss
Quando desenvolvemos sistemas, temos um propósito final, atender a necessidade do nosso cliente. Além de uma boa manutenibilidade e funcionamento eficaz, nos preocupar com uma boa interface, usabilidade e navegação, é fundamental para agradar nosso cliente e para termos um Software de sucesso.
Gostaria de compartilhar alguns conhecimentos sobre um componente do RichFaces 4, Drag-and-drop, (o famoso “arraste e solte”, que é usado em diversos softwares) , juntamente com nosso bom e velho JavaServer Faces 2.0.
Com ele temos a seguinte árvore de componentes: rich:dragSource, rich:dropTarget e rich:dragIndicator. O mecanismo básico é bem simples, no <rich:dragSource> colocamos os Objetos que podem ser arrastados pelo usuário, indicando seu tipo com o atributo type(que é uma String) . Sendo assim, temos o <rich:dropTarget> que será quem receberá o Objeto de seu dragSource , de acordo com a compatibilidade do seu tipo, definido no atributo acceptedTypes(que é o tipo definido acima(String), podendo ser mais de um, separados por vírgula). Ou seja, só podemos arrastar um objeto para uma área compatível . Temos também a opção de setar @none para não aceitar nada, ou então @all, para aceitar qualquer tipo. Se esse atributo ficar em branco, será assumido o valor “null”, equivalente as ações de @none. Ainda em dropTarget você tem dois atributos importantes, o dropListener: onde via EL poderá chamar seu método que cuidará de “tirar um objeto de um lugar” e “colocar um objeto em outro lugar”; Com o dropValue: você poderá informar uma String para fazer alguma verificação no seu método, ela que será obtida na classe DropEvent. E por último temos o <rich:dragIndicator> , ele que cuidará do que será exibido para o usuário durante o processo de drag-and-drop, podendo informar seu css nos atributos acceptClass, rejectClass, draggingClass.
Esse tipo de “navegação/animação” vem sido bem utilizada e já virá nativamente no HTML5, sendo bem utilizada também no novo projeto do google(A rede social google +), “arraste e solte”.
Para isso fiz um rápido projeto de exemplo, um jogo da velha, veja os fontes em: https://github.com/JeanDonato/JogoDaVelhaRichFaces4
[]‘ss
Várias pessoas procuram por um gerenciador de tarefas free, que tenha essa funcionalidade e aquela outra, ou basicamente apenas algumas mais simples. Mas sempre o que achamos é algo muito complexo ou que não atende todas nossas necessidades. Bem, aqui dou o “ponta pé inicial”.
O projeto está no github, onde todos podem olhar o código e colaborar para a melhoria do mesmo. Podendo ver nossas falhas, erros e aprendermos uns com os outros.
Se você não sabe como começar com o git, basta dar uma “Googleada”, que tem bastante coisa na internet.
Sou novo no github, estou apanhando ainda..rs mas o projeto está lá, para quem quiser colaborar e brincar um pouco com essas tecnologias, e ter seu gerenciador de tarefas personalizado. =)
Olá pessoal,
esse final de semana ( 13/05 e 14/05) tive a grande oportunidade de participar do JustJava 2011(#thksSumma),
um dos principais eventos da Comunidade Java Brasileira, que é organizado pelo grupo Sou Java .
Foi excelente, muitas palestras de alto nível, vários conteúdos interessantes, muito bate papo com toda galera, discussões, um BarCamp organizado pelo @brunoborges, onde você podia sentar e trollar o “palestrante” e falar o porque não gostava daquela tec.,etc… (risos) e muito chopp Gelado.
O Evento foi composto pela seguinte grade: http://grade.justjava.com.br/
Entre ótimas palestras de Trent Gray-Donald (IBM), Roger Brinkley (Oracle), Patrick Curran (Oracle/JCP), tivemos também:
Evento 100%. Várias coisas legais….
obs: Julho é mes de festa para o Java
See you
Fala galera, sábado passado(26/02/2011) o JUGMS iniciou suas atividades de 2011 a todo vapor. Com um Hands-On muito da hora, tanto para aqueles que não conheciam JSF, para aqueles que já conheciam e também para aqueles que vinham de outra plataforma, foi muito proveitoso todo conteúdo, o bate papo com a galera, discussões sobre arquitetura, padrões, projetos, enfim…, e finalizando com um delicioso coffee-break.
Vou tentar passar aqui um pouco do conteúdo do que foi dito pelo Jõao Bosco Monteiro no Hands-On.
Bom, o objetivo do projeto era desenvolver um simples gerenciador de Blog, utilizando as seguintes tecnologias do JavaEE6: JSF2.0, EJB, CDI e Glassfish 3.0.1.
Tinhamos a seguinte estrutura: um pacote com a entity, um jsf com os converter’s e um model com a lógica de negócio .
O projeto estando dividido da seguinte forma:
Imagem retirada de: http://www.hascode.com/2011/02/creating-a-sample-java-ee-6-blog-application-with-jpa-ejb-cdi-jsf-and-primefaces-on-glassfish/
Além de JPA, utilizamos um pouco do “framework” Bean Validation do Java EE6, esse cara que ajuda a diminuir o esforço para validações em nossas classes com apenas algumas anotações.
Exemplos simples, que foram utilizados no projeto :
- com um @Size(min=”10″, max=”100″) em um atributo, conseguimos controlar o tamanho do campo, especificando os limites em “min” e “max”. Nesse caso o usuário teria que digitar no mínimo 10 caracteres e no máximo 100 em um inputText.
- com um @Past dizemos que o atributo com essa anotação deve ser uma data no passado.
- com um @Future dizemos que o atributo com essa anotação deve ser uma data no futuro.
Várias outras anotações podem serem utilizadas, recomendo a leitura desteLink para quem quiser saber mais sobre.
Utilizamos na camada de negócios EJB 3.1 com seu Recurso Stateful Session Beans onde é mantido um relacionamento de um-para-um entre o cliente e o bean, ou seja, podemos ter a instância do bean adormecida até ser solicitada novamente e reativada , tudo isso gerenciado pelo EJB container, fazendo uso também da ferramenta Java Transaction API (JTA), tendo uma aplicação mais portável, reusável e escalável.
Na view, tivemos páginas para listar, inserir um novo post e uma para pré-visualizar o conteúdo. (como o exemplo era de um blog)
Além da utilização das tags básicas do JSF e da E.L(Expression Language) para montar uma tela, usamos a EL passando parâmetros, aonde por exemplo tinhamos um <h:commandLink> em um <h:dataTable>, que por esse link passava um Objeto para meu controller remover assim: action:”#{blogManager.removePost(item)}” . Tivemos a utilização de ajax também com <f:ajax> para renderizar apenas uma table quando fosse efetuado alguma pesquisa, passando em sua propriedade render=”postsTable searchParams” , o nome da tabela e do input, os campos que eu queria que fosse renderizados quando clicasse no botão. Também usando a <f:setPropertyActionListener> , para fazer associação de um objeto em uma página de listagem com o objeto do meu bean, passando ele em value e no target o cara que estaria no meu controller, ou seja, quando clicasse no link, o objeto do meu bean passaria a valer o objeto que estava no link.
Bom galera, foi isso ae, se esqueci de mencionar alguma coisa, sorry!
As fotos do Hands-On estão disponíveis em:
https://picasaweb.google.com/comunidade.jugms/HandsOnJSF2
E o código fonte do exemplo está no GitHub do JUGMS:
https://github.com/jugms/minicurso-jsf2
Qualquer dúvida, post na lista do grupo, que vai ter sempre alguém para ajudar ! http://groups.google.com/group/jug-ms
Um agradecimento especial ao Edilmar Alves por ceder o espaço e ao Jõao Bosco Monteiro por disponibilizar seu sábado para realizar o mesmo.
see you !
[]‘sss
Olá pessoal, primeiramente um feliz 2011 a todos (-: .venho aqui humildemente arriscar a falar um pouco do arduino, uma placa que traz um “lek” enorme de oportunidades, para você se divertir e ganhar dinheiro com essa brincadeira.
Confesso que minha grande paixão é o desenvolvimento de Software, deixando hardware+eletrônica+robótica de lado , mas depois que fiz alguns simples testes com essa “plaquinha”, me interessei bastante por esse “tal arduino” .
Para quem não está entendo nada, resumindo o arduino nada mais é que uma placa microcontroladora, aonde você liga componentes em suas portas digitais e analógicas e faz todo seu código utilizando a linguagem de programação C, mas um C bem mais básico, transferindo todo seu programa via USB, que fica gravado no chip do arduino. (É esse cara logo abaixo)
Com essa placa, você pode automatizar sua casa fazendo várias coisas legais como: desligar a lâmpada de seu quarto por exemplo pelo bluetooth do celular, colocar um sensor de luminosidade em seu jardim para desligar as luzes automaticamente,colocar uma placa em sua caixa de correios para avisar quando tiver correspondência via e-mail/sms, programar sua torradeira para ligar as 10 da manhã, colocar um sensor no vaso de planta da sua mãe para avisar quando a planta estiver precisando de água (haha), entre várias coisas. Só depende da sua criatividade.
O simples teste que fiz, foi acender um led de acordo com a luminosidade do ambiente, quando o sensor era encoberto com as mãos( representando um ambiente escuro) o led era aceso. Esse led que poderia ser trocado por uma lâmpada convencional.
Para isso usei um : Arduino, Led Vermelho, protoboard, resistor e um LDR (Resistor dependente de Luz) e poucas linhas de código.
Se alguém quiser o código fonte desse exemplo, basta me mandar um e-mail (jeancarlosgoncalves@gmail.com).
Além disso, outras coisas que podem ser feitas com o Arduino são: Robôs, Roupas eletrônicas, Máquinas de corte e modelagem 3D de baixo custo, desenvolver um celular customizado, Instrumentos musicais, Paredes interativas, Instrumentação humana.
Bom, é isso ai galera, essa é a minha primeira visão sobre esse tema, quem quiser se aprofundar na coisa, tem muito material na internet, o arduino tem uma comunidade bem grande com vários fóruns de discussão. Qualquer dúvida pode estar procurando também o grande cientista (@vsenger) Vinicius Senger, ele que vem “pregando” sobre o arduino em todo mundo. E se quiserem me patrocinar em algum projeto, estou a disposição hehe.
Comente/Critique/Opine/Sugestione =)
Segue alguns vídeos interessantes sobre #arduino.
Relógio Interessante com Arduino:
Robô que desvia de Obstáculos:
Canoa Controlada por um Controle do Nintendo wii via Arduino
[]‘sss
Olá pessoal, alguns dias atrás em um CodingDOJO do JUGMS o @JeffMor levou uns “tomatinhos” para nos acompanhar na codificação (WTF – Calma, esses “tomatinhos” são os famosos Pomodoros. rs) E explicou por cima como funcionava essa técnica. A primeiro momento para mim não serviu de nada. Mas achei interessante a idéia e resolvi pesquisar mais sobre o assunto e começar a usar essa técnica em meus estudos/projetos e no trabalho. É um método que faz você focar nas suas tarefas e tentar se desligar de distrações.
É um assunto que tem muita coisa na internet, portanto o que vou fazer aqui vai ser dar uma “compilada” no conteúdo, tentando deixar um ponto de partida sobre essa famosa técnica e algumas referências.
O Pomodoro Technique é uma técnica que surgiu no final dos anos 80 por um italiano chamado Francesco Cirillo visando você conseguir focar nas suas tarefas, não deixando que se distraia com qualquer coisa na correria do dia-a-dia, tendo mais organização, concentração e produtividade pessoal. Temos tantas coisas para serem feitas que acabamos não fazendo nada devido a uma falha na organização do tempo. Ainda mais hoje em dia com várias redes sociais como ( twitter,facebook, msn), emails chegando a todo momento, telefone que não para de tocar, entre outras coisas cotidianas que acabam desviando a atenção. Essa técnica que tem se tornado muito popular entre os agilistas, ajuda a lidar com as interrupções internas e externas gerenciando melhor seu tempo.
Então eu fiz uma aposta comigo mesmo, uma aposta tão útil quanto humilhante: “Você consegue estudar – estudar mesmo – por 10 minutos?” Eu precisava de uma validação objetiva, um tutor de tempo, e encontrei um no timer de cozinha com o formato de um tomate (ou pomodoro, em italiano). – Francesco Cirillo
A técnica funciona da seguinte forma:
Mas e as Interrupções ?
Falar é fácil, mas na realidade é complicado você concluir um pomodoro até o final sem ninguém te interromper.Mas o que podemos fazer é saber lidar com essas interrupções. Tentando se possível no caso de uma ligação por exemplo, dizer que você está ocupado em uma tarefa importante, que retornará o contato de volta em 25 minutos.
Sendo assim, você passará a trabalhar por pomodoros e não mais por horas.No final do dia irá ver que levou três pomodoros(Exemplo) para realizar aquela tarefa, totalizando uma hora e quinze minutos de trabalho.
Trazendo um aumento na sua produtividade, diminuindo o tempo improdutivo, pois cada segundo perdido, no final do dia representará uma quantidade significativa de tempo jogado fora.Pois se você gasta 10 segundos em uma ligação, você perde mais 10 segundos para retomar a concentração e voltar ao ritmo anterior.Você não precisa ficar olhando mais para o relógio, por que o alarme vai te avisar no tempo previsto.
Todas essas estimativas são o tempo ideal para manter a energia necessária para fazer as coisas bem feitas.
Se você não quiser comprar um pomodoro, pode estar usando algum timer qualquer, também pode estar baixando o Focus Booster App (recomendo) ou instalar uma extensão no Chrome(Chromodoro).
Pode baixar o livro oficial em : http://www.pomodorotechnique.com/
Alguns comentários sobre a técnica:
Wall Street Journal
“Este engenhoso método me fez produzir intensamente… O método se baseia na ideia de que instrumentos de gerenciamento do tempo devem ser simples; essas pausas frequentes melhoram a agilidade mental; e a mudança no modo de pensar das pessoas em relação ao tempo diminui a ansiedade, liberando as pessoas para se concentrarem melhor. “ – Sue Shellenbarger
TUAW – Il Blog non ufficiale Apple
“O método é enganosamente simples, fácil de implementar e surpreendentemente eficaz. “- Steven Sande
Lifehacker.com
“O Pomodoro Technique oferece um sistema cíclico destinado a eliminar a ansiedade dos limites de prazos “ – Kevin Purdy
É isso ai pessoal, essa é uma técnica que comecei a usar faz pouco tempo e que tem me ajudado bastante, espero que ajude vocês também.
Aqui vai um passo a passo de como instalar Adobe Air e TweetDeck no ubuntu. TweetDeck para quem não sabe é um navegador em tempo real que integra todos seus blogs,microblogs (twitter, facebook, mySpace,etc) em um lugar só.É um ótimo aplicativo, uso e recomendo.
1- Para Instalar o Adobe Air basta acessar http://get.adobe.com/br/air/ e baixar a versão .bin no diretório de sua preferência.
2- Após o download do arquivo abra um terminal (Aplicativos–>Acessórios–>Terminal) e navegue até o local do arquivo (Ex: cd /home/User/Download)
3- Atribua ao arquivo propriedades de execução com o comando : chmod +x AdobeAIRInstaller.bin (Lembrando que não precisa digitar o nome inteiro, basta dar um “tab” que ele auto-completa para você).
4- Agora basta executar o comando: sudo ./AdobeAIRInstaller.bin para instalar o cara.
5- Instalado o AdobeAir agora é só acessar http://www.tweetdeck.com/desktop/ , clicar em Launch TweetDeck–>Install TweetDeck, dar alguns next next e está feito.
Simples assim . . .
Espero ter ajudado.