Feliz 2022!

Este ano as coisas parecem estar um pouco melhores do que nos anos anteriores, temos um pouco mais de perspectiva no que tange a nossa saúde, ficamos um pouco mais tranquilos e um pouco mais seguros, e isso é bom. Depois de muitas postagens no ano passado neste blog em torno de dezembro eu confesso que fiquei um tanto quanto sem assuntos, as coisas estavam corridas e a cabeça precisava de um refresco, isso aconteceu e agora temos um ano inteiro pela frente. Passei por uma mudança de emprego que trás muitas coisas novas para a minha caminhada e com certeza irão agregar muito para mim e para este pequeno blog, então vamos fazer as coisas se movimentarem por aqui. ...

January 3, 2022 · Lucas Polo

Fira Code: a fonte para programadores

As vezes não nos atentamos aos pequenos detalhes da nosso dia a dia, e após anos programando e lendo código eu esbarrei numa coisa muito interessante: fontes para desenvolvedores. Estas fontes específicas para programação ajudam a realçar algumas características específicas do nosso cotidiano, como simbolos e outros detalhes, como também proprorcionam uma leitura agradável do código. A que venho usando nos último tempos é a Fira Code, uma fonte criada com uma funcionalide muito interessante, as ligaturas, que são conexões entre simbolos que semanticamente significam uma única coisa. Por exemplo, por mais que >= sejam dois simbolos, o significado é únificado, assim a Fira Code faz o seguinte quando utilizamos ele: ...

June 24, 2021 · Lucas Polo

Encurtando links em Java usando o Migre.me

Uma pequena forma de como usar o Migre.me dentro de sua aplicação para encurtar URLs. A requisição é feita utilizando alguns componentes da especificação JAX-RS, utilizando o Jersey como implementação. Para fazer parser do JSON recebido, utilizamos o Jackson, o que deixa as coisas muito simples. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 package br.com.lucaspolo.json.teste; import java.net.URI; import java.net.URISyntaxException; import java.util.HashMap; import java.util.Map; import javax.naming.LimitExceededException; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Link; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; /** * @author lucaspolo * Classe de teste que faz a requisição do migre.me, encurta a URL e converte em um Hash. * A dica do parser para Map foi retirada de * {@link http://www.mkyong.com/java/how-to-convert-java-map-to-from-json-jackson/} * O POM com as dependencias do Maven para rodar este exemplo é este * {@link https://gist.github.com/lucaspolo/7a2a0ea33f3ce0c93975} */ public class App { public static void main( String[] args ) throws Exception { URI uri = new URI("http://migre.me/api.json?"); Client client = ClientBuilder.newClient(); WebTarget target = client.target(uri.toURL().toString()) .queryParam("url", "http://www.ocaminhodoprogramador.com.br"); String conteudo = target.request().get(String.class); System.out.println(conteudo); Map<String, String> map = new HashMap<>(); ObjectMapper mapper = new ObjectMapper(); map = mapper.readValue(conteudo, new TypeReference<HashMap<String, String>>() {}); System.out.println(map.get("migre")); } }

May 18, 2014 · Lucas Polo

Dando um close no Java 7: AutoCloseable

Gerenciar recursos sempre foi algo muito chato, principalmente quando parte do ciclo de vida do objeto é fecha-lo, senão você poderá ter problemas na execução do seu programa. Vamos por exemplo analisar um código que abre um arquivo e itera sobre ele exibindo seu conteúdo linha a linha: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 FileReader readerAntigo = null; try { readerAntigo = new FileReader("arquivo.txt"); Scanner scanner = new Scanner(readerAntigo); while(scanner.hasNext()) { System.out.println(scanner.next()); } } catch (FileNotFoundException e ) { System.out.println("Arquivo não encontrado"); } finally { try { readerAntigo.close(); } catch (IOException e) { System.out.println("Erro ao fechar o arquivo"); } } Perceba como é chato gerenciar o arquivo, para que eu possa abrir e fechar são necessário duas capturas de sessão, sem contar que ainda é necessário que o programador lembre-se de fechar o arquivo, algo que não pode ser tão crítico, mas se imaginarmos conexões JDBC, logo o banco começará a recusar conexões pois esquecemos de fecha-las anteriormente. Para ajudar a solucionar isso, no Java 7 foi introduzi o AutoCloseable, que permite que recursos existam apenas dentro de um bloco e ao seu final (ou caso seja lançado uma exceção) sejam fechados devidamente. Para isso, foi criada a interface AutoCloseable, e o a classe que a implementada de sobrescrever o método close().Ao abrir um novo recurso, você deve declara-lo e instancia-lo dentro de parentes após o try, ficando assim: ...

March 16, 2014 · Lucas Polo

Métodos como parâmetros - Java 8

O Java 8 que será lançado em breve e já possui versões de teste disponíveis para download tem uma novidade interessante, que é tratar métodos como objetos (criando assim o suporte a funções Lambda). Uma vez que métodos podem ser tratados como objetos, você pode passa-los como parâmetro ou cria-los em tempo de execução. Vamos dissecar mais sobre essas novidades no decorrer do tempo, mas por enquanto vamos ver um exemplo do que podemos fazer. Antigamente, para ler um arquivo e imprimir o seu conteúdo linha a linha poderíamos fazer algo assim: ...

September 22, 2013 · Lucas Polo

Syntax highlighting no blog

Não podemos ter um blog de programação sem uma das coisas mais úteis que o programador usa para destacar a facilitar a leitura de seu código, o syntax highlight! Uma rápida pesquisa me retornou uma das bibliotecas mais usadas para tratar isso, o SyntaxHighlighter. Sua instalação é muito simples, em dois minutos eu consegui incorporar as bibliotecas no blog e já fiz o código a seguir usando ele. Um pequeno teste, instalando o SyntaxHighlighter no blog: ...

September 17, 2013 · Lucas Polo