Category Archives: Tecnologia

Architecture – Abbreviations

SOLID

SRP – Single Responsibility Principle

A class should have only one reason to change, so in order to reduce reasons for modifications – one class should have one responsibility. It is a bad practise to create classes doing everything.

Why is it so important that class has only one reason to change? If class have more than one responsibility they become coupled and this might lead to surprising consequences like one change breaks another functionality.

You can avoid these problems by asking a simple question before you make any changes: What is the responsibility of your class / component / micro-service? If your answer includes the word “and”, you’re most likely breaking the single responsibility principle.

OCP – Open-Closed Principle

Classes, modules, functions, etc. should be open to extension but closed to modification.

Code should be extensible and adaptable to new requirements. In other words, we should be able to add new system functionality without having to modify the existing code. We should add functionality only by writing new code.

If we want to add a new thing to the application and we have to modify the “old”, existing code to achieve this, it is quite likely that it was not written in the best way. Ideally, new behaviors are simply added.

LSP – Liskov Substitution Principle

This rule deals with the correct use of inheritance and states that wherever we pass an object of a base class, we should be able to pass an object of a class inheriting from that class.

Example of violation:

class A:
    def foo() -> str:
        return "foo"


class B(A):
    def foo(bar: str) -> str:
        return f"foo {bar}"

B is not taking the same arguments, meaning A and B are not compatible. A can not be used instead of B, and B can not be used instead of A.

ISP – Interface Segregation Principle

Clients should not be forced to depend upon interfaces that they do not use. ISP splits interfaces that are very large into smaller and more specific ones so that clients will only have to know about the methods that are of interest to them.

Example of violation:

class Shape:
    def area() -> float:
        raise NotImplementedError

    def volume() -> float():
        raise NotImplementedError

2D triangle does not have volume, hence it would need to implement interface that is not needed. In order to solve this, there should be multiple interfaces: Shape and 3DShape.

DIP – Dependency Inversion Principle

High-level modules, which provide complex logic, should be easily reusable and unaffected by changes in low-level modules, which provide utility features. To achieve that, you need to introduce an abstraction that decouples the high-level and low-level modules from each other.

Entities must depend on abstractions, not on concretions. It states that the high-level module must not depend on the low-level module, but they should depend on abstractions.

For example password reminder should not have knowledge about database provider (low level information).

DRY – Don’t Repeat Yourself

“Every piece of knowledge must have a single, unambiguous, authoritative representation within a system”. When the DRY principle is applied successfully, a modification of any single element of a system does not require a change in other logically unrelated elements.

KISS – Keep It Simple, Stupid

The KISS principle states that most systems work best if they are kept simple rather than made complicated; therefore, simplicity should be a key goal in design, and unnecessary complexity should be avoided.

ACID

Atomicity

Each transaction is either properly carried out or the process halts and the database reverts back to the state before the transaction started. This ensures that all data in the database is valid.

Consistency

A processed transaction will never endanger the structural integrity of the database. Database is always in consistent state.

Isolation

Transactions cannot compromise the integrity of other transactions by interacting with them while they are still in progress.

Durability

The data related to the completed transaction will persist even in the cases of network or power outages. If a transaction fails, it will not impact the manipulated data.

BASE

Basically Available

Ensure availability of data by spreading and replicating it across the nodes of the database cluster – this is not done immediately.

Soft State

Due to the lack of immediate consistency, data values may change over time. The state of the system could change over time, so even during times without input there may be changes going on due to ‘eventual consistency’, thus the state of the system is always ‘soft’.

Eventually Consistent

The system will eventually become consistent once it stops receiving input. The data will propagate to everywhere it should sooner or later, but the system will continue to receive input and is not checking the consistency of every transaction before it moves onto the next one.

CAP

In theoretical computer science, the CAP theorem states that it is impossible for a distributed data store to simultaneously provide more than two out of the following three guarantees:

Consistency

