domingo, 11 de junho de 2017

Como criar uma Extensão para o Google Chrome

Projeto simples, para criar uma Extensão para o Google Chrome

  • O arquivo manifest.json

Todos os projetos que você criar tem que ter o arquivo manifest.json na pasta raiz do mesmo. Esse arquivo não é nada mais que um JSON, onde ficarão as informações relacionadas à sua extensão: nome da extensão, descrição, versão, permissões, etc. Tudo que você pode incluir no manifest.json, você encontra aqui nesse link.

Para nossa primeira extensão, vamos usar as seguintes informações:

As informações obrigatórias são somente o manifest_version, name e version, onde:

manifest_version: Representa a versão do manifesto que você está usando. Hoje (junho/2011), é obrigatório usar a versão 2;
name: Representa o nome da sua extensão;
version: Representa a versão da sua extensão. A versão deve ser separada por pontos.

As informações adicionais sobre nossa extensão Hello World presentes no nosso manifesto são:

description: É uma descrição para nossa extensão;
browser_action: Representa ações que executaremos no navegador. Para nosso exemplo, iremos apenas apresentar um popup quando o usuário clicar na extensão;
default_popup: Informa qual HTML o navegador deve carregar quando o usuário clicar no ícone da extensão.
icons: Representa todos os ícones que sua extensão irá utilizar.


  • POPUP

Para servir de popup da extensão, use a seguinte página HTML simples abaixo, chamada index.html (ou crie uma página sua, com o mesmo nome):
Essa pagina será exibida quando o usuário clicar no ícone da nossa extensão.

  • Ícone
Você pode usar qualquer ícone que desejar, no tamanho:  16 pixels. E salvar na pasta images do projeto. Se quiser usar a mesma que eu só copiar daqui: Icone. Quando você for publicar sua extensão, é recomendado que você tenha ao menos o tamanho de ícone em 128x128px. Se possível, passe todos os tamanhos pedidos (16x16, 48x48, 128x128), pois o Chrome irá selecionar o que for mais apropriado para o momento que ele precisar ser apresentado.
  • CSS
Dentro da pasta CSS, você colocar o seu arquivo style.css onde você pode customizar da maneira que desejar. 
  • Testando sua Extensão
Testar a extensão é bem simples, basta abrir seu Google Chrome e navegar até Menu > Mais ferramentas > Extensões.

Na página de extensões, habilite o modo desenvolvedor, clicando na caixa de seleção:

Clique em Carregar extensão expandida:
Na janela que abrir, escolha a pasta onde está seu projeto. E pronto, a extensão foi instalada! Se você reparar vai aparecer um registro novo com as informações da nossa extensão e o ícone dela já está disponível ao lado da barra de endereços.
Para testar, basta clicar no ícone da extensão:
Pronto! Agora você já pode começar a brincar e colocar mais funcionalidade na sua Extensão. O projeto completo pode ser baixado no Github: Extensão para o Google Chrome.

quinta-feira, 23 de março de 2017

Webinar introdutório para aprender o básico e começar com a AWS


Segunda feira, 27 de Março, vai ter um Webinar "how-to" para aprender o básico para começar com a AWS. Depois de uma breve visão geral, esta sessão irá mergulhar em discussões de serviços AWS básicos, como os servidores virtuais (Amazon EC2) e o armazenamento escalável em nuvem (Amazon S3), e fornecerá demonstrações de como configurar e utilizar esses serviços.

Objetivos:

  • Entender as melhores práticas para começar a utilizar a nuvem da AWS
  • Aprender a construir aplicações eficientes e confiáveis
  • Conhecer mais sobre segurança, administração de contas e acesso
  • Saber mais sobre otimização de custos e utilização das zonas de disponibilidade

Meetup Java São Paulo

Mais um Meetup Java São Paulo. Hoje às 19h30 na Caelum - Ensino e Inovação, perto do Metrô Vila Mariana.

Agenda:

  • 19h30 - Análise de qualidade de código com Sonar - Fernando Boaglio
  • 20h30 - Coffee break / Networking!
  • 20h45 - 5 técnicas para acelerar o desenvolvimento e reduzir bugs em aplicações web - Rafael Chinelato Del Nero

Local: Rua Vergueiro, 3185 - Segundo andar

Confirmar presença em https://www.meetup.com/pt-BR/Sao-Paulo-Java-Meetup

terça-feira, 10 de janeiro de 2017

Desenvolvimento de web sites

Muita gente não sabe mas eu tenho desenvolvido web sites. Apesar do meu interesse maior ser Java, desenvolver web sites representa um desafio que se torna gratificante ao ser vencido. Segue meu Site e os trampos que faço, todos com custo bem abaixo do mercado, pois o foco é trabalhar com pequenos negócios.


