Blog

Testando Design Responsivo

Oi Pessoal,

O post de hoje é mais uma dica do que post de verdade. Tenho trabalhado e estudado um  pouco com design responsivo e nem preciso falar sobre. Esses dias, pesquisando sobre como poderia testar uma aplicação e obter o resultado em vários aparelhos, achei um post bacana, vejam: goo.gl/lVkEBn.

Eu particularmente gosto de usar o responsinator e o screenfly, foram os que mais gostei.

Depois que realizei o teste no site fiz um teste real no mesmo dispositivo disponível na plataforma e o resultado foi idêntico. Realmente muito bom o serviço.

Abraços, fica a dica.

See ya!!

Série Dropbox: Enviando arquivos para o Dropbox via Java Application

 
Olá Pessoal, 
 
Venho trabalhando há um bom tempo com API do Dropbox em web apps. No post de hoje vamos ver como enviar um arquivo para uma conta no dropbox via Java Application. É um verdadeiro upload via console. 
 
Lets go…
 
O cenário
 
Imagine que você queira ter um upload na sua aplicação. Nada de diferente aqui, mas sabemos que há várias formas de fazer isso e temos bastante frameworks Java que nos ajudam. Mas, como fazer de forma rápida e segura? Aqui usamos o serviço do Dropbox para armazenamento de arquivos que vem da aplicação. Isso nos ajuda em vários pontos:
 
1. Segurança: Certamente o time do dropbox é preocupado com isso;
 
2. Histórico: Por default o dropbox mantém um histórico do arquivo, então em caso de precisar retornar uma versão é muito simples; 
 
 
3. Baixo custo de desenvolvimento: API do dropbox é bem documentada e tem suporte a diversas linguagens. O que teremos que fazer é sempre implementar algo muito específico ou encapsular algumas features mais comuns para evitar de ter código repetido em várias partes da aplicação; 
 
Ai nasceu no laboratorio da ITS a easyJavaDropboxAPI, que nos ajuda no dia a dia. A API ainda está nas primeiras versões e recentemente acabou de sair a versão 1.1.0 com algumas funcionalidades e melhorias e uma delas é permitir salvar arquivos no dropbox (a versão anterior nos permitia apenas ler um arquivo). O método na API que salva um arquivo é assim:
 
public void saveToDropbox(String finalName,InputStream inputStreamContent) throws DbxException,IOException;

 

Vamos ver na prática 
 
 
Metendo a mão na massa  
 
Primeiro Passo
 
Vamos usar o projeto easyJavaDropboxAPIExample que vimos no post:
 
Então você precisa ter feito os passos descritos no post acima.
 
Segundo Passo
 
Se fez o passo 1, certamente consegue listar os arquivos. 
 
Terceiro Passo
 
Atualize o pom.xml para usar a versão mais nova da API:
 
<dependencies>
<dependency>
<groupId>com.its.api</groupId>
<artifactId>easyJavaDropboxAPI</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>

 

Quarto Passo 
 
Agora vamos adicionar o código que fará o upload. Não vamos modificar o código existente, apenas adicionar. No método main adicone as seguintes linhas:
 
//upload service
EasyJavaDropBoxServiceImpl upload = new EasyJavaDropBoxServiceImpl(token);
saveToDropbox(upload);

O código com o método main completo ficou assim: 

public static void main(String[] args) throws DbxException, IOException {
String token = "your token here";
String path = "/";
EasyJavaDropBoxService easyJavaDropBoxService = new EasyJavaDropBoxServiceImpl(path, token);
List<DbxEntry> listFiles = easyJavaDropBoxService.listFiles();
for (DbxEntry file : listFiles) {
System.out.println(file.name);
}
//upload service
EasyJavaDropBoxServiceImpl upload = new EasyJavaDropBoxServiceImpl(token);
saveToDropbox(upload);
}

Lembre-se de que é preciso gerar o token para sua conta. Quando tiver o token coloque como valor na variável token. Agora vamos criar o método que salva o arquivo no dropbox:

  

