[SPRING] Agendando tarefas com Scheduled do Spring (Scheduling Tasks with Spring)

spring-boot

Excelente post no blog do Alura:

https://blog.alura.com.br/agendando-tarefas-com-scheduled-do-spring/

Link da documentação:

https://spring.io/guides/gs/scheduling-tasks/

[Python / PyCharm] ModuleNotFoundError: No module named ‘distutils.core’ (Can’t install virtual interpreter in PyCharm in Linux)

pycharm-python-error

Erro ao criar um Projeto com VirtualVenv no PyCharm:

ModuleNotFoundError: No module named ‘distutils.core’

Solução:

$sudo apt-get install python3-distutils

[JAVA / MAVEN] – Projeto de exemplo de um Archetype em Java (How to create archetype – project sample)

add_archetype

Helpdev Archetype

Esse projeto pode ser utilizado como exemplo para criar seu próprio archetype, ele contém configurações de como criar uma classe com nome dinâmico, como criar variáveis para ser substituídas no código, importar README, .gitignore etc.

Especificamente nesse projeto o archetype foi definido para criar uma estrutura de pastas padronizados, criar uma Main class com o nome do projeto tudo dentro do package adequado ( group id + artifact id ), de acordo com necessidades de projetos em produção ele também cria uma pasta externa de properties com um arquivo contendo o artifact id como nome.

https://github.com/gbzarelli/archetype-java

https://github.com/gbzarelli/archetype-spring

Java / JVM – Trabalhando com a Variável de Ambiente LD_LIBRARY_PATH

java

A variável de ambiente LD_LIBRARY_PATH informa aos aplicativos do Linux, como a JVM, onde localizar bibliotecas compartilhadas quando elas estão localizadas em um diretório diferente do diretório especificado na seção do cabeçalho do programa.

As bibliotecas compartilhadas para o SDK estão em /usr/java7/jre/lib// e /usr/java7/jre/lib//j9vm, em que é um dos seguintes:
Linux PPC de 32 bits: ppc
Linux PPC de 64 bits: ppc64
Linux 390 de 31 bits: s390
Linux 390 de 64 bits: s390x
Linux de 32 bits: i386
Linux de 64 bits: amd64
Os programas ativadores do SDK, incluindo java, javac e jar procuram esses diretórios automaticamente. O diretório-pai é geralmente /usr/java7/, mas os pacotes que empacotam o Java™ podem usar diretórios diferentes. Este caminho já está configurado pelos programas ativadores deJava tais como java, javac ou jar.

Configure LD_LIBRARY_PATH se uma das seguintes condições se aplicar:
Você estiver utilizando outras bibliotecas compartilhadas (incluindo as bibliotecas nativas JNI que você utiliza ou desenvolve). Configure LD_LIBRARY_PATH para incluir o diretório ou diretórios que contêm as bibliotecas.
Você estiver usando a API de Chamada de JNI para chamar o código Java a partir do aplicativo C/C++. Configure LD_LIBRARY_PATH para incluir os diretórios que contém as bibliotecas JVM além dos diretórios que contêm suas próprias bibliotecas.

Fonte: https://www.ibm.com/support/knowledgecenter/pt-br/SSYKE2_7.0.0/com.ibm.java.lnx.70.doc/user/setlpath.html

Android – Compartilhar código entre teste unit e instrumental ( Sharing code between unit tests and instrumentation tests on Android )

android_testing-1

Suponhamos que você tenha uma aplicação android com uma serie de testes. Alguns deles são testes unitários (unit tests), localizados em: src/test, e testes instrumentais (intrumentation tests), localizados em: src/androidTest.

O problema encontrado é que muitas vezes temos códigos que poderiam ser compartilhados entre esses testes, mas não temos como fazer isso pois estão em pastas diferentes, e não seria adequado inserir esses códigos auxiliares no src/main.

A solução encontrada é acrescentar um novo pacote de testes que seja compartilhado entre o src/test e o src/androidTest, para isso vamos criar um src/sharedTest e configurar o sourceSets do test e androidTest para visualizar o sheredTest.

Para isso primeiramente vamos criar o novo pacote de testes: src/sharedTest/java/{pakage_do_projeto}
Obs: Importante criar o package do projeto para assimilar com os outros testes.

Agora basta configurar o build.gradle da seguinte maneira: Continue reading

Android – Accessing hidden method Ljava/lang/Thread – Coroutines do not log uncaught exceptions in Android

kotlin_android_ktVerificar Issue: https://github.com/Kotlin/kotlinx.coroutines/issues/148#issuecomment-338101986

Solução que utilizei:

val handler = CoroutineExceptionHandler { _, ex ->
  ex.printStackTrace() //TODO
}
launch(CommonPool + handler) {
   //your code here
}

Android – Configurando o Dagger com Worker (Dagger 2 setup with WorkManager)

dagger-dependency-injection

No exemplo a seguir mostro como configurar o Dagger 2 para trabalhar com o WorkManager.
Atualmente é uma tarefa bem complicada e que possivelmente sofrerá alterações em sua implementação pois o WorkManager é uma nova API do Android e o Dagger2 ainda não tem recursos para facilitar a implementação de injeção de dependências nela.

Este artigo está utilizando as seguintes versões:

dagger2: “com.google.dagger:dagger-android:2.20″
workmanager: “android.arch.work:work-runtime-ktx:1.0.0-beta04″

Veja a implementação: Continue reading

Kotlin – Dicas de como utilizar as Standard Funcions – ‘run’, ‘let’, ‘apply’ and ‘also’ (Kotlin Standard Functions cheat-sheet)

kotlin_android_kt

Todas essas funções funcionam de maneira semelhante, no sentido em que permitem alterar o escopo da função ou variável atual e, ao mesmo tempo, aplicar várias operações nessa mesma variável, tudo no mesmo lugar. Segue um flowchart bem interessante que encontrei em uma publicação no Medium/androiddevelopers para auxiliar na escolha: Continue reading