terça-feira, 19 de novembro de 2019

Java code duel - Balanced strings


oBomProgramador hashtagcodeDuel hashtagcodeChallenge hashtagjava Balanced strings! Você tem um texto marcado com delimitadores: um esquerdo e outro direito. Verifique se, para cada delimitador esquerdo (início) há um delimitador direito e na ordem esperada. Podem estar entrelaçados e aninhados e os delimitadores podem ter qualquer tamanho e diferentes entre si.


quinta-feira, 14 de novembro de 2019

Foi a rebimboca da parafuseta, ou "o que dizer quando dá M...A"


#engenhariaDeSoftware #gestão #problemas
A cena é comum: Tudo parado, sala de guerra, e a diretoria querendo uma explicação. O que você faz? O que diz a eles? Já vi muita gente boa entrar pela tubulação nesse momento.


quarta-feira, 13 de novembro de 2019

Java Code Duel #3 - Find common elements!


#engenhariaDeSoftware #algoritmos #java #collection #stream #codeDuel #oBomProgramador

O desafio era: Encontrar a interseção entre dois vetores de inteiros, com a limitação  de não repetir os números comuns. E foi dito que você nada poderia assumir quanto à classificação, unicidade e tamanho dos vetores.


terça-feira, 12 de novembro de 2019

Java Stream API - Programação funcional em Java - Parte 2


#engenhariaDeSoftware #java #programaçãoFuncional #lambda #streamapi

A programação funcional é o paradigma do futuro em Java! Com ela, você escreve código mais enxuto e seguro, baseado em funções independentes, reduzindo a complexidade ciclomática do código e até o consumo de memória (evitar criação de objetos em loops).

Veja aqui mais um exemplo bem legal!


segunda-feira, 11 de novembro de 2019

Code challenge - Java - Números romanos e swap


#engenhariaDeSoftware #java #codeDuel

Bom dia! Vou apresentar uma das possíveis soluções para o problema de conversão de números romanos em arábicos e vice-versa.


sexta-feira, 8 de novembro de 2019

JavaXfit - Java Crossfit training 1



Nosso desafio JavaXfit está aqui, com a solução.
Dados: um vetor de inteiros, a quantidade de posições a rotacionar para a esquerda, promova a rotação desejada e retorne o novo vetor. Exemplo: 2 1 2 3 4 5 6 7 8 Resultado esperado: 3 4 5 6 7 8 1 2 Restrição: A complexidade computacional da sua implementação tem que ser até O(n).

terça-feira, 29 de outubro de 2019

Orquestração versus coreografia: Um conto de dois microsserviços


#engenhariaDeSoftware #microsserviços #orquestração #coreografia #java #python #Zookeeper #RabbitMQ

Então, você tem ai um punhado de microsserviços e não sabe exatamente como vai colocá-los em “produção”, ok? É exatamente sobre isso que eu quero falar com você. Falar não! Mostrar!


terça-feira, 22 de outubro de 2019

Decomp: a objetividade em projetos de software


#engenhariaDeSoftware #projetos #gestão
Decomp é uma técnica de estimativa muito eficaz para projetos de qualquer tamanho. É mais objetiva e permite maior ROI em seus projetos de software, e está sendo usada: https://github.com/cleuton/decomp

segunda-feira, 21 de outubro de 2019

Microsserviços em containers imutáveis


#engenhariaDeSoftware #microsserviços #imutáveis #docker #dropwizard #java
A melhor maneira de entregar micro serviços é sob a forma de containers imutáveis. Veja um exemplo meu: https://github.com/cleuton/imutableservicedeploy

terça-feira, 15 de outubro de 2019

A matemática das redes neurais

#ia #datascience #deeplearning #java
Compreender a matemática envolvida nas redes de deep learning lhe ajudará a criar modelos mais Precisos.
Backpropagation é complexo, pois exige que você conheça bem álgebra linear e cálculo diferencial, incluindo as derivadas parciais e a regra da cadeia. Além disso, temos que considerar qual o método de otimização da função de custo e qual a frequência de atualização dos pesos. É um processo doloroso e trabalhoso.
Vou mostrar resumidamente o que seria a atualização de um peso usando backpropagation, que envolve o cálculo das derivadas parciais







quarta-feira, 9 de outubro de 2019

Estimativas sem baralho