Every read receives the most recent write or an error. Refers to whether a system operates fully or not. Does the system reliably follow the established rules within its programming according to those defined rules? Do all nodes within a cluster see all the data they are supposed to? This is the same idea presented in ACID.

Availability

Every request receives a (non-error) response, without the guarantee that it contains the most recent write. Is the given service or system available when requested? Does each request get a response outside of failure or success?

Partition Tolerance

Represents the fact that a given system continues to operate even under circumstances of data loss or system failure. A single node failure should not cause the entire system to collapse.

NF

Database normalisation is the process of structuring a database, usually a relational database, in accordance with a series of so-called normal forms in order to reduce data redundancy and improve data integrity.

1NF

To satisfy 1NF, the values in each column of a table must be atomic.

2NF

Must be in 1NF + single column primary key (no composite keys).

3NF

Must be in 2NF + no transitive functional dependencies.

Transitive Functional Dependencies – when changing a non-key column, might cause any of the other non-key columns to change. For example:

3nf-violation

Fonte: https://github.com/pkardas/notes/blob/master/patterns/abbreviations.md

Algoritmos de NLP

Os **principais algoritmos de Processamento de Linguagem Natural (NLP)** incluem uma variedade de técnicas que permitem a compreensão e manipulação de texto e linguagem humana. Aqui estão alguns dos mais destacados:

### 1. **Modelos Baseados em Regras**
– **Análise Sintática**: Utiliza gramáticas para analisar a estrutura das frases.
– **Análise Semântica**: Interpreta o significado das palavras e frases.

### 2. **Modelos Estatísticos**
– **Naive Bayes**: Um classificador probabilístico que assume independência entre características.
– **Modelos de Markov Ocultos (HMM)**: Usados em reconhecimento de fala e etiquetagem de partes do discurso.

### 3. **Redes Neurais**
– **Word Embeddings**: Técnicas como Word2Vec e GloVe que transformam palavras em vetores de alta dimensão.
– **Redes Neurais Recorrentes (RNNs)**: Especialmente úteis para sequências de texto, como em tradução automática.
– **Long Short-Term Memory (LSTM)**: Um tipo de RNN que pode aprender dependências de longo prazo.

### 4. **Transformadores**
– **BERT (Bidirectional Encoder Representations from Transformers)**: Modelo que captura o contexto de uma palavra com base em todas as outras palavras na frase.
– **GPT (Generative Pre-trained Transformer)**: Modelo que gera texto de forma coerente e contextualizada.

### 5. **Técnicas de Aprendizado de Máquina**
– **Classificação de Texto**: Algoritmos como Support Vector Machines (SVM) e Árvores de Decisão.
– **Análise de Sentimento**: Usada para determinar a polaridade de um texto (positivo, negativo, neutro).

### 6. **Técnicas de Pré-processamento**
– **Tokenização**: Divisão de texto em palavras ou frases.
– **Remoção de Stop Words**: Eliminação de palavras comuns que não adicionam significado (como “e”, “a”, “de”).
– **Stemming e Lemmatization**: Redução de palavras às suas raízes.

Esses algoritmos e técnicas são fundamentais para o desenvolvimento de aplicações em NLP, como chatbots, tradutores automáticos, sistemas de recomendação e muito mais. Se precisar de mais detalhes sobre algum algoritmo específico, fique à vontade para perguntar!

Elasticsearch

Criando Índice

$ wget http://media.sundog-soft.com/es7/shakes-mapping.json

$ curl -H 'Content-Type: application/json' -XPUT 127.0.0.1:9200/shakespeare --data-binary @shakes-mapping.json


$ wget http://media.sundog-soft.com/es7/shakespeare_7.0.json

$ curl -H 'Content-Type: application/json' -XPOST '127.0.0.1:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare_7.0.json


$ curl -H 'Content-Type: application/json' -XGET
'127.0.0.1:9200/shakespeare/_search?pretty' -d '
{
   "query" : {
      "match_phrase" : {
         "text_entry" : "to be or not to be"
      }
  }
}'

 

