Programando com htmx.

Htmx.

Quem disse que não existe programador html?

Estava verificando o radar de tecnologias da Thoughtworks e no setor de frameworks ela sugeriu avaliar o htmx.

Radar.

Mas o que é o htmx?

O htmx é uma biblioteca Javascript leve, aproximadamente 10 kb, que dá ao desenvolvedor o poder de fazer requisições AJAX de qualquer elemento do DOM, assim é possível dentro de um arquivo html manipular elementos e fazer alterações sem atualizar a página.

Com essa abordagem, o html passa ser algo muito parecido com um SPA(Single Page Application), aproximando de um desenvolvimento front-end, mas com algumas ressalvas.

A configuração é bastante simples, o desenvolvedor somente precisa adicionar no cabeçalho do arquivo o link da biblioteca htmx e adicionar as Tags htmx necessárias no corpo do arquivo para criar sua aplicação.

Apesar de simples, ainda existem seus contras.

A comunidade htmx ainda é pequena, então encontrar alguma solução para problemas complexos pode ser um desafio.

Além disso, o htmx não está consolidado no mercado, então outro desafio é encontrar componentes prontos para algo diferente que deseja colocar no seu projeto, a solução é implementar com um javascript nesse caso.

Exemplo de implementação.

Code.
Implement.

Mais exemplos no site oficial do htmx.

Azure AI-900.


O certificado Azure SC-900 foi conquistado, e agora iniciei os estudos para o certificado Azure AI-900.

A certificação Azure AI-900 testa os conhecimentos do candidato em Inteligência artificial utilizando recursos Azure.

Os conhecimentos testados na prova são um pouco mais técnicos que as provas testadas na Azure AZ-900 e SC-900.

Apesar do material de estudo AI-900 informar que o formato da prova é para candidatos com ou sem conhecimento em ciência de dados, é necessário o básico desse conhecimento.

O formato e os regulamentos da prova são os mesmos da prova AZ-900, a prova pode ter até 45 minutos e o número de perguntas pode variar conforme a dificuldade da questão.

Estrutura da prova.

A prova AI-900 tem uma estrutura padrão como as outras provas da série 900 da Azure, testando as seguintes habilidades:

  • Descrever as cargas de trabalho e considerações sobre Inteligência Artificial (20-25%);
  • Descrever os princípios fundamentais do aprendizado de máquina no Azure (25-30%);
  • Descrever os recursos das cargas de trabalho de pesquisa visual computacional no Azure (15-20%);
  • Descrever os recursos das cargas de trabalho de Processamento de Linguagem Natural (PLN) no Azure (25-30%).

Conclusão.

Aproveitando os notes das próximas semanas, vou postar alguns resumos de estudos feitos para a prova AI-900.

Link

YAML.

yaml ou “Ain’t Markup Language” é um formato de serialização de dados que tenta deixar mais humana a interpretação dos dados.

Criado em 2001, é inspirado em XML e indentação Python, o yaml é mais uma das opções entre o XML e Json.

Muito utilizado hoje em configurações, vem ganhando seu espaço para configurações de linguagens de programação e infraestrutura nas nuvens.

O uso do yaml ainda é muito dividido pois o Json e XML estão consolidados no mercado e tudo que é diferente é doloroso para migrar, apesar do formato existir desde 2001.

Hoje o Json é o preferido entre os desenvolvedores devido ao seu formato e facilidade de leitura, mas é sempre bom conhecer outras opções que outros formatos oferecem.

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

Java 17.

Mais um lançamento semestral do Java foi disponibilizado dia 14 de Setembro de 2021, a versão 17 do Java.

A versão do Java 17 é LTS(Long Time Support), ou seja, a versão conta com um suporte até 2026 e suporte estendido até 2029.

Como todos os lançamentos, a versão conta com várias atualizações e melhorias, além de 14 JEP’s(JDK Enhancement Proposals).

A Oracle ainda quer deixar mais simples a adesão de licenças que para muitos ainda não é tão clara.