#engenhariadesoftware #projetos #gestão #estimativas
Apresento uma técnica consagrada para estimar esforço em serviços de software. Não importa se você usa métodos ágeis, interativos ou em cascata, precisa estimar com precisão: https://github.com/cleuton/decomp

segunda-feira, 30 de setembro de 2019

SIngle Responsability Principle em Java


#engenhariadesoftware #projetoOO #métricas #LCOM4 #java
LCOM 4 é uma métrica sobre coesão de métodos de uma classe, servindo para identificarmos classes suspeitas de violação do princípio SRP (Single Responsability Principle): http://www.obomprogramador.com/2014/03/lack-of-cohesion-in-methods-4-lcom4.html

sexta-feira, 27 de setembro de 2019

Pipeline de deep learning


#ia #deeplearning #pipeline #keras #tensorflow #scikitlearn #python
Quer aprender o fluxo de um trabalho de Deep Learning (pipeline)? Preparação, construção, avaliação e predição? Simples? Leia esse meu tutorial, lá no DataLearningHub: https://github.com/cleuton/datascience/tree/master/keras

terça-feira, 24 de setembro de 2019

Java em gotas: Lambda 101


#java #functionalprogramming #lambda

Continuando como nosso tutorial de Stream API e Lambda, vamos ver os fundamentos de programação funcional em Java, com dois exemplos bem simples: https://www.mycompiler.io/view/8vFJbvQ e
https://www.mycompiler.io/view/4wL0H3B


Frontend reativo com backend em microsserviços


#frontend #backend #web #rest #microsserviços #javascript #react #redux #flask #python Só no meu blog: "reactdontpanic.com" você encontra isso!
Aprenda a criar uma app simples, porém completa, usando React + Redux + Redux-form + Flask(python). Frontend reativo com backend em microsserviços http://reactdontpanic.com/redux_form/

Java Stream API: Porque você precisa evoluir