Motivation to join us – Aria

Question

Answer the following question, with best possibles answers. Question: What’s motivation to join us?

Answer

Motivation to Join Us

Joining our team can be a transformative experience for individuals looking to grow both personally and professionally. Here are some compelling reasons to consider:

1. Professional Growth

  • Skill Development: Access to training programs and workshops that enhance your skills.
  • Career Advancement: Opportunities for promotions and career progression within the company.

2. Positive Work Environment

  • Collaborative Culture: Work with a team that values collaboration and open communication.
  • Supportive Leadership: Guidance from leaders who are committed to your success.

3. Impactful Work

  • Meaningful Projects: Engage in projects that make a difference in the community or industry.
  • Innovation: Be part of a team that values creativity and encourages new ideas.

4. Competitive Benefits

  • Comprehensive Packages: Attractive salary, health benefits, and retirement plans.
  • Work-Life Balance: Flexible working hours and remote work options to support your personal life.

5. Networking Opportunities

  • Build Connections: Collaborate with professionals from diverse backgrounds and industries.
  • Mentorship: Access to mentors who can provide guidance and support in your career journey.

6. Company Values

  • Shared Vision: Join a team that aligns with your values and mission.
  • Diversity and Inclusion: A commitment to fostering an inclusive workplace where everyone feels valued.

7. Personal Fulfillment

  • Passion Projects: Engage in work that you are passionate about, leading to greater job satisfaction.
  • Community Engagement: Participate in initiatives that give back to the community.

Joining us means becoming part of a dynamic team that’s focused on achieving excellence while fostering a culture of support and growth. We look forward to welcoming you!

IA Generativa vs IA Preditiva

A contribuição da IA ​​vem em duas formas principais: generativa e preditiva. No artigo a seguir, exploraremos as distinções entre IA generativa e preditiva, mostrando como cada tipo está moldando o futuro da resolução de problemas em vários campos.

IA generativa é um tipo de inteligência artificial que pode criar novas informações, como texto, imagens, música ou até mesmo vídeos, com base nos dados em que foi treinada. Em vez de apenas analisar ou processar informações existentes, ela gera novas ideias e resultados.

Imagine que você peça a um modelo de IA generativa como o ChatGPT para escrever uma história curta sobre um dragão e uma princesa. A IA usa o que sabe sobre narrativa, personagens e tramas para criar uma história completamente nova. Ela não apenas copia histórias existentes; ela combina ideias de maneiras criativas para gerar algo único.

Em uma aplicação prática, a IA generativa pode ser usada na arte. Por exemplo, um modelo de IA pode se inspirar em milhares de pinturas e criar uma obra de arte totalmente nova que nunca foi vista antes, misturando estilos e técnicas de maneiras inovadoras.

IA Preditiva

IA preditiva se refere à tecnologia que usa dados, algoritmos e aprendizado de máquina para prever resultados futuros com base em dados históricos. Ela analisa padrões e tendências para fazer suposições fundamentadas sobre o que pode acontecer a seguir.

Por exemplo, imagine uma loja que quer saber quantos sorvetes estocar para o verão. A loja analisa dados de vendas de verões anteriores, incluindo fatores como temperatura, eventos locais e promoções. Usando IA preditiva, a loja analisa esses dados para encontrar padrões, como como dias quentes levam a mais vendas de sorvete.

A IA prevê que em dias em que a temperatura estiver acima de 30°C, as vendas de sorvete aumentarão em 50%. Com base nessa previsão, a loja decide estocar mais sorvete em dias ensolarados, garantindo que eles tenham o suficiente para os clientes sem estocar demais.

Embora ambos os tipos de IA sejam poderosos, eles atendem a propósitos diferentes. Vamos entender as principais diferenças.

IA preditiva – vantagens

Enquanto a IA generativa atrai atenção por seus novos recursos na criação de conteúdo, a IA preditiva continua sendo uma ferramenta poderosa para melhorar a eficiência operacional e gerar economias substanciais de custos em processos de negócios estabelecidos.

