anúncios

quarta-feira, 25 de junho de 2025

Entendendo o Git Flow

No desenvolvimento de software moderno, manter um controle eficiente do código-fonte é essencial para garantir a estabilidade, a organização e a escalabilidade do projeto. Uma das estratégias mais consolidadas para isso é o uso do Git Flow, um modelo de ramificação (branching) que oferece um fluxo de trabalho bem definido para times de desenvolvimento.

No presente artigo, vamos apresentar como o Git Flow organiza o ciclo de vida das branches, além de destacar como essa prática melhora a qualidade e a previsibilidade das entregas em projetos de software.

O que é o Git Flow?

O Git Flow é uma convenção de uso do Git proposta por Vincent Driessen que define uma estrutura clara de branches para apoiar os ciclos de desenvolvimento, testes, homologação e produção. Ele é especialmente útil em times que trabalham com entregas contínuas ou release planejados.

Estrutura de Branches no Git Flow

Veja abaixo como estruturar seu repositório Git usando Git Flow:

  • master/main
  • Contém o código em produção. Deve estar sempre estável, pois representa a versão em uso pelos usuários finais.

  • develop
  • Branch onde ocorre o desenvolvimento contínuo. Serve como base para novas features, e é aqui que as funcionalidades são integradas antes de ir para produção.

    feature/idTask-nome

    Cada nova funcionalidade é desenvolvida em uma branch própria a partir de develop, identificada por um ID de tarefa (como no Jira ou Trello).

    Ex: feature/1234-login-social.

  • hotfix/nome
  • Correções urgentes feitas a partir da main, utilizadas para corrigir bugs críticos em produção. Após o merge, as alterações devem ser integradas também na develop.

  • release/x.y.z
  • Quando as funcionalidades em develop estão prontas, uma branch release é criada para testes finais, ajustes e preparação da versão de produção.

Fluxo Ilustrado

Abaixo está um diagrama simplificado ilustrando esse fluxo de trabalho com base nas boas práticas descritas:

Por que usar Git Flow?

  • Organização:
  • Separação clara entre produção, desenvolvimento e funcionalidades.

  • Segurança:
  • O código em produção (main) permanece sempre confiável.

  • Escalabilidade:
  • Permite que vários desenvolvedores trabalhem paralelamente sem conflitos.

  • Automação e CI/CD:
  • Facilita pipelines de integração e entrega contínua, com regras claras por branch.

  • Facilidade de rollback e hotfixes:
  • Bugs em produção podem ser resolvidos rapidamente e reintegrados ao desenvolvimento.

    Considerações finais

    O uso do Git Flow é uma excelente prática para equipes de desenvolvimento que precisam lidar com múltiplas features, correções e versões simultaneamente. Ele fornece um modelo claro e eficaz para gerenciar o ciclo de vida do código, promovendo estabilidade em produção e agilidade no desenvolvimento.

    Se sua equipe ainda não segue um modelo de branching, o Git Flow é um ótimo ponto de partida para estruturar o controle de versões de forma madura e escalável.

    Referências

    Git Flow – by Vincent Driessen

    Feito!

terça-feira, 24 de junho de 2025

5 Habilidades que valem mais que diploma de curso superior em TI

No mercado de tecnologia atual, ter um diploma de TI já não é garantia de sucesso ou de salários altos. A saturação de profissionais que sabem programar faz com que as empresas busquem algo além do conhecimento técnico tradicional. Elas querem profissionais que dominem habilidades que a faculdade não ensina direito, mas que fazem toda a diferença no dia a dia e na carreira.

Aqui estão as 5 habilidades essenciais que podem transformar sua carreira em TI e te destacar no mercado:

  1. Comunicação Estratégica
  2. Não é só ser comunicativo ou engraçado em reuniões. É a capacidade de traduzir termos técnicos para a linguagem do negócio, explicando para gestores e colegas o valor das suas soluções. Isso gera valor real para a empresa e te torna indispensável.

  3. Mentalidade de Dono
  4. Empresas querem profissionais que vão além do básico, que tomam iniciativa e cuidam dos projetos como se fossem seus. Resolver problemas, sugerir melhorias e entregar resultados sem precisar de supervisão constante é o que diferencia um colaborador comum de um verdadeiro líder.

  5. Marketing Pessoal
  6. Mostrar seu trabalho e construir uma marca pessoal é fundamental. Um diploma fica guardado numa gaveta, mas um perfil otimizado no LinkedIn, portfólio no GitHub e artigos em blogs trabalham por você o tempo todo, atraindo oportunidades.

  7. Visão de Produto
  8. Entender o “porquê” do código que você escreve: quem é o usuário final, qual problema estamos resolvendo e como isso ajuda a empresa a crescer. Profissionais com visão estratégica são vistos como parceiros do negócio e recebem os melhores salários.

  9. Resiliência e Inteligência Emocional
  10. O mundo da tecnologia é cheio de pressão, prazos apertados e críticas constantes. Saber lidar com feedbacks, trabalhar em equipe, controlar o estresse e aprender com os erros é o que mantém você firme e valorizado.

    Considerações finais

    O diploma abre a porta, mas são essas habilidades que fazem você reinar no mercado de TI. Invista nelas para construir uma carreira sólida, lucrativa e à prova do tempo.

    E você, qual habilidade acha que falta no ensino formal e é essencial para um profissional de tecnologia? Deixe seu comentário!

    Feito!

