<?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: Leandro Torres</title>
    <description>The latest articles on DEV Community by Leandro Torres (@leandroats).</description>
    <link>https://dev.to/leandroats</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%2F567977%2Fc1d4a8d8-b5eb-4cc8-9ebc-a7ec59d1384a.png</url>
      <title>DEV Community: Leandro Torres</title>
      <link>https://dev.to/leandroats</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leandroats"/>
    <language>en</language>
    <item>
      <title>C# 13 novidades</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Sat, 09 Nov 2024 11:52:11 +0000</pubDate>
      <link>https://dev.to/leandroats/c-13-novidades-52op</link>
      <guid>https://dev.to/leandroats/c-13-novidades-52op</guid>
      <description>&lt;p&gt;O Oleg Kyrylchuk fez um post no site dele sobre algumas novidades do C# 13. Vou reproduzir por aqui algumas para registrar.&lt;/p&gt;

&lt;p&gt;🎯 &lt;strong&gt;Params Collections&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="p"&gt;/&lt;/span&gt; &lt;span class="n"&gt;Before&lt;/span&gt; &lt;span class="n"&gt;C&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt; &lt;span class="m"&gt;13&lt;/span&gt;
&lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Method1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;params&lt;/span&gt; &lt;span class="kt"&gt;object&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&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;span class="c1"&gt;// C# 13&lt;/span&gt;
&lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Method2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;params&lt;/span&gt; &lt;span class="n"&gt;IList&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;object&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;args&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;span class="c1"&gt;// C# 13&lt;/span&gt;
&lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Method3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;params&lt;/span&gt; &lt;span class="n"&gt;ICollection&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;object&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;args&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;span class="c1"&gt;// C# 13&lt;/span&gt;
&lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Method4&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;params&lt;/span&gt; &lt;span class="n"&gt;ReadOnlySpan&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;object&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;args&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;🎯 &lt;strong&gt;New Lock Object&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;OldLock&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="kt"&gt;object&lt;/span&gt; &lt;span class="n"&gt;_lockObj&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;sharedResource&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;IncrementResource&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;lock&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_lockObj&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;sharedResource&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;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;NewLock&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="n"&gt;Lock&lt;/span&gt; &lt;span class="n"&gt;_lockObj&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;sharedResource&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;IncrementResource&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;_lockObj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;EnterScope&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;sharedResource&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;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🎯 &lt;strong&gt;New Escape Sequence&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;//OLD&lt;/span&gt;
&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"\u001b[32mThis is green text\u001b[0m"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//NEW&lt;/span&gt;
&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"\e[32mThis is green text\e[0m"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🎯 &lt;strong&gt;Partial Properties And Indexers&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;partial&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Foo&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;GeneratedRegex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"abc|def"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;partial&lt;/span&gt; &lt;span class="n"&gt;Regex&lt;/span&gt; &lt;span class="n"&gt;AbcRegex&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="nf"&gt;IsMatchAbc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;AbcRegex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;IsMatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&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;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;Links e Referências:
&lt;/h3&gt;

&lt;p&gt;👉 &lt;a href="https://okyrylchuk.dev/" rel="noopener noreferrer"&gt;Oleg Kyrylchuk&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://okyrylchuk.dev/blog/whats-new-in-charp13/" rel="noopener noreferrer"&gt;What’s New in C# 13&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Estudando - Linguagem Go - Dia 02</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Mon, 04 Nov 2024 22:49:46 +0000</pubDate>
      <link>https://dev.to/leandroats/estudando-linguagem-go-dia-02-5ghi</link>
      <guid>https://dev.to/leandroats/estudando-linguagem-go-dia-02-5ghi</guid>
      <description>&lt;p&gt;Olá Devs! 👩‍💻👨‍💻&lt;/p&gt;

&lt;p&gt;Passei pelo entendimento inicial e agora preciso começar a "escrever" algo, vou configurar meu VSCode para que eu consiga programar e depurar o código gerado.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌟Processo de Instalação / Configuração
&lt;/h2&gt;

&lt;p&gt;🔸Passo 01 - Instalar a extensão Go para o VSCode&lt;br&gt;
🔸🔸 Abra o VSCode e faça a instalação da Extensão do Go. Para realizar a instalação de extensões: "Ctrl+Shift+X", no campo de busca digite Go e escolha a opção "Go - Go Team at Google". Só clicar em "Install"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fk7xsm4kapn44mto369c4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fk7xsm4kapn44mto369c4.png" alt="Image description" width="800" height="174"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;🔸Passo 02 - Atualize as ferramentas do Go&lt;br&gt;
🔸🔸 Abra o VSCode e faça a instalação da Extensão do Go. Para realizar a instalação de extensões: "Ctrl+Shift+P", no campo digite "Go: Install/Update tools"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fq9lqddl3f3017bsj0pkj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fq9lqddl3f3017bsj0pkj.png" alt="Image description" width="800" height="151"&gt;&lt;/a&gt;&lt;br&gt;
Caso apareça algo para atualizar, selecione todas as ferramentas disponíveis e selecione OK.&lt;/p&gt;



&lt;p&gt;🔸Passo 03 - Criar um Hello&lt;br&gt;
🔸🔸 A ideia é criar um exemplo simples e garantir que funcionou.&lt;/p&gt;