Maiores retornos sobre o investimento

A IA preditiva aprimora as operações existentes, levando a melhorias significativas de eficiência. Por exemplo, a UPS, empresa de serviços globais de remessa e logística, economiza US$ 35 milhões anualmente ao otimizar rotas de entrega, enquanto os bancos podem economizar milhões ao prever com precisão transações fraudulentas. Essa tecnologia tem um histórico comprovado de entrega de altos retornos por meio de processos sistemáticos que as empresas já estabeleceram.

Operação Autônoma

A IA preditiva geralmente funciona sem intervenção humana, tomando decisões instantâneas com base na análise de dados. Por exemplo, ela pode aprovar automaticamente transações de cartão de crédito ou otimizar posicionamentos de anúncios em sites. Em contraste, a IA generativa geralmente requer supervisão humana, pois suas saídas precisam ser revisadas quanto à precisão e qualidade, tornando-a menos adequada para tarefas totalmente automatizadas.

Custo-efetividade e eficiência

Os modelos de IA preditiva são tipicamente muito mais leves e menos intensivos em recursos em comparação aos modelos complexos usados ​​em IA generativa. Enquanto os modelos generativos podem consistir em centenas de bilhões de parâmetros e exigir dados extensos para treinamento, os modelos preditivos geralmente precisam de apenas alguns milhares de parâmetros, tornando-os mais fáceis e baratos de implantar.

A IA generativa substituirá a IA preditiva?

A IA generativa e a IA preditiva atendem a propósitos e funções diferentes, fazendo com que uma não seja uma substituição direta da outra. Embora a IA generativa possa aprimorar modelos preditivos (por exemplo, gerando cenários ou simulações com base em previsões), ela não pode substituir totalmente as capacidades analíticas da IA ​​preditiva. Cada uma tem seus pontos fortes e aplicações, e elas podem se complementar em vários campos, mas não são intercambiáveis.

O que reserva o futuro?

O futuro está em investir corretamente para alavancar a parceria entre IA preditiva e generativa. A IA generativa se destaca na criação de conteúdo e soluções inovadoras, enquanto a IA preditiva se concentra na previsão de tendências e otimização de decisões. Juntas, elas aprimoram as operações comerciais, levando a valor mensurável e ROI aprimorado.

Por exemplo, na área da saúde, a IA preditiva prevê resultados de pacientes, permitindo intervenções oportunas, enquanto a IA generativa pode ajudar a criar planos de tratamento personalizados. Em finanças, a IA preditiva analisa dados de mercado para aprimorar estratégias de negociação, enquanto a IA generativa pode auxiliar na simulação de vários cenários de investimento.

Essa sinergia entre IA generativa e preditiva não apenas simplifica processos e aumenta a lucratividade, mas também promove o engajamento do cliente por meio de experiências personalizadas. As empresas que aproveitam os pontos fortes de ambas as tecnologias podem impulsionar eficiências operacionais, responder às necessidades do mercado rapidamente e manter uma vantagem competitiva.

No cenário em evolução da IA, a integração estratégica de capacidades generativas e preditivas é a chave para desbloquear todo o seu potencial, garantindo que as empresas obtenham retornos imediatos enquanto se preparam para um futuro definido pela inovação da IA.

Curso Python 3 – Udemy

Este post documenta comandos e fontes do curso da Udemy – Curso de Python 3 do básico ao avançado

Install Python

sudo apt update -y
sudo apt upgrade -y
sudo apt install git curl build-essential -y
sudo apt install gcc make default-libmysqlclient-dev libssl-dev -y
sudo apt install python3.10-full python3.10-dev -y

Ativar ambiente virtual

  1. Criar um diretório – ex: /opt/projetos-python/
  2. $ python3 -m venv .venv
  3. $ source .venv/bin/activate
  4. Para desativar $ deactivate
  5. $ wich python (demonstra qual ambiente está rodando)
  6. $ pip install pymysql (instala as libs do MySQL)
  7. $ pip install requests
  8. $ pip install –upgrade pip
  9. $ python -m pip install pip –upgrade (para atualizar o pip)
  10. Para remover o ambiente, basta apagar a pasta (neste caso .venv)

