<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: José Junior</title>
    <description>The latest articles on DEV Community by José Junior (@josejunior).</description>
    <link>https://dev.to/josejunior</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1025949%2Fdf935b48-0d18-4c06-b5f9-afc2b72bf0fa.jpg</url>
      <title>DEV Community: José Junior</title>
      <link>https://dev.to/josejunior</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/josejunior"/>
    <language>en</language>
    <item>
      <title>API FLASK + MONGODB + DOCKER</title>
      <dc:creator>José Junior</dc:creator>
      <pubDate>Tue, 26 Sep 2023 19:38:54 +0000</pubDate>
      <link>https://dev.to/josejunior/api-flask-mongodb-docker-1oh7</link>
      <guid>https://dev.to/josejunior/api-flask-mongodb-docker-1oh7</guid>
      <description>&lt;p&gt;Nesta API, coloquei em prática o que venho estudando em Python, frameworks, Docker e banco de dados, algo que já venho aprendendo na Linuxtips e Alura.&lt;/p&gt;

&lt;p&gt;Aproveitei a oportunidade de participar do 'Alura Challenges - Back-End' para colocar a mão na massa. O formato do desafio é de 4 semanas, onde a cada semana seriam implementadas funcionalidades para a API de acordo com as regras de negócio. Utilizei o GitHub Projects para organizar o projeto e gerenciar as issues. As funcionalidades da API incluem armazenar em um banco de dados as informações sobre vídeos (título, descrição, URL, categoria) baseados em categorias e fazer a gestão desse conteúdo por meio de requisições nos endpoints para criar, visualizar, atualizar e deletar as informações.&lt;/p&gt;

&lt;p&gt;Optei por utilizar o Poetry para gerenciar as dependências do projeto e o Dynaconf para gerir as configurações do Flask. Utilizei o padrão de arquitetura 'Application Factories' para o projeto devido à simplicidade de gerir as configurações. Para formatação e lint do projeto de acordo com as boas práticas, fiz uso das bibliotecas 'flake8' e 'black'.&lt;/p&gt;

&lt;p&gt;Para o banco de dados, escolhi trabalhar com um banco não relacional, o MongoDB, por já ter feito outros projetos com SQLite. Em desenvolvimento, utilizei o MongoDB rodando em um container Docker.&lt;/p&gt;

&lt;p&gt;Adicionei um painel de Admin para gerir o banco de dados por meio de uma interface. No entanto, o foco é consumir a API por meio de requisições. Algo que gosto de implementar nos projetos, aprendido com o Bruno Rocha, é criar ferramentas para gerir o projeto por linha de comando. Assim, criei um CLI utilizando 'click'. Adicionei uma camada de segurança com o 'flask-simplelogin' para solicitar usuário e senha nas rotas e utilizei o 'flask-jwt-extended' para criar e verificar as requisições com tokens.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1hZHNsGo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hp668qf4xp5apmxjlh70.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1hZHNsGo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hp668qf4xp5apmxjlh70.gif" alt="utilização cli" width="724" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZGFvL7A9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o68su2n6x00cs75m4t24.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZGFvL7A9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o68su2n6x00cs75m4t24.gif" alt="utilização admin" width="682" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para os testes unitários e de integração, utilizei o 'pytest' e 'pytest-cov' para acompanhar a cobertura dos testes. Utilizei o codecov.io para exibir um badge no 'readme' com um painel contendo as informações dos resultados.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NreWJmSp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ka7a84ffu4x02azup88r.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NreWJmSp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ka7a84ffu4x02azup88r.gif" alt="utilização codecov.io" width="712" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na Integração Contínua, utilizei o GitHub Actions para criar um pipeline que verifica a formatação de acordo com as boas práticas do Python, executa um container Docker (para servir como um banco de dados MongoDB de teste), roda os testes unitários e de integração e publica os resultados no codecov.io.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LqpArclt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6sk4xq42tplwn7cmrilc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LqpArclt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6sk4xq42tplwn7cmrilc.gif" alt="utilização api" width="676" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Realizei o deploy no render.com, que é uma alternativa ao Heroku (que atualmente não oferece uma opção gratuita). Também utilizei o 'Docker Compose' para rodar um container e consumir localmente a API e o banco de dados. Existem vários pontos de refatoração é claro, como exercício, fiquei feliz com o resultado e com todas as dificuldades encontradas, das quais pude aprender muito.&lt;/p&gt;