&lt;p&gt;Criei uma pasta e dentro dela um arquivo chamado "main.go"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="s"&gt;"fmt"&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello!"&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;Consegui compilar e rodar o arquivo gerado executando via terminal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;go build main.go
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após o comando, foi gerado um executável na pasta com o nome "main.exe". Pronto, meu primeiro programa foi gerado.&lt;/p&gt;




&lt;p&gt;🔸Passo 04 - Depurar meu Código&lt;br&gt;
🔸🔸 Agora quero depurar o código através do VSCode.&lt;/p&gt;

&lt;p&gt;Selecionar a opção do VSCode para Depurar: "Ctrl+Shift+D", após, executar o botão "Run and Debug".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fohml9wc4s3duk1emj88y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fohml9wc4s3duk1emj88y.png" alt="Image description" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso não funcione, abra o terminal e execute o comando&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;go install -v github.com/go-delve/delve/cmd/dlv@latest
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por aqui encontrei mais um erro&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;Build Error: go build -o c:\_Dev\Go\Hello\__debug_bin676152768.exe -gcflags all=-N -l .
&lt;/span&gt;&lt;span class="gp"&gt;go: go.mod file not found in current directory or any parent directory;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;see &lt;span class="s1"&gt;'go help modules'&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;exit &lt;/span&gt;status 1&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Parece que após a versão do Go 1.16, o padrão é que ao rodar um código, é esperado ter um arquivo "go.mod" no projeto.&lt;br&gt;
Para isso basta executar o comando, onde "hello" é o nome do projeto&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;go mod init hello
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ele criou um arquivo na pasta com o seguinte conteúdo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;module hello

go 1.23.2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O arquivo 'go.mod' é para o gerenciamento de dependências em Go.&lt;/p&gt;

&lt;p&gt;Agora só executar o "Run and Debug" e ver a mágica acontecer... 😁&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fu9l3r03t7kephjd3kk1r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fu9l3r03t7kephjd3kk1r.png" alt="Image description" width="800" height="204"&gt;&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;Pronto, preparação do VSCode concluída!!!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outras opções para escrever o seu código&lt;/strong&gt;&lt;br&gt;
Aqui vou listar algumas delas:&lt;br&gt;
👉 &lt;a href="https://github.com/visualfc/liteide" rel="noopener noreferrer"&gt;LiteIDE X&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.jetbrains.com/go/" rel="noopener noreferrer"&gt;Jetbrains GoLand&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.sublimetext.com/" rel="noopener noreferrer"&gt;Sublime Text&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;Links e Referências:
&lt;/h3&gt;

&lt;p&gt;👉 &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://learn.microsoft.com/pt-br/azure/developer/go/configure-visual-studio-code" rel="noopener noreferrer"&gt;Instalar e configurar o Visual Studio Code for Go development&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.tabnine.com/blog/top-7-golang-ides-for-go-developers/" rel="noopener noreferrer"&gt;Top 6 Golang IDEs for Go developers&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.bairesdev.com/blog/best-golang-ide-text-editor/" rel="noopener noreferrer"&gt;6 Best Golang IDEs &amp;amp; Text Editors&lt;/a&gt;&lt;/p&gt;







&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>go</category>
      <category>vscode</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Estudando - Linguagem Go - Dia 01</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Sun, 03 Nov 2024 23:56:26 +0000</pubDate>
      <link>https://dev.to/leandroats/linguagem-go-dia-01-3320</link>
      <guid>https://dev.to/leandroats/linguagem-go-dia-01-3320</guid>
      <description>&lt;p&gt;Olá Devs! 👩‍💻👨‍💻&lt;/p&gt;

&lt;p&gt;Vou me aventurar um pouco em Go, sem pressa e registrando as coisas por aqui...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que é a linguagem Go?&lt;/strong&gt;&lt;br&gt;
💡Desenvolvida em 2007, mas lançada em código aberto em 2009, a linguagem de programação Go, também conhecida como Golang, foi desenvolvida pelo Google. Ela é uma linguagem moderna, eficiente e segura. É utilizada para as mais diversas necessidades, atende desde serviços em nuvem até aplicações Desktop.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Processo de Instalação&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔸Passo 01 - Fazer o download do arquivo de Instalação para o seu ambiente&lt;br&gt;
🔸🔸&lt;a href="https://go.dev/dl/" rel="noopener noreferrer"&gt;Instalação - All releases&lt;/a&gt;&lt;br&gt;
🔸🔸🔸 Microsoft Windows - Windows 10 or later, Intel 64-bit processor&lt;/p&gt;




&lt;p&gt;🔸Passo 02 - Realizar o processo de instalação&lt;br&gt;
&lt;a href="https://media2.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%2F7cgwquvt4sptrvqfhpit.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F7cgwquvt4sptrvqfhpit.png" alt="Image description" width="495" height="387"&gt;&lt;/a&gt;&lt;br&gt;
🔸🔸"Next" resolve o problema&lt;/p&gt;




