<?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: Victor Castro</title>
    <description>The latest articles on DEV Community by Victor Castro (@kastrowalker).</description>
    <link>https://dev.to/kastrowalker</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%2F439422%2F06d8b179-0d39-476c-9101-ba1fc99e01a1.jpg</url>
      <title>DEV Community: Victor Castro</title>
      <link>https://dev.to/kastrowalker</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kastrowalker"/>
    <language>en</language>
    <item>
      <title>Aprendendo sobre testes de softwares</title>
      <dc:creator>Victor Castro</dc:creator>
      <pubDate>Fri, 29 Jul 2022 04:24:03 +0000</pubDate>
      <link>https://dev.to/acaverna/aprendendo-sobre-testes-de-softwares-2b6a</link>
      <guid>https://dev.to/acaverna/aprendendo-sobre-testes-de-softwares-2b6a</guid>
      <description>&lt;p&gt;Estudo programação desde 2017, mas só em 2020 que tive a necessidade de implementar testes nas aplicações que eu desenvolvo. Já tinha ouvido falar sobre esse assunto antes, mas nunca parei para estudar. Quando comecei a estudar com mais profundidade, tive muita dificuldade de entender alguns conceitos. Nesse artigo vou relatar minhas dificuldades, e dar algumas dicas para quem está estudando sobre testes de software.&lt;/p&gt;

&lt;h1&gt;
  
  
  O que são e quais os tipos de testes de softwares?
&lt;/h1&gt;

&lt;p&gt;O primeiro passo que eu considero importante entender ao começar a estudar sobre testes, é aprender o que são testes de softwares, para que servem e quais os tipos de testes que existem.&lt;br&gt;
De uma forma resumida os testes de softwares servem para garantir que as funcionalidades que estamos implementando estão funcionando da forma esperada.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pirâmide de testes
&lt;/h2&gt;

&lt;p&gt;Existem vários tipos de testes de software, irei falar um pouco sobre os três principais tipos baseado na pirâmide de software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwszlnayr4f2ljin27s4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwszlnayr4f2ljin27s4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Os testes E2E pretende testar todas as funcionalidades do seu software, indo do frontend até o acesso do banco de dados ou de um sistema externo. Esse tipo de teste é pouco aplicado no dia-a-dia, pois ele tem um custo muito alto e leva muito tempo para executar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Os testes de integração visam testar partes da sua aplicação, por exemplo, a geração de nota fiscal em um sistema de loja online. O teste de integração ira executar o teste na classe de geração de nota fiscal integradas com outras classes necessárias para executar essa ação. Esse tipo de teste possui um custo e tempo de execução médio, comparados aos testes de E2E você ira implementar esse tipo de teste com mais frequência, mas mesmo assim não será tão frequentemente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Os testes de unidades, procura testar a menor parte funcional de um sistema, esse tipo de teste, você implementa para testar uma classe ou então uma função, isolada de outras partes do sistema. Esse tipo de teste você ira implementar frequentemente, pois ele possui um baixo custo de implementação e possui uma velocidade muito rápida de execução.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Meus estudos sobre teste de software
&lt;/h1&gt;

&lt;p&gt;Quando comecei no meu estágio em 2020, a pessoa que tava sendo minha mentora, pediu pra eu fazer um curso de cypress. Até aquele momento eu não tinha tido nenhum contato com testes de softwares. Quando comecei a fazer as aulas achei incrível o poder dos testes automatizados, uma das minhas tasks foi implementar testes de interfaces em algumas partes do sistema que a gente desenvolvia.&lt;/p&gt;

&lt;p&gt;Com o passar do tempo comecei a escutar sobre TDD e entrou na minha lista de coisas para estudar. Só em 2021 quando comecei em uma nova empresa, que comecei a olhar sobre TDD e procurar materiais para estudos, mas tive dificuldade de entender e saber como implementar. Nessa nova empresa eu escrevia testes de unidade frequentemente nas tarefas que eu trabalhava, mas tinha um pouco de dificuldade de criar um teste do zero. Sempre que ia implementar um teste, pegava como exemplo outros testes que alguém já escreveu no projeto. Eu entendia o conceito de teste, tinha uma noção de como estruturar um teste, mas na hora de programar tinha dificuldade.&lt;/p&gt;

&lt;h1&gt;
  
  
  Dificuldades em aprender sobre testes
&lt;/h1&gt;

&lt;p&gt;A minha maior dificuldade foi de aprender sobre TDD. O TDD é uma metodologia de desenvolvimento que visa escrever o teste antes de implementar a funcionalidade. Comecei a procurar materiais sobre TDD. Estudei com livros, cursos, videos, artigos e outras formas. Mas era complicado, parecia que o conceito não entrava na minha cabeça.&lt;/p&gt;

&lt;p&gt;Em fevereiro de 2022 comecei a buscar por um novo emprego, e durante as entrevistas quando me perguntavam qual era a maior dificuldade que eu tinha, eu sempre falava que era em escrever os testes de software. Durante a entrevista para a vaga que estou trabalhando atualmente, uma das coisas definida de ser trabalhado quando eu começasse na empresa, era de evoluir minhas habilidades em testes.&lt;/p&gt;

&lt;p&gt;Durante meus estudos eu tentava implementar os conceitos de TDD que eu via, nos sistemas que eu estava desenvolvendo, mas sempre acabava preso em duas principais coisas. A primeira era de saber o que testar. Não sabia quais as classes eu devia testar, quais os casos de uso criar para testar uma funcionalidade. &lt;/p&gt;

&lt;p&gt;Outro conceito que tinha muita dificuldade de entender era o de mocks. Os mocks servem para simular ações de  uma classe, como, por exemplo, o acesso ao banco de dados. Eu não sabia em que momento deveria utilizar o mock.&lt;/p&gt;