private static void saveToDropbox(EasyJavaDropBoxService uploadEasyJavaDropBoxService) throws DbxException, IOException {
//creating new file
File file = new File("camilotestedropbox2.txt");
file.createNewFile();
//writing content in file
FileWriter fileWriter = new FileWriter(file);
fileWriter.write("Test upload to dropbox  api");
fileWriter.close();

try {
FileInputStream fileInputStream = new FileInputStream(file);
String fileName = file.toString();
//calling method from easyJavaDropboxAPI
uploadEasyJavaDropBoxService.saveToDropbox(fileName, fileInputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

}

Testando 

Agora chegou a hora de testar. Rode a aplicação e vamos ver a saída no console: 
 
dropboxuploadconsole
 
Na imagem acima são listados os arquivos que tenho no meu dropbox. Agora vamos ver se no dropbox tem o novo arquivo que criei: 
 
dropboxfileuploadeddone
 
Pronto, arquivo enviado para o dropbox. Simples, não? 
 
O projeto foi atualizado no Github:
 
 
Vou ficando por aqui. Espero que tenham gostado do post. 
 
Abracos, see ya!!!

Lançamento 1.1.0 easyJavaDropbox API

olá Pessoal,
O post de hoje é  bem curto apenas para anunciar para uma released da API easyJavaDropboxAPI. Para não ter que repetir o que já publiquei configura nesse post Por que usar easyJavaDropbox? e  confira o que temos de novo na nova versão e o que já está on development para versão 1.2.0.
GitHub
abracos, see ya!!

Série Dropbox: Por que usar easyJavaDropboxAPI?

Olá Pessoal, 
 
Hoje vou falar rapidinho sobre a easyJavaDropbox API. Recebi um e-mail recentemente de um leitor perguntando por que ele deveria usar a easyJavaDropboxAPI já que pode usar diretamente API do dropbox. 
 
Lets go… 
 
 
Por que usar easyJavaDropboxAPI? 
 
A motivação com que criei a easyJavaDropboxAPI foi para encapsular algumas funcionalidades da API do dropbox. Se você usa muito recurso da API vai ver que tende a criar código repetido ou terá que criar uma classe utilitária para tratar e evitar código repetido. Ao invés de criarmos uma classe utilitária, que tal uma API que pudesse ser usada em outros projetos? Assim nasceu a easyJavaDropboxAPI. 
 
A API ainda está em uma fase bem inicial e simples. Estamos já com a pre-release da versão 1.2.0 e vamos atualizando constatemente à medida que identificamos novas funcionalidades que seria interessante na API e que deveria ser encapsulada. 
 
Quando devo usar? 
 
– Se precisa salvar um arquivo no dropbox via upload temos um método que resolve isso facilmente; 
– Se precisa listar e obter arquivos que estão no dropbox; 
– Se quer pesquisar um arquivo no dropbox, temos essa funcionalidade já implementada; 
  
Ainda temos poucas funcionalidades, na verdade todas elas foram nascendo com cases reais de projetos, e vamos evoluindo a API dessa maneira, pegando requisitos de mercado e melhorando.
 
Conclusão 
 
Se você quer uma forma mais simples de se conectar com o dropbox, a easyJavaDropbox API vai te ajudar evitando escrever mais código do que precisa. Uma outra vantagem que ganhamos foi de separar o código de terceiros do nosso código de negócio, pois apesar de usarmos as funcionalidades do dropbox para resolver problemas de negócio queríamos manter o código separado porque se amanhã deixarmos de usar o serviço do dropbox, o que iremos fazer? Então mantivemos isso separado usando a API e a troca do dropbox por um outro serviço, seja de terceiro ou próprio. É simples, fácil e com um custo de manutenção aceitável. Nada de big refactoring :). 
 
Github do Projeto
 
 
Vou ficando por aqui, e não deixe de mandar sugestões, críticas etc.

Usando Maven Archetype WebApps Module

Olá Pessoal, 

 

O post de hoje é mais uma contribuição. Quero compartilhar com vocês um archetype maven que criamos aqui na empresa e deixamos no github. A seguir resumo o que já vem nele.  Veja também como criar seu archetype.

 

Lets go… 

webapps-module archetype maven 

Esse archetype nasceu com o objetivo de ter um template com a base da maioria dos projetos aqui na empresa e evitar trabalho repetitivo sempre que formos criar um novo projeto. Este é baseado em modules. Sabemos que no catalogs do maven há uma pilha de archetypes, mas alguns que tentamos usar para o nosso cenário aqui sempre estavam com erros muito chatos para resolver, dai vamos fazer o nosso.

Vou fazer uma pequena apresentação desse archetype.

Github 

https://github.com/camilolopes/archetype-webapps-module

O readme.md tem as informações mais pontuais, sem muito detalhe.

A divisão em módulos 

O archetype foi dividido em módulos. Quando você cria vai ter:

  1.  módulo principal: terá o nome da app que você informar na criação;
  2. webapps-core: é o nome default. Esse módulo cuida de todo back-end da aplicação. Aqui tem os testes unitários, persistência com hibernate etc;
  3. webapps-web: é o nome default, mas pode ser alterado e esse cara cuida de todo front-end da aplicação e tem uma dependência do modulo webapps-core.

Note: quando você cria o projeto baseado no archetype, este vem com configurações default. Você precisa customizar de acordo ao seu projeto, portanto:

1. Remova a dependencia de webapps-core no projeto webapps-web. E adicione a dependência webapps-core do seu projeto. Importe o projeto webapps-core para IDE antes;

Qual a vantagem de usar esse archetype? 

  • Todos os módulos já vem prontos para uso, com as configurações feitas para Spring, Hibernate, teste em memória com HSQLDB usando o DBUnit;
  • Spring core configurado;
  • Hibernate configurado;
  • DBunit configurado e usando uma estrutura que desenvolvi para evitar repetição de setup;
  • Há um arquivo chamado its-dataset.xml que é para o dbunit, mas você pode alterar o nome do arquivo e atualizar a classe DBUnitConfiguration.java para o nome correspondente;
  • Jersey configurado. Se você precisar, o arquivo web.xml já está ok. Caso não precise, pode remover;

Criando projeto baseado no archetype 

Passo 1 

Vou assumir que você baixou o archetype no github e seguiu os passos no arquivo readme, ok?

Passo 2 

Após ter instalado o archetype localmente, vá no Eclipse (e considerando que você tem o plugin do maven)

crie um novo projeto maven project.

Passo 3 

Agora vamos procurar pelo archetype. Escolha all catalogs.

archetypewebappsmodulecatalog

Observe que ele apareceu. Escolha e clique em next.

Passo 4 

Preencha com as informações do seu projeto.

archetypeproject

Clique em finish e aguarde o projeto ser criado

Passo 5 

Observe que temos dois módulos:

 archetypemyappsexample

Pronto. Preciso mudar mais alguma coisa?

Sim. Como todo template ele vem vazio, com informações de banco de dados. Os packages usados pelo spring são

o default do archetype, e você precisa informar o seu. Então aqui vai um checklist do que você precisa alterar:

  •  app-context.xml
  •  test-context.xml
  • parent/pom.xml: se você for usar o plugin flyway informe aqui as configurações do banco de dados. Não é requerido fazer essa alteração.

Você pode renomear o diretório (algo como myapps-core) ou manter como está. Os packages do projeto também podem ser renomeados, mas fique atento porque se você mudar o nome do package apenas precisa informar isso no arquivo app-context.xml  e test-context.xml do Spring. Não se assuste, porque a mudança é bem pequena e simples.

Espero que tenham gostado e sugestões são bem vindas. Essa é a primeira versão do archetype e estamos criando outros para cenários bem comuns de projetos Java. Archetype sempre baseado em módulos. Temos que fazer algumas configurações mais pontuais, mas o tempo gasto é menor do que criar tudo manualmente sempre que tem um novo projeto.

Eu te recomendo testar o archetype com as configurações default, ver se atende ao que precisa e depois gerar um novo projeto customizado para o que vai desenvolver.

Abracos. See ya!!