&lt;p&gt;🔸Passo 03 - Garantir que a instalação foi realizada com sucesso&lt;br&gt;
🔸🔸Abra o prompt de comando e execute o comando: &lt;em&gt;go version&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.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%2F0yxtfll3ueobzbypucxa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F0yxtfll3ueobzbypucxa.png" alt="Image description" width="707" height="77"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🔸Passo 04 - Buscando referências &lt;br&gt;
🔸🔸Antes de procurar vídeos, eu prefiro começar lendo alguma coisa, então seguirei primeiro por aqui: &lt;a href="http://www.golangbr.org/" rel="noopener noreferrer"&gt;A linguagem de programação Go&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Primeira etapa concluída, agora vou iniciar a leitura e na sequência configurar o ambiente para desenvolver meu primeiro exemplo.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>go</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>https://oss.gallery/ - Projetos Open Source</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Sun, 03 Nov 2024 12:29:08 +0000</pubDate>
      <link>https://dev.to/leandroats/httpsossgallery-h77</link>
      <guid>https://dev.to/leandroats/httpsossgallery-h77</guid>
      <description>&lt;p&gt;Olá Devs! 👩‍💻👨‍💻&lt;/p&gt;

&lt;p&gt;O site oss.gallery é um catálogo de projetos open source (código aberto), gerado pela comunidade. &lt;/p&gt;

&lt;p&gt;Alguns projetos interessantes que eu não conhecia&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://oss.gallery/projects/sqlchat" rel="noopener noreferrer"&gt;https://oss.gallery/projects/sqlchat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://oss.gallery/projects/skateshop" rel="noopener noreferrer"&gt;https://oss.gallery/projects/skateshop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://oss.gallery/projects/kutt" rel="noopener noreferrer"&gt;https://oss.gallery/projects/kutt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://oss.gallery/projects/zed" rel="noopener noreferrer"&gt;https://oss.gallery/projects/zed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://oss.gallery/projects/quill" rel="noopener noreferrer"&gt;https://oss.gallery/projects/quill&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>if-else &amp; early return</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Sat, 26 Oct 2024 11:24:10 +0000</pubDate>
      <link>https://dev.to/leandroats/if-else-early-return-1nb6</link>
      <guid>https://dev.to/leandroats/if-else-early-return-1nb6</guid>
      <description>&lt;p&gt;Olá Devs! 👩‍💻👨‍💻&lt;/p&gt;

&lt;p&gt;A legibilidade e compreensão de um código são aspectos muito importantes, utilizando boas práticas você consegue ter um código melhor e mais fácil de ser mantido.&lt;/p&gt;

&lt;p&gt;Jeff Bay publicou no seu livro chamado Thought Works Anthology, um conjunto de boas práticas chamado "Object Calisthenics". &lt;/p&gt;

&lt;p&gt;Nesse conjunto ele aborda alguns pontos e um deles é "Don’t Use The ELSE Keyword (Não use a palavra-chave ELSE)". Esse conceito reforça que você deve evitar ao máximo a utilização de ELSE. Existem algumas formas de adotarmos isso, mas vou focar em dois caminhos relativamente tranquilos de seguir.&lt;/p&gt;

&lt;p&gt;Peguei uma tabela de temperatura corporal na Web e fiz esse método, vamos seguir com ele como base&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nf"&gt;VerificarTemperaturaCorporal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&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="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;36&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="m"&gt;37.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Normal"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;37.6&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="m"&gt;39.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Febre"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;39.6&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;41&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Febre alta"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;41&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hipertemia"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hipotermia"&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="n"&gt;retorno&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;&lt;strong&gt;Utilize somente o IF&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nf"&gt;VerificarTemperaturaCorporalv2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hipotermia"&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="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;36&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="m"&gt;37.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Normal"&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="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;37.6&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="m"&gt;39.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Febre"&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="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;39.6&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;41&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Febre alta"&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="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;41&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;retorno&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hipertemia"&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;retorno&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;&lt;strong&gt;early return&lt;/strong&gt;&lt;br&gt;
O que é o early return? É um conceito que consiste em interromper a execução do método assim que a condição for atendida&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nf"&gt;VerificarTemperaturaCorporalv3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;temperatura&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="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;36&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="m"&gt;37.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"Normal"&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="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;37.6&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="m"&gt;39.5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"Febre"&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="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;39.6&lt;/span&gt; &lt;span class="p"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;41&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"Febre alta"&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="n"&gt;temperatura&lt;/span&gt; &lt;span class="p"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="m"&gt;41&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"Hipertemia"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;"Hipotermia"&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;Claro que existem outras formas de melhorarmos esses códigos, me diga, como você faria para tornar ele ainda melhor?&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>VSCode - Extensions</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Thu, 28 Oct 2021 13:08:57 +0000</pubDate>
      <link>https://dev.to/leandroats/vscode-extensions-5a2</link>
      <guid>https://dev.to/leandroats/vscode-extensions-5a2</guid>
      <description>&lt;p&gt;O VSCode é uma ferramenta incrível. Como possui o recurso de Extensões, você consegue aprimorar ainda mais a experiência, deixar tudo com a sua cara e de quebra aumentar a sua produtividade. Vou listar algumas extensões que eu utilizo.&lt;/p&gt;