&lt;p&gt;Repositório GitHub: &lt;a href="https://github.com/joseevilasio/my-videos-lib"&gt;https://github.com/joseevilasio/my-videos-lib&lt;/a&gt;&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>beginners</category>
      <category>python</category>
      <category>mongodb</category>
    </item>
    <item>
      <title>QuizVerse - Projeto em C ++</title>
      <dc:creator>José Junior</dc:creator>
      <pubDate>Mon, 11 Sep 2023 18:58:43 +0000</pubDate>
      <link>https://dev.to/josejunior/quizverse-projeto-em-c--3le2</link>
      <guid>https://dev.to/josejunior/quizverse-projeto-em-c--3le2</guid>
      <description>&lt;p&gt;QuizVerse é um desafio em C++ realizado durante a formação de desenvolvedor Web no IEFP (Portugal). O desafio consistia em criar uma aplicação que simula um quiz de perguntas e respostas de múltipla escolha. O projeto foi desenvolvido em grupo e, como tivemos algumas disciplinas relacionadas à engenharia de software, começamos com a coleta de requisitos, elaboramos um fluxograma e aplicamos a metodologia ágil.&lt;/p&gt;

&lt;p&gt;Para o desenvolvimento, decidimos utilizar o GitHub para controle de versionamento. Utilizamos o GitHub Projects para criar as issues necessárias para o projeto e, com essa ferramenta, conseguimos medir o progresso e dividir as tarefas.&lt;/p&gt;

&lt;p&gt;O projeto foi completamente desenvolvido em C++, sem o uso de bibliotecas externas ou banco de dados. Alguns requisitos foram propostos no desafio, como a aleatorização das perguntas, a aleatorização da ordem das respostas, a implementação de um banco de dados para armazenar pontuações e classificações, bem como o cadastro e login dos jogadores.&lt;/p&gt;

&lt;p&gt;Um detalhe importante a ser mencionado é que, dado que a formação estava focada no desenvolvimento web, era justo que o desafio se encaixasse nesse contexto. No entanto, uma vez que estávamos no início da formação e C++ era a linguagem escolhida para introduzir os conceitos de programação, o desafio não poderia incluir conceitos que ainda não tivessem sido ensinados.&lt;/p&gt;

&lt;p&gt;Quanto ao banco de dados, optamos por utilizar um arquivo .txt para armazenar as informações dos jogadores e consultar as perguntas e respostas da aplicação. Em relação à estrutura de dados, utilizamos a struct tanto para armazenar as informações do jogador no banco de dados quanto para ler as informações das perguntas e respostas e mantê-las em memória para uso.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;struct Usuario {
    // struct para armazenar os dados do usuário
    string nomeCompleto, email, password, pergunta, resposta;
    int pontos;
    };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como o projeto foi desenvolvido em grupo, tivemos que prestar atenção aos detalhes para garantir que ele funcionasse tanto em sistemas Windows quanto em Linux. Isso nos levou a incluir algumas validações e, para isso, recorremos à versão 17 do C++.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#ifdef _WIN32
    // Inclua as bibliotecas específicas do Windows aqui
    #include &amp;lt;conio.h&amp;gt;   
#elif __linux__
    // Inclua as bibliotecas específicas do Linux aqui
    #include &amp;lt;termios.h&amp;gt;    