Apesar disso, a Oracle ainda vai disponibilizar versões públicas sob a Licença Pública Geral de código aberto (GPL).

Novidades do Java 17.

Aprimoramento da linguagem:

  • Jep-409 Classes seladas: Adicionado as classes e interfaces seladas que restringem outras classes ou interfaces que podem estendê-las ou implementá-las.

Atualizações e melhorias para bibliotecas:

  • Jep-306 Restaure a semântica de ponto flutuante Always-Strict: semântica de ponto flutuante estrita foram removidas;
  • Jep-356 Gerador de número pseudo-aleatório aprimorado: fornece novos tipos de interface e implementações para geradores de número pseudo-aleatório (PRNGs);
  • Jep-382 Novo pipeline de renderização do macOS: implementa um pipeline Java 2D para macOS usando a API Apple Metal.

Suporte para nova plataforma:

  • Jep-391 mac OS AArch64 Port: Portas do JDK para a plataforma macOS AArch64, a porta permitirá que os aplicativos Java sejam executados nativamente nos novos computadores Apple Silicon baseados no Arm 64.

Programas Java de Prova Futura:

  • Jep-403 Encapsular fortemente JDK: Não será mais possível relaxar o forte encapsulamento de elementos internos por meio de uma única opção de linha de comando, como era possível no JDK 9 ao JDK 16.

Remoção e Descontinuação:

  • Jep-398 descontinuar a API do mini aplicativo para remoção: Todos os navegadores da web removeram o suporte para plug-ins de navegador Java ou anunciaram planos para iniciarem a solução;
  • Jep-407 Remoção do RMI Activation: remoção do mecanismo de ativação de Remote Method Invocation (RMI), preservando o resto do RMI;
  • Jep-410 Remoção do AOT experimental e o compilador JIT: O compilador experimental baseado em Java (AOT) e just-in-time (JIT) foram recursos experimentais que não tiveram muita adoção e foram removidos do código fonte;
  • Jep-411 Descontinuação o Security Manager para Remoção: Descontinuação do do Security Manager remonta ao Java 1.0 para uma futura remoção.

Conclusão.

A comunidade Java junto com a Oracle estão empenhados em entregar a cada lançamento da versão Java novidades e melhorias em todos os pontos, desde produtividade até a segurança do sistema.

Link

Python walrus.

O operador Python walrus possibilita atribuir e retornar o valor de uma variável.

Introduzido a partir do Python. 3.8, a feature disponibiliza uma capacidade diferente.

Provavelmente a capacidade oferecida pelo walrus só é encontrada no Python e C.

Apesar de o walrus ser bem controverso, parece que a capacidade veio pra ficar.

O nome walrus ou em português morsa(animal), foi escolhido devido ao operador := se assemelhar aos dentes de uma morsa.

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

Link

Python lxml.

O lxml é uma biblioteca Python que permite manipular arquivos html e xml.

O mais interessante é a capacidade de criar arquivos html e xml de forma simples.

Uma ótima ferramenta para criar wrapper html ou xml.

Apesar da maioria das tecnologias atuais utilizarem json para comunicação, ainda existem sistemas legados que usam xml, e nesses casos o lxml pode ser útil.

O mesmo para html, onde podemos gerar códigos html para que seja utilizado em tempo de execução.

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

Apache StringUtils.

Você já utilizou a ferramenta StringUtils da Apache no seu projeto Java?

Para quem trabalha com Java, sabe que o que mais acontece são erros com variáveis null.

Quem nunca teve um problema em produção de NullpointerException, onde você testou várias vezes, mas em produção acabou dando erro?

Isso acontece pois muitas vezes não conseguimos testar todos os casos, mas o StringUtils ajuda a evitar esses tipos de problemas.

O StringUtils reduz os números de erros de ponteiros nulos e resolve várias lógicas complexas que geralmente deixam o código mais confuso e suscetível a erros.

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