&lt;h1&gt;
  
  
  Superando as dificuldades
&lt;/h1&gt;

&lt;p&gt;Como disse anteriormente, ao entrar na empresa nova, iria evoluir meus conhecimentos em testes de software e assim está sendo. A equipe que estou trabalhando está desenvolvendo projetos do zero, e com isso tive a oportunidade de participar desde a escolha da ferramenta utilizada para escrever os testes e o primeiro teste escrito na aplicação. Mas isso não quer dizer que você precisa entrar em um projeto que está começando, pra poder aprender sobre testes. Um dos conceitos que eu aprendi é que testes bem escritos ajudam muito as pessoas novas que estão entrando no projeto. E esse é um ponto que eu sempre levanto com o meu time quando estamos escrevendo os testes.&lt;/p&gt;

&lt;p&gt;Durante esse tempo implementando testes, consegui amenizar as dificuldades que eu tinha ao entrar na empresa. Comecei a entender pra que serviam os mocks e quando utilizar. Uma das coisas que aprendi, foi que uma das dificuldades de utilizar mocks nos sistemas que eu desenvolvia, era pela forma que as classes estavam escritas.&lt;/p&gt;

&lt;p&gt;Com o tempo e muita prática consegui a habilidade de formular de maneira mais fácil os casos de uso que devem ser escritos.&lt;br&gt;
Entender quais classes não devem ser testadas. Uma coisa que eu descobri que existe, foram os testes mutantes. Esse tipo de teste pretende testar os seus testes. &lt;a href="https://twitter.com/Kastrowalker/status/1519690967569379328" rel="noopener noreferrer"&gt;Nessa&lt;/a&gt; thread do twitter que eu criei, explico um pouco sobre eles e materiais que você pode utilizar pra aprender mais sobre eles.&lt;/p&gt;

&lt;p&gt;Ao executar os testes mutantes na nossa aplicação, a gente descobriu várias falhas nos testes que escrevemos. Logo foi criado uma task para poder refatorar os testes. E ali eu vi uma oportunidade de aprender mais sobre testes, como precisei refatorar boa parte dos testes e escrever novos casos de uso, consegui aprender muita coisa.&lt;/p&gt;

&lt;h1&gt;
  
  
  Diferença entre a teoria e a prática
&lt;/h1&gt;

&lt;p&gt;Uma coisa que percebi que dificultou meu aprendizado também, é de tentar implementar na prática tudo aquilo que vi na teoria. A teoria é importante você estudar e te ajuda a resolver muitos problemas, mas no dia-a-dia, você vai adaptar ao que te deixa mais produtivo. &lt;/p&gt;

&lt;p&gt;Um exemplo que eu tive foi o de TDD, depois de um tempo que eu percebi que eu não tinha que seguir a risca o TDD para escrever meus testes, o mais importante era entender o conceito e levar o princípio do TDD para a prática.&lt;/p&gt;

&lt;p&gt;E isso não fica preso apenas a testes, isso também se aplica a outros conceitos. Se você é uma pessoa iniciante no mundo de desenvolvimento, não se preocupa que com o tempo você vai percebendo isso e aprendendo quando você não deve seguir a risca o que você aprender na teoria.&lt;/p&gt;

&lt;h1&gt;
  
  
  Material para estudar sobre testes
&lt;/h1&gt;

&lt;p&gt;Nessa seção irei deixar materiais que me ajudaram a aprender sobre testes. Quando eu estava estudando sobre testes, foquei em TDD e testes para backend.&lt;/p&gt;

&lt;p&gt;Dois conceitos importantes que eu percebi depois de um tempo que te ajuda a entender melhor sobre testes, é Orientação a Objetos e Padrões de projetos. Vou deixar dois materiais gratuitos sobre esses assuntos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=KlIL63MeyMY&amp;amp;list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY" rel="noopener noreferrer"&gt;Curso de Orientação a Objetos&lt;/a&gt; (Curso)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://refactoring.guru/pt-br" rel="noopener noreferrer"&gt;Site sobre padrões de projetos&lt;/a&gt; (Artigos)&lt;/p&gt;

&lt;p&gt;Em relação ao TDD e testes em geral, você vai descobrir que existem muitas ferramentas que variam de linguagem para linguagem. Quando eu estava estudando, na maioria das vezes utilizei Java/Kotlin com Junit. Mas também consumi materiais em outras linguagens/ferramentas, afinal o conceito de TDD seria o mesmo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/TDD-Desenvolvimento-Guiado-por-Testes/dp/857780724X" rel="noopener noreferrer"&gt;Tdd - Desenvolvimento Guiado Por Testes&lt;/a&gt; (Livro)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.casadocodigo.com.br/products/livro-tdd" rel="noopener noreferrer"&gt;Test-Driven Development&lt;/a&gt; (Livro)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pt.coursera.org/learn/tdd-desenvolvimento-de-software-guiado-por-testes" rel="noopener noreferrer"&gt;TDD – Desenvolvimento de software guiado por testes&lt;/a&gt; (Curso)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/PauloGoncalvesBH/aprenda-tdd-na-pratica" rel="noopener noreferrer"&gt;Aprenda TDD na prática&lt;/a&gt; (Artigo)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=vV1wQ6GFH0A&amp;amp;list=PL9aKtVrF05DyEwK5kdvzrYXFdpZfj1dsG" rel="noopener noreferrer"&gt;API em NodeJS com Clean Architecture e TDD&lt;/a&gt; (Curso)&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusão
&lt;/h1&gt;

