Jackson serializando Enumerate

Dada uma classe Property que possui um Enumerate chamado PropertyType para identificar seu tipo, se é propriedade do sistema, ou do ambiente, ou mesmo se é configuração da aplicação. O retorno default do json é o nome do tipo: https://gist.github.com/tassioauad/69c3e451ec2143fb43f5358bb2fe4d0e Podemos capturar o valor numérico do tipo e retorná-lo através da annotation @JsonFormat: https://gist.github.com/tassioauad/785e1132613f992f1cfc243f15725e5a Se tivéssemos … Continue lendo Jackson serializando Enumerate

Spring Boot + Jersey em 1 minuto

Basicamente o pom.xml tem apenas a dependência do spring-boot-stater-jersey, que trará todas as bibliotecas necessárias para usarmos o Jersey já configurável através do Spring Boot. https://gist.github.com/tassioauad/c6246385864c7e546b235773bd320cbf Quanto a configuração básica e essencial, só precisaremos dessa classe abaixo: https://gist.github.com/tassioauad/afa28d12ef363ef2f3fbdf586a286c2f A classe ResourceConfig que é herdada, é tradicional nas configurações do Jersey, que podem ser feitas por … Continue lendo Spring Boot + Jersey em 1 minuto

mvn dependency:tree

Estou tendo alguns problemas de conflitos de versão nas minhasdependências do projetos e o comando mvn dependency:tree não está sendo o suficiente, pois tenho muitas dependências e está dificil de identificar quaisdependências há a dependencia da biblioteca em conflito. Existe algum comando mais objetivo? Segundo a documentação do maven, existe o comando: mvn dependency:tree -Dverbose -Dincludes=<biblioteca> Eles irá … Continue lendo mvn dependency:tree

Test APK Dependency Conflicts

Em uma aplicação antiga que fui atualizar a versão das dependências do gradle, ao executar recebi a seguinte mensagem a respeito de um conflito entre a versão da dependência com.google.code.findbugs:jsr305 para app e para test: Error:FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:preMyAppDebugAndroidTestBuild'. > Conflict with dependency 'com.google.code.findbugs:jsr305' in project … Continue lendo Test APK Dependency Conflicts

“OMG! Um heisenbug!”

Achei uma pergunta sensacional no StackOverflow feito pelo Jefferson Quesado acompanhada de uma excelente resposta do RBZ que gostaria de compartilhar em meu blog. Sempre chamei de bugs mágicos o que agora soube que a terminologia correta é heisenbug. Segue abaixo a pergunta e a resposta: Um heisenbug é um bug que muda seu comportamento ao ser estudado [1]. Ele tem seu … Continue lendo “OMG! Um heisenbug!”

DexArchiveBuilderException com Guava 21.0 Faça

Acabei de receber uma exception quando fui atualizar as versões dos frameworks e executar uma aplicação que estava há muito tempo parada. Minhas dependencias são essas: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:27.1.0' annotationProcessor 'com.jakewharton:butterknife:7.0.1' compile 'com.jakewharton:butterknife:7.0.1' compile 'com.google.code.gson:gson:2.8.2' compile 'com.google.guava:guava:23.3-android' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.okhttp:okhttp:' compile 'com.squareup.okhttp:okhttp-urlconnection:2.7.5' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.google.code.gson:gson:2.8.2' compile 'com.squareup.dagger:dagger:1.2.5' … Continue lendo DexArchiveBuilderException com Guava 21.0 Faça

OMG! API RESTFul em 1 minuto

Fiquei muito assustado com a velocidade que é possível desenvolver um pequeno serviço RESTFul com o Spring Data Rest e tudo fica mais bonito ainda sendo o banco embarcado e o servidor também embarcado. Primeiramente, segue o pom.xml, onde será possível ver os poucos pacotes que estou usando: https://gist.github.com/tassioauad/881a897aa549a9cd64b01236accd0adf Estou apenas usando Spring Data JPA, … Continue lendo OMG! API RESTFul em 1 minuto

Configurando Múltiplos Bancos de Dados no Spring Boot

Minha aplicação possui conexão com um banco de dados remoto (SQLServer), mas gostaria de realizar uma pequena duplicação de certos dados menos voláteis em um banco local e embarcado (H2) para ganhar em termos de desempenho. Minha configuração hoje é a de um único banco, informando no .properties: spring.jpa.show-sql=true spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver spring.datasource.url=jdbc:sqlserver://****:1433;databaseName=**** spring.datasource.username=**** spring.datasource.password=**** Ficando a … Continue lendo Configurando Múltiplos Bancos de Dados no Spring Boot