Imagem: Oracle (https://www.oracle.com/technetwork/pt/articles/java/processamento-streams-java-se-8-2763688-ptb.html)

#java #stream #engenhariadesoftware
Você ainda vive naquele mundinho cheio de "for" e "if"? Precisa aderia à programação funcional, e a Stream API é o primeiro passo.
Criei um tutorial simples sobre Lambda e Stream API em Java para você. Veja só o Gist

https://gist.github.com/cleuton/3572ac7502357dd7f71bc7418d05974d


sábado, 21 de setembro de 2019

Comunicação inter-serviços com gRPC



#softwareengineering #engenhariadesoftware #microservices #communication #grpc
Como dois microsserviços se comunicam? Ou melhor por que se comunicariam? De acordo com o excelente site de Chris Richardson (https://microservices.io/patterns/communication-style/rpi.html) temos dois estilos de comunicação: Síncrono e Assíncrono (via mensageria).
Mensageria, utilizando filas de mensagens ou eventos, é a melhor maneira para implementar padrões como SAGA (https://microservices.io/patterns/data/saga.html) ou CQRS (https://microservices.io/patterns/data/cqrs.html), porém, se o sistema é pequeno ou você tiver restrições orçamentárias para alocar mais nós (como o broker), então a comunicação direta é a melhor opção. E, neste caso, em vez de usar REST/JSON, use um mecanismo mais formal e eficiente, como Apache gRPC, por exemplo.
Neste artigo, mostro como implementar um serviço simples em Python e consumi-lo usando Python ou Java, confira meu repositório: https://github.com/cleuton/InterServiceCommunication


sábado, 14 de setembro de 2019

segunda-feira, 26 de agosto de 2019

Coding challenge


#indoPraPrivada #preparação #codingChallenge
Como está sua preparação para entrevista? Passaria em um "coding challenge"? Que tal começar a praticar? Crie um programa em qualquer linguagem, que consiga sair de um labirinto. Pode ser em modo caractere. O nome desta técnica é Backtracking, mas tente fazer sem googar! Se jogar a toalha, veja a solução no meu curso de python gratuito: http://pythondrops.com/curso/maze/

domingo, 25 de agosto de 2019

Caôs x qualidade


#caôs #buzzwords #gestão
O quê uma empresa precisa para crescer de forma sustentável? Blockchain? Transformação digital? Inovação disruptiva? Ou simplesmente investir em qualidade? Produzir e entregar com qualidade, de maneira repetitiva, é o que fará seus clientes voltarem.
Qualidade pode ser vista como:
- Bom atendimento;
- Cumprimento de escopo, prazo e custo;
- Padrão repetível.
Se não consegue repetir o sucesso, então é melhor estudar todo o seu processo de produção, investindo em padronização.
Caôs e buzzwords comerciais em nada lhe ajudarão.

quarta-feira, 14 de agosto de 2019

Treine em pyhon, rode em Java


#deepLearning #produção #semCaô
Veja uma alternativa bem performática para rodar inferências em produção! Treine em Python e rode em Java! https://github.com/cleuton/neuraljava/tree/master/python_java_keras

segunda-feira, 5 de agosto de 2019

Novo livro: Neuraljava


#livro #neuraljava #deeplearning #gpu #java
Meu novo livro é sobre IA com Deep Learning em Java, para apps comerciais. A linguagem de programação mais popular do planeta e a tecnologia que é a própria Transformação Digital em si.
Veja também: Integração com Python e R, Programação paralela em GPU, processamento de imagens etc.
Uma vasta biblioteca de código ao seu dispor! Aguarde!
P.S. estou agendando eventos de lançamento! Antecipe-se! 

sábado, 13 de julho de 2019

Transformação digital sem python?


#python #transformaçãoDigital #deeplearning 
E ai? Vai implantar a "Transformação digital" sem python? A terceira linguagem de programação mais popular do mundo? Aprenda aqui, sem caô, com um projeto exemplo utilizado em robótica! http://pythondrops.com/curso/

Como funcionam as redes neurais?


#ia #redeneural #deeplearning #java #backpropagation #GPU #CNN
Como funciona uma Rede Neural? Como ela "aprende"? Como são implementados os softwares como o Tensorflow? Veja isso e tudo mais no Neural Java, com exemplos de código: https://github.com/cleuton/neuraljava

quarta-feira, 10 de julho de 2019

Programação CUDA no nVidia Jetson Nano


#GPU #nvidia #CUDA #JetsonNano #AI #computaçãoParalela
Nesse artigo eu mostrarei como programar paralelo utilizando o Nvidia Jetson Nano e CUDA toolkit.


segunda-feira, 8 de julho de 2019

Nvidia Jetson Nano: Primeiros passos


#ia #iot #nvidia #jetsonNano #iotreta
Conforme prometido, aqui vai o primeiro tutorial do Nvidia Jetson Nano: Como configurar e ligar pela primeira vez! http://iotreta.com/jetson/

domingo, 7 de julho de 2019

Agile é lacração


#agile #postura #críticas
"Na verdade, toda ideia deve ser debatida, com seus prós e contras, sem dogmas. Porém, com "Agile", isso não acontece… Há algo de religioso nas discussões envolvendo "Métodos Ágeis", e existem "fiéis" que os defendem ardorosamente, como se fossem dogmas, que tornam todas as outras ideias em “blasfêmias”. Falar mal de Scrum em um grupo é como soltar um "pum" em um elevador: Todos lhe olharão com fúria, indignação e condescendência." 

sexta-feira, 5 de julho de 2019

F de "férias" e de "f...se"


#férias
É isso ai, até Einstein tirou férias! Agora, vou apertar o botão F por um tempo. Postarei apenas "abobrinhas", mas voltarei logo, meus amigos!

quinta-feira, 27 de junho de 2019

Reconhecimento facial com Java


#IA #deeplearning #redeNeural #CNN #reconhecimentoFacial #java #deeplearning4j #openimaj #neuraljava
Te ensino como criar uma CNN para reconhecimento facial totalmente em Java: https://github.com/cleuton/neuraljava/tree/master/cnn_java

terça-feira, 25 de junho de 2019

Nvidia Jetson Nano: Encontro do IoT com IA


#IA #IoT #GPU #deeplearning #visãoComoutacional
O Nvidia Jetson Nano está naquele ponto obscuro onde  IA encontra o IoT. É um computador completo, com GPU e GPIOs, que você pode usar em seus projetos:
  • Na caixa só vem a placa, nada mais;
  • Você precisará de: Um cartão Micro SD (para baixar o SO), uma fonte micro USB de 5v/2a, um monitor de vídeo, um teclado, um mouse e um cabo Ethernet, pelo menos para o primeiro boot;
  • Não tem WiFi nem Bluetooth, mas você pode usar um dispositivo WiFi USB;
  • Opcionalmente, você pode alimenta-lo por com um adaptador barrel jack de 5v/4a, mas tem que usar um jumper;
  • Também pode ser alimentado via GPIO;
  • Tem uma UART, portanto, pode se conectar a dispositivos seriais;
  • Tem um conector de câmera MIPI, portanto, você pode conectar uma câmera do Raspberry Pi;
  • Tem uma GPU de 128 cores;
  • Não tem microcontrolador integrado, portanto, se você precisar controlar hardware em tempo real, será necessário utilizar algo como um Arduino conectado a ele. 


quarta-feira, 19 de junho de 2019

GPU e Java


#ia #deeplearning #GPU #ND4J #CUDA #java
Usar GPU é necessário para deep learning? Não dá para usar um cluster de CPUs? E como posso usar a GPU em Java?
Confira este novo artigo: 

terça-feira, 18 de junho de 2019

Deeplearning4J: Finalmente uma alternativa!


#ia #neuralnetwork #java #deeplearning4j
DeepLearning4J é a grande alternativa para desenvolver modelos de IA robustos e de alto desempenho. É capaz de usar CUDA e OpenCV, e até importar modelos criados com #keras, independentemente da plataforma em que foram criados e treinados (Python, R...). Veja este tutorial que eu fiz: https://github.com/cleuton/neuraljava/tree/master/python_java_keras

sexta-feira, 14 de junho de 2019

Deep learning colaborativo: Python e Java


#deeplearning #produção #java #keras
Desenvolvimento em Python, Produção em Java!
Não é preciso muito para concluir que Java é uma ótima opção para entregar aplicações em ambiente produtivo. É mais limpa e possui menos dependências espalhadas que outras linguagens de programação, como Python (que, por sinal, eu adoro). Enquanto Python é excelente para desenvolvimento, prototipação e experimentação, especialmente em ciência de dados e IA, perde um pouco quando pensamos em ambiente produtivo. Por quê?
* Performance: Além da questão do GIL, há vários benchmarks que comprovam o desempenho superior de aplicações Java, como este: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/python.html;
* Robustez: Com Java, temos pouca entropia de ambiente, isso quer dizer, menos dependências espalhadas e menos fragilidade. Basta que a JVM esteja instalada corretamente, que o resto das dependências pode ser embutida em um uber jar ou um war;
* Segurança: Embora existam decompiladores Java, podemos obfuscar o bytecode e entregar apenas o executável. Em outras linguagens, como Python, ficamos limitados a entregar o código-fonte. 

quinta-feira, 13 de junho de 2019

Desenvolvimento com Python, Produção com Java!


#ia #deeplearning #python #java #tensorflow #deeplearning4j #keras #neuraljava
Mais um artigo da série NeuralJava: Desenvolvimento com Python, Produção com Java! Como desenvolver e treinar modelos com Python, Keras e Tensorflow, e exportá-los para uma aplicação Java com DeepLearning4J:

https://github.com/cleuton/neuraljava/tree/master/python_java_keras

Deep learning com Java


#ia #deeplearning #java
Esqueçam a política e aprendam algo novo! Isso põe "pão na mesa"!
Tudo o que você precisa para realizar trabalhos de deep learning de forma profissional, com Java, esta aqui! Grátis! Te esperando! Em breve, mais um tutorial e mais um vídeo! https://github.com/cleuton/neuraljava

quarta-feira, 12 de junho de 2019

Inteligência artificial aplicada



#ia #GAN #VAE #RBM #DeepReinforcementLearning
Veja neste artigo alguns exemplos de IA aplicada, utilizando modelos de redes neurais diferentes.

Generative Adversarial Networks é uma tecnologia de Inteligência Artificial baseada em redes neurais competitivas, em que uma tenta gerar novos dados falsos e enganar a segunda, que tenta distinguir os falsos dos verdadeiros. É possível gerar tudo, de música até imagens, e é assustadora a melhoria deste tipo de modelo. 
Este artigo é muito bom e oportuno, pois ensina a identificar rostos falsos, gerados por GANs. Em breve, publicarei um pequeno tutorial sobre o assunto.

Variational AutoEncoders são um tipo de modelo de redes neurais que podem recriar objetos originais, removendo ruídos e até produzindo novos textos, por exemplo. Em breve, será quase impossível distinguir um texto falso. Veja este projeto! 

Restricted Boltzmann Machine é um tipo de rede neural generativa, que pode aprender uma distribuição de probabilidades a partir da entrada, sendo capaz de reconstruir ou gerar novos dados sem supervisão. Veja este projeto de geração de música: 

Deep reinforcement learning é uma técnica de IA para treinar agentes autônomos a interagirem com o ambiente e conquistarem objetivos. Esse tipo de tecnologia é algo a se considerar e temer. Veja este projeto:

quinta-feira, 6 de junho de 2019

Serverless é a solução

#serverless
Arquitetura Serverless é a verdadeira "disrupção" (eu sei que tem gente que gosta desse termo)! Eu já pregava isso há alguns anos: REST + Microservices + Serverless! Este ótimo artigo ajuda a entender como é essa implementação https://dev.to/trek10inc/ci-cd-aws-and-serverless-5-tips-i-learned-the-hard-way-223p

Datascience e Romantismo

#ia #NLP #R #datascience
Processar textos e informações não estruturadas é cada vez mais importante. Uma das coisas mais fundamentais é resumir e abstrair textos, classificando-os. Com R podemos fazer isto rapidamente, extraindo e pesando os termos mais importantes, como neste exemplo, no qual analiso "A Canção do Exílio", de Gonçalves Dias, escrita em 1843. Podemos notar a relevância dos termos e entender que se trata de um texto dos primeiros momentos do Romantismo Brasileiro. https://github.com/cleuton/datascience/blob/master/book-R/tidy.ipynb

terça-feira, 4 de junho de 2019

Data science com python, R, Julia etc


#datascience #python #R #julia #tensorflow #curso
Quer aprender ciência de dados e #machinelearning? Sem embromação? Grátis? Veja o meu projeto dataLearningHub e tenha tudo isso ao seu alcance! http://datalearninghub.com

quinta-feira, 30 de maio de 2019

Java? Deep Learning? GPU?


#ia #deeplearning #java #gpu #neuraljava
No meu novo livro "Neuraljava", você aprenderá os fundamentos de redes neurais e verá como utilizar Deep Learning nas suas aplicações comuns, utilizando Java! Verá como usar a #GPU (nVidia ou AMD) para processamento paralelo em larga escala, e como utilizar os frameworks mais sinistros do Mercado! Um tira-gosto já está no ar gratuitamente: https://github.com/cleuton/neuraljavaleia, experimente, divulgue! 

terça-feira, 28 de maio de 2019

Acha que postits garantem a manutenibilidade do seu software?


#engenhariaDeSoftware #manutenibilidade #oBomProgramador #8anos
No cenário atual, onde a subjetividade impera, como garantirá a manutenibilidade do seu software? Acha que postits lhe ajudarão? Veja como diminuir e controlar a dependência entre pacotes, com técnicas e métricas. Mais um artigo bombástico do meu blog de Programação O Bom Programador. http://www.obomprogramador.com/2014/02/dependencia-entre-pacotes.html

segunda-feira, 27 de maio de 2019

Classificação de Iris em Java puro


#redesneurais #java #deeplearning  #neuraljava
Adicione inteligência aos seus aplicativos, sem precisar aprender outra linguagem de programação. Classificação do Iris dataset! Veja como funciona uma Rede Neural sem complicações e sem ter que aprender framework algum e o principal: de graça! https://github.com/cleuton/neuraljava/tree/master/iris

segunda-feira, 20 de maio de 2019

Classificando com Naive Bayes


#datascience #deeplearning #redesneurais #java
Quer aprender como funcionam as redes neurais? Sem papofurado de matemática? Ok, aqui vai: https://github.com/cleuton/neuraljava

quinta-feira, 16 de maio de 2019

Deep learning? Pense Java!


#deepLearning #java #deeplearning4j
Cansado dos problemas de desempenho do python? Não suporta os problemas de pacotes do R? Quer fazer seus trabalhos de Deep Learning de uma maneira profissional? Pense Java, Cara!


Só quem já sofreu com Anaconda, lentidão e problemas com aquela porcaria de "install.packages" entenderá a diferença entre uma plataforma profissional e outra, amadora.

segunda-feira, 13 de maio de 2019

Para aprender Redes neurais tem que sujar a mão de graxa


#deepLearning #redesNeurais #java #inteligênciaArtificial
Não adianta insistir! Você não vai aprender sobre Redes Neurais estudando no #tensorFlow. Tem que "sujar a mão de graxa". Comece aqui: https://github.com/cleuton/neuraljava

sábado, 11 de maio de 2019