&lt;p&gt;🎯&lt;a href="https://marketplace.visualstudio.com/items?itemName=adpyke.codesnap&amp;amp;WT.mc_id=devto-blog-leandroats" rel="noopener noreferrer"&gt;&lt;em&gt;CodeSnap - adpyke&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ajuda nos prints 😁&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fadpyke.gallerycdn.vsassets.io%2Fextensions%2Fadpyke%2Fcodesnap%2F1.3.4%2F1625238962906%2FMicrosoft.VisualStudio.Services.Icons.Default" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fadpyke.gallerycdn.vsassets.io%2Fextensions%2Fadpyke%2Fcodesnap%2F1.3.4%2F1625238962906%2FMicrosoft.VisualStudio.Services.Icons.Default" width="256" height="256"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎯&lt;a href="https://marketplace.visualstudio.com/items?itemName=vsls-contrib.codetour&amp;amp;WT.mc_id=devto-blog-leandroats" rel="noopener noreferrer"&gt;&lt;em&gt;CodeTour - Jonathan Carter&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Uma forma bastante interessante de documentar.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fvsls-contrib.gallerycdn.vsassets.io%2Fextensions%2Fvsls-contrib%2Fcodetour%2F0.0.58%2F1625784500119%2FMicrosoft.VisualStudio.Services.Icons.Default" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fvsls-contrib.gallerycdn.vsassets.io%2Fextensions%2Fvsls-contrib%2Fcodetour%2F0.0.58%2F1625784500119%2FMicrosoft.VisualStudio.Services.Icons.Default" width="128" height="128"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;🎯&lt;a href="https://marketplace.visualstudio.com/items?itemName=jmMeessen.jenkins-declarative-support&amp;amp;WT.mc_id=devto-blog-leandroats" rel="noopener noreferrer"&gt;&lt;em&gt;Declarative Jenkinsfile Support - JM Meessen&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pipeline do Jenkins de forma mais amigável.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjmmeessen.gallerycdn.vsassets.io%2Fextensions%2Fjmmeessen%2Fjenkins-declarative-support%2F0.1.0%2F1493632413360%2FMicrosoft.VisualStudio.Services.Icons.Default" width="185" height="256"&gt;
&lt;/h2&gt;
&lt;/blockquote&gt;

&lt;p&gt;🎯&lt;a href="https://marketplace.visualstudio.com/items?itemName=dracula-theme.theme-dracula&amp;amp;WT.mc_id=devto-blog-leandroats" rel="noopener noreferrer"&gt;&lt;em&gt;Dracula Official - Dracula Theme&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Meu tema preferido, normalmente coloco esse padrão de cores nas ferramentas que utilizo.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdracula-theme.gallerycdn.vsassets.io%2Fextensions%2Fdracula-theme%2Ftheme-dracula%2F2.24.0%2F1630671466069%2FMicrosoft.VisualStudio.Services.Icons.Default" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdracula-theme.gallerycdn.vsassets.io%2Fextensions%2Fdracula-theme%2Ftheme-dracula%2F2.24.0%2F1630671466069%2FMicrosoft.VisualStudio.Services.Icons.Default" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;🎯&lt;a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&amp;amp;WT.mc_id=devto-blog-leandroats" rel="noopener noreferrer"&gt;&lt;em&gt;Live Server - Ritwick Dey&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cria um servidor web com  um click.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fritwickdey.gallerycdn.vsassets.io%2Fextensions%2Fritwickdey%2Fliveserver%2F5.6.1%2F1555497731217%2FMicrosoft.VisualStudio.Services.Icons.Default" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fritwickdey.gallerycdn.vsassets.io%2Fextensions%2Fritwickdey%2Fliveserver%2F5.6.1%2F1555497731217%2FMicrosoft.VisualStudio.Services.Icons.Default" width="256" height="256"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;🎯&lt;a href="https://marketplace.visualstudio.com/items?itemName=bierner.markdown-preview-github-styles&amp;amp;WT.mc_id=devto-blog-leandroats" rel="noopener noreferrer"&gt;&lt;em&gt;Markdown Preview Github Styling - Matt Bierner&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Preview do markdown no estilo do GitHub.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbierner.gallerycdn.vsassets.io%2Fextensions%2Fbierner%2Fmarkdown-preview-github-styles%2F0.2.0%2F1618262856034%2FMicrosoft.VisualStudio.Services.Icons.Default" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fbierner.gallerycdn.vsassets.io%2Fextensions%2Fbierner%2Fmarkdown-preview-github-styles%2F0.2.0%2F1618262856034%2FMicrosoft.VisualStudio.Services.Icons.Default" width="128" height="128"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;🎯&lt;a href="https://marketplace.visualstudio.com/items?itemName=humao.rest-client&amp;amp;WT.mc_id=devto-blog-leandroats" rel="noopener noreferrer"&gt;&lt;em&gt;REST Client - Huachao Mao&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Funciona como um client Rest, suporta scripts que são tranquilos de fazer de entender.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhumao.gallerycdn.vsassets.io%2Fextensions%2Fhumao%2Frest-client%2F0.24.5%2F1617725796156%2FMicrosoft.VisualStudio.Services.Icons.Default" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fhumao.gallerycdn.vsassets.io%2Fextensions%2Fhumao%2Frest-client%2F0.24.5%2F1617725796156%2FMicrosoft.VisualStudio.Services.Icons.Default" width="256" height="256"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;🎯&lt;a href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons&amp;amp;WT.mc_id=devto-blog-leandroats" rel="noopener noreferrer"&gt;&lt;em&gt;vscode-icons - VSCode Icons Team&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Uma quantidade gigante de ícones para qualquer linguagem de programação.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fvscode-icons-team.gallerycdn.vsassets.io%2Fextensions%2Fvscode-icons-team%2Fvscode-icons%2F11.6.0%2F1627842034344%2FMicrosoft.VisualStudio.Services.Icons.Default" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fvscode-icons-team.gallerycdn.vsassets.io%2Fextensions%2Fvscode-icons-team%2Fvscode-icons%2F11.6.0%2F1627842034344%2FMicrosoft.VisualStudio.Services.Icons.Default" width="128" height="128"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Referências:&lt;br&gt;
👉 &lt;a href="https://code.visualstudio.com/?WT.mc_id=devto-blog-leandroats" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://draculatheme.com/?WT.mc_id=devto-blog-leandroats" rel="noopener noreferrer"&gt;Dracula Theme&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>vscode</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>.NET 6 features</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Fri, 15 Oct 2021 21:30:57 +0000</pubDate>
      <link>https://dev.to/leandroats/net-6-features-ej9</link>
      <guid>https://dev.to/leandroats/net-6-features-ej9</guid>
      <description>&lt;p&gt;O Oleg Kyrylchuk tem feito vários posts no Twitter sobre algumas novidades do .Net 6. Vou reproduzir por aqui para registrar.&lt;/p&gt;