&lt;p&gt;Eu ainda não sou um especialista em testes, ainda possuo dificuldades e sempre peço ajuda as pessoas do meu time que tem mais experiência com teste quando fico empacado em algo. Mas durante esses seis últimos meses nessa nova empresa, consegui perceber a minha evolução com testes e consegui colocar em prática as coisas que eu estava estudando durante um ano.&lt;/p&gt;

&lt;p&gt;Resolvi escrever esse artigo pra contar para vocês, sobre a minha experiência e falar pra você que não precisa ficar se culpando ao demorar para entender um conceito. Eu passei mais de um ano estudando sobre teste e só nos últimos meses que consegui entender com mais facilidade e colocar em prática tudo aquilo que eu vi.&lt;/p&gt;

&lt;p&gt;Obrigado por ler esse artigo e espero ter te ajudado de alguma forma. Qualquer dúvida que você tiver pode me mandar mensagem lá na DM do meu &lt;a href="https://twitter.com/kastrowalker/" rel="noopener noreferrer"&gt;twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Não esquece de curtir aqui no dev.to e compartilhar esse artigo com outras pessoas que você acha, que pode também gostar de saber como hospedar um site gratuitamente.&lt;/p&gt;

&lt;p&gt;Até uma próxima &amp;lt;3&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>testing</category>
      <category>tdd</category>
    </item>
    <item>
      <title>Publicando site no Github Pages</title>
      <dc:creator>Victor Castro</dc:creator>
      <pubDate>Sat, 19 Feb 2022 22:18:30 +0000</pubDate>
      <link>https://dev.to/acaverna/publicando-seu-site-no-github-pages-433b</link>
      <guid>https://dev.to/acaverna/publicando-seu-site-no-github-pages-433b</guid>
      <description>&lt;h2&gt;
  
  
  Iniciando
&lt;/h2&gt;

&lt;p&gt;Quando estava iniciando em desenvolvimento web, escutava muito sobre a criação de um portfólio para mostrar meus conhecimentos, mas na época não tinha a mínima ideia de como colocar meus projetos online para que outras pessoas pudessem ver. Depois de um tempo eu descobri que eu precisava colocar o meu projeto em um servidor para que outras pessoas pudessem acessar, mas daí vinha o problema de não ter grana para poder contratar algum desses serviços. Mas graças a comunidade eu descobri o Github Pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que é o Github Pages?
&lt;/h2&gt;

&lt;p&gt;O Github Pages é uma funcionalidade disponibilizada pelo github para poder hospedar projetos web de uma forma gratuita. No GH Pages você consegue hospedar apenas projetos com tecnologias de frontend, não é possível utilizar para hospedar seus projetos utilizando alguma tecnologia server side como, por exemplo, PHP, Node.js ou Ruby.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hospedando o seu primeiro site
&lt;/h3&gt;

&lt;p&gt;O objetivo desse artigo não é explicar do zero Git e Github, então é importante você ter o conhecimento básico sobre essas duas ferramentas e possuir uma conta no Github. Se você não tiver esse conhecimento básico, pode dar uma olhada &lt;a href="https://dev.to/womakerscode/git-e-github-guia-rapido-e-comandos-basicos-para-iniciantes-4ile"&gt;nesse tutorial&lt;/a&gt; da &lt;a href="https://dev.to/womakerscode"&gt;WoMakersCode&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;O primeiro passo é criar um novo repositório no github. Para isso, na sua página inicial do github você pode clicar em criar um novo repositório:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9g92roo2qlrcpf4iulu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9g92roo2qlrcpf4iulu.png" alt="Criando repositório"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configure as informações do seu repo e clique em salvar:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzwg0kofrvl3it73yxppd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzwg0kofrvl3it73yxppd.png" alt="Configurando repositório"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Subindo projeto para o github
&lt;/h2&gt;

&lt;p&gt;Após criar o seu repositório, o próximo passo é subir o seu projeto para o github. Para fazer isso, acesse pela linha de comando o diretório do projeto que você quer hospedar. No meu caso, irei utilizar um site simples para fazer esse tutorial.&lt;/p&gt;

&lt;p&gt;Iremos inicializar um repositório git com o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adicionar os arquivos do seu projeto para commit utilizando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adicionar uma mensagem de commit com o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Subindo o nosso site"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sincronizar o nosso repositório local com o remoto utilizando o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin git@github.com:KastroWalker/github-pages-tutorial.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Importante configurar conforme as informações do seu repositório.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Subir os arquivos para a branch main do nosso repositório remoto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Utilizamos '-u origin main', pois, esse é o nosso primeiro commit para a nossa branch main remota, e nesse momento é que estamos configurando a nossa main local com a branch main remota.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Você pode ver nesse gif todos os passos acima que eu utilizei para subir o projeto para o Github:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3cmr0j0c7g3qe9timw0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3cmr0j0c7g3qe9timw0.gif" alt="Subindo projeto para o github"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configurando github pages
&lt;/h2&gt;

&lt;p&gt;Agora é a hora de configurar o nosso repositório para funcionar no Github Pages, para isso precisamos acessar as configurações do nosso repositório: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmvmlfapm414tcdydlfzt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmvmlfapm414tcdydlfzt.png" alt="Botão configurações do repositório"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Iremos agora acessar a parte de configurações do github pages acessando a seção &lt;code&gt;pages&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5c0axriiqg7ofx60vzd0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5c0axriiqg7ofx60vzd0.png" alt="Acessando menu de pages"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Precisamos configurar a branch com o código que vai ficar rodando no nosso site. Para isso iremos clicar no select na parte de source e escolher a branch main.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhof9w42pqvshplstqja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhof9w42pqvshplstqja.png" alt="Escolhendo branch"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois é só clicar no botão de salvar. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faewyozo8kv9xmlwbj0uw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faewyozo8kv9xmlwbj0uw.png" alt="Clicando no botão de salvar"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Irá aparecer uma mensagem avisando que o seu site está pronto para ser publicado. Após alguns minutos você já vai conseguir acessar o seu site. No meu caso só demorou 1 minuto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbe1gde6rzta4mtv27iyj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbe1gde6rzta4mtv27iyj.png" alt="Mensagem de hospedando"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando o seu site estiver hospedado, irá aparecer essa mensagem nas configurações de pages.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7akh6uqu0hxeprjwt82w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7akh6uqu0hxeprjwt82w.png" alt="Mensagem de site hospedado"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pronto, agora você já tem o seu site hospedado gratuitamente no github pages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configurando domínio personalizado
&lt;/h2&gt;

