Citação

Python datetime.

Trabalhar e a manipulação de datas pode ser um desafio para o programador, independente da linguagem de programação.

Trabalhar com datas parece simples, mas quando começam entrar questões como horário de verão e configuração de horário local, o trabalho começa a ficar complexo.

Felizmente em Python podemos contar com a lib datetime, que facilita muito a vida do programador na manipulação de datas.

O datetime suporta os padrões GMT e UTC, mas não vamos entrar nesse detalhe.

O padrão adotado pela lib é a ISO 8601, seguindo o modelo de formatação: ano, mês, dia, hora, minuto e segundo.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/pyDateTime.html.

Citação

Python args e kwargs.

Se você já programou em Python já deve ter se deparado com os argumentos *args e **kwargs.

Teoricamente os 2 argumentos são utilizados para entradas de valores opcionais.

Mas você sabe qual a diferença entre os dois?

O *args basicamente é um array de parâmetros com valores opcionais.

Já o **kwargs é um parâmetro com valores opcionais e podemos filtrar os seus valores.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/pythonArgs.html.

Citação

Comparação em Python.

https://nakatech.herokuapp.com/img/works/20200307/index.jpg

Em Python existem 2 tipos de comparadores de variáveis.

Podemos comparar o valor da variável com “==” ou a sua negativa “!=“.

Também podemos comparar a referência de memória com “is” e sua negativa “is not“.

É muito comum erros quando estamos adicionando alguma condicional de comparação de variável.

Em Python, todas as variáveis, mesmo com valores iguais tem um endereço de memória diferente.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/pyComparing.html.

Link

Java variável atômica.

https://nakatech.herokuapp.com/img/works/20191215/index.jpg

As variáveis atômicas permitem utilizar operações atômicas.

As Operações atômicas são operações que sempre executam juntos e não podem finalizar incompletos.

Em Java podemos utilizar o pacote java.util.concurrent com algumas variáveis atômicas.

Utilizando as variáveis atômicas temos a facilidade de executar uma variável thread safe e deixar de marcar o método como synchronized.

Variáveis atômicas ajudam a deixar o código mais simples e legível, além de seguro quanto a thread safe.

Acesse o artigo completo em: https://nakatech.herokuapp.com/article/atomic.html.

Java 13.

O Java 13 foi lançado em Setembro de 2019, conforme as regras de lançamento a cada 6 meses.

Obedecendo a regra de lançamento, teremos 2 versões anuais, 1 em Março e outro em Setembro.

Essa foi uma forma de liberar novas capacidades de forma rápida aos desenvolvedores.

Nessa versão 13 da Jdk, foram liberados 5 novas capacidades ou JEP (Java Enhacement Proposal).

Algumas das novidades foram melhorias de capacidades liberados nas versões anteriores.

Novidades Java 13.

Como falamos anteriormente, foram 5 alterações nessa nova versão.

Seguem as alterações:

  1. JEP 350 Dynamic CDS Archives: essa feature foi melhorada a performance do Class Data Sharing (CDS) que foi introduzido no Java 10;
  2. JEP 351 ZGC Uncommit Unused Memory: na versão anterior o GC não retornava a memória heap não utilizada para o sistema operacional, na versão 13 essa melhoria foi introduzida;
  3. JEP-353 Reimplement the Legacy Socket API: as versões anteriores da API de Socket tinham uma implementação um pouco complicado, a nova implementação simplifica o uso e é compatível com as novas extensões;
  4. JEP-354 Switch Expressions: as expressões adicionadas ao Switch no Java 12 como a utilização da condição OR, retornar o valor diretamente no break, utilização de Arrow functions foram mantidos, a novidade foi a introdução da palavra reservada yield para retornar o valor;
  5. JEP-355 Text Blocks: introdução da feature multi-line string literal, onde podemos dispensar a utilização de escapes.

Observação: as features Jep-354 e Jep-355 ainda são do tipo Preview, para ativar precisamos adicionar os parâmetros: javac –enable-preview –release e java –enable-preview.

Conclusão.

As novas releases semestrais estão facilitando a vida do desenvolvedor e da própria Oracle que recebem o feedback mais rápido para corrigir nos próximos releases.

Citação

Java syncronized.

Não é segredo que trabalhar com várias threads é algo bem complexo e deve ser trabalhado com cautela.

A palavra reservada syncronized é utilizada para garantir que todas as threads trabalhem sincronizadas.

Utilizando o syncronized em métodos, garantimos que o método só é acessado por 1 thread por vez.

Podemos utilizar o syncronized diretamente na assinatura do método ou somente no bloco do método que gostaria de sincronizar.

Em resumo, podemos sincronizar métodos de instância, métodos estáticos e blocos dos métodos.

Acesse o tutorial completo em: Nakatech.

Citação

Julia.

Julia é uma linguagem de programação dinâmica e com rápida interação, muito parecido com Python.

Existem benchmarks onde códigos com Julia chegam a ser tão rápidos quanto códigos feitos em C.

Julia é uma linguagem multi-paradigma, sendo assim podemos combinar programação Orientada a Objetos e Funcional.

Por trabalhar bem com números como Matlab e R, Julia pode ser uma boa opção para trabalhar com ciência de dados.

Outra feature legal é a possibilidade de acessar aplicações C de forma transparente.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/julia.html.