&lt;p&gt;🎯 &lt;strong&gt;A new configuration helper 'GetRequiredSection` has been added in .NET 6.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It throws an exception if a required configuration section is missing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F8zdudpukjicwckwrkxal.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F8zdudpukjicwckwrkxal.png" alt="Image description" width="680" height="461"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎯 &lt;strong&gt;.NET 6 introduces a new fully async 'PeriodicTimer'.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It's enables waiting asynchronously for timer ticks. It has one method, 'WaitForNextTickAsync', which waits for the next tick of the timer or for the timer to be stopped.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ftk42su65bdvzushb9102.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ftk42su65bdvzushb9102.png" alt="Image description" width="680" height="605"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎯 &lt;strong&gt;Another small improvement in .NET 6.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can access a process path without allocation a new Process instance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F9foc3m9885s0szr85d36.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F9foc3m9885s0szr85d36.png" alt="Image description" width="680" height="118"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎯 &lt;strong&gt;Nice small improvement for ArgumentNullException in .NET 6.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No need to check for null in every method before throwing an exception. Now it is a one-liner.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F4xqzqxppu7bgxc8zha60.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F4xqzqxppu7bgxc8zha60.png" alt="Image description" width="679" height="183"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎯 &lt;strong&gt;New Reflection API in .NET 6 allows you to get nested nullability information.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can specify that an array property must be non-null, but the elements can be null or vice versa. You can get the nullability information for the array elements.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fye014qxwc1kp3ix75l5p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fye014qxwc1kp3ix75l5p.png" alt="Image description" width="680" height="411"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎯 &lt;strong&gt;.NET 6 introduces a new Reflection API for nullability information.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It provides nullability information and context from reflection members:&lt;br&gt;
• ParameterInfo&lt;br&gt;
• FieldInfo&lt;br&gt;
• PropertyInfo&lt;br&gt;
• EventInfo&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fymjaw3bl6xkn5sr6r98m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fymjaw3bl6xkn5sr6r98m.png" alt="Image description" width="680" height="396"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎯 &lt;strong&gt;In .NET 6, the 'JsonPropertyOrderAttribute' has been added to System.Text.Json.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It allows controlling the serialization order of properties. Previously, the serialization order was determined by reflection order.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fnz8qav42zuzblqnoyhae.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fnz8qav42zuzblqnoyhae.png" alt="Image description" width="680" height="400"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎯 &lt;strong&gt;In .NET 6, System.Text.Json exposes notifications for (de)serialization.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There are four new interfaces to implement according to your needs:&lt;br&gt;
• IJsonOnDeserialized&lt;br&gt;
• IJsonOnDeserializing&lt;br&gt;
• IJsonOnSerialized&lt;br&gt;
• IJsonOnSerializing&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F13kdamukybxgidmdvdll.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F13kdamukybxgidmdvdll.png" alt="Image description" width="680" height="499"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🎯 &lt;strong&gt;In .NET 5, you can preserve references for circular references using System.Text.Json.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;But you couldn't ignore them. The  'JsonException' is thrown if circular references have been detected. In .NET 6, you can ignore them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fgb4wg8mbcaok2hr3zpal.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fgb4wg8mbcaok2hr3zpal.png" alt="Image description" width="661" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Referências&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://twitter.com/okyrylchuk" rel="noopener noreferrer"&gt;twitter - Oleg Kyrylchuk&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>dotnet</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>C# 10 features</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Sun, 03 Oct 2021 13:05:02 +0000</pubDate>
      <link>https://dev.to/leandroats/c-10-features-4c20</link>
      <guid>https://dev.to/leandroats/c-10-features-4c20</guid>
      <description>&lt;p&gt;O Oleg Kyrylchuk fez um post no Twitter muito interessante sobre algumas novidades do C# 10. Vou reproduzir por aqui para registrar.&lt;/p&gt;