&lt;p&gt;Provavelmente você deve estar estranhado por estar aparecendo 'kastro.dev' na minha URI, e na sua tem o nick do seu github seguido de github.io, por exemplo, 'kastrowalker.github.io' isso acontece, pois, configurei um DNS para o meu domínio do github, por padrão o github te disponibiliza um domínio com o seu nick.&lt;/p&gt;

&lt;p&gt;Caso você tenha um domínio você consegue configurar ele no github pages, para fazer isso é só ir novamente na parte de configurações do github pages e no final vai ter uma seção para adicionar o link do seu domínio, e clicar em salvar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faxaum2ywy07iqlf7tl8y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faxaum2ywy07iqlf7tl8y.png" alt="Configurando DNS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Você também irá configurar no serviço do seu domínio para funcionar com o github, mas isso muda de serviço para serviço, então seria inviável abordar nesse tutorial. Contudo, basta procurar no google "como configurar domínio do servidor {insira aqui o nome do seu servidor de domínio} no github pages" que, provavelmente, você vai encontrar um tutorial ensinado a configurar essa parte.&lt;/p&gt;

&lt;p&gt;Se você quiser criar um site para ser seu portfólio e ficar com a URI apenas &lt;code&gt;&amp;lt;seu nick do github&amp;gt;.github.io&lt;/code&gt; é só criar o repositório com o nome do seu domínio, por exemplo, &lt;code&gt;kastrowalker.github.io&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Agora você já sabe como hospedar os seus projetos web gratuitamente. &lt;br&gt;
Uma dica que tenho, para você que está iniciando no mundo de desenvolvimento web, é que coloque os seus projetos de estudos hospedados no github pages, essa é uma forma de mostrar para outras pessoas as coisas que você sabe fazer.&lt;/p&gt;

&lt;p&gt;Caso queira ver o site usado nesse tutorial, você consegue acessando esse &lt;a href="https://kastro.dev/github-pages-tutorial/" rel="noopener noreferrer"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Obrigado por ler esse artigo e espero ter te ajudado de alguma forma. Qualquer dúvida que você tiver pode me mandar mensagem lá na DM do meu &lt;a href="https://twitter.com/kastrowalker/" rel="noopener noreferrer"&gt;twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Não esquece de curtir aqui no dev.to e compartilhar esse artigo com outras pessoas que você acha, que pode também gostar de saber como hospedar um site gratuitamente.&lt;/p&gt;

&lt;p&gt;Até uma próxima &amp;lt;3&lt;/p&gt;

</description>
      <category>github</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Meu início no mundo Kotlin</title>
      <dc:creator>Victor Castro</dc:creator>
      <pubDate>Wed, 12 Jan 2022 03:10:38 +0000</pubDate>
      <link>https://dev.to/kotlinautas/meu-inicio-no-mundo-kotlin-45hf</link>
      <guid>https://dev.to/kotlinautas/meu-inicio-no-mundo-kotlin-45hf</guid>
      <description>&lt;p&gt;Em janeiro de 2021 comecei em um novo trabalho. Além dos desafios de adaptação que costuma ocorrer ao você iniciar em uma nova empresa, como, por exemplo, regras e cultura da organização, arquitetura e objetivo do projeto, etc.&lt;/p&gt;

&lt;p&gt;Nesse novo trabalho tive outro desafio que foi desenvolver com uma linguagem de programação que eu nunca tinha tido contato anteriormente e essa linguagem foi o Kotlin, de início fiquei um pouco com medo de ter que mexer com algo que nem sequer tinha estudado antes. Só tinha visto alguns vídeos aleatórios no youtube sobre Kotlin, mas bem por cima mesmo, sem algo muito detalhado.&lt;/p&gt;

&lt;p&gt;Mas depois de um tempo eu me senti mais confortável, durante esse artigo, irei explicar um pouco de como comecei a estudar Kotlin e, porque resolvi continuar investindo nele.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kotlin além do Android
&lt;/h2&gt;

&lt;p&gt;Um dos grandes desafios era que eu iria desenvolver com o Kotlin no lado do servidor, é muito comum se ouvir falar de Kotlin para programação Android, mas ela é uma linguagem multiplataforma, ao decorrer do artigo vou explicar melhor sobre isso.&lt;/p&gt;

&lt;p&gt;Fiquei receoso em investir o meu tempo de estudos em uma linguagem que quase não via vaga para backend, via muitas para mobile, mas backend era quase zero. Lembro que chamei a &lt;a href="https://dev.to/morgannadev"&gt;@morgannadev&lt;/a&gt; para conversar, pois, ela era a única pessoa que eu conhecia que trabalhava com Kotlin no backend e perguntei se realmente valia a pena investir meu tempo estudando e se tinha mercado para essa tecnologia no backend.&lt;/p&gt;

&lt;p&gt;Após conversar bastante, cheguei na decisão de que iria continuar estudando Kotlin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Como surgiu?
&lt;/h3&gt;