#endif
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A lógica da aplicação consiste em coletar os dados do jogador para iniciar o jogo, selecionar os temas e o nível de dificuldade e, em seguida, executar um loop while para percorrer a estrutura de dados. Em cada iteração do loop, verificamos se a resposta está correta e somamos os pontos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t77SWPE0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2wqbusfdxhr4gw7byz2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t77SWPE0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o2wqbusfdxhr4gw7byz2.gif" alt="Usabilidade" width="720" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;repositório no github: &lt;a href="https://github.com/joseevilasio/projetoquizverse"&gt;https://github.com/joseevilasio/projetoquizverse&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>beginners</category>
      <category>braziliandevs</category>
      <category>programming</category>
    </item>
    <item>
      <title>Consistência!</title>
      <dc:creator>José Junior</dc:creator>
      <pubDate>Mon, 11 Sep 2023 18:04:10 +0000</pubDate>
      <link>https://dev.to/josejunior/consistencia-bh6</link>
      <guid>https://dev.to/josejunior/consistencia-bh6</guid>
      <description>&lt;p&gt;O maior desafio é ter consistência! Se manter firme, ter estabilidade e manter isso. No caso de tudo que você faz, ter uma rotina e evitar os altos e baixos, seja na vida pessoal, profissional e nos estudos. Eu mesmo por vezes acabo quebrando minha rotina ou não conseguindo me dedicar tanto aos estudos por conta de outros fatores, por isso digo que é um desafio ter consistência.&lt;/p&gt;

&lt;p&gt;Porém é preciso começar algo, é preciso tentar, é preciso falhar para conseguir saber o que deve ser feito e como deve ser feito. Dando um contexto para ficar mais claro e sair da abstração, em tecnologia há tantos caminhos que se pode seguir e depois de escolher um desses caminhos sempre há mais caminhos. No meu caso escolhi começar por Python e sempre me pergunto “o que vou estudar agora?”, mas além das escolhas e começar a estudar o essencial é praticar, e às vezes parece bobo, “vai lá e faz “, mais espera, fazer o que ? Uma calculadora, um algoritmo que vai ser usado no lançamento de um foguete?&lt;/p&gt;

&lt;p&gt;Calma! Bom, ainda estou no comecinho dos meus estudos, sempre digo que não sei 1% do que queria, mas posso repassar aqui algumas dicas e minha experiência.&lt;/p&gt;

&lt;p&gt;No começo é importante praticar o simples, por em prática aqueles conceitos de laços de repetição, condicionais, praticar os diferentes tipos de estrutura de dados e etc. Gosto muito das plataformas de exercícios por conta disso, você vai repetindo esses conceitos de formas diferentes e vai aumentando a complexidade daquilo e memorizando (troca) a lógica. Gosto de utilizar o HackerRank e o Beecrown, porém há outras plataformas. Também pode-se pedir ao ChatGPT para gerar alguns exercícios ou ideias de projeto se quiser aumentar a complexidade e o bom é que pode praticar a linguagem que você está estudando atualmente e tudo que vem junto a ela, SQL, Shell, Algoritmos. Então é por em prática e tentar ao menos resolver um exercício por dia. Também pode praticar todos os conceitos fazendo um projetinho e por no GitHub se não tem ideias por onde começar pode verificar nas plataformas de cursos sempre tem desafios por lá, particularmente gosto dos Challenge da Alura, atualmente estou fazendo o de fazer uma API REST.&lt;/p&gt;