&lt;p&gt;🎯 &lt;strong&gt;Constant interpolated strings&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Foj11zsz3wrndgohz561v.png" alt="alt text" width="800" height="190"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Extended property patterns&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2F6vki4ceqeh6uucuqpk4f.png" alt="alt text" width="680" height="420"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;File scoped namespaces&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Faroy4gnunbdx414c7x7o.png" alt="alt text" width="800" height="331"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Global usings&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2F5c1q34dznn5zvgf8mbce.png" alt="alt text" width="570" height="385"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Assignment and declaration in the same deconstruction&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Fnn02sw3261drvckn2hw4.png" alt="alt text" width="680" height="313"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Sealed when overriding ToString&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Fgmwn3g8m9ptgpr3ikab1.png" alt="alt text" width="680" height="328"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Record struct and class declarations&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Fzt6a7b46kv65zom43wmt.png" alt="alt text" width="512" height="680"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Struct vs Record struct&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Fv7aqeal7c6kkcr3xn2vp.png" alt="alt text" width="680" height="354"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Parameterless struct constructors&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Fy76k7zj2kyt3ptqanj6e.png" alt="alt text" width="800" height="234"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Lambdas with attributes&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Fogscbd8kbgx63kezo8h6.png" alt="alt text" width="800" height="244"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Explicit return type in lambdas&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Fncf3nlm12lc3cv2pc4hm.png" alt="alt text" width="652" height="388"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;AsyncMethodBuilder attribute applying to the method&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Fo921ko36z7b7ucudwxd4.png" alt="alt text" width="800" height="214"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Expression 'with' in structs&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.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%2Fbiiur23mz5z5x3ez9qo0.png" alt="alt text" width="800" height="285"&gt;
&lt;/h2&gt;

&lt;p&gt;🎯 &lt;strong&gt;Expression 'with' in anonymous types&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.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%2Fae8wog1719w2w5x769rx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fae8wog1719w2w5x769rx.png" alt="alt text" width="800" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Referências&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://twitter.com/okyrylchuk" rel="noopener noreferrer"&gt;twitter - Oleg Kyrylchuk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/okyrylchuk/status/1442194858425274369?s=19" rel="noopener noreferrer"&gt;All my tweets about C# 10 features in one thread.&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>csharp</category>
      <category>dotnet</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>VSCode - C# Minimal APIs</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Sun, 12 Sep 2021 13:23:23 +0000</pubDate>
      <link>https://dev.to/leandroats/vscode-c-minimal-apis-47m7</link>
      <guid>https://dev.to/leandroats/vscode-c-minimal-apis-47m7</guid>
      <description>&lt;p&gt;Olá Devs! 👩‍💻👨‍💻&lt;/p&gt;

&lt;p&gt;Vejo que existe um empenho grande por parte da Microsoft em facilitar cada vez mais o desenvolvimento Web. Hoje as possibilidades são muitas e acredito que existe espaço para todo mundo. Só fica complicado competir se a solução do colega do lado for muito mais simples do que a sua, tudo indica que essa facilidade nasceu por conta disso.&lt;/p&gt;

&lt;p&gt;Resumindo em uma única frase essa nova possibilidade: "ir direto ao ponto"&lt;/p&gt;

&lt;p&gt;Criei um exemplo utilizando um tema que eu gosto muito 😁 &lt;/p&gt;

&lt;h3&gt;
  
  
  Repositório
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/leandroats" rel="noopener noreferrer"&gt;
        leandroats
      &lt;/a&gt; / &lt;a href="https://github.com/leandroats/vscode-minimalapi" rel="noopener noreferrer"&gt;
        vscode-minimalapi
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
 

&lt;p&gt;Comandos utilizados para criar o projeto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;dotnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;MinimalAPI&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-f&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;net6.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;Links e Referências:
&lt;/h3&gt;

&lt;p&gt;👉 &lt;a href="https://dotnetthoughts.net/minimal-api-in-aspnet-core-mvc6/" rel="noopener noreferrer"&gt;Post do "Anuraj"&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://marketplace.visualstudio.com/items?itemName=humao.rest-client" rel="noopener noreferrer"&gt;Rest Client&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>vscode</category>
      <category>dotnet</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>.Net Decompiler</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Mon, 14 Jun 2021 03:15:36 +0000</pubDate>
      <link>https://dev.to/leandroats/net-decompiler-1304</link>
      <guid>https://dev.to/leandroats/net-decompiler-1304</guid>
      <description>&lt;p&gt;Olá Devs! 👩‍💻👨‍💻&lt;/p&gt;

&lt;p&gt;Perder um fonte não é uma preocupação que você deveria ter nos dias de hoje. Temos várias ferramentas que podem auxiliar no processo de armazenagem e versionamento de código, mesmo assim sabemos que isso pode acontecer. Caso aconteça, existe uma opção que pode ser útil. Estou falando dos "Decompilers". A ideia é simples, pegar o binário e gerar o código fonte através dele.&lt;/p&gt;

&lt;p&gt;Pode ser utilizado também como uma forma rápida de consultar o código, sem a necessidade de pegar um fonte completo no repositório, é uma opção.&lt;/p&gt;

&lt;p&gt;Para .Net existem opções interessantes e é importante conhecer alguma.&lt;/p&gt;

&lt;p&gt;Vou listar 3:&lt;br&gt;
🎯 JustDecompile --- &lt;a href="http://www.telerik.com/products/decompiler.aspx" rel="noopener noreferrer"&gt;http://www.telerik.com/products/decompiler.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎯 dotPeek --- &lt;a href="http://www.jetbrains.com/decompiler" rel="noopener noreferrer"&gt;http://www.jetbrains.com/decompiler&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎯 ILSpy --- &lt;a href="http://ilspy.net" rel="noopener noreferrer"&gt;http://ilspy.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nos comentário recebi uma sugestão do &lt;a href="https://dev.to/zobo"&gt;Damjan Cvetko&lt;/a&gt; sobre uma ferramenta interessante também&lt;/p&gt;