&lt;p&gt;Kotlin foi desenvolvida em 2011 pela Jetbrains, o seu principal objetivo ao ser criada era porque a Jetbrains queria uma linguagem de programação para resolver problemas de produtividade na criação de suas IDEs, que eram desenvolvidas com Java.&lt;/p&gt;

&lt;p&gt;Porém, ela estava tendo problemas com certas características do Java, foi aí que Jetbrains resolveu desenvolver uma linguagem de programação, que pudesse suprir suas necessidades e melhorar o desenvolvimento de seus produtos. A versão 1.0 do Kotlin foi lançada oficialmente em 15 de fevereiro de 2016.&lt;/p&gt;

&lt;h3&gt;
  
  
  Onde posso usar Kotlin?
&lt;/h3&gt;

&lt;p&gt;Como foi falado anteriormente, Kotlin é uma linguagem multiplataforma. Ela roda em cima da JVM (Java Virtual Machine), ou seja, você consegue executar em qualquer lugar que rode a JVM.&lt;/p&gt;

&lt;p&gt;Hoje em dia é muito comum ver o Kotlin ligado ao desenvolvimento Mobile, o motivo disso é que em 2017 o Google anunciou que a partir daquele momento, Kotlin era uma linguagem suportada para o desenvolvimento Android e em 7 de maio de 2019 declarou como a linguagem oficial para o desenvolvimento de aplicações Android.&lt;/p&gt;

&lt;p&gt;Mas podemos trabalhar com Kotlin no lado do servidor, desenvolvendo aplicações Web utilizando frameworks como &lt;a href="https://micronaut.io/"&gt;Micronaut&lt;/a&gt;, &lt;a href="https://ktor.io/"&gt;Ktor&lt;/a&gt;, &lt;a href="https://spring.io/"&gt;Spring&lt;/a&gt; etc, esse é meu foco atualmente. Também podemos criar aplicações Desktop utilizando bibliotecas de interfaces como &lt;a href="https://tornadofx.io/"&gt;TornadoFx&lt;/a&gt; ou &lt;a href="https://openjfx.io/"&gt;JavaFx&lt;/a&gt;. Existe ainda a possibilidade de transpilar um código Kotlin para javascript, fazendo com que seja possível desenvolver aplicações web frontend. Você pode achar mais informações sobre o &lt;a href="https://kotlinlang.org/docs/js-overview.html"&gt;nessa parte&lt;/a&gt; da documentação.&lt;/p&gt;

&lt;p&gt;Também é possível desenvolver aplicações para IOS utilizando o &lt;a href="https://kotlinlang.org/lp/mobile/"&gt;KMM&lt;/a&gt;(Kotlin Multiplatform Mobile) e conseguimos criar aplicações nativas para várias plataformas utilizando o Kotlin native, temos um &lt;a href="https://dev.to/kotlinautas/o-que-e-kotlin-native-1ejh"&gt;artigo&lt;/a&gt; da &lt;a href="https://dev.to/lissadev"&gt;@lissadev&lt;/a&gt; sobre isso.&lt;/p&gt;

&lt;p&gt;Kotlin possui várias possibilidades para trabalhar, você pode ver melhor na documentação oficial. Mas resumindo temos os seguintes locais onde podemos criar aplicações:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Desenvolvimento Android&lt;/li&gt;
&lt;li&gt;Desenvolvimento Backend&lt;/li&gt;
&lt;li&gt;Desenvolvimento Desktop&lt;/li&gt;
&lt;li&gt;Transpilação para Javascript&lt;/li&gt;
&lt;li&gt;Desenvolvimento multiplataforma (Ios e Android)&lt;/li&gt;
&lt;li&gt;Desenvolvimento nativo&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Características do Kotlin
&lt;/h3&gt;

&lt;p&gt;Logo abaixo você consegue ver um exemplo de um código escrito em Kotlin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;soma&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;valor1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;valor2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Int&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nc"&gt;Int&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;valor1&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;valor2&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;primeiroNumero&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;segundoNumero&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
    &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;resultado&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;soma&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;primeiroNumero&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;segundoNumero&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"O resultado da soma é: $resultado"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="c1"&gt;// O resultado da soma é: 15&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse é um código bem simples que declara uma função chamada soma esperando dois parâmetros do tipo inteiro e retorna a soma desses valores. Já na função &lt;code&gt;main()&lt;/code&gt; definimos duas variáveis que recebe dois números inteiros, definimos uma variável chamada de &lt;code&gt;resultado&lt;/code&gt; que recebe o retorno da função &lt;code&gt;soma&lt;/code&gt; passando como parâmetro às duas variáveis declaradas anteriormente e por fim mostramos na tela o valor da soma, concatenado com uma string. &lt;/p&gt;

&lt;p&gt;E no final chamamos nossa função main. Você pode executar o código acessando  &lt;a href="https://play.kotlinlang.org/#eyJ2ZXJzaW9uIjoiMS42LjEwIiwicGxhdGZvcm0iOiJqYXZhIiwiYXJncyI6IiIsIm5vbmVNYXJrZXJzIjp0cnVlLCJ0aGVtZSI6ImlkZWEiLCJjb2RlIjoiZnVuIHNvbWEodmFsb3IxOiBJbnQsIHZhbG9yMjogSW50KTogSW50IHtcbiAgICByZXR1cm4gdmFsb3IxICsgdmFsb3IyXG59XG5cbmZ1biBtYWluKCkge1xuICAgIHZhbCBwcmltZWlyb051bWVybyA9IDEwXG4gICAgdmFsIHNlZ3VuZG9OdW1lcm8gPSA1XG4gICAgdmFsIHJlc3VsdGFkbyA9IHNvbWEocHJpbWVpcm9OdW1lcm8sIHNlZ3VuZG9OdW1lcm8pXG4gICAgcHJpbnRsbihcIk8gcmVzdWx0YWRvIGRhIHNvbWEgw6k6ICRyZXN1bHRhZG9cIilcbn0ifQ=="&gt;esse&lt;/a&gt; link.&lt;/p&gt;