quinta-feira, 19 de junho de 2025

Encriptação de Dados Sensíveis no MySQL

Quando lidamos com dados sensíveis, como CPF, telefone ou informações bancárias de usuários, a segurança da informação torna-se um dos pilares mais importantes de um sistema. Uma prática fundamental é armazenar esses dados de forma encriptada no banco de dados.

Exemplo prático: Encriptação de CPF no MySQL

Considere a seguinte estrutura de tabela:


CREATE TABLE clientes (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(100),
    cpf VARBINARY(255)
);

Como funciona a encriptação com AES_ENCRYPT

O MySQL oferece a função AES_ENCRYPT(valor, chave) para encriptar dados. Aqui:

  • valor:
  • é o dado sensível que queremos proteger (por exemplo, o CPF).

  • chave:
  • é uma senha secreta utilizada no processo de encriptação e decriptação. Importante: A chave nunca deve ser armazenada dentro da própria base de dados. O ideal é mantê-la em um arquivo de configuração da aplicação ou em um gerenciador de segredos (Vault, AWS Secrets Manager, etc).

  • Recomendações sobre a chave:
  • A chave de encriptação deve ter pelo menos 16 bytes para evitar warnings e garantir maior segurança.

Exemplo de inserção de dados encriptados:


INSERT INTO clientes (nome, cpf) 
      VALUES ('Bjorn', 
             AES_ENCRYPT('123.456.789-00', 
             'chave_secreta_16b'));

Como realizar a decriptação dos dados:

Para visualizar os dados de forma legível, usamos a função AES_DECRYPT(coluna, chave):


SELECT nome, 
       CONVERT(AES_DECRYPT(cpf, 'chave_secreta_16b') 
       USING utf8) AS cpf 
FROM clientes;

Dica:

É recomendado sempre usar o CONVERT(... USING utf8) para transformar o resultado binário em texto legível.

Considerações importantes

Consistência nos dados:

Tentar decriptar dados que não foram previamente encriptados com AES causará erros ou retornará valores nulos. Garanta que todos os dados sensíveis sejam sempre armazenados de forma encriptada.

Conformidade com a LGPD:

A prática de encriptar dados sensíveis está totalmente alinhada com a LGPD (Lei Geral de Proteção de Dados).

Em caso de um eventual vazamento de dados, as informações estarão ilegíveis para qualquer atacante que não possua a chave de encriptação.

Boas práticas de segurança:

Infelizmente, ainda vemos notícias frequentes de vazamentos de bases de dados de órgãos públicos e grandes empresas. Muitas vezes, os dados estavam armazenados de forma simples e sem criptografia.

Uma política mínima de encriptação já evitaria que tais informações pudessem ser lidas por terceiros não autorizados.

Compatibilidade com MariaDB

As funções AES_ENCRYPT() e AES_DECRYPT() também são suportadas pelo MariaDB, garantindo boa compatibilidade com as versões do MySQL até a 5.7.

Porém, vale uma atenção especial para quem trabalha com MySQL 8.x ou superior, pois algumas mudanças foram introduzidas no modo de criptografia padrão (exemplo: modo de padding e modo de operação AES).

Recomendações ao usar entre MySQL e MariaDB:

Teste a criptografia e decriptação em ambos os ambientes.

Utilize sempre chaves com no mínimo 16 bytes.

Valide se o modo de operação AES é o mesmo entre as versões.

Evite migrações diretas de bases encriptadas entre MySQL 8.x e MariaDB sem testes prévios.

Considerações finais

A segurança de dados não deve ser tratada como um recurso opcional. Encriptar informações sensíveis no banco de dados é uma obrigação para qualquer sistema que armazene dados pessoais.

Com poucas alterações na modelagem e nas queries SQL, já é possível implementar uma camada extra de proteção.

Se você ainda não aplica encriptação de dados sensíveis no seu banco de dados no SGBD MySQL ou MariaDB, o momento de começar é agora.

Feito!

quarta-feira, 18 de junho de 2025

10 erros comuns de desenvolvedores