&lt;p&gt;🎯 dnSpy --- .NET debugger and assembly editor - &lt;a href="https://github.com/dnSpy/dnSpy" rel="noopener noreferrer"&gt;https://github.com/dnSpy/dnSpy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Então meu código está disponível para qualquer um mesmo compilado? Em teoria sim, mas você pode obfuscar caso ache interessante. Com essa técnica você vai dificultar um pouco a vida de um decompiler.&lt;/p&gt;

&lt;p&gt;O processo de obfuscação protege um pouco mais o binário, mas possui algumas possíveis desvantagens preocupantes: Perda de performance, impossibilidade de uso de reflection e serialization.&lt;/p&gt;

&lt;p&gt;Como tudo nessa vida, tem o lado bom e o lado ruim. Pense bem antes de adotar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/pt-br/visualstudio/ide/dotfuscator/?view=vs-2019" rel="noopener noreferrer"&gt;https://docs.microsoft.com/pt-br/visualstudio/ide/dotfuscator/?view=vs-2019&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>dotnet</category>
      <category>ptbr</category>
      <category>braziliandevs</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Blazor WebView - App Desktop</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Mon, 19 Apr 2021 20:52:42 +0000</pubDate>
      <link>https://dev.to/leandroats/blazor-webview-app-desktop-3736</link>
      <guid>https://dev.to/leandroats/blazor-webview-app-desktop-3736</guid>
      <description>&lt;p&gt;Olá Devs! 👨‍💻&lt;/p&gt;

&lt;p&gt;Sim, eu desenvolvo aplicações para desktop. Existem necessidades específicas que um software desktop acaba sendo aderente.&lt;/p&gt;

&lt;p&gt;Quando falamos sobre desktop hoje, boa parte dos Devs pensa imediatamente em: "Electron". Sei que temos muitas &lt;a href="https://www.electronjs.org/apps" rel="noopener noreferrer"&gt;aplicações&lt;/a&gt; desenvolvidas assim, já desenvolvi assim, mas o resultado não me agrada muito. Quem sabe depois escrevo um post sobre isso. Para esse tipo de aplicação, minha opção acabou sendo um modelo híbrido, uma mistura de WindowsForms + CefSharp + Nancy. O resultado é bem satisfatório, mas acredito que pode melhorar bastante, e é ai que entra o Blazor WebView.&lt;/p&gt;

&lt;p&gt;Estou sempre em busca de novas possibilidades e achei artigos interessantes que me fizeram pensar e querer colocar em prática. Vou aproveitar para conhecer o &lt;a href="https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor" rel="noopener noreferrer"&gt;Blazor&lt;/a&gt;, já que estou devendo esse estudo faz um tempo. &lt;/p&gt;

&lt;p&gt;Com as novas versões de SDK do .Net, sei que muita coisa vai mudar e/ou melhorar com relação ao Desenvolvimento Desktop, mas vou começar estudando essa alternativa. A ideia é entender o funcionamento e criar algo, simples e leve.&lt;/p&gt;

&lt;p&gt;Esse desenvolvimento esta sendo feito com o SDK 6.0 preview e o VS2019. Após a instalação do SDK, você precisa configurar o VS2019 para que ele consiga trabalhar com a versão preview. Para fazer essa configuração é só acessar o menu "Tools -&amp;gt; Options" e ativar a opção conforme na figura.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fieuzmfewpthf1w9t8y13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fieuzmfewpthf1w9t8y13.png" alt="alt text" width="710" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Outro ponto importante é a instalação do WebView2 Runtime, o link esta no final do artigo. &lt;/p&gt;

&lt;h3&gt;
  
  
  Criando o projeto e a solução
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet new winforms -n BlazorDesktop -f net6.0
dotnet new sln
dotnet sln add BlazorDesktop/BlazorDesktop.csproj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Adicionando o pacote webview
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet add package Microsoft.AspNetCore.Components.WebView.WindowsForms --version 6.0.0-preview.3.21201.13
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Criei um repositório que vou atualizar de acordo com as necessidades. Atualizo o post se pintar novidades.&lt;/p&gt;
&lt;h3&gt;
  
  
  Repositório
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/leandroats" rel="noopener noreferrer"&gt;
        leandroats
      &lt;/a&gt; / &lt;a href="https://github.com/leandroats/blazorwebview" rel="noopener noreferrer"&gt;
        blazorwebview
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Prereqs&lt;br&gt;
&lt;a href="https://dotnet.microsoft.com/download/dotnet/6.0" rel="noopener noreferrer"&gt;SDK 6.0.100-preview.3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section" rel="noopener noreferrer"&gt;Microsoft Edge WebView2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Referências&lt;br&gt;
&lt;a href="https://nancyfx.org/" rel="noopener noreferrer"&gt;Nancy - Lightweight Web Framework for .net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cefsharp.github.io/" rel="noopener noreferrer"&gt;CefSharp - Fast web browser for WinForms and WPF Apps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-preview-3/" rel="noopener noreferrer"&gt;ASP.NET Core updates in .NET 6 Preview 3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://visualstudiomagazine.com/articles/2021/04/09/blazorwebview.aspx" rel="noopener noreferrer"&gt;.NET 6 Gets Blazor WebView Controls for WPF, WinForms&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution" rel="noopener noreferrer"&gt;Distribution of apps using WebView2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dotnetcoretutorials.com/2021/03/13/getting-setup-with-net-6-preview/" rel="noopener noreferrer"&gt;Getting Setup With .NET 6 Preview&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>blazor</category>
      <category>dotnet</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>VSCode - C# Top Level Programs</title>
      <dc:creator>Leandro Torres</dc:creator>
      <pubDate>Fri, 12 Mar 2021 12:33:02 +0000</pubDate>
      <link>https://dev.to/leandroats/vscode-c-top-level-programs-17nd</link>
      <guid>https://dev.to/leandroats/vscode-c-top-level-programs-17nd</guid>
      <description>&lt;p&gt;Olá Devs! 👩‍💻👨‍💻&lt;/p&gt;