&lt;p&gt;Como pode ver a sintaxe do Kotlin é bem simples e amigável. Uma coisa que escutei quando tava começando, é que o Kotlin pega as coisas que são boas de várias linguagens e junta em uma só.&lt;br&gt;
Durante o tempo em que estou escrevendo código em Kotlin, me lembro de várias coisas que utilizo em outras linguagens como, por exemplo javascript e Java.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vantagens do Kotlin
&lt;/h2&gt;

&lt;p&gt;Bom, mas quais são as vantagens em relação as outras linguagens? Existem diversas vantagens, mas eu resolvi destacar aqui nesse artigo as quais eu considero mais legais pra quem está iniciando saber.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compatibilidade com Java&lt;/strong&gt;: Como falado antes, Kotlin roda em cima da JVM, isso é possível, pois, um código escrito em Kotlin no final é compilado para um bytecode Java, ou seja, você consegue utilizar Java e Kotlin no mesmo projeto, pois, no final na hora de executar, tudo vai ser convertido para um arquivo bytecode Java. Mas qual a vantagem disso? A vantagem é que você pode fazer a transição de um projeto escrito em Java para Kotlin com pequenos passos, pois, você pode ter um projeto Java e começar a escrever novas funcionalidades em Kotlin e ir transcrevendo as classes antigas escritas em Java para Kotlin. Um recurso legal que você pode usufruir é o Java2Kotlin através de uma funcionalidade da IDE da Jetbrains. Você pode entender melhor nesse &lt;a href="https://kotlinlang.org/docs/mixing-java-kotlin-intellij.html#converting-an-existing-java-file-to-kotlin-with-j2k"&gt;link&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suporte a várias bibliotecas&lt;/strong&gt;: Pela vantagem falada acima você pode utilizar todas as bibliotecas utilizadas no mundo Java em seu projeto Kotlin, basta instalar a lib no seu projeto e importar no seu arquivo, provavelmente você vai ter que mudar a forma de chamar certas funções, mas a própria IDE da Jebrains te ajuda com isso. Uma dúvida que tive no início era se eu precisava aprender Java antes de aprender Kotlin. E a resposta é NÃO, você ter uma base de pode te ajudar, mas não é um requisito para começar a estudar o Kotlin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Linguagem multiparadigma&lt;/strong&gt;: Uma coisa bem legal que o Kotlin te proporciona é você poder utilizar diversos paradigmas de programação em seus projetos. Pois, o Kotlin suporta o paradigma de POO(Programação Orientada a Objetos), paradigma procedural e paradigma Funcional, uma coisa que fiquei admirado quando comecei a estudar Kotlin é que eu poderia declarar uma variável recebendo uma estrutura de decisão (if e else), pois, diferente de outras linguagens no Kotlin uma estrutura de decisão é uma função.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Null safety&lt;/strong&gt;: Algo queridinho da comunidade do Kotlin é o Null safety se você veio de linguagens como javascript, provavelmente durante o desenvolvimento de alguns sistemas você já se deparou com um 'undefined' ou no Java você, já se deparou com o erro 'NullPointerException' isso ocorre, pois, nessas linguagens você pode declarar uma variável inicialmente sem nenhum valor declarado a ela, no Kotlin isso não é possível, você deve atribuir um valor a uma variável ao declara-la. Existe formas de contornar isso utilizando o operador '?' depois do tipo da variável, por exemplo.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="py"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mas observe que eu atribuo o valor null na variável. Isso não dever ser feito com frequência, pois pode trazer problemas futuros na execução do seu projeto. Mas o importante ressaltar essa funcionalidade do Kotlin é que você tem um código mais seguro. Antes eu programava com Javascript e PHP e essas linguagens não têm esse tipo de suporte, você nem mesmo precisa declarar o tipo da variável e isso de inicio me travava um pouco na hora de desenvolver, mas com o tempo você vai pegando o jeito. Você pode estudar melhor sobre esse assunto olhando na documentação do Kotlin nesse &lt;a href="https://kotlinlang.org/docs/null-safety.html"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vagas
&lt;/h2&gt;

&lt;p&gt;No inicio eu falei que tinha medo de não achar uma vaga para Kotlin no backend, além de ter várias para o mobile também possuimos várias vagas para Kotlin no backend. Você pode dar uma olhada &lt;a href="https://github.com/Kotlin-BR/kotlin-no-backend"&gt;nesse&lt;/a&gt; repo do github sobre empresas que utilizam Kotlin no backend aqui no Brasil. Isso sem contar as vagas que temos fora do Brasil, então temos bastante vagas para você poder trabalhar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como estudar Kotlin?
&lt;/h2&gt;