Iniciar a carreira como desenvolvedor pode ser um desafio cheio de aprendizados e armadilhas. Muitos programadores, especialmente os juniores, cometem erros que podem atrasar seu progresso e dificultar o desenvolvimento de habilidades sólidas. No presente artigo, vamos explorar os 10 erros mais comuns que você deve evitar para acelerar sua evolução na programação.

  1. Querer aprender muitas tecnologias ao mesmo tempo
  2. Um dos maiores erros é tentar aprender várias tecnologias simultaneamente, seja por hype, influência de vídeos ou pressão do mercado. Isso dispersa o foco e dificulta a aprendizagem consistente. O ideal é concentrar-se em uma ou duas tecnologias no máximo para assimilar bem os conceitos e práticas.

  3. Ignorar os conceitos fundamentais
  4. Muitos iniciantes pulam os fundamentos da linguagem, como variáveis, funções e classes, buscando resultados rápidos e visíveis. Porém, entender a base é essencial para construir códigos sólidos e resolver problemas complexos no futuro.

  5. Ficar preso em problemas sem pedir ajuda
  6. Sentir-se obrigado a resolver tudo sozinho é um erro. A comunidade de programadores é vasta e cheia de recursos, fóruns e pessoas dispostas a ajudar. Pedir ajuda não é sinal de fraqueza, mas sim de inteligência e colaboração.

  7. Copiar e colar código sem entender
  8. Com a facilidade da Inteligência Artificial (IA) e a abundância de códigos na internet, muitos copiam e colam soluções sem compreender o que estão fazendo. Isso pode gerar problemas futuros, principalmente na hora de corrigir erros ou adaptar o código.

  9. Não usar controle de versionamento
  10. Git é uma ferramenta de versionamento essencial no mercado de trabalho e para projetos pessoais. Não dominar o básico do Git é um erro grave que pode comprometer sua organização e colaboração em equipes.

  11. Consultar muitos tutoriais sem praticar (Tutorial Hell)
  12. Assistir a dezenas de vídeos ou tutoriais sobre o mesmo tema sem colocar a mão na massa é improdutivo. O aprendizado real vem da prática: testar, escrever e refatorar código constantemente.

  13. Ignorar as melhores práticas
  14. Programar "do seu jeito" sem considerar padrões e boas práticas resulta em código bagunçado, difícil de manter e inseguro. Aprender com o trabalho de outros desenvolvedores experientes é fundamental para escrever código limpo e eficiente.

  15. Comparar seu processo de aprendizagem com o dos outros
  16. Cada pessoa tem seu ritmo e estilo de aprendizado. Comparar-se com colegas pode gerar ansiedade e desmotivação. Foque no seu progresso e celebre suas conquistas pessoais.

  17. Desvalorizar a documentação
  18. Criar e manter documentação clara, comentários no código e explicações sobre o funcionamento das aplicações é parte do trabalho do programador. Ignorar isso pode dificultar a manutenção e o trabalho em equipe.

  19. Desistir diante das dificuldades
  20. Programar é resolver problemas diariamente. Se você está travado há dias, a solução não é desistir, mas buscar ajuda, revisar o código e persistir. A resiliência é uma qualidade essencial para qualquer desenvolvedor.

Considerações finais

Errar faz parte do processo de aprendizado, mas reconhecer esses erros e corrigi-los rapidamente é o que diferencia um bom desenvolvedor de alguém que ficará estagnado. Além dos pontos citados, vale reforçar uma observação muito importante: escolher o sistema operacional errado para desenvolver pode limitar seu crescimento técnico.

Muitos iniciantes utilizam o Windows como sistema operacional principal, ignorando que a grande maioria dos ambientes de produção em servidores utiliza Linux. Trabalhar diretamente em um ambiente semelhante ao de produção desde o início vai facilitar a familiarização com o terminal, permissões de arquivo, estrutura de diretórios, deploys e ferramentas amplamente utilizadas no mundo real (como Docker, Git, Nginx, entre outros). Isso não significa que o Windows não seja uma boa estação de trabalho para outras finalidades, mas se o seu objetivo é se tornar um desenvolvedor back-end, DevOps, ou trabalhar com cloud e infraestrutura, não utilizar Linux é um erro estratégico que pode te atrasar muito no mercado de trabalho.

O importante é lembrar que a carreira de desenvolvimento é uma maratona, não uma corrida de 100 metros. Foque no aprendizado constante, evite os erros mais comuns e, principalmente, busque se aproximar ao máximo do ambiente real onde suas aplicações irão executar.

Se você evitar esses deslizes, com certeza terá uma base sólida para crescer na carreira de forma consistente e profissional.

Participe dos nossos grupos no Telegram:

Programadores Brasil Dicas, vagas, tecnologia e networking.

Linux Para Todos Aprendizado e suporte para quem quer migrar ou dominar o Linux no dia a dia do desenvolvimento.

Feito!