Fontes

https://gist.github.com/luizomf/8623264cbf69cd2619bcdee258628f41

https://gist.github.com/luizomf/688c8a48fe007829c120818138ac2317

Documentação do Python: Ex: https://docs.python.org/3.13/library/string.html

 

API Canônica

Uma API canônica é uma interface de programação de aplicação (API) projetada para ser a representação oficial, ou “fonte única da verdade”, de um sistema ou domínio. O conceito de canônica refere-se a algo que segue um padrão autorizado ou é a forma mais pura e completa de algo.

No contexto de APIs, isso significa que a API canônica é a interface principal, geralmente abstrata e agnóstica à tecnologia, que expõe o modelo de domínio de maneira consistente e clara para consumo por diferentes partes do sistema ou por sistemas externos.

Características principais de uma API canônica:

  1. Consistência:
    Uma API canônica garante que diferentes consumidores (módulos internos, sistemas externos, etc.) acessem as mesmas regras e dados de forma consistente, sem variações ou duplicações em diferentes partes do sistema.
  2. Independência de implementação:
    Ela é projetada para ser neutra em relação a detalhes de implementação. Ou seja, ela descreve a interação com o sistema de maneira lógica e orientada ao domínio, sem expor detalhes técnicos ou internos, como infraestruturas ou frameworks específicos.
  3. Modelagem orientada ao domínio (DDD):
    APIs canônicas geralmente são construídas com base em modelos de domínio bem definidos, conforme os princípios de Domain-Driven Design. Cada endpoint ou operação exposta pela API reflete as operações de negócio reais, em vez de operações puramente técnicas.
  4. Contrato Estável:
    A API canônica geralmente apresenta um contrato estável e bem-definido, o que significa que ela pode evoluir sem quebrar a compatibilidade com os consumidores existentes. Isso permite atualizações e mudanças no sistema subjacente sem afetar diretamente os clientes que consomem essa API.
  5. Facilidade de integração:
    APIs canônicas padronizam a interface entre sistemas, facilitando a integração de novos componentes ou serviços. A interoperabilidade é simplificada, pois a API segue uma estrutura que pode ser consumida por diferentes tipos de clientes, como front-ends, back-ends ou terceiros.
  6. Unificação dos dados e regras de negócio:
    A API canônica centraliza e unifica o acesso aos dados e às regras de negócio, o que evita redundâncias e inconsistências. Isso garante que todos os consumidores obtenham a mesma visão e apliquem as mesmas regras de maneira padronizada.

Exemplo prático:

Em um sistema de e-commerce com um domínio que inclui clientes, pedidos e produtos, uma API canônica exporia operações que permitem a criação de pedidos, consulta de produtos, gerenciamento de clientes, etc., de forma que todos os serviços relacionados interajam com esses dados e regras de uma maneira consistente.

  • Operações do domínio:
    • Criar um pedido (/orders/create)
    • Consultar um produto (/products/{id})
    • Gerenciar clientes (/customers/{id}/update)

Benefícios de usar uma API canônica:

  • Reduz complexidade e duplicidade: Uma API canônica elimina a necessidade de várias APIs especializadas ou duplicadas para diferentes sistemas, centralizando as operações.
  • Facilita manutenção e evolução: Com um contrato estável e bem definido, a API pode ser evoluída sem grandes impactos para os consumidores.
  • Melhor modelagem de negócio: Reflete com precisão os processos de negócio e o modelo de domínio, melhorando a clareza e a robustez do sistema.

Essencialmente, a API canônica é um ponto de acesso estruturado e padronizado para todo o domínio de um sistema, garantindo consistência e governança.

Placa de som Ubuntu 24.04