quarta-feira, 28 de dezembro de 2016

Compiladores online de programação

Hoje trouxe para vocês alguns websites que oferecem a facilidade de compilar e rodar seu código com suporte para Java (e outras linguagens), são muito uteis, para testes, estudos, etc. Segue abaixo um pouco sobre cada um deles.

Ideone 

É um compilador e ferramenta de debugging online.
Você pode escrever seu código no seu editor local (ou no próprio site). Em seguida, pode escolher entre mais de 60 linguagens de programação, para compilar e rodar seu trabalho.
Mesmo tendo aparência simples, possui syntax highlighting também e permite compartilhar fácil o seu código,.
Confira aqui: http://ideone.com/

OnlineCompiler

Com opções de linguagens de programação limitadas a C/C++, FORTRAN, Java, Pascal e Basic, permite compilar e baixar o seu executável — para Windows ou Linux. Na minha humilde opnião acho ele meio ruinzinho, mas compila, então está valendo.
Confira aqui: http://www.onlinecompiler.net/

Repl.it

Com suporte a 30 linguagens de programação, o Replit é um trabalho de uma equipe pequena, porém muito bem feito.
O Replit Classroom é uma ferramenta, dentro do site, voltada para professores. Com ela, se cria uma “sala de aula”, para ensinar programação para quantos estudantes se quiser.
O editor permite configuração da identação e de seu visual. Possui 2 opções de tema (clara/escura).
Para a função de compartilhamento de código tem que fazer cadastro. Gosto bastante desse.
Confira o site aqui: https://repl.it/


RemoteInterview


Com uma interface limpa, 2 opções de tema (clara/escura, também) e mais de 20 opções de linguagens de programação (entre as mais populares), o RemoteInterview tem a concepção de ser um site de “entrevista” para a contratação de programadores, onde o profissional pode mostrar seu conhecimento etc.
A interface é eficiente e tem opções de teclas de atalho, que simulam os editores Vim, Sublime e Emacs. Se você já estiver acostumado com um deles, este local pode ser de grande produtividade para você.
O RemoteInterview também tem a funcionalidade de pastebin, para compartilhar seu código em fóruns, chats, nas redes sociais etc. E na minha opinião é um dos melhores.
Confira o site aqui: https://codepad.remoteinterview.io/.


CodeChef IDE

O CodeChef aceita código em mais de 35 linguagens.
Antes de tudo, é um site de competição para programadores. Você pode pegar um dos desafios da competição ou praticar nos diversos níveis disponíveis (beginner, easy, medium, hard, challenge e peer).
Seu editor de textos permite configurar a indentação e escolher entre mais de 30 temas (inclusive, com fundos escuros, para quem trabalha à noite).
Além disto, a IDE oferece recursos como atalhos de teclado — que facilitam enormemente quando o trabalho é grande.
Por exemplo, não precisa rolar a tela para baixo e clicar no botão “Run” para compilar e rodar o código. Nem precisa tirar a mão do teclado. As teclas ‘Ctrl + Enter’, fazem isto.
Há mais de 80 atalhos de teclado e isto, com certeza, é um bom motivo para usar o editor.
Link para ir direto para a IDE do CodeChef: https://www.codechef.com/ide.

terça-feira, 27 de dezembro de 2016

Resolvendo cubo mágico em 1 segundo

Dois caras desenvolveram um robô que resolve cubos mágicos extremamente rápido. Existem outros robôs que já fazem isso, mas esse é o mais rápido do mundo: ele faz isso em apenas 1 segundo. Veja o vídeo:




Achei incrível e que merecia ser compartilhado. 

quinta-feira, 15 de dezembro de 2016

Frameworks e Componentes Java

Hoje em dia, há muitas opções de ferramentas e componentes, para facilitar o desenvolvimento em Java e outras linguagens também, mas o foco aqui será Java. O mercado de Frameworks e Componente Java é imenso. Há muitas opções boas disponíveis no mercado, das quais é importante entender para estudarmos e aplicarmos em nosso dia a dia. Vou começar falando dos Frameworks e Componente mais usados em Java e listar o restante para conhecimento.