Testando Web Service em um Profile Específico

Estou desenvolvendo um web service RESTFul usando o Spring Boot e gostaria de saber como executar os testes unitários com requisições direcionadas ao web services sem que eu precise antes levantar o servidor manualmente. Gostaria que os testes já levantassem o servidor automaticamente. Além disso, gostaria que a aplicação usasse um profile específico chamado test com as … Continue lendo Testando Web Service em um Profile Específico

Empacotando profiles diferentes com Spring Boot e Maven

Nas minhas pesquisas, eu pude entender que há como realizar profiling da aplicação (ex. homologação e produção) de duas formas, via maven e spring-boot. A grande questão é que eu tenho multiplos perfis e gostaria de empacotar cada um corretamente. Qual devo usar? Como devo usar esse recurso? Na verdade,se você quer já empacotar em … Continue lendo Empacotando profiles diferentes com Spring Boot e Maven

Spring Boot – Múltiplos módulos e as annotations @EnableJpaRepositories e @EntityScan

Estou usando Spring Boot para criar um web service RESTFul e um SOAP,  cada um em um módulo mas ambos em um único projeto. Então, eu decidi separar minha camada de domínio em um terceiro módulo já que é a mesma para ambos os tipos de web services e assim poderia reutilizar. Mesmo com a dependência entre … Continue lendo Spring Boot – Múltiplos módulos e as annotations @EnableJpaRepositories e @EntityScan

Técnica Cardsorting

Arquitetura da Informação A arquitetura da informação organiza o conteúdo de forma que os usuários descubram o que precisam através de caminhos eficientes. Uma boa arquitetura da informação combina os objetivos do negócio com os objetivos do usuário, balanceia a largura e a profundidade em termos de níveis, permite alta visibilidade, não permitindo que o … Continue lendo Técnica Cardsorting

Testes de Usabilidade x Estudos de Campo x Testes Analíticos

Nos testes de usabilidade, um teste é aplicado em um usuário que faz uma tarefa em protótipo dentro de um laboratório objetivando levantar medidas quantitativas e erros. Esses testes podem ser realizados por meio de observação, por meio de questionários dados aos usuários ou por meio de testes controlados em um laboratório. Nos estudos de … Continue lendo Testes de Usabilidade x Estudos de Campo x Testes Analíticos

Design – Avaliação

A usabilidade não tem sido avaliada porque os profissionais têm pensado que há uma grande diferença entre visual, UX e usabilidade, ao ponto de esquecer da usabilidade. Se é bonito, é visual, se é fácil, é usabilidade, se é motivador e engajador, é UX. Porém, não é possível um ponto ficar sem o outro, pois … Continue lendo Design – Avaliação

NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String)

If you are using Hibernate 5.+ and Glassfish 4.X or other earlier version , you will probably see this error. That's happening because there is a conflict between Glassfish modules and your project dependency, more specifically the lib org.jboss.logging. It's happening because the method org.jboss.logging.Logger.debugf is only available in the jboss-logging version 3.3.0 or later and there is on … Continue lendo NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String)

What?! java.lang.ClassCastException?!

If you are facing something very strange like com.tassioauad.MyEntity cannot be cast to com.tassioauad.MyEntity, don't worry because you are not alone.  It's  typically occurs when two ClassLoader load the classes with the same name, because different ClassLoader can do the same class be considered different. What is the ClassLoader?  It is a class that load other classes, … Continue lendo What?! java.lang.ClassCastException?!

Simple Project: Spring Boot + Apache CXF (JAX-WS)

Let's create a simple hello world with and Spring Boot + Apache CXF (JAX-WS) project. Is not so common to find and example on the web, so I'm going to provide it. Firstly, we need to declare some dependencies on our pom.xml: https://gist.github.com/tassioauad/dbd1aaf44cdfb326c0777b162154178d I'd like to highlight the dependency with artefactid cxf-spring-boot-starter-jaxws, which provides the … Continue lendo Simple Project: Spring Boot + Apache CXF (JAX-WS)

Usabilidade e Ergonomia

Interface é a porção do sistema composta por componentes visuais que o usuário tem contato. Interação já é a ação do usuário no sistema, navegação, fluxo e etapas do processo para iniciar uma tarefa e finalizá-la. Interações têm restrições, como por exemplo, restrições de tempo e performance. Ergonomia Ergonomia tem como princípios a produtividade e … Continue lendo Usabilidade e Ergonomia

Análise de Tarefas