Este procedimento resolve o problema de placa de som não ser reconhecida, típico problema “Saída Fictícia”.

Você precisa adicionar essas duas linhas no final de /etc/modprobe.d/alsa-base.conf

opções snd-hda-intel model=auto
blacklist snd_soc_avs

É exatamente isso que ele está fazendo:

opções snd-hda-intel model=auto:

Esta linha configura o comportamento do driver snd-hda-intel, responsável por manipular áudio de alta definição (geralmente associado a placas de som Intel) no Linux.

A opção model=auto permite que o driver detecte automaticamente o codec de áudio usado pelo seu hardware e selecione as configurações de modelo apropriadas para ele. Isso é útil quando a configuração padrão não se alinha perfeitamente com os recursos do hardware, potencialmente resolvendo problemas em que certas funcionalidades de alto-falante ou microfone não são reconhecidas corretamente.

lista negra snd_soc_avs:

Esta linha impede que o módulo snd_soc_avs seja carregado pelo kernel Linux. snd_soc_avs significa Sound Open Firmware Audio DSP para plataformas Intel com sincronização de áudio e vídeo, que pode fazer parte do tratamento de som em sistemas Intel modernos.

Ao colocar este módulo na lista negra, você evita que ele interfira com o driver principal snd-hda-intel. Parece que, no seu caso, snd_soc_avs estava causando conflitos ou não era totalmente compatível com sua configuração de áudio específica, levando aos problemas que você estava enfrentando. Ao impedi-lo de carregar, você permite que o sistema dependa de outros módulos, talvez mais compatíveis, para lidar com o processamento de áudio.

Fonte: https://askubuntu.com/questions/1511648/audio-not-working-ubuntu-24-04

 

ChatGPT – Dicas

Usando campos semânticos e variáveis

Me escreva um artigo sobre primeiros passos no Docker, em tom de conversa com uma criança de 10 anos. Agora, use os itens em {RESUMO) para o
{ROTEIRO} seguindo as {REGRAS}

{RESUMO}
[Autoridade]: Felipe, um desenvolvedor Fullstack
[Avatar]: Desenvolvedores Júniors
[Problema]: Como instalar o Docker

{ROTEIRO}
Olá eu sou [Autoridade] e vou ajudar o [Avatar]
Hoje vamos resolver o [Problema]

{REGRAS}
> Siga o {ROTEIRO) acima e substitua os elementos entre [ ]
por aqueles listados em {RESUMO} acima.
> Mantenha o tom e ritmo, mas reescreva as palavras em {ROTEIRO} para que seja diferente do original, expandindo ou mudando conforme necessário.
> Use analogias simples e hipérboles

Prompts assertivos

Prompts ricos – modelo de perguntas


Me [FUNÇÃO] um [TIPO DE TEXTO] sobre [assunto] nesse [estilo]

FTAE

Função: (escreva/resuma/traduza/crie tópicos)
Tipo de texto: (roteiro/post para blog/artigo/poema/postagem para instagram)
assunto: (I.A, futebol, música, filme... etc)
estilo: (personalidade, escritor, filósofo)

Me [crie tópicos] um [um artigo] sobre [macarrão]

Me [escreva] um [TEXTO] sobre [INTELIGÊNCIA ARTIFICIAL]

Tom de voz


Escreva para quem aquela comunicação deve ser direcionada para calibrar o entendimento e naturalidade da resposta

Tom de voz: me explique como se fosse (para uma criança de 10 anos, de um jeito mais sênior

Exemplos:

Me escreva em formato de carrossel do instagram uma postagem sobre programação com os princpais me explicando o que é DOCKER em um estilo informal e descontraído como se tivesse sido postado por um influencer de tecnologia, explique como se fosse para uma criança de 10 anos

Me escreva em formato de carrossel do instagram uma postagem sobre programação com os princpais me explicando o que é DOCKER em um estilo informal e descontraído como se tivesse sido postado por um influencer de tecnologia, explique com um tom de voz mais sênior