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.

domingo, 13 de novembro de 2016

Entendendo um pouco sobre o funcionamento do Tomcat

Abaixo peguei uma colinha do Algaworks com os principais diretórios criados durante o processo de instalação criados.

  • bin: Executáveis, incluindo os aplicativos para iniciar e para encerrar a execução do servidor.
  • conf: Arquivos de configuração do Tomcat. O arquivo server.xml, em particular, define uma série de parâmetros para a execução do servidor, como por exemplo, a porta onde o servidor irá receber requisições (essa porta www.algaworks.com 19 é, por default, 8080), devendo ser examinado com cuidado e modificado conforme as necessidades.
  • logs: Arquivos de log do servidor. O Tomcat também pode gerar arquivos de log com tudo o que as aplicações desenvolvidas enviam para a saída padrão do sistema. 
  • work: Diretório temporário do Tomcat. Esse diretório é utilizado, por exemplo, para realizar a recompilação automática de páginas JSP. 
  • webapps: Nesse diretório são implantadas as diversas aplicações web desenvolvidas.

segunda-feira, 24 de outubro de 2016

Subversion

O que é Subversion?
Subversion é um sistema de controle de versão livre/open-source. Isto é, o Subversion gerencia arquivos e diretórios, e as modificações feitas neles ao longo do tempo. Isto permite que você recupere versões antigas de seus dados, ou que examine o histórico de suas alterações. Devido a isso, muitas pessoas tratam um sistema de controle de versão como uma espécie de “máquina do tempo”.
O Subversion pode funcionar em rede, o que lhe possibilita ser usado por pessoas em diferentes computadores. Em certo nível, a capacidade de várias pessoas modificarem e gerenciarem o mesmo conjunto de dados de seus próprios locais é o que fomenta a colaboração. Progressos podem ocorrer muito mais rapidamente quando não há um gargalo único por onde todas as modificações devam acontecer. E como o trabalho está versionado, você não precisa ter medo de que seu trabalho perca qualidade por não ter essa via única para modificações—se os dados sofrerem alguma modificação indevida, apenas desfaça tal modificação.

Instalando o Subversion no Ubunto
Para instalar o Subversion, execute o seguinte comando no prompt de comando:
sudo apt-get install subversion libapache2-svn

Criando um repositório no Subversion
O repositório pode ser criado através do seguinte comando: 
svnadmin create /path/to/repos/project

Importando arquivos
Depois de criar o repositório você pode importar arquivos para o repositório. Para importar um diretório, digite o seguinte comando em uma janela do terminal:
svn import /path/to/import/directory file:///path/to/repos/project

Comandos do Subversion
Para ver o status da sua cópia local comparando com o status do servidor, use:
svn status -u

Mantendo sua cópia local sincronizada com o servidor, use:
svn update

Para commitar atualizações, use:
svn commit
Para ver o log de cada um dos arquivos, ordenando cronologicamente, use:
svn log | tac

E para ver o log de somente um arquivo específico, utilize:
svn log file_name | tac

Para ver a diferença entre um dado arquivo em uma dada revisão e o estado atual do seu arquivo no repositório, use:
svn diff -r revision_number file_name

Para ver a diferença entre revisões de seeu arquivo no repositório, use:
svn diff -r revision_number_1:revision_number_2 file_name

Para reverter o estado de um arquivo de cópia local para uma dada revisão, use (ou use -R para um diretório):
svn revert file svn revert -R directory

Para criar uma nova tag ou uma branch experimental, use:
svn copy src_dir tag_dir

Para consultar o help de qualquer comando, use:
svn help command

quinta-feira, 29 de setembro de 2016

Criação de Excel com Java e Apache Poi

Projeto Simples para criar um arquivo Excel com Java e Apache POI

Primeiro criamos a Classe Model Usuário:

public class User {
private int id;
private String name;
private String email;
private String password;
private String adress;
private int telefone; //getters e setter
 
Agora vamos criar a Classe que vai criar o Excel, com um método main que vai executar nosso programa e gerar o Excel. 

public class CreateExcel {
private static final String fileName = "C:/apachepoi/usuarios.xls";
public static void main(String[] args) throws IOException {} }

Dentro da Pasta C:/apachepoi vamos adicionar um arquivo .xls que será o nosso arquivo modelo, do qual podemos configurar como desejarmos colocar um template, logo, titulo das informações que serão adicionadas, etc. No caso estamos usando o usuarios.xls. 

Dentro desse método vamos adicionar as informações do usuário em memoria, para podermos ter informações reais para gerar o relatório,  

public static void main(String[] args) throws IOException {
List<User> lisUsers = new ArrayList<User>();
lisUsers.add(new User(1, "Bruno", "bruno@gmail.com","senha", 9876525, "Aclimacao, 155"));
lisUsers.add(new User(1, "Eduardo", "eduardo@gmail.com","senha", 9876525, "Santana, 520"));
lisUsers.add(new User(1, "Carol", "carol@gmail.com","senha", 9876525, "Itaquera, 302"));
lisUsers.add(new User(1, "Marcia", "marcia@gmail.com","senha", 9876525, "Sapopemba, 49"));
lisUsers.add(new User(1, "Gustavo", "gustavo@gmail.com","senha", 9876525, "Vila Prudente, 155"));
lisUsers.add(new User(1, "Rafael", "eduardo@gmail.com","senha", 9876525, "Vila Ema, 275"));
}

A Apache POI contém classes e métodos para trabalhar em todos os documentos do MS-Office. Vamos usar um desses componentes da Biblioteca o HSSF (Horrible formato de planilha): Ele é usado para ler e escrever formato .xls de arquivos MS-Excel, que o que precisamos, então vamos acionar dentro do nosso metodo main:

HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheetUsers = workbook.createSheet("Usuarios");
Em seguida vamos informar em que linha os dados vão começar a ser inseridos. Por exemplo se você criar um template, e tiver adicionado na primeira linha do seu arquivo o titulo das informações que serão inseridas, você vai gerar o arquivo a partir da linha 1 (a contagem é feita a partir da linha 0 que é equivalente a primeira linha), se você não for colocar nenhum titulo então iniciara na linha 0.

int rownum = 0;

Agora vamos criar um for, que vai percorrer pela nossa lista de usuários que criamos com as informações e adicionar no arquivo.

for (User user : lisUsers) { Row row = sheetUsers.createRow(rownum++);
int cellnum = 0;
Cell cellId = row.createCell(cellnum++);
cellId.setCellValue(user.getId());
Cell cellNome = row.createCell(cellnum++);
cellNome.setCellValue(user.getName());
Cell cellEmail = row.createCell(cellnum++);
cellEmail.setCellValue(user.getEmail());
Cell cellSenha = row.createCell(cellnum++);
cellSenha.setCellValue(user.getPassword());
Cell cellTelefone = row.createCell(cellnum++);
cellTelefone.setCellValue(user.getTelefone());
Cell cellAdress = row.createCell(cellnum++);
cellAdress.setCellValue(user.getAdress());
}

Em seguida criamos o arquivo


try { FileOutputStream out = new FileOutputStream(new File(CreateExcel.fileName));


workbook.write(out);
out.close();
System.out.println("Arquivo Excel criado com sucesso!");

E tratamos os eventuais erros:
} catch (FileNotFoundException e) {
System.out.println("Arquivo não encontrado!");
} catch (IOException e) {
System.out.println("Erro na edição do arquivo!");
}
}
}

Agora basta executar o método main e a mágica estará feita. O projeto completo pode ser baixado no Github: Projeto Simples Aplache POI 


Melissa Lobo.

quarta-feira, 28 de setembro de 2016

Apache POI

Apache POI é uma API popular que permite aos programadores criar, modificar e exibir arquivos do Microsoft-Office usando programas Java. É uma biblioteca de código aberto desenvolvido e distribuído pela Apache Software Foundation. Ele contém classes e métodos para decodificar os dados de entrada do usuário ou um arquivo para documentos do Microsoft Office.

Componentes do Apache POI
Apache POI contém classes e métodos para trabalhar em todos os documentos OLE2 compostos de MS-Office. A lista de componentes deste API é dado abaixo:


  • POIFS (Pobre Obfuscation Implementação do Sistema de Arquivos): Este componente é o fator básico de todos os outros elementos de POI. Ele é usado para ler arquivos diferentes explicitamente.
  • HSSF (Horrible formato de planilha): Ele é usado para ler e escrever formato .xls de arquivos MS-Excel.
  • XSSF (XML SpreadSheet Format): É usado para o formato de arquivo .xlsx do MS-Excel.
  • HPSF (Horrible Property Set Format): É usado para extrair conjuntos de propriedades dos arquivos do MS-Office.
  • HWPF (Horrible formato Word Processor): Ele é usado para ler e escrever arquivos de extensão .doc do MS-Word.
  • XWPF (XML formato Word Processor): Ele é usado para ler e escrever arquivos de extensão docx do MS-Word.
  • HSLF (Horrible Deslize layout Format): É usado para ler, criar e editar apresentações de PowerPoint.
  • HDGF (Horrible formato de diagrama): Contém classes e métodos para arquivos binários MS-Visio.
  • HPBF (Horrible formato do Publisher): Ele é usado para ler e gravar arquivos MS-Publisher.
Instalação Apache POI Biblioteca
Baixe a versão mais recente do Apache POI a partir http://poi.apache.org/download.html e descompacte seu conteúdo para uma pasta de onde as bibliotecas necessárias podem ser ligados ao seu programa Java. 

E depois adicionar os jars ao projeto.

1) Clique com o botão direito do mouse em cima do projeto
2) Vá em propriedades
3) Biibliotecas
4) Adicionar Jar/Pasta

sexta-feira, 26 de agosto de 2016

Meetup Java São Paulo

Javeiros, o décimo segundo Meetup vai rolar dia 01/09/2016 às 19h30 na Caelum, perto do Metrô Vila Mariana. Estão todos convidados.

Agenda:

  19:30h - Aumente sua produtividade com Spring Boot - Fernando Boaglio

  20:30h - Coffee break / networking!

  20:45h - Ecossistema Spring Cloud  - Rafael (Netshoes)

Local:

Caelum - Ensino e Inovação,  Rua Vergueiro, 3185 - segundo andar

Conto com a presença de todos. :D

Link do Evento para se inscrever e confirmar presença: Meetup Java São Paulo