É necessário entender primeiramente o que é uma tarefa. Tarefa é uma meta acompanhada de um conjunto de ações. Uma meta é um estado bem abstrato que se deseja atingir e que pode ser atingido de diversas maneiras realizadas por diversas ações alternativas. Uma tarefa podem conter subtarefas e ações são subtarefas indivisíveis em outras … Continue lendo Análise de Tarefas

Análise de Usuários

Análise que define os perfis de usuário afim de entendê-los e seus objetivos e desenvolver um produto que harmonize com suas características. Através dessa análise é são criados o documento de perfil do usuário, contendo descrição dos grupos do usuário, e o documento de personas e seus objetivos, que cria uma pessoa fictícia que representa … Continue lendo Análise de Usuários

Artefatos da Análise Centrada no Usuário

O primeiro documento a ser registrado nessa etapa é o documento de perfil de usuário (Análise de Usuário), onde serão colocados as primeiras características de um grupo de usuários. Como parte desse perfil, são encontrados aspectos demográficos, comportamentais e psicológicos. O segundo documento a ser gerado é o documento de personas e seus objetivos (Análise … Continue lendo Artefatos da Análise Centrada no Usuário

5 Elementos da UX

Alguns afirmam que a UX não pode ser modelada, enquantos outros provam que pode. O que é feito nos casos que se deseja proporcionar uma boa UX é prever e harmonizar as interações com o produto através do entendimento do usuário e suas características e seu contexto e características. 5 elementos fazem parte da UX … Continue lendo 5 Elementos da UX

Análise de Usuários através dos 7 Estágios da Ação de Norman, O Primeiro Modelo Cognitivo do Usuário

O primeiro modelo cognitivo foi criado e lançado por Donald Norman. Ele tentou entender como o usuário funcionava e definiu 7 etapas da ação que o usuário percorre para atingir os seus objetivos. Toda a ação se inicia com um objetivo (geralmente é vago) que é precedido pela execução e, por fim, é finalizada com … Continue lendo Análise de Usuários através dos 7 Estágios da Ação de Norman, O Primeiro Modelo Cognitivo do Usuário

Integração Engenharia de Usabilidade e Engenharia de Software Tradicional

Em uma empresa pode já haver todo um processo de engenharia de software bem estabelecido e começar a fazer uso das etapas da engenharia de usabilidade pode ser tornar algo difícil. É um desafio aplicar abordagens centradas no usuário em um  engenharia de software tradicional para que assim aconteça a integração entre engenharia de usabilidade … Continue lendo Integração Engenharia de Usabilidade e Engenharia de Software Tradicional

Prototipação

É um conceito focado no design centrado no usuário onde ideias são validadas e feedbacks são recebidos em um modelo em menor escala do produto que você deseja fazer que pode acontecer em diversos níveis de detalhamento. A ideia da prototipação é de antecipar a natureza do produto sendo a equipe seja capaz de esboçar … Continue lendo Prototipação

Human Cognition

Each process has its own limitations, and the designers must to take care of it, relieving the user of tasks that over-burden them, simplifying tasks and providing a better user experience. Each cognition process are related to strengths and weaknesses of a user as we can see bellow: The design challenge: As a designer you … Continue lendo Human Cognition

Two-Panel Selector

There are many occasions where the user needs to see a list of options, categories, commands or other related items but when they make a selection they still need the list in view.Two-panel selectors are commonplace in web and application design as they enable users to view the contents of individual files, emails and other … Continue lendo Two-Panel Selector

Progressive Disclosure

Interaction design dilemma Users want power, features, and enough options to handle all of their special needs X Users want simplicity; they don't have time learn a profusion of features in enough depth to select the few that are optimal for their needs. A user might only want to change the icon name for their … Continue lendo Progressive Disclosure

Efficient Android Threading Book – My Compilation of Chapter 1

Linux Process In  a Linux, each user has its own process and a unique ID. Every user has access to private resources proctected by permission and any user (except the super user) can access another user's private resource. In Android, the same thing happens, but instead of users we have applications. By default, applications and … Continue lendo Efficient Android Threading Book – My Compilation of Chapter 1

DialogFragment/AlertDialog dismiss automatically on click button

I was dealing with the case of use an EditText inside my AlertDialog that is created inside an DialogFragment last week and I remembered that I could write a tip about some problems of it. What problems?  It's simple...An EditText...inside an AlertDialog...Ok, but how to avoid the dismiss of the Dialog when the user click in … Continue lendo DialogFragment/AlertDialog dismiss automatically on click button