&lt;p&gt;Em alguns momentos acho interessante escrever determinados códigos em "C#" de forma isolada, assim eu direciono o meu foco somente no que estou escrevendo. Não me preocupo com uma grande aplicação, várias dependências e etc. Atenção, não estou falando de "C# Scripting", isso vou falar em outro post.&lt;/p&gt;

&lt;p&gt;Eu utilizava o LINQPad para isso, ele é uma excelente ferramenta desktop e atende muito bem, só que uma coisa que sempre me incomodou era o fato de ter 3 ferramentas para escrever código "C#". Por padrão eu utilizo VS2019 e VSCode, o ideal era resolver esse problema com eles, seria muito interessante.&lt;/p&gt;

&lt;p&gt;Estava lendo um post do Scott Hanselman e percebi que deixei passar uma novidade do "C# 9" que atenderia muito bem essa necessidade. A novidade, que já não é tão nova assim, é o recurso "Top Level Program".&lt;/p&gt;

&lt;p&gt;Com esse recurso você consegue escrever o código de uma forma mais simples sem a necessidade da classe &lt;em&gt;Program&lt;/em&gt; e do método &lt;em&gt;Main&lt;/em&gt;. Exatamente o que eu gostaria.&lt;/p&gt;

&lt;h3&gt;
  
  
  Código padrão
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Program&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World!"&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;h3&gt;
  
  
  Top Level Program
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;static&lt;/span&gt; &lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Pode parecer uma bobagem, mas isso facilita muito, principalmente quando estou estudando ou explicando algum código para alguém. O Scott Hanselman fala do VS2019, mas pra mim seria perfeito conseguir utilizar o VSCode, fiz o teste e funciona.&lt;/p&gt;

&lt;p&gt;Criei um repositório no github que pode servir como referência. Nele eu tenho um projeto que possui pacotes que eu julgo interessante para esse tipo de abordagem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bogus for .NET - gerar dados de exemplo sem dor de cabeça&lt;/li&gt;
&lt;li&gt;
ConsoleTables - gerar uma tabela no console sem muito esforço &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se pintar mais alguma necessidade de pacote extra, eu atualizo o repositório.&lt;/p&gt;
&lt;h3&gt;
  
  
  Repositório
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/leandroats" rel="noopener noreferrer"&gt;
        leandroats
      &lt;/a&gt; / &lt;a href="https://github.com/leandroats/vscode-csplayground" rel="noopener noreferrer"&gt;
        vscode-csplayground
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      VSCode - C# Top Level Programs
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Comandos utilizados para criar o projeto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;dotnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-n&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;csplayground&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-f&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;net5.0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;dotnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Bogus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;33.0.2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;dotnet&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ConsoleTables&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;--version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;2.4.2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a&gt;&lt;/a&gt;Links e Referências:
&lt;/h3&gt;

&lt;p&gt;👉 &lt;a href="https://visualstudio.microsoft.com/pt-br/downloads/" rel="noopener noreferrer"&gt;VS2019 - Visual Studio 2019&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;VSCode&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.linqpad.net/" rel="noopener noreferrer"&gt;LINQPad&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://github.com/khalidabuhakmeh/ConsoleTables" rel="noopener noreferrer"&gt;ConsoleTables&lt;/a&gt;&lt;br&gt;
👉 &lt;a&gt;Bogus&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.thomasclaudiushuber.com/2020/08/18/c-9-top-level-statements-or-should-i-say-hey-wheres-the-main-method/" rel="noopener noreferrer"&gt;Post do Thomas Claudius Huber - Bem Completo&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://www.hanselman.com/blog/tiny-toplevel-programs-with-c-9-and-smallsharp-and-visual-studio" rel="noopener noreferrer"&gt;Post do "Scott Hanselman"&lt;/a&gt;&lt;br&gt;
👉 &lt;a href="https://renatogroffe.medium.com/novidades-do-c-9-top-level-programs-5f9bd1d8a8ad" rel="noopener noreferrer"&gt;Post do Renato Groffe&lt;/a&gt;&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Até a próxima! 👊 &lt;br&gt;
☕😊 &lt;a href="https://www.buymeacoffee.com/leandroats" rel="noopener noreferrer"&gt;Agora você pode apoiar comprando um café para mim&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ptbr</category>
      <category>vscode</category>
      <category>dotnet</category>
      <category>braziliandevs</category>
    </item>
  </channel>
</rss>