Frameworks Web
  • Spring MVC, é também  um dos frameworks Java mais conhecido e utilizado. Esse framework implementa um grande número de funções, como injeção de dependência, persistência de dados e uma implementação para o padrão MVC para a criação de aplicações WEB. É uma implementação que usa o modelo MVC (Model-View-Controller) para aplicações java com internet. Model View Controller ou Modelo-Visão-Controlador(MVC) é um padrão de arquitetura de aplicações que visa separar a lógica da aplicação (Model), da interface do usuário (View) e do fluxo da aplicação (Controller). Permite que a mesma lógica de negócios possa ser acessada e visualizada por várias interfaces.
  • Struts, foi um dos frameworks mais usados em ambientes corporativos para construção de aplicações web, em especial por causa de sua versão 1.x. A versão 2.0 não tem tanta força mas é um dos mais importantes. Struts Framework é um projeto open source mantido pela Apache Software Foundation.  O nome Struts deve-se ao papel por ele desenvolvido nas aplicações WEB. Da mesma forma que a construção de uma casa, ponte, prédio necessitam de uma base mantenedora, os engenheiros de software usam o Struts para suportar cada camada de uma aplicação comercial. O Struts também é uma implementação que usar o modelo MVC.
  • VRaptor, criado na USP em 2004 e mantido hoje pela Caelum e por uma grande comunidade, não tem o tamanho do mercado de outros grandes frameworks. Mas tem a vantagem da extrema simplicidade e grande produtividade, além de ser bem focado no mercado brasileiro, com documentação em português e muito material disponível. Ele também é um framework MVC para web focado no desenvolvimento ágil. Através da inversão de controle e injeção de dependências, ele diminui drasticamente o tempo de trabalho que seria perdido com o código repetitivo: validações, conversões, direcionamentos, ajax e lookups.
  • JavaServer Faces, um dos frameworks mais usados hoje. Seu grande apelo é ser o framework oficial do Java EE para Web, enquanto que todos os outros são de terceiros. Em especial, o JSF é dito um framework component-based, enquanto que Struts (1 e 2) e VRaptor são ditos request-based ou action-based. A ideia principal de um framework de componentes é abstrair muitos dos conceitos da Web e do protocolo HTTP provendo uma forma de programação mais parecida com programação para Desktop. O JSF tem componentes visuais ricos já prontos, funciona através de tratamento de eventos e é stateful (ao contrário da Web "normal" onde tudo é stateless).
Provedores de JSF
  • Mojorra – http://javaserverfaces.java.net/
  • MyFaces – http://myfaces.apache.org/
  • ADF – http://www.oracle.com/technetwork/developer-tools/adf/overview/index.htmlde persistência
Componentes JSF
  • RichFaces – http://www.jboss.org/richfaces
  • PrimeFaces – http://primefaces.org/
  • OpenFaces – http://openfaces.org/
  • IceFaces – http://www.icesoft.org/
  • EasyFaces – http://www.easyfaces.com.br
  • Gmaps4jsf – http://code.google.com/p/gmaps4jsf/
Frameworks de Persistência
  • Hibernate, é o framework mais usado em relação a persistência e bancos de dados, se a variedade dos frameworks Web é grande, aqui não temos esse problema. O Hibernate é praticamente unanimidade no mercado Java, principalmente se usado como implementação da JPA. Há outras possibilidades, como o Toplink, o EclipseLink, o OpenJPA, o DataNucleus, o JDO, o iBatis etc. Mas o Hibernate é o mais importante. E dificilmente você vai usar outro Framework que não seja o Hibernate no mercado de trabalho, por isso só vou falar dele, e dar uma descrição mais detalhada.
    O que o hibernate realmente faz?Basicamente o  hibernate realiza o mapeamento do objeto relacional, ou seja, as tabelas do seu banco de dados são representadas através de classes na sua aplicação e as operações de recuperação e persistência dos dados são realizadas através de métodos do hibernate, sendo assim, o programador não precisa de se preocupar com instruções SQL como selects, join e etc, sendo o framework capaz até de resolver as peculiaridades que cada SGDB impõe.
    Qual motivo de utilizar o hibernate e não minhas instruções sql diretamente no banco ?Possível migrar para a maioria dos Banco de Dados disponíveis no mercado apenas modificando o arquivo de configuração do framework, sem necessidade de alterar uma linha de código do sua aplicação.
    Totalmente orientado a objetos.O hibernate executa as instruções sql para recuperar apenas as informações necessárias, evitando executar consultas complexas apenas para obter um determinado dado. Detecta automaticamente qualquer alteração ou inclusão das classes mapeadas e executa as alterações devidas no banco de dados. Realiza cache das operações, aumentando a performance do seu software. E o mais importante, é 100% software livre.  
  • Spring Data – http://www.springsource.org/
  • iBatis – http://www.mybatis.org/
  • Torque – http://db.apache.org/torque/
  • Castor – http://www.castor.org/
  • Cayenne – http://cayenne.apache.org/
Container IoC
  • Spring – http://www.springsource.org/
  • Guice – http://picocontainer.codehaus.org/
  • PicoContainer – http://code.google.com/p/google-guice/
  • EJB – http://www.oracle.com/technetwork/java/javaee/ejb/index.html
  • CDI – http://www.oracle.com/technetwork/articles/java/cdi-javaee-bien-225152.html