&lt;p&gt;repositório no github: &lt;a href="https://lnkd.in/dJt26zak"&gt;https://lnkd.in/dJt26zak&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;outras plataformas para praticar:&lt;br&gt;
Exercism: &lt;a href="https://exercism.org"&gt;https://exercism.org&lt;/a&gt;&lt;br&gt;
CodeSignal: &lt;a href="https://codesignal.com"&gt;https://codesignal.com&lt;/a&gt;&lt;br&gt;
LeetCode: &lt;a href="https://leetcode.com"&gt;https://leetcode.com&lt;/a&gt;&lt;br&gt;
Codecademy: &lt;a href="https://www.codecademy.com"&gt;https://www.codecademy.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;imagem do post gerada atráves do ideogram.ai&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>python</category>
      <category>alura</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Transição de Carreira</title>
      <dc:creator>José Junior</dc:creator>
      <pubDate>Fri, 17 Mar 2023 12:50:35 +0000</pubDate>
      <link>https://dev.to/josejunior/transicao-de-carreira-b92</link>
      <guid>https://dev.to/josejunior/transicao-de-carreira-b92</guid>
      <description>&lt;p&gt;Iniciei minha carreira em 2008, quando tinha 14 anos de idade, em um programa de estágio chamado ‘Jovem Aprendiz’ na empresa 'Ultragaz', onde tive a oportunidade de conhecer e ter a vivência no mercado de trabalho. Em 2011 iniciei a graduação de Administração de Empresas, em uma Universidade Federal, do qual realizei dois estágios, um no programa social do Governo Federal do Brasil chamado “Minha Casa Minha Vida”, no qual tive a oportunidade de trabalhar com o atendimento ao cliente. O outro estágio foi executado em um Shopping Center (Parnaíba Shopping) na área de auditor de lojas, do qual trabalhei minhas habilidades analíticas ao relatar as vendas, valores, quantidades e ambiente das lojas. Em 2015, após os referidos estágios, iniciei uma carreira de gestão na empresa Companhia Eletromecânica e Gerenciamento de Dados S/A, que durou 7 anos. Nesta empresa iniciei minhas funções no cargo de Supervisor, do qual trabalhava com uma equipa de 30 colaboradores de campo, adquirindo experiência de liderança, trabalho em equipa, planejamento de atividades e nessa atividade o foco principal era a coleta de dados mensais de mais de 100.000 clientes. Após 15 meses recebi uma promoção para o cargo de Coordenador das atividades operacionais, nesta função a meta era a coleta de dados de mais de 1.000.000 de clientes mensais, com uma equipa de 350 colaboradores e atribuições de contato direto com clientes e demais setores administrativos da empresa. Em 2021 fui promovido a Gerente Regional, com uma função macro sobre o processo operacional da empresa e organização dos demais processos e setores, contato direto com a diretoria da empresa, tomada de decisões na contratação de fornecedores, negociações com sindicato e com a concessionária de energia.&lt;/p&gt;

&lt;p&gt;Há cerca de 2 anos estudo programação, lógica, algoritmos, banco de dados, sql,  linux, git atualmente estou focando os estudos na linguagem Python e nos frameworks webs Django, Flask e FAST API  e estou em transição de carreira para área de tecnologia. Ao longo desses anos apliquei os meus conhecimentos em tecnologia na rotina de trabalho e para facilitar o dia a dia fiz uma automação que executava processos repetitivos dentro de um sistema ERP, além de script para inserir base de dados em csv para um banco de dados na AWS para conectar ao Power BI. &lt;/p&gt;

&lt;p&gt;Atualmente utilizo a plataforma da Alura para estudar, também faço uma formação na LinuxTips que são 3 cursos, Python Base (Concluído), Web (Em andamento) e Expert, além de vídeos no youtube, documentação e sites de exercícios. Fiz um repositório no &lt;a href="https://github.com/joseevilasio/roadmap"&gt;github&lt;/a&gt; de roadmap para ser um guia dos meus estudos e isso me ajuda há não perder o foco.&lt;/p&gt;

&lt;p&gt;A transição de carreia para qualquer área não é fácil, ser inserido em um mercado de trabalho não é fácil, por isso persistir e manter o foco é fundamental. Ainda não tenho a tão sonhada vaga, mas estou seguindo e aprendendo cada dia mais e mais.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>python</category>
      <category>pt</category>
    </item>
  </channel>
</rss>