&lt;p&gt;Bom depois de ler tudo isso sobre Kotlin espero ter despertado em você um interesse em estudar Kotlin :) Mas, como eu posso fazer isso? Bom eu vou passar aqui dicas que eu recebi quando eu estava iniciando, mas isso não quer dizer que só existe essa forma, essa foi apenas a forma que eu aprendi e pode ajudar você também.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A primeira dica que eu passo é ler a documentação. A documentação do Kotlin é bem detalhada e explica muito bem, você pode acessar a documentação &lt;a href="https://kotlinlang.org/docs/"&gt;aqui&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A segunda coisa que me ajudou bastante no inicio e ajuda até hoje é uma parte especifica da documentação que mostra a sintaxe básica da linguagem, se você é do tipo de pessoa que gosta de aprender uma linguagem nova já colocando a mão na massa você pode iniciar lendo a parte de &lt;a href="https://kotlinlang.org/docs/basic-syntax.html"&gt;base syntax&lt;/a&gt;. Nela você consegue ver como declarar coisas básicas da linguagem, como por exemplo variáveis, funções, arrays, estruturas de decisão e repetição e etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Se você gosta de cursos eu separei uma lista de cursos gratuitos que você pode fazer, essa lista tá disponibilizada &lt;a href="https://kotlinautas.dev/cursos/"&gt;aqui&lt;/a&gt; no site da Kotlinautas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Se você gosta de ler indico você seguir a gente da Kotlinautas aqui no dev.to nesse &lt;a href="https://dev.to/kotlinautas"&gt;link&lt;/a&gt; você pode achar vários artigos legais sobre Kotlin no geral.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uma da parte mais importante para aprender uma linguagem de programação nova é praticar escrevendo algoritimos, para isso você pode utilizar a parte de &lt;a href="https://play.kotlinlang.org/byExample/overview"&gt;Kotlin By Examples&lt;/a&gt; na documentação do Kotlin.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;E por último uma coisa que é legal você saber é sobre a forma "Kotliniana" de se escrever um código. Isso é apenas uma forma que um código escrito em Kotlin deve ser, mas você não deve ficar preso a isso no início, pois isso pode atrapalhar na sua evolução, eu apenas indico você dar uma olhada e saber que existe.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bom e por último mas não menos importante você pode seguir no twitter o perfil da &lt;a href="https://twitter.com/kotlinautas"&gt;Kotlinautas&lt;/a&gt; da &lt;a href="https://twitter.com/jetbrains"&gt;Jetbrains&lt;/a&gt; e o da linguagem &lt;a href="https://twitter.com/kotlin"&gt;Kotlin&lt;/a&gt; para saber sobre atualizações da linguagem.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bom espero ter ajudado você nesse início com Kotlin e ter tirado algumas dúvidas sobre essa linguagem que mal conheço mas já considero Pakas. E qualquer dúvida que você tiver pode me chamar lá no Twitter &lt;a href="https://twitter.com/kastrowalker"&gt;kastrowalker&lt;/a&gt; que eu vou ter um prazer imenso em ajudar você.&lt;/p&gt;

&lt;p&gt;Um grande abraço e até a próxima.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>kotlin</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>Chatbot para twitch com Javascript</title>
      <dc:creator>Victor Castro</dc:creator>
      <pubDate>Sun, 18 Apr 2021 04:25:06 +0000</pubDate>
      <link>https://dev.to/acaverna/chatbot-para-twitch-com-javascript-1oi9</link>
      <guid>https://dev.to/acaverna/chatbot-para-twitch-com-javascript-1oi9</guid>
      <description>&lt;p&gt;Olá nesse tutorial vamos criar um chatbot para a &lt;a href="https://www.twitch.tv/"&gt;twitch.tv&lt;/a&gt; utilizando javascript com a biblioteca &lt;a href="https://tmijs.com/"&gt;tmi.js&lt;/a&gt;. Utilizar um chatbot no seu canal é uma das formas de você engajar os seus viewers, pois, você pode criar jogos e outras brincadeiras para divertir o seu público durante as lives. Um dos exemplos é criar um comando de duelo para que o seu chat fique duelando no chat. Outra coisa que você pode fazer é criar funcionalidade para que o seu bot ajude na moderação da sua live.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ferramentas
&lt;/h2&gt;

&lt;p&gt;Para criar esse projeto iremos utilizar as seguintes tecnologias:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://nodejs.org/pt-br/"&gt;node.js&lt;/a&gt; - Que é um runtime javascript. Você pode baixar ele &lt;a href="https://nodejs.org/pt-br/download/"&gt;aqui&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="(https://www.npmjs.com/package/nodemon)"&gt;nodemon&lt;/a&gt; - Que é uma ferramenta que monitora o sistema de arquivos da sua aplicação e reinicia automaticamente após uma modificação.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.npmjs.com/get-npm"&gt;npm&lt;/a&gt; - Que é um gerenciador de pacote javascript. Por padrão ele já vem instalado junto com o node.js, mas caso você queira também pode utilizar o &lt;a href="https://yarnpkg.com/"&gt;yarn&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://tmijs.com/"&gt;tmi.js&lt;/a&gt; - Biblioteca para se conectar no chat da twitch utilizando o protocolo &lt;a href="https://pt.wikipedia.org/wiki/Internet_Relay_Chat"&gt;IRC&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Editor de texto - Você pode utilizar um editor de texto da sua preferência, no meu caso irei utilizar o &lt;a href="https://code.visualstudio.com/"&gt;Vscode&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Iniciando Projeto
&lt;/h2&gt;

&lt;p&gt;Apos a instalação do node iremos iniciar o nosso projeto utilizando o seguinte comando:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm init -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Se você olhar na pasta do seu projeto é para ter criado um arquivo chamado 'package.json' é nele que fica as configurações do nosso projeto.&lt;/p&gt;

&lt;p&gt;Caso você queira saber mais sobre o npm init você pode descobrir mais &lt;a href="https://docs.npmjs.com/cli/v7/commands/npm-init"&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalação de depedências
&lt;/h2&gt;

&lt;p&gt;Agora vamos instalar as bibliotecas necessárias para o nosso projeto.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install tmi.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install --save-dev nodemon&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Após rodar esses comandos se você olhar no seu projeto você deve ter a pasta 'node_modules' e o arquivo 'package-lock.json' no seu projeto.&lt;/p&gt;