Validação

  • Commons Validator – http://commons.apache.org/validator/
  • Java Bean Validator – http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html

Autenticação e autorização web

  • Spring Security – http://www.springsource.org/
  • JGuard – http://jguard.xwiki.com/xwiki/bin/view/Main/WebHome
  • JEE Container Managed Security (Configuração especifica para cada provedor de container JEE). Veja o Tomcat – http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html
JEE web container standalone
  • Tomcat – http://tomcat.apache.org/
  • Jetty – http://jetty.codehaus.org/jetty/
  • JBoss – http://www.jboss.org/
Manipulaçao de arquivos MS Office
  • Apache POI – http://poi.apache.org . Eu já falei um pouco aqui sobre o Apache POI e fiz até um exemplo de como gerar um Excel com Apache POI e Java
  • JExcelApi – http://jexcelapi.sourceforge.net
  • Docx4j – http://dev.plutext.org/trac/docx4j
  • Java Docx – http://www.javadocx.com
Web Services SOAP
  • Metro – http://jax-ws.java.net/
  • Axis – http://axis.apache.org/axis/
  • XFire – http://xfire.codehaus.org/
  • CXF – http://cxf.apache.org/
JavaScript
  • DOJO Toolkit – http://dojotoolkit.org/
  • JQuery – http://jquery.com/
  • Ext-JS – http://docs.sencha.com/ext-js/4-0/
  • DWR – http://directwebremoting.org/dwr/index.html
Integração com redes sociais
  • Spring Social – http://www.springsource.org/
Cache
  • Space4J – http://www.space4j.org/
  • Memcache – http://memcached.org/
  • Ecache – http://ehcache.org/
  • Prevayler – http://prevayler.org/
  • JBoss Infinispan – http://www.jboss.org/infinispan.html
NoSQL
  • MongoDB – http://www.mongodb.org/
  • Neo4j – http://neo4j.org/
  • Db4o – http://www.db4o.com/
  • MemcachedDB – http://memcachedb.org/
  • CouchDB – http://couchdb.apache.org/
  • Project Voldemort – http://project-voldemort.com/
  • MarkLkogic Server – http://www.marklogic.com/
  • BaseX – http://basex.org/
  • SimpleDB – http://aws.amazon.com/simpledb/
  • HBase – http://hbase.apache.org/
  • Casandra – http://cassandra.apache.org/
  • Hypertable – http://hypertable.org/
  • OrientBD – http://www.orientechnologies.com/
SGDB Java embutidos
  • HyperSQL – http://hsqldb.org/
  • JavaDB – http://www.oracle.com/technetwork/java/javadb/overview/index.html
  • Apache Derby – http://db.apache.org/derby/
  • H2Database – http://www.h2database.com
Testes
  • DBUnit – http://www.dbunit.org/
  • JUnit – http://www.junit.org/
  • EJBUnit – http://ejb3unit.sourceforge.net/
  • JSFUnit – http://www.jboss.org/jsfunit/
Loggin
  • jse – http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html
  • Log4J – http://logging.apache.org/index.html
Testes cargas e perfomance
  • JMeter – http://jmeter.apache.org/
  • WebLoad – http://www.webload.org/
JSON
  • JSON – http://www.json.org/java/
  • XStream – http://xstream.codehaus.org/json-tutorial.html
  • Google-JSON – http://code.google.com/p/google-gson/
Boletos bancário
  • Boletos Bancário – http://www.boletobancario.com.br
  • Bopepo – http://www.jrimum.org/bopepo/
  • Stella – http://github.com/caelum/caelum-stella/wiki/Gerando-boleto
Gerais
  • Maven – Gerenciador de dependências, do qual já falei sobre aqui: O que é o Maven,  Projeto Mavem e em outras postagem, vocês podem conferir nos posts anteriores. – http://maven.apache.org/

segunda-feira, 12 de dezembro de 2016

Principais escopos de managed beans JSF

  • @NoneScoped: o bean será instanciado a cada vez que for referenciado. 
  • @RequestScoped (padrão): tem vida curta, começando quando é referenciado em uma única requisição HTTP e terminando quando a resposta é enviada de volta ao cliente.
  • @ViewScoped: a instância permanece ativa até que o usuário navegue para uma próxima página. 
  • @SessionScoped: mantém a instância durante diversas requisições e até mesmo navegações entre páginas, até que a sessão do usuário seja invalidada ou o tempo limite é atingido. Cada usuário possui sua sessão de navegação, portanto, os objetos não são compartilhados entre os usuários. 
  • @ApplicationScoped: mantém a instância durante todo o tempo de execução da aplicação. É um escopo que compartilha os objetos para todos os usuários do sistema.