&lt;p&gt;Agora iremos criar scripts para facilitar na hora de rodar o nosso bot. Dentro do arquivo &lt;code&gt;package.json&lt;/code&gt; iremos modificar a propriedade &lt;code&gt;scripts&lt;/code&gt; e adicionar o seguinte código.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node index.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dev"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nodemon index.js"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O &lt;code&gt;start&lt;/code&gt; serve para rodar o nosso quando finalizado. Já o &lt;code&gt;dev&lt;/code&gt; serve para rodar o nosso bot enquanto estivermos trabalhando nele, pois, ele vai executar usando o nodemon e facilitará nosso trabalho enquanto estivermos modificando ele reiniciando automaticamente o nosso bot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando arquivo de configuração
&lt;/h2&gt;

&lt;p&gt;Agora precisando criar um arquivo chamado &lt;code&gt;.env&lt;/code&gt; nele ficara guardado as variáveis de configurações nosso bot. Logo abaixo podemos ver como você devera deixar o arquivo depois de criado. Você devera substituir kastrinhobot pelo nome do seu nome, kastr0walker pelo nome do seu canal e TOKEN pelo token que você deve gerar &lt;a href="https://twitchapps.com/tmi/"&gt;aqui&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NOME_BOT=kastrinhobot
NOME_CANAL=kastr0walker
TOKEN_BOT=TOKEN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Criando nosso primeiro comando
&lt;/h2&gt;

&lt;p&gt;Agora está na hora de colocar a mão na massa e fazer o nosso primeiro comando no bot. A primeira coisa que precisamos fazer é importar as bibliotecas necessárias para o nosso projeto funcionar.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tmi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tmi.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dotenv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dotenv&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora iremos salvar em variáveis as configurações que adicionamos no nosso arquivo &lt;code&gt;.env&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;NOME_BOT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NOME_BOT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;NOME_CANAL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;NOME_CANAL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;TOKEN_BOT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TOKEN_BOT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devemos também criar um objeto para adicionar as informações do nosso bot.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;opts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;identity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;NOME_BOT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;TOKEN_BOT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;channels&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;NOME_CANAL&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devemos instanciar um novo objeto do tipo &lt;code&gt;tmi.client&lt;/code&gt; passando como parâmetro o objeto que contem as configurações do nosso bot.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;tmi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;opts&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Devemos criar uma função para ser executada toda vez que o bot detectar que uma mensagem foi enviada no chat. No nosso caso definimos essa função como &lt;code&gt;recivedMessage&lt;/code&gt; nela recebemos quatro parâmetros.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;target&lt;/strong&gt; - Esse parâmetro recebe o nome do canal no qual o bot recebeu a mensagem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;context&lt;/strong&gt; - Esse é um objeto na qual fica armazenado algumas informações do usuário que mandou mensagem no chat. Podemos achar nele o nome do usuário, se é sub ou mod de um canal dentre outras informações. Você pode conseguir mais informações colocando um &lt;code&gt;console.log(context)&lt;/code&gt; dentro da função.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;msg&lt;/strong&gt; - Esse é uma string contendo a mensagem que foi enviada no chat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;bot&lt;/strong&gt; - Esse é um booleano que retorna verdadeiro caso a mensagem recebida seja do nosso próprio bot.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O nosso primeiro comando que vamo criar é para o bot mandar uma mensagem de "Olá Mundo!" caso alguém digite &lt;code&gt;!ola&lt;/code&gt; no chat. Para isso verificamos se a mensagem recebida é igual a &lt;code&gt;!ola&lt;/code&gt; caso seja nós chamamos o método say do nosso client. Esse método é responsável por fazer com que o bot mande uma mensagem no chat. Ele recebe dois parâmetros o primeiro é o nome do canal na qual o bot vai mandar a mensagem. O segundo parâmetro é uma string contendo a mensagem na qual o bot vai enviar.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;recivedMessage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Verifica se a mensagem recebido é do nosso bot&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bot&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;!ola&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;say&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Olá Mundo!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora precisamos fazer com que o nosso bot se conecte no chat e comece a escutar as mensagens que são enviadas nele.&lt;br&gt;
Para isso utilizamos as seguintes funções.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;client.on("message", recivedMessage)&lt;/strong&gt; - Essa função vai fazer com que o bot fique escutando o nosso chat e execute a função &lt;code&gt;recivedMessage&lt;/code&gt; toda vez que uma mensagem é recebida.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;client.on("connected", () =&amp;gt; {})&lt;/strong&gt; - Essa função vai fazer com que o nosso bot mande "O bot tá on!" no nosso chat ao se conectar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;client.connet()&lt;/strong&gt; - Essa função vai fazer com que o nosso bot se conecte com o chat do nosso canal.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;recivedMessage&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;connected&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;say&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;NOME_CANAL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;O bot tá on!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após isso salve o seu arquivo e execute no seu terminal o seguinte comando:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm start&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Pront agora o bot deve está conectado no seu canal e já sendo possível interagir com ele digitando &lt;code&gt;!ola&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Agora que você entendeu a base de como criar o seu primeiro bot. Você pode utilizar a sua imaginação e desenvolver várias funcionalidades legais para o seu bot. Se você quiser se inspirar com ideias para o seu bot esse são alguns bots na qual já contribui no desenvolvimento.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/levxyca/pandadomalbot"&gt;pandadomalbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/acaverna/acaverna-bot"&gt;acaverna&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/acaverna/deninho-bot"&gt;deninhobot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pxlrose/pixelrbot"&gt;pixelrbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kastrowalker/kastrinhobot"&gt;kastrinhobot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para esse tutorial utilizei como base esse &lt;a href="https://github.com/jpbrab0/twitchtvbot-js-template"&gt;repositório&lt;/a&gt;. Obrigado por ler meu artigo e boa sorte com as suas criações.&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>javascript</category>
      <category>chatbot</category>
      <category>tmijs</category>
    </item>
  </channel>
</rss>
