{"componentChunkName":"component---src-templates-blog-template-tsx","path":"/","result":{"data":{"site":{"siteMetadata":{"description":"~apenas mais um programador é um blog de um desenvolvedor front-end, minimalista e especialista em WordPress. | Desenvolvedor Front-end em Curitiba | Desenvolvedor WordPress em Curitiba | Desenvolvedor Web em Curitiba | Programador em Curitiba","siteDesc":"~apenas mais um programador"}},"postsResults":{"edges":[{"node":{"id":"41bc24f9-b43d-599a-afd5-33cde30ede46","html":"<h2>Introdução</h2>\n<p>O <a href=\"https://www.gatsbyjs.org/\">Gatsby</a> é uma ótima ferramenta para desenvolver lindos projetos utilizando <a href=\"https://reactjs.org/\">React</a> e unindo o recurso de <strong><abbr title=\"Server Side Rendering\">SSR</abbr></strong> e <strong><abbr title=\"Single Page Application\">SPA</abbr></strong>, sem contar que ele é um gerador de arquivos estáticos, que facilita muito <strong>SEO</strong> e <strong>acessibilidade</strong> do seu site.</p>\n<p>O Gatsby, assim como é uma boa prática em todos os projetos <abbr title=\"Single Page Application\">SPA</abbr>, usa o recurso da tag <code class=\"language-text\">&lt;noscript&gt;</code> para exibir uma mensagem para o usuário informando que o site funciona melhor com o <a href=\"https://link\">JavaScript</a> habilitado no navegador.</p>\n<p>E nesse artigo vou explicar commo customizar essa mensagem usando o <a href=\"https://www.gatsbyjs.org/docs/custom-html/\">Customizing html.js</a> recurso do próprio <strong>Gatsby</strong> para alterar o HTML base da aplicação.</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 57.52952755905512%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAAB2UlEQVQoz4WT247TMBBA8xvAtt1N21x9GTuJcytUIL6CSAiJPiA+CfLCA9+IVm4yO3aXdhHa7sORHddzPONxg6Zrf9dN86MoitHUZizLatQaxt2u8XMpwY8AMAohn+NnWZa/GON90L/fo9SAaZpilufIOcOuKXHftWjqCqWUKIS4Ch2GZVlgmmXfg7fvetQK/mw2W7vdbm0cJ1YpsLUprNJgpZJWgkM8jtIKKTycc8sYswDyXmuFNP8afNi32HUN/cBndxptQgrCqjcIBSAXHCn4v6zcOqO9JJmJ6VQJPwSmKrBtG5tl2RwnMWZphqAAtdFu84tQAl7oDqFrOwQV1V4bY6MomglMksQLzc74zB6DKBv2LxfpWUixh6CujBfShxe65kh3ydQYVzpn3AuvMBMXYWFarEx9ztAJqRkoQPhM8izHPL/KTFyE3E3S1MYn4ewyrUo9KylmRpvd3b5MfjwLKQjpudyT7EhMJJ80wPTRmElLOTFXDsGf5+ieD3X4JARQGCcpPcqcFmikLita63WBIKR/Gpy78p9yWqN/iMdVqZR2nm9BuIm/3K3jT+EmGRar9fD6ZjUsV+Fws7gdXtHcjW+e8Pd7sQyHcB0Pt2HkiRL2ebG8Wz8AoxFRGEZwLL4AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/466dc6f262ac64d3289b052750d55f09/bc904/customizando-a-mensagem-noscript-no-gatsby.webp 250w,\n/static/466dc6f262ac64d3289b052750d55f09/4be29/customizando-a-mensagem-noscript-no-gatsby.webp 500w,\n/static/466dc6f262ac64d3289b052750d55f09/03f31/customizando-a-mensagem-noscript-no-gatsby.webp 1000w,\n/static/466dc6f262ac64d3289b052750d55f09/9579c/customizando-a-mensagem-noscript-no-gatsby.webp 1500w,\n/static/466dc6f262ac64d3289b052750d55f09/b1218/customizando-a-mensagem-noscript-no-gatsby.webp 2000w,\n/static/466dc6f262ac64d3289b052750d55f09/d7987/customizando-a-mensagem-noscript-no-gatsby.webp 2032w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/466dc6f262ac64d3289b052750d55f09/43fa5/customizando-a-mensagem-noscript-no-gatsby.png 250w,\n/static/466dc6f262ac64d3289b052750d55f09/c6e3d/customizando-a-mensagem-noscript-no-gatsby.png 500w,\n/static/466dc6f262ac64d3289b052750d55f09/da8b6/customizando-a-mensagem-noscript-no-gatsby.png 1000w,\n/static/466dc6f262ac64d3289b052750d55f09/2e9ed/customizando-a-mensagem-noscript-no-gatsby.png 1500w,\n/static/466dc6f262ac64d3289b052750d55f09/9fabd/customizando-a-mensagem-noscript-no-gatsby.png 2000w,\n/static/466dc6f262ac64d3289b052750d55f09/e7591/customizando-a-mensagem-noscript-no-gatsby.png 2032w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/466dc6f262ac64d3289b052750d55f09/da8b6/customizando-a-mensagem-noscript-no-gatsby.png\"\n          alt=\"Customizando mensagem da tag noscript no Gatsby\"\n          title=\"Customizando mensagem da tag noscript no Gatsby\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Customizando mensagem da tag noscript no Gatsby</figcaption>\n  </figure></p>\n<h2>Copiando o HTML do .cache</h2>\n<p>O Gatsby gera um diretório chamado <code class=\"language-text\">.cache</code> na raiz do seu projeto, <strong>você deve ter iniciado o Gatsby pelo menos uma vez em sua máquina</strong>.</p>\n<p>Dentro dessa pasta tem um arquivo chamado <code class=\"language-text\">default-html.js</code>, basta copiar ele para <code class=\"language-text\">src/html.js</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-bash line-numbers\"><code class=\"language-bash\"><span class=\"token function\">cp</span> .cache/default-html.js src/html.js</code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span></span></pre></div>\n<p>Leia a documentação do Gatsby para mais detalhes.</p>\n<h2>Alterando a mensagem e adicionando uma class</h2>\n<p>Abra o aquivo <code class=\"language-text\">html.js</code> em seu editor favorito, você verá algo como isso:</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-javascript line-numbers\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> React <span class=\"token keyword\">from</span> <span class=\"token string\">'react'</span>\n<span class=\"token keyword\">import</span> PropTypes <span class=\"token keyword\">from</span> <span class=\"token string\">'prop-types'</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> <span class=\"token keyword\">function</span> <span class=\"token constant\">HTML</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">props</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n    <span class=\"token operator\">&lt;</span>html <span class=\"token punctuation\">{</span><span class=\"token operator\">...</span>props<span class=\"token punctuation\">.</span>htmlAttributes<span class=\"token punctuation\">}</span><span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>head<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>meta charSet<span class=\"token operator\">=</span><span class=\"token string\">\"utf-8\"</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>meta httpEquiv<span class=\"token operator\">=</span><span class=\"token string\">\"x-ua-compatible\"</span> content<span class=\"token operator\">=</span><span class=\"token string\">\"ie=edge\"</span> <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>meta\n          name<span class=\"token operator\">=</span><span class=\"token string\">\"viewport\"</span>\n          content<span class=\"token operator\">=</span><span class=\"token string\">\"width=device-width, initial-scale=1, shrink-to-fit=no\"</span>\n        <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n        <span class=\"token punctuation\">{</span>props<span class=\"token punctuation\">.</span>headComponents<span class=\"token punctuation\">}</span>\n      <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>head<span class=\"token operator\">></span>\n      <span class=\"token operator\">&lt;</span>body <span class=\"token punctuation\">{</span><span class=\"token operator\">...</span>props<span class=\"token punctuation\">.</span>bodyAttributes<span class=\"token punctuation\">}</span><span class=\"token operator\">></span>\n        <span class=\"token punctuation\">{</span>props<span class=\"token punctuation\">.</span>preBodyComponents<span class=\"token punctuation\">}</span>\n        <span class=\"token operator\">&lt;</span>noscript key<span class=\"token operator\">=</span><span class=\"token string\">\"noscript\"</span> id<span class=\"token operator\">=</span><span class=\"token string\">\"gatsby-noscript\"</span><span class=\"token operator\">></span>\n          This app works best <span class=\"token keyword\">with</span> JavaScript enabled<span class=\"token punctuation\">.</span>\n        <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>noscript<span class=\"token operator\">></span>\n        <span class=\"token operator\">&lt;</span>div\n          key<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">body</span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">}</span>\n          id<span class=\"token operator\">=</span><span class=\"token string\">\"___gatsby\"</span>\n          dangerouslySetInnerHTML<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span> __html<span class=\"token operator\">:</span> props<span class=\"token punctuation\">.</span>body <span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span>\n        <span class=\"token operator\">/</span><span class=\"token operator\">></span>\n        <span class=\"token punctuation\">{</span>props<span class=\"token punctuation\">.</span>postBodyComponents<span class=\"token punctuation\">}</span>\n      <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>body<span class=\"token operator\">></span>\n    <span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>html<span class=\"token operator\">></span>\n  <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token constant\">HTML</span><span class=\"token punctuation\">.</span>propTypes <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n  htmlAttributes<span class=\"token operator\">:</span> PropTypes<span class=\"token punctuation\">.</span>object<span class=\"token punctuation\">,</span>\n  headComponents<span class=\"token operator\">:</span> PropTypes<span class=\"token punctuation\">.</span>array<span class=\"token punctuation\">,</span>\n  bodyAttributes<span class=\"token operator\">:</span> PropTypes<span class=\"token punctuation\">.</span>object<span class=\"token punctuation\">,</span>\n  preBodyComponents<span class=\"token operator\">:</span> PropTypes<span class=\"token punctuation\">.</span>array<span class=\"token punctuation\">,</span>\n  body<span class=\"token operator\">:</span> PropTypes<span class=\"token punctuation\">.</span>string<span class=\"token punctuation\">,</span>\n  postBodyComponents<span class=\"token operator\">:</span> PropTypes<span class=\"token punctuation\">.</span>array<span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<p>Se o seu arquivo está igual a esse código acima então encontre a tag <code class=\"language-text\">&lt;noscript&gt;</code> e adicione a classe <code class=\"language-text\">gatsby-noscript</code>, <strong>lembrando que é um arquivo JavaScript React, então não é <code class=\"language-text\">class</code>, mas <code class=\"language-text\">className</code></strong>.</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-html line-numbers\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>noscript</span> <span class=\"token attr-name\">key</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>noscript<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>gatsby-noscript<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">className</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>gatsby-noscript<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n  This app works best with JavaScript enabled.\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>noscript</span><span class=\"token punctuation\">></span></span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span></span></pre></div>\n<h3>Adicionando o CSS</h3>\n<p>Para adicionar o CSS vamos criar uma variável chamada <code class=\"language-text\">noscriptStyle</code> entre os imports e o início da função, e iremos atribuir a ela nossos estilos.</p>\n<p>Seria algo como isso:</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-javascript line-numbers\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> noscriptStyle <span class=\"token operator\">=</span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">\n  .gatsby-noscript {\n    /* adicionamos os CSS para a mensagem aqui... */\n    font-family: -apple-system, BlinkMacSystemFont, Roboto, Helvetica Neue, Helvetica, Arial, sans-serif;\n    font-size: 16px;\n    text-align: center;\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    width: 100%;\n    display: block;\n    padding: 15px;\n    background: #f00;\n    color: #fff;\n    z-index: 10000;\n  }\n</span><span class=\"token template-punctuation string\">`</span></span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<p>Feito isso vamos inserir essa variável dentro da tag <code class=\"language-text\">&lt;noscript&gt;</code>, junto com a mensagem.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-javascript line-numbers\"><code class=\"language-javascript\"><span class=\"token operator\">&lt;</span>noscript key<span class=\"token operator\">=</span><span class=\"token string\">\"noscript\"</span> id<span class=\"token operator\">=</span><span class=\"token string\">\"gatsby-noscript\"</span> className<span class=\"token operator\">=</span><span class=\"token string\">\"gatsby-noscript\"</span><span class=\"token operator\">></span>\n  <span class=\"token operator\">&lt;</span>style<span class=\"token operator\">></span><span class=\"token punctuation\">{</span>noscriptStyle<span class=\"token punctuation\">}</span><span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>style<span class=\"token operator\">></span>\n  This app works best <span class=\"token keyword\">with</span> JavaScript enabled<span class=\"token punctuation\">.</span>\n<span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>noscript<span class=\"token operator\">></span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span></span></pre></div>\n<h2>Demonstração</h2>\n<p>Para ver como ficou basta desativar o javascript do seu navegador aqui mesmo nessa página que a mensagem vai aparecer.</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 63.7%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsSAAALEgHS3X78AAADE0lEQVQ4y43ObU9bZRgH8PMF/Ai+N/HExE2CPAijXVdaSh84cA5tKQXWKV02ngpjGnyxRWN0SgvKRmHTNbwgPGjHW6OfwPhiL4Yz0ywbNMDYBrT04T6Hc/+97tMlJkYTT/LL/7ru+1xXbumXXO6Nhzj59Clw/TER+YBsvvLAxPWH+G+/VV0jX9zXoUmPJiaC+HoWSKaAG18C00m6ovz8BtV0NncLSC8A82lg4TZwc776j5CcqfpqGpiZxc7Uxz9Jubm5DqysgLDy0hIrLd7WsbysY21Vx/r630T/vcg1HasrdLamm5m7eimT0Yt3vytjYwMsk1mXRj9LKdfSS5i6+a05ObvIJ6Zv8Q8pp765wz+aXcRkKo0ryXlMJtNk3uqvzixYRD9OmUiljU/uLONqKp2V3q5vVWqavTjd6DJP1bfyjuAFrvVeJHHe1tHLPUqUe9UB7g70Uh/lLn+Eu+m8vbOP29waP93QincaXEZNcztONbZlpUZnl2L39sDm6TbPtHXzaDzBo4MJ7vD3wBEglC5aei4QgeCkZedoqUhbewjNbpVoht0XQXNbMCs1ODuVFk8IZ9yaSRfcQ69p12LcSS+yhinP+sJV3iq7JcQdvh4uZt5r7TJs3jCa3FpWqmnxKXUOBe/a/Wat3c+bXCoXL23xBLmNhsRgk6uL150N8HpHh6XuFVGLmVqbz6h3dqHWHshKSiSu9LyfQDg2YobOj3C17xLU6CVofZfRPTAErZ+yf8iq/03w/LBgRONXoA0MZaXNzT+UUpnjsFAxj/Jls1gyeIWZvFQ+4YVjxo+LVaL+J3GeLzB+lGcG6MvtvPhB+v3Rn515GHjJdLATE6zC8Hz/GYrFY/yfzzQBGjFF/fxF4Z5079cfAxtPf8bRYaVymK+w3Wf77PGTJyy3vc329vbY7u6uRdQ7lDmytbVl3R8cHLBCocJeHpRKtBTbuf1VKRLrfy02HJdHRhLy2Ni4/EH8ohwbHJQvxGJyKBSSw0I4bAlSrQaDcsDvl1VVlePxQXksMSEPD4+9OTo6/tblodHX/wLiZ62C7CabMwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/badd9b32d413e6926cf600ed547ae994/bc904/customizando-a-mensagem-noscript-no-gatsby-demo.webp 250w,\n/static/badd9b32d413e6926cf600ed547ae994/4be29/customizando-a-mensagem-noscript-no-gatsby-demo.webp 500w,\n/static/badd9b32d413e6926cf600ed547ae994/03f31/customizando-a-mensagem-noscript-no-gatsby-demo.webp 1000w,\n/static/badd9b32d413e6926cf600ed547ae994/9579c/customizando-a-mensagem-noscript-no-gatsby-demo.webp 1500w,\n/static/badd9b32d413e6926cf600ed547ae994/b1218/customizando-a-mensagem-noscript-no-gatsby-demo.webp 2000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/badd9b32d413e6926cf600ed547ae994/43fa5/customizando-a-mensagem-noscript-no-gatsby-demo.png 250w,\n/static/badd9b32d413e6926cf600ed547ae994/c6e3d/customizando-a-mensagem-noscript-no-gatsby-demo.png 500w,\n/static/badd9b32d413e6926cf600ed547ae994/da8b6/customizando-a-mensagem-noscript-no-gatsby-demo.png 1000w,\n/static/badd9b32d413e6926cf600ed547ae994/2e9ed/customizando-a-mensagem-noscript-no-gatsby-demo.png 1500w,\n/static/badd9b32d413e6926cf600ed547ae994/9fabd/customizando-a-mensagem-noscript-no-gatsby-demo.png 2000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/badd9b32d413e6926cf600ed547ae994/da8b6/customizando-a-mensagem-noscript-no-gatsby-demo.png\"\n          alt=\"Customizando mensagem da tag noscript no Gatsby - Demonstração\"\n          title=\"Customizando mensagem da tag noscript no Gatsby - Demonstração\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Customizando mensagem da tag noscript no Gatsby - Demonstração</figcaption>\n  </figure></p>\n<h2>Bônus</h2>\n<p>Você pode editar qualquer coisa nesse template JavaScript, só atenção para as variáveis props <code class=\"language-text\">htmlAttributes</code>, <code class=\"language-text\">headComponents</code>, <code class=\"language-text\">bodyAttributes</code>, <code class=\"language-text\">preBodyComponents</code>, <code class=\"language-text\">postBodyComponents</code> e <code class=\"language-text\">body</code>, essas props fazem o Gatsby funcionar corretamente.</p>\n<p>Eu mesmo dei uma modificada para deixar dentro do padrão (eslint) do meu projeto, pode ver o código-fonte do meu html customizado <a href=\"https://github.com/nandomoreirame/nandomoreira.dev/blob/dev/src/html.js#L4\">aqui no repositório do meu site</a>.</p>\n<p>Quanto ao CSS, use e abuse, você pode mudar bastante coisa no seu site com ele, como eu tenho o header fixo no topo tive que <a href=\"https://github.com/nandomoreirame/nandomoreira.dev/blob/dev/src/html.js#L20-L22\">mover ele <code class=\"language-text\">55px</code> do topo para posicionar a mensagem</a>.</p>\n<p>É isso ai, divirta-se!</p>\n<p><code class=\"language-text\">{goodbye}</code></p>","excerpt":"Introdução O Gatsby é uma ótima ferramenta para desenvolver lindos projetos utilizando React e unindo o recurso de SSR e SPA, sem contar que ele é um…","timeToRead":3,"frontmatter":{"category":["Gatsby"],"date":"há 8 anos","description":"Nesse artigo vou explicar como customizar a mensagem da tag noscript usando o recurso do próprio Gatsby para alterar o HTML base da aplicação.","path":"/customizando-a-mensagem-noscript-no-gatsby","tags":["Dicas","Gatsby","React"],"title":"Customizando mensagem da tag noscript no Gatsby","image":{"publicURL":"/static/customizando-a-mensagem-noscript-no-gatsby-466dc6f262ac64d3289b052750d55f09.png","name":"customizando-a-mensagem-noscript-no-gatsby"}},"fields":{"readingTime":{"words":565}}}},{"node":{"id":"0ee90ce4-479b-591e-babb-dd97aa70b327","html":"<h2>Introdução</h2>\n<p>Todo mundo já fez essa pergunta para si próprio: “Afinal, quem sou eu?”, se você ainda não fez, vai por mim, um dia você irá parar e refletir sobre sua essência e sua personalidade.</p>\n<p>Quem assistiu <em>Dragon Ball Z</em> nos anos 90 lembra da famosa frase de abertura “Oi! Eu sou o Goku!” (sim, ficamos velhos), pois bem... eu sempre gosto de repetir o mantra em minha mente, igual nosso herói de infância, “Eu sou o Fernando!”.</p>\n<h2>Quem sou (como estou) agora?</h2>\n<p>Oi! Eu sou o Fernando! Atualmente tenho 29 anos (faltando apenas 23 dias para fazer 30) e eu me peguei refletindo, quem é o Fernando de 29 anos e quem será o Fernando de 30 anos daqui alguns dias?</p>\n<p>Em um passado não tão distante eu não ligava muito para quem eu tinha me tornado, não ligava para quantas pessoas eu impactava com minhas ações.</p>\n<p>Não entendia na verdade.</p>\n<p>No passado eu era uma outra pessoa, e essa afirmação me faz pensar em quem eu sou agora e quem serei no futuro.</p>\n<blockquote>\n<p>PS. Muitas coisas que vou escrever aqui, se o Fernando do passado pudesse ler ele me mataria.</p>\n</blockquote>\n<p>Hoje sou intolerante a lactose, talvez por conta da quantidade de leite e derivados que eu comia no passado.</p>\n<p>Eu gosto de café sem açúcar e eu prefiro sentir mais o amargor que o doçe nas comidas.</p>\n<p>Eu gosto muito de Rap hoje, mais do que de Rock.</p>\n<p>Estou vegetariano, e cara como isso é bom!</p>\n<p>Defendo o consumo consciente e penso no futuro do planeta.</p>\n<p>Gosto de códigos mais do que de chocolate e de animais mais do que de pessoas.</p>\n<p>Sou minimalista (?). Sim, eu sou, e eu não sinto mais vontade de comprar coisas fúteis, o minimalismo tem me ensinado muitas coisas e uma delas é não se apegar a bens materiais, eles acabam, estragam, você perde ou é roubado.</p>\n<blockquote>\n<p>PS. Já fui criticado por ser minimalista e ter Macbook e iPhone, minimalismo é viver com pouco, apenas o necessário, entenda isso e você irá bem. O Fernando do passado me fez comprar um iPhone, o Fernando de agora não teria comprado.</p>\n</blockquote>\n<h2>Você não é, você está</h2>\n<p>Eu gosto muito desse texto do <strong>João Cristofolini</strong> que ele escreve em <strong>administradores.com.br</strong>, que diz: <a href=\"http://administradores.com.br/artigos/carreira/voce-nao-e-seu-cargo-voce-esta-no-seu-cargo/103085/\">“Você não é seu cargo, você está no seu cargo”</a>, é um texto curto mas me fez refletir.</p>\n<blockquote>\n<p>Seu emprego, cargo ou trabalho é apenas um personagem de você atuando nesse mundo transitório. <small>João Cristofolini</small></p>\n</blockquote>\n<p>Sim, de fato você não é onívoro, carnívoro ou vegetariano, é sempre um estado, uma transição.</p>\n<p>Eu me considerava um viciado em carne, eu repetia a frase <em>“bacon é vida!”</em> o tempo todo.</p>\n<p>Eu era um <em>“roqueirinho”</em> que vestia preto o tempo todo, agora gosto de músicas em geral e me visto diferente de antes.</p>\n<p>Eu estava em um momento diferente, cercado de pessoas diferentes que fizeram eu “ser” uma pessoa diferente.</p>\n<h2>Como estarei daqui 30 anos?</h2>\n<p>Daqui uns dias completo 30 (tiozão!) e isso me faz pensar como estarei com 60 anos.</p>\n<p>Será que gostarei das mesmas coisas?</p>\n<p>Estarei morando na mesma cidade ou no mesmo país?</p>\n<p>Gostaria de ser rico (será?).</p>\n<p>O fato é, o seu passado me fez ser quem sou agora e estar no momento que estou agora, e são as decisões que tomarei agora que irão traçar o meu destino rumo aos meus 60 anos.</p>\n<p>E você, quem é você? Ou melhor em que momento da sua vida você está agora?</p>\n<p>A vida passa rápido! Aproveite cada momento presente pois ela é bela, reflita sobre suas ações e sempre evolua!</p>\n<p><code class=\"language-text\">/the-end</code></p>","excerpt":"Introdução Todo mundo já fez essa pergunta para si próprio: “Afinal, quem sou eu?”, se você ainda não fez, vai por mim, um dia você irá parar e…","timeToRead":3,"frontmatter":{"category":["Reflexões"],"date":"há 8 anos","description":"Todo mundo já fez essa pergunta para si próprio: “Afinal, quem sou eu?”, se você ainda não fez, vai por mim, um dia você irá parar e refletir sobre sua essência e sua personalidade.","path":"/como-esta-voce-agora-e-como-estara-daqui-30-anos","tags":["reflexoes","vida"],"title":"Como está você agora e como estará daqui 30 anos?","image":{"publicURL":"/static/hidethepainharold-4a1d1e74ca10e13295dd6e76f4ab8ffc.jpg","name":"hidethepainharold"}},"fields":{"readingTime":{"words":605}}}},{"node":{"id":"8776b2e0-c118-5d56-a075-1cabe82d72f8","html":"<h2>Música</h2>\n<p>Música para esse artigo é: <strong>\"Estou na mão\" de TNT</strong>, <a href=\"https://open.spotify.com/track/0j2pDZRqF3cW7E5jlP5Yhv?si=YXweBEICQbquROummLyb3A\">ouça aqui</a>.</p>\n<p><a href=\"https://open.spotify.com/track/0j2pDZRqF3cW7E5jlP5Yhv?si=YXweBEICQbquROummLyb3A\">https://open.spotify.com/track/0j2pDZRqF3cW7E5jlP5Yhv?si=YXweBEICQbquROummLyb3A</a></p>\n<p><br/>Trecho:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-text line-numbers\"><code class=\"language-text\">O tempo já passou pra nós dois\nQuando a lua caiu no telhado\nOutra menina já foi me chamar\nQuando você for falar comigo\n\nEu só quero amar\nEu só quero amar\nEu só quero amar você\nEu tô na mão</code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<h2>Introdução aleatória</h2>\n<p>Domingo, 14 de outubro de 2018, eu passei por um dos meus melhores finais de semana da minha meia vida, conheci pessoas novas e troquei muitas ideias aleatórias com essas pessoas.</p>\n<p>Estou escrevendo esse texto para agradecer por essas pessoas terem aparecido (aleatoriamente) por aqui, sem motivo, sem julgamentos e com a mente aberta.</p>\n<p>Pessoas essas que me fizeram entender um pouco mais a minha existência, refletir sobre o sentido (da minha) vida, coisas que só se passavam pela minha cabeça e que eu pude contar para essas pessoas sem julgamento nenhum.</p>\n<p>Esse texto é sobre alguns dos pensamentos que coloquei para fora durante esses 3 dias.</p>\n<h2>Não ligue para o que os outros pensam de você</h2>\n<p>Uma pessoa maravilhosa me disse na sexta-feira: <em><strong>“As pessoas estão mais preocupadas com elas mesmas”</strong></em></p>\n<p>Eu sempre me preocupei com o que os outros estavam pensando de mim, o que pensavam da minha roupa e da minha aparência.</p>\n<p>Após esse comentário, em uma conversa aleatória, eu parei pra pensar que a vida é mais simples que imaginamos, a gente tem essa mania <em>besta</em> de complicar as coisas.</p>\n<p>Pensar que os outros estão preocupados com a vidinha imperfeita delas é uma dos melhores pensamentos que terei de hoje em diante.</p>\n<h2>Não julgue</h2>\n<p>Fazer julgamentos é uma atitude muito comum entre as pessoas, a gente julga a todo instante.</p>\n<p>Você com certeza já julgou hoje.</p>\n<p>Julgou a moça do caixa no mercado, quando ela demorou para passar o troco.</p>\n<p>Julgou quando uma cara aleatório na rua, te pediu dinheiro na rua <em>pro</em> gole dele;</p>\n<p>Você juntou as pessoas a sua volta, tentando adivinhar o pensamento delas, a partir do seu ponto de vista.</p>\n<p>Esses são julgamentos comuns entre as pessoas, eu mesmo já tive vários desses durante minha meia vida.</p>\n<p>Eu te desafio a fazer um teste, saia um dia na rua sem julgar as pessoas, apenas viva, se entregue, não tente se redimir, se submeter, se desculpar... apenas não julgue.</p>\n<h2>Aprecie as pequenas belezas da vida</h2>\n<p>Não ligar para o que os outros pensam de você e não julgar as pessoas a sua volta são os primeiros passos para começar a apreciar as belezas que existem na vida.</p>\n<p>Eu comecei a olhar pequenas coisas que estão a minha volta com outros olhos, passei a olhar pequenos detalhes da vida que antes eu não enxergava.</p>\n<blockquote>\n<p>“As pessoas estão mais preocupadas com elas mesmas” <small>Pessoa incrível que apareceu aleatoriamente na minha vida</small></p>\n</blockquote>\n<p>Eu te proponho um outro desafio: <strong>Tente olhar para coisas menores a sua volta</strong>.</p>\n<p>Você vai descobrir coisas que não via antes e muitas vezes elas nem existiam para você.</p>\n<p>Tente não apenas olhar, mas tente apreciar, tente enxergar com outros olhos, veja o quanto essas coisas são belas.</p>\n<p>Olhe para essas coisas sem julgamento, e pense: <strong><em>“Nossa como isso é incrível! É lindo, é maravilhoso!”</em></strong>, Você me promete que vai exercitar isso?</p>\n<h2>Qual o sentido da vida?</h2>\n<p>Provavelmente você já se fez essa pergunta, e vai por mim, ela não tem uma resposta.</p>\n<p>Não se você fizer a pergunta dessa forma.</p>\n<p>E se você mudar um pouco ela? Seria uma mudança bem sutil.</p>\n<p><strong>Qual o sentido da minha vida?</strong></p>\n<p>Essa pergunta aparenta ser mais fácil de responder, não é mesmo?</p>\n<p>Pois é, ela é muito mais fácil de responder do que você imagina.</p>\n<p>Se você está procurando o sentido da sua vida, eu tenho a fórmula, e essa fórmula é baseada em apenas um único ingrediente.</p>\n<ol>\n<li>Apenas viva.</li>\n</ol>\n<p>A vida foi criada por Deus (aquele divino sabe, uns o chamam pai, outros de irmão, outros de energia pura, outros de matéria) para ser vivida, então porque não viver?</p>\n<p>Faça o que você gosta, faça as outras pessoas felizes, exercite dar mais amor para as pessoas a sua volta e para o planeta, o qual você está destruindo nesse momento.</p>\n<p>Tudo é perecível, tudo acaba, sua vida, a vida de seus amigos, sua família, as plantas, animais e o planeta, todos se vão, voltam para o pó estelar de onde todos vieram.</p>\n<blockquote>\n<p>Viva pois tudo vai se passar e você vai estar aí, marcando, com olhos fechados para sua própria vida.</p>\n</blockquote>\n<p><strong>Apenas Viva!</strong></p>\n<p>// Fim.</p>","excerpt":"Música Música para esse artigo é: \"Estou na mão\" de TNT, ouça aqui. https://open.spotify.com/track/0j2pDZRqF3cW7E5jlP5Yhv?si=YXweBEICQbquROummLyb3A…","timeToRead":4,"frontmatter":{"category":["vida"],"date":"há 8 anos","description":"Domingo, 14 de outubro de 2018, eu passei por um dos meus melhores finais de semana, conheci pessoas novas e troquei muitas ideias aleatórias com essas pessoas.","path":"/role-aleatorio-com-conversas-aleatorias","tags":["pensamentos","aleatorio","geral"],"title":"Role aleatório com conversas aleatórias gerou pensamentos aleatórios","image":{"publicURL":"/static/role-aleatorio-ronaldinho-9249513884264a66181df95288a0066b.jpeg","name":"role-aleatorio-ronaldinho"}},"fields":{"readingTime":{"words":760}}}},{"node":{"id":"66291d1d-f10b-5f11-b316-fddc11a3f53b","html":"<p>Música para esse artigo é: <strong>\"Deriram\" de Natiruts</strong>, <a href=\"https://open.spotify.com/track/7tOXrVF1kPuf8lLXCfBywn\">ouça aqui</a>.\n<br/>Trecho:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-text line-numbers\"><code class=\"language-text\">Me sinto leve\nA força que me rege é a luz do sol\nOuvindo reggae\nCom o pensamento à frente, o sentimento bom</code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span></span></pre></div>\n<hr>\n<h2>Reflexões - Think about it.</h2>\n<blockquote>\n<p><strong>Você já parou para pensar o quanto você é manipulado pelos outros?</strong></p>\n</blockquote>\n<blockquote>\n<p><strong>Já parou para pensar em que ponto da sua vida você está nesse momento?</strong></p>\n</blockquote>\n<blockquote>\n<p><strong>Já pensou em mudar de vida, de atitudes e ser uma pessoa consciente e melhor?</strong></p>\n</blockquote>\n<blockquote>\n<p><strong>Pensar em avaliar suas atitudes e suas ações, se elas são boas para os outros a sua volta?</strong></p>\n</blockquote>\n<p>Essas são umas das reflexões que ando fazendo nos últimos meses.</p>\n<p>Esses questionamentos vêm e vão com o passar dos dias.</p>\n<p>Eles sempre voltam quando leio algo que me choca na internet ou quando estou lendo algum livro importante, ou quando tenho uma conversa com alguém que me inspira.</p>\n<h2>Não seja uma pessoa medíocre</h2>\n<p>Não ser uma pessoa manipulada pela mídia é algo extremamente difícil, ir com a maioria é bem fácil que você faz no automático.</p>\n<p>Todo mundo quer ser <strong>FODA</strong>, mas poucos agem para alcançar o seu ápice na vida.</p>\n<p>Saber que você é manipulado pelos outros a fazer o que querem é o primeiro passo para não ser uma pessoa medíocre. #ficadica</p>\n<h2>Mudanças</h2>\n<p>Esse ano está sendo um ano de mudanças na minha vida, mudanças ótimas, difíceis, mas ótimas.</p>\n<h3>O árduo caminho para o empreendedorismo</h3>\n<p>Eu nunca pensei que seria um empreendedor, agora lendo sobre isso vejo que todos somos, qual o nosso empreendimento? <strong>A vida!</strong>.</p>\n<p>Mas não é sobre esse empreendimento que vim falar aqui, é sobre a minha entrada na <strong>Nossa Causa</strong>.</p>\n<p>Ainda estou no segundo mês como sócio/parceiro da Nossa Causa e já sinto no total controle da minha vida profissional.</p>\n<h3>Sua, Minha, Nossa Causa</h3>\n<p>Com esse novo trabalho eu comecei a fazer esses questionamentos e mais, comecei a questionar:</p>\n<blockquote>\n<p><strong>Será que minhas ações trazem coisas boas ou coisas ruins para o mundo?</strong></p>\n</blockquote>\n<blockquote>\n<p><strong>Afinal qual é a minha causa? Causa que defenderei até o fim. Seriam os idosos? As mulheres? Pessoal LGBT? Pessoas com deficiência? Os animais? O planeta?</strong></p>\n</blockquote>\n<p>Pense sobre isso e responda a essas perguntas para você mesmo.</p>\n<h3>Autoconhecimento</h3>\n<p>Estou em um momento de autoconhecimento, tentando conhecer meus limites, meus anseios, meus desejos e enxergar a minha vida por outro ângulo.</p>\n<p>Eu estou tentando tomar minhas próprias decisões (pelo menos acho que estou hehehe).</p>\n<blockquote>\n<p><strong>Você já pensou em desistir do que você faz? Desistir do seus sonhos? Eu já!</strong></p>\n</blockquote>\n<p>Antes de entrar na Nossa Causa, eu estava em um momento de incertezas, muito triste com minha vida, talvez com início de depressão (quem sabe), vivia trancado em casa, enfim, totalmente desgostoso.</p>\n<p>Decidi que precisava sair dessa deprê, sair de casa, tomar um sol e conhecer pessoas.</p>\n<p>E quase dois meses depois eu pareço outra pessoa, estou inspirado, motivado, conheci pessoas legais na NC, tenho novos desafios e estou bem comigo mesmo.</p>\n<h2>Colecione momentos, não coisas</h2>\n<p><code class=\"language-text\">#BeMinimalist</code></p>\n<p>Hoje estou me desfazendo de algumas coisas, objetos, roupas e pessoas também.</p>\n<p>Se eu não estou usando ou não está me trazendo benefício algum, faço uma doação, me afasto, reciclo ou, em último caso, jogo fora.</p>\n<p>Meu objetivo com isso é:</p>\n<ol>\n<li>[ ✔︎ ] Consumir menos, consequentemente economizar $;</li>\n<li>[ ✔︎ ] Apreciar mais os momentos da minha pequena vida;</li>\n<li>[ ✔︎ ] Focar no que é importante para meu corpo e minha mente;</li>\n</ol>\n<hr>\n<h2>Concluindo..</h2>\n<p>No momento meus objetivos são:</p>\n<ul>\n<li>Ler mais;</li>\n<li>Comer melhor;</li>\n<li>Estudar mais;</li>\n<li>Ter mais tempo p/ passeios;</li>\n<li>Ser minimalista e reduzir o consumo de coisas;</li>\n</ul>\n<p>Espero que dure.</p>\n<p>// done.</p>","excerpt":"Música para esse artigo é: \"Deriram\" de Natiruts, ouça aqui.\nTrecho: Reflexões - Think about it. Você já parou para pensar o quanto você é manipulado…","timeToRead":3,"frontmatter":{"category":["vida"],"date":"há 8 anos","description":"Você já parou para pensar o quanto você é manipulado pelos outros? Já parou para pensar em que ponto da sua vida você está nesse momento?","path":"/hoje-o-momento-e-de-ser-e-estar","tags":["vida","minimalismo","bem estar","motivação","reflexões"],"title":"Hoje o momento é de SER e ESTAR e não de TER!","image":{"publicURL":"/static/2018-10-05-hoje-o-momento-e-de-ser-e-estar-ecc9c080fcca9fc5356a3fbbb779ab5f.jpg","name":"2018-10-05-hoje-o-momento-e-de-ser-e-estar"}},"fields":{"readingTime":{"words":623}}}},{"node":{"id":"8215d5ba-46f1-53c4-9b68-784f5c2aab4b","html":"<h3>Navegadores</h3>\n<ul>\n<li><strong><a href=\"https://www.google.com.br/chrome/browser/desktop/index.html\">Google Chrome</a></strong>: MELIOR navegador de todos os tempos.</li>\n<li><strong><a href=\"https://www.google.com.br/chrome/browser/canary.html\">Google Chrome Canary</a></strong>: Uso ele pra estar na frente nas atualizações do <a href=\"https://www.google.com.br/chrome/browser/desktop/index.html\">Chrome</a> :D</li>\n<li><strong><a href=\"https://www.mozilla.org/en-US/firefox/developer/\">Firefox Developer Edition</a></strong>: Segundo MELIOR navegador de todos os tempos.</li>\n<li><strong><a href=\"https://www.opera.com/pt-br/computer/beta\">Opera e Opera Developer</a></strong>: Terceiro MELIOR navegador de todos os tempos.</li>\n</ul>\n<h3>Desenvolvimento</h3>\n<ul>\n<li><strong><a href=\"https://hyper.is/\">Hyper</a></strong>: Um terminal foda feito com Javascript, HTML e CSS.</li>\n<li><strong><a href=\"https://code.visualstudio.com/\">Visual Studio Code</a></strong>: Um editor foda! Ele foi criado pela Microsoft e pasmem, ele é open source 😱</li>\n<li><strong><a href=\"https://www.sublimetext.com/3\">Sublime Text 3</a></strong>: Sim, ainda uso o Sublime Text, mas não como editor padrão.</li>\n<li><strong><a href=\"https://docs.docker.com/docker-for-mac/\">Docker for mac</a></strong>: Que desenvolvedor hoje desenvolve sem docker hein!? #PELAMORDEODIN</li>\n<li><strong><a href=\"https://www.getpostman.com/\">Postman</a></strong>: Um app muito útil para consultas de APIs.</li>\n</ul>\n<h3>Organização, Emails e Tarefas</h3>\n<ul>\n<li><strong><a href=\"https://sparkmailapp.com/\">Spark mail app</a></strong>: Sempre estive em busca de um gerenciador de emails que chutasse bundas, e sim ele é o cara! Eu uso no computador e no Celular.</li>\n<li><strong>iCalendar/Google Calendar</strong>: Para todas as minhas me lembrar de tarefas e reuniões no celular e computador.</li>\n<li><strong><a href=\"https://trello.com/\">Trello</a></strong>: Onde organizo meus projetos, planos e onde coloco muitas ideias malucas que geralmente me esquecerei mais tarde.</li>\n<li><strong><a href=\"http://evernote.com/\">Evernote</a></strong>: Com certeza o melhor app para notas que existe, antes eu usava o <a href=\"http://www.bear-writer.com/\">Bear</a> mas acabei migrando para o <strong>Evernote</strong> mesmo.</li>\n<li><strong><a href=\"https://habitica.com/\">Habitica</a></strong>: Onde listo meus hábitos (ruins e bons) e atividades diárias que quero que se tornem hábitos.</li>\n<li><strong><a href=\"http://organizze.com.br/\">Organizze</a></strong>: Um webapp para cotrole financeiro pessoal.</li>\n<li><strong><a href=\"http://controlle.com/\">Controlle</a></strong>: Um webapp para cotrole financeiro para empresas.</li>\n</ul>\n<h3>Design e UX Design</h3>\n<ul>\n<li><strong><a href=\"https://sketchapp.com/\">Sketch</a></strong>: App que uso para criar telinhas legais.</li>\n<li><strong><a href=\"\">Adobe Photoshop CC</a></strong>: Eu uso o Photoshop apenas para layouts de clientes, não costumo fazer muita coisa nele.</li>\n<li><strong><a href=\"https://zeplin.io/\">Zeplin</a></strong>: Útil para desenvolvimento, após desenhar no Sketch ou no Photoshop eu exporto para o Zeplin antes do desenvolvimento.</li>\n</ul>\n<h3>Comunicação</h3>\n<ul>\n<li><strong><a href=\"https://slack.com/\">Slack</a></strong>: MELIOR app para comunicação.</li>\n<li><strong><a href=\"https://www.skype.com/pt-br/get-skype/\">Skype</a></strong>: Segundo melhor app para comunicação.</li>\n<li><strong><a href=\"https://www.messenger.com/\">Facebook Messenger</a></strong>: Terceiro melhor app para comunicação.</li>\n</ul>\n<h3>Leitura</h3>\n<ul>\n<li><strong><a href=\"https://getpocket.com/\">Pocket</a></strong>: Eu uso muito para salvar artigos de sites para ler mais tarde. Uso bastante integrado com o <a href=\"https://www.mozilla.org/en-US/firefox/developer/\">Firefox Developer Edition</a>.</li>\n<li><strong><a href=\"https://feedly.com/\">feedly</a></strong>: Onde faço a leitura dos sites que assino os feeds.</li>\n<li><strong><a href=\"https://itunes.apple.com/us/app/kindle/id405399194?mt=12\">Kindle for Mac</a></strong>: Os livros que estou lendo no meu <a href=\"https://www.amazon.com/dp/B00OQVZDJM\">Kindle Paperwhite</a> eu também leio no Macbook, e ele sincroniza as páginas do livro.</li>\n</ul>\n<h3>Música</h3>\n<ul>\n<li><strong><a href=\"https://www.spotify.com/br/\">Spotify</a></strong>: SEMPRE! No computador, celular e PlayStation.</li>\n</ul>\n<h3>Utilitários</h3>\n<ul>\n<li><strong><a href=\"https://www.alfredapp.com/\">Alfred 3</a></strong>: Abrir apps, fazer cálculos básicos, fazer uma busca no Google quando não estou com o navegador aberto.</li>\n<li><strong><a href=\"https://1password.com/\">1Password</a></strong>: O App que uso para gerenciar todas as minhas senhas. Uso também a extensão no Chrome para fazer login rápido nas aplicações.</li>\n<li><strong><a href=\"http://lightheadsw.com/caffeine/\">Caffeine</a></strong>: Esse app serve para não hibernar o mac quando estou assistindo algum video/filme.</li>\n<li><strong><a href=\"https://www.cheatsheetapp.com/CheatSheet/\">CheatSheet</a></strong>: Um app muito útil para saber os atalhos de teclado de seus apps.</li>\n<li><strong><a href=\"https://fiplab.com/apps/memory-clean-for-mac\">Memory Clean</a></strong>: Uso esse app para monitorar o consumo de memória do meu Macbook, to usando a versão 1.</li>\n<li><strong><a href=\"https://www.spectacleapp.com/\">Spectacle</a></strong>: Eu realmente não consigo viver sem esse app, ele é bem útil, com apenas um atalho no teclado ele deixa as janelas fullscreen sem coloca-las em um novo Desktop no MacOS.</li>\n<li><strong><a href=\"https://itunes.apple.com/us/app/copyclip-clipboard-history/id595191960?mt=12\">CopyClip</a></strong>: Mostra todo histórico dos textos que copiei para o teclado.</li>\n<li><strong><a href=\"https://itunes.apple.com/us/app/battery-monitor-health-info/id836505650?mt=12\">Battery Monitor</a></strong>: Monitor de bateria, como ele eu monitoro a saúde, os ciclos e a capacidade da bateria.</li>\n</ul>\n<hr>\n<h2>Atalhos mais utilizados</h2>\n<ul>\n<li>\n<p><strong>MacOS</strong></p>\n<ul>\n<li><code class=\"language-text\">cmd + space</code>: Abrir Alfred</li>\n<li><code class=\"language-text\">cmd + tab</code>: Alternar entre os apps abertos</li>\n<li><code class=\"language-text\">cmd + Q</code>: Fechar um aplicativo</li>\n<li><code class=\"language-text\">cmd + ,</code>: Configuração do aplicativo</li>\n<li><code class=\"language-text\">cmd + alt + D</code>: Exibir/Ocultar o docker</li>\n<li><code class=\"language-text\">cmd + control + shift + 4</code>: Corte print screen + copiar para transferência</li>\n<li><code class=\"language-text\">cmd + control + shift + 4 + space</code> Print screen da janela + copiar para transferência</li>\n</ul>\n</li>\n<li>\n<p><strong>Spark</strong></p>\n<ul>\n<li><code class=\"language-text\">cmd + delete</code>: Apagar email</li>\n<li><code class=\"language-text\">cmd + enter</code>: Enviar email</li>\n<li><code class=\"language-text\">cmd + R</code>: Responder email</li>\n<li><code class=\"language-text\">cmd + ←</code>: Arquivar email</li>\n<li><code class=\"language-text\">cmd + →</code>: Marcar como span</li>\n<li><code class=\"language-text\">shift + cmd + P</code>: Marcar como importante</li>\n</ul>\n</li>\n<li>\n<p><strong>Visual Studio Code</strong></p>\n<ul>\n<li><code class=\"language-text\">cmd + P</code> Navegar e abrir um arquivo</li>\n<li><code class=\"language-text\">shift + cmd + P</code>: Exibir todos os comandos</li>\n<li><code class=\"language-text\">shift + cmd + F</code>: Busca em todo projeto</li>\n<li><code class=\"language-text\">cmd + F</code>: Busca no arquivo</li>\n</ul>\n</li>\n<li>\n<p><strong>Spectacle</strong></p>\n<ul>\n<li><code class=\"language-text\">alt + cmd + F</code>: Fullscreen app</li>\n<li><code class=\"language-text\">alt + cmd + ←</code>: Metade esquerda da tela</li>\n<li><code class=\"language-text\">alt + cmd + →</code>: Metade direita da tela</li>\n<li><code class=\"language-text\">shift + control + alt + ←</code>: Reduzir o tamanho da tela</li>\n<li><code class=\"language-text\">shift + control + alt + →</code>: Aumentar o tamanho da tela</li>\n</ul>\n</li>\n</ul>","excerpt":"Navegadores Google Chrome: MELIOR navegador de todos os tempos. Google Chrome Canary: Uso ele pra estar na frente nas atualizações do Chrome :D…","timeToRead":5,"frontmatter":{"category":["dicas"],"date":"há 8 anos","description":"Criei essa lista de apps que uso todos os dias, espero que gostem","path":"/apps-que-uso","tags":["dicas","apps"],"title":"Aplicativos que uso","image":{"publicURL":"/static/apps-que-uso-google-chrome-canary-ec0966bd15ca083cda80264b723b63c8.png","name":"apps-que-uso-google-chrome-canary"}},"fields":{"readingTime":{"words":769}}}},{"node":{"id":"17b6c362-b241-5a34-af08-302da8982e31","html":"<p>Sabemos que da pra fazer bastante coisa no WordPress usando os famosos hooks e sabemos também que é impossível saber o retorno de um erro ao tentar enviar um email usando a função wp_mail(), pois ela só retorna valores booleanos (true ou false).</p>\n<p>Sabendo disso o <strong>WordPress</strong> já nos deu uma <a href=\"../../../assets/its-a-trap-bino.jpg\">saída dessa cilada bino!</a></p>\n<p><a href=\"https://developer.wordpress.org/reference/hooks/wp_mail_failed/\">Usando o hook <code class=\"language-text\">wp_mail_failed</code></a> podemos criar uma função para captar os erros gerados pela <code class=\"language-text\">wp_mail()</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"php\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-php line-numbers\"><code class=\"language-php\"><span class=\"token php language-php\"><span class=\"token delimiter important\">&lt;?php</span>\n<span class=\"token function\">add_action</span><span class=\"token punctuation\">(</span> <span class=\"token single-quoted-string string\">'wp_mail_failed'</span><span class=\"token punctuation\">,</span> <span class=\"token single-quoted-string string\">'onMailError'</span><span class=\"token punctuation\">,</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span> <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">onMailError</span><span class=\"token punctuation\">(</span> <span class=\"token variable\">$wp_error</span> <span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">echo</span> <span class=\"token single-quoted-string string\">'&lt;pre>'</span> <span class=\"token punctuation\">.</span> <span class=\"token function\">print_r</span><span class=\"token punctuation\">(</span><span class=\"token variable\">$wp_error</span> <span class=\"token punctuation\">,</span> <span class=\"token boolean constant\">true</span> <span class=\"token punctuation\">)</span> <span class=\"token punctuation\">.</span> <span class=\"token single-quoted-string string\">'&lt;/pre>'</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<p>E usando o <a href=\"https://www.getpostman.com/\">Postman</a> eu simulei uma requisição para minha aplicação e BAZINGA!</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 70.5207413945278%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAABYlAAAWJQFJUiTwAAABWklEQVQ4y5WTSW7DMAxFddoeqbfoNXqArgpkkUU9wLMtW57TX345DJyiGRrgRSRtUfwUbfphQN/36DuLqqqEEq5t4CQ29g6DoO+M44h5nrGuKwaJ5VmCz6DCx1eHorZ+ryklWJYliqJAkiRI0xSZwJi1VmjQNBubv1HVDSZX4/Xd4eWtwyGsMDgL05YZ6rqWDRbTNIG/0+nkYSXr2b6KCd4W8L3KDvqr32+sbZHlOXKBMhikrGVZPLTvMZFpg77hH3tDSZSpUtu29WjfeNAjfEJucM75pmuFjCnPJLpKSIOV8FII7XuSH7XB6EtMrDc5nMeE697mqmpuVth13TYGMoPH4xFhGCIIAkRR5Inj+OJzVXiJVMQimOOqh3R4Ki+EkmnfugiN/9Xji2RCSaxSB5f+Pumj8bn0cH+a9ozouPwXw6rS86ems/cbVnyvDXuMjscz8JO79Uwr/AFJJj2nmk0jTwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/cf74372f7556e3870b99f38a15e329dd/bc904/wp_mail-error-postman.webp 250w,\n/static/cf74372f7556e3870b99f38a15e329dd/4be29/wp_mail-error-postman.webp 500w,\n/static/cf74372f7556e3870b99f38a15e329dd/03f31/wp_mail-error-postman.webp 1000w,\n/static/cf74372f7556e3870b99f38a15e329dd/9579c/wp_mail-error-postman.webp 1500w,\n/static/cf74372f7556e3870b99f38a15e329dd/b1218/wp_mail-error-postman.webp 2000w,\n/static/cf74372f7556e3870b99f38a15e329dd/55cd9/wp_mail-error-postman.webp 2266w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/cf74372f7556e3870b99f38a15e329dd/43fa5/wp_mail-error-postman.png 250w,\n/static/cf74372f7556e3870b99f38a15e329dd/c6e3d/wp_mail-error-postman.png 500w,\n/static/cf74372f7556e3870b99f38a15e329dd/da8b6/wp_mail-error-postman.png 1000w,\n/static/cf74372f7556e3870b99f38a15e329dd/2e9ed/wp_mail-error-postman.png 1500w,\n/static/cf74372f7556e3870b99f38a15e329dd/9fabd/wp_mail-error-postman.png 2000w,\n/static/cf74372f7556e3870b99f38a15e329dd/5f1b4/wp_mail-error-postman.png 2266w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/cf74372f7556e3870b99f38a15e329dd/da8b6/wp_mail-error-postman.png\"\n          alt=\"hook wp_mail_failed no postman app\"\n          title=\"hook wp_mail_failed no postman app\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">hook wp_mail_failed no postman app</figcaption>\n  </figure></p>\n<p>É isso ai pessoal, se curtiu comenta ai.</p>\n<p><code class=\"language-text\">exit();</code></p>","excerpt":"Sabemos que da pra fazer bastante coisa no WordPress usando os famosos hooks e sabemos também que é impossível saber o retorno de um erro ao tentar…","timeToRead":1,"frontmatter":{"category":["wordpress"],"date":"há 9 anos","description":"A dica hoje será bem rápida, iremos testar erros na função wp_mail() no WordPress usando hooks.","path":"/como-testar-erros-na-funcao-wp_mail-no-wordpress-usando-hooks","tags":["wordpress","function","php"],"title":"Como testar erros na função wp_mail() no WordPress usando hooks","image":{"publicURL":"/static/wp_mail_faild-hook-function-b6828e646ba18e981ea7ac7e7f1055f8.png","name":"wp_mail_faild-hook-function"}},"fields":{"readingTime":{"words":121}}}},{"node":{"id":"812fe908-c887-5d5e-a4a1-af4998269ede","html":"<h2>Introdução</h2>\n<p>Todo mundo (devs) tá acostumado a criar blogs utilizando o <a href=\"https://jekyllrb.com\">Jekyll</a> e hospedá-los no <a href=\"https://pages.github.com/\">GitHub pages</a>. E se eu disser que existem muitas outras plataformas para criar projetos estáticos?</p>\n<p>Não que eu esteja dizendo que o Jekyll é uma ferramenta ruim, muito pelo contrário! O Jeyll abriu minha mente para o mundo dos <strong>geradores de sites estáticos</strong>.</p>\n<p>No site <a href=\"https://www.staticgen.com/\">staticgen</a> você encontrará uma série de projetos, aplicações e ferramentas, em várias linguagens diferentes e todas elas tem o mesmo proprósito: <strong>Fazer o build de um projeto estático</strong>, ou seja gerar HTML, CSS e JS final para o seu projeto.</p>\n<p>Nesse artigo nós iremos utilizar a tecnologia <a href=\"http://link\">Server Side Rendering (SSR)</a> ou Renderização do lado do servidor em pt-BR, e para isso usaremos o <strong><a href=\"https://vuejs.org/\">Vue.js</a></strong> com o <strong><a href=\"https://nuxtjs.org/\">Nuxt.js</a></strong>.</p>\n<h2>O que é Vue.JS?</h2>\n<p>O <strong>Vue.js</strong> é uma biblioteca (lib) javascript para o desenvolvimento de <strong>componentes reativos para interfaces web modernas</strong> <em>(Reactive Components for Modern Web Interfaces)</em>.</p>\n<h2>O que é o Nuxt.js?</h2>\n<p>Traduzindo de <a href=\"https://nuxtjs.org/guide\">nuxtjs.org/guide</a>: O <strong>Nuxt.js</strong> é uma estrutura para a criação de aplicativos do Universal Vue.js.</p>\n<h2>O que é SSR?</h2>\n<p>Vue.js é uma lib para construir aplicativos do lado do cliente. Por padrão, os componentes Vue produzem e manipulam DOM no navegador do cliente. No entanto, também é possível renderizar os mesmos componentes HTML direto do servidor e enviá-los para o navegador do cliente e continuar manipulando via javascript (SPA).</p>\n<p>Um aplicativo Vue.js criado pelo servidor também pode ser considerado <strong>\"isomórfico\"</strong> ou <strong>\"universal\"</strong>, no sentido de que a maioria do código do seu aplicativo é executado no servidor e no cliente.</p>\n<p>Utilizando SSR podemos manter a acessibilidade padrão do HTML e deixá-lo acessivel por bots como o Google e outros, juntando assim o melhor dos dois mundos, SEO + SPA.</p>\n<hr>\n<h2>Instalando</h2>\n<p>Para instalar o Nuxt.js você precisa dos seguintes pré-requisitos:</p>\n<ol>\n<li>Conhecimento em JavaScript</li>\n<li>Node v6 ou superior</li>\n<li>npm ou yarn</li>\n<li><a href=\"https://github.com/vuejs/vue-cli\">vue-cli</a> global: <code class=\"language-text\">npm install -g vue-cli</code></li>\n</ol>\n<blockquote>\n<p><strong>OBS:</strong> O <strong><a href=\"https://github.com/vuejs/vue-cli\">vue-cli</a></strong> é uma CLI simples para <em>scaffolding</em> de projetos Vue.js, ele vai fazer algumas perguntas como <strong>Nome do projeto</strong>, <strong>Descrição</strong> e <strong>Autor</strong>.</p>\n</blockquote>\n<p>Vamos seguir a mesma instalação feita no site do Nux.js em <a href=\"https://nuxtjs.org/guide/installation\">nuxtjs.org/guide/installation</a>.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-bash line-numbers\"><code class=\"language-bash\">vue init nuxt-community/starter-template blog-with-vuejs\n<span class=\"token builtin class-name\">cd</span> blog-with-vuejs/\n<span class=\"token function\">yarn</span> <span class=\"token comment\"># ou npm install</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span></span></pre></div>\n<p>Os comandos acima foram executados no terminal, você pode executar todos de uma só vez concatenando com <code class=\"language-text\">&amp;&amp;</code> cada um deles.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-bash line-numbers\"><code class=\"language-bash\">vue init nuxt-community/starter-template blog-with-vuejs <span class=\"token punctuation\">\\</span>\n  <span class=\"token operator\">&amp;&amp;</span> <span class=\"token builtin class-name\">cd</span> blog-with-vuejs/ <span class=\"token punctuation\">\\</span>\n  <span class=\"token operator\">&amp;&amp;</span> <span class=\"token function\">yarn</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span></span></pre></div>\n<p><strong>O que foi executado</strong></p>\n<ol>\n<li>Iniciamos um projeto chamado <code class=\"language-text\">blog-with-vuejs</code>;</li>\n<li>Entramos dentro do diretório com o comando: <code class=\"language-text\">cd blog-with-vuejs/</code>;</li>\n<li>Instalamos as dependencias do projeto com o comando: <code class=\"language-text\">yarn</code> (Você também pode executar <code class=\"language-text\">yarn install</code> ou <code class=\"language-text\">npm install</code>)</li>\n</ol>\n<hr>\n<h2>Estrutura de um projeto Nuxt.js</h2>\n<p>A estrutura padrão de um aplicativo <strong>Nuxt.js</strong> destina-se a fornecer um ótimo ponto de partida para pequenas e grandes aplicações. Claro, você é livre para organizar seu aplicativo, como quiser.</p>\n<table class=\"table table-bordered table-striped\">\n  <tbody>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">assets</code></strong></td>\n      <td>Esse diretório contém seus recursos não compilados, como Less, SASS, Stylus ou JavaScript.</td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">component</code></strong></td>\n      <td>Esse diretório contém seus componentes Vue. O Nuxt.js não carrega automaticamente esses componentes.</td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">layouts</code></strong></td>\n      <td>Esse diretório contém os layouts da sua aplicação. <br><em>Este diretório não pode ser renomeado.</em></td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">middleware</code></strong></td>\n      <td>Esse diretório contém o Middleware de sua aplicação. O Middleware permite que você defina funções personalizadas que podem ser executadas antes de\n        renderizar uma página ou um grupo de páginas (layouts).</td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">pages</code></strong></td>\n      <td>Esse diretório contém as views e rotas da sua aplicação. O framework lê todos os arquivos <code class=\"highlighter-rouge\">.vue</code> dentro desse\n        diretório e cria o router da aplicação. <br><em>Este diretório não pode ser renomeado.</em></td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">plugins</code></strong></td>\n      <td>Esse diretório contém os plugins JavaScript que deseja executar antes de instanciar o aplicativo Vue.js da raiz.</td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">static</code></strong></td>\n      <td>Esse diretório contém seus arquivos estáticos. Cada arquivo dentro deste diretório é mapeado para a raiz do seu site <code class=\"highlighter-rouge\">/</code>.\n        Exemplo: <code class=\"highlighter-rouge\">/static/robots.txt</code> é mapeado como <code class=\"highlighter-rouge\">http://seusite.com/robots.txt</code>\n        <br><em>Este diretório não pode ser renomeado.</em></td>\n    </tr>\n    <tr>\n      <td><strong>Diretório <code class=\"highlighter-rouge\">store</code></strong></td>\n      <td>Esse diretório contém seus arquivos do <strong>Vuex Store</strong>. A opção Vuex Store é implementada na estrutura do Nuxt.js. A criação de um\n        arquivo <code class=\"highlighter-rouge\">index.js</code> neste diretório habilita essa opção automaticamente. <br><em>Este diretório não pode ser\n          renomeado.</em></td>\n    </tr>\n    <tr>\n      <td><strong>Arquivo <code class=\"highlighter-rouge\">nuxt.config.js</code></strong></td>\n      <td>Esse arquivo contém a configuração personalizada do <strong>Nuxt.js</strong>. <br><em>Este arquivo não pode ser renomeado.</em></td>\n    </tr>\n    <tr>\n      <td><strong>Arquivo <code class=\"highlighter-rouge\">package.json</code></strong></td>\n      <td>Esse arquivo contém suas dependências e scripts da sua aplicação. <br><em>Este arquivo não pode ser renomeado.</em></td>\n    </tr>\n  </tbody>\n</table>\n<blockquote>\n<p>Veja na <a href=\"https://nuxtjs.org/guide/directory-structure\">documentação do Nuxt.js</a> para saber mais informações sobre esses diretórios e arquivos que eu citei acima.</p>\n</blockquote>\n<hr>\n<h2>Executando</h2>\n<p>Agora vamos rodar o projeto que foi criado pelo Vue-cli em desenvolvimento, para isso basta executar o comando <code class=\"language-text\">yarn dev</code> ou <code class=\"language-text\">npm run dev</code> em seu terminal.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-bash line-numbers\"><code class=\"language-bash\">$ <span class=\"token function\">yarn</span> dev <span class=\"token comment\"># ou npm run dev</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span></span></pre></div>\n<p>Basta abrir: <a href=\"http://localhost:3000\">localhost:3000</a></p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 62.066974595842964%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAABOklEQVQoz62Ty26CQBSG58l0213fAl3ZvkMfoOvqorXppouGTZOy7BJU0h0bCCHcEhWEIgKDMKfDzVAbW208yZcc5j/nZ65oNp11ZUV51jTtwXGcsWVZY9M0T4L23Ou6/sLzfAepqjqAM4UkSQNE3Zn6G1O2hyCEbH/R48JAUZQeMgyjXxtmpApo8y32tBpS/wxkWe4jugc/DKteAnmel/ntxyuM3t/KvBhr1/xpuCuEqsnMPLgc3sAFcw36alEZAWmbHjfDINyA4/qw9D2YL12YL1zwgjWs/ADWVDt6ho0hTtOy8TMIIdzEEEYxJAmmeQRxgk9fchNplkGYxBAlCWCcts7nwJLpKTO1gAuhgW7+jqyVN+zVxrVhD9m2fbaLTR/JFeI4rjOZTB4pQ8roPwiCcCeK4hPLst0vFk165aNwoIgAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/1e5670a4c63ac08117708498304d46fa/bc904/criando-um-blog-com-javascript-vuejs-localhost.webp 250w,\n/static/1e5670a4c63ac08117708498304d46fa/4be29/criando-um-blog-com-javascript-vuejs-localhost.webp 500w,\n/static/1e5670a4c63ac08117708498304d46fa/03f31/criando-um-blog-com-javascript-vuejs-localhost.webp 1000w,\n/static/1e5670a4c63ac08117708498304d46fa/9579c/criando-um-blog-com-javascript-vuejs-localhost.webp 1500w,\n/static/1e5670a4c63ac08117708498304d46fa/b1218/criando-um-blog-com-javascript-vuejs-localhost.webp 2000w,\n/static/1e5670a4c63ac08117708498304d46fa/bcaa8/criando-um-blog-com-javascript-vuejs-localhost.webp 3464w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/1e5670a4c63ac08117708498304d46fa/43fa5/criando-um-blog-com-javascript-vuejs-localhost.png 250w,\n/static/1e5670a4c63ac08117708498304d46fa/c6e3d/criando-um-blog-com-javascript-vuejs-localhost.png 500w,\n/static/1e5670a4c63ac08117708498304d46fa/da8b6/criando-um-blog-com-javascript-vuejs-localhost.png 1000w,\n/static/1e5670a4c63ac08117708498304d46fa/2e9ed/criando-um-blog-com-javascript-vuejs-localhost.png 1500w,\n/static/1e5670a4c63ac08117708498304d46fa/9fabd/criando-um-blog-com-javascript-vuejs-localhost.png 2000w,\n/static/1e5670a4c63ac08117708498304d46fa/6437d/criando-um-blog-com-javascript-vuejs-localhost.png 3464w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/1e5670a4c63ac08117708498304d46fa/da8b6/criando-um-blog-com-javascript-vuejs-localhost.png\"\n          alt=\"Imagem mostrando o link localhost:3000\"\n          title=\"Imagem mostrando o link localhost:3000\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Imagem mostrando o link localhost:3000</figcaption>\n  </figure></p>\n<p>Se você visualizar o código fonte você verá todo o HTML renderizado pelo Nuxt, algo como isso:</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-html line-numbers\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>body</span> <span class=\"token attr-name\">data-n-head</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span><span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>__nuxt<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">data-server-rendered</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>true<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span>\n      <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>nuxt-progress<span class=\"token punctuation\">\"</span></span><span class=\"token style-attr language-css\"><span class=\"token attr-name\">\n      <span class=\"token attr-name\">style</span></span><span class=\"token punctuation\">=\"</span><span class=\"token attr-value\"><span class=\"token property\">width</span><span class=\"token punctuation\">:</span>0%<span class=\"token punctuation\">;</span><span class=\"token property\">height</span><span class=\"token punctuation\">:</span>2px<span class=\"token punctuation\">;</span><span class=\"token property\">background-color</span><span class=\"token punctuation\">:</span>#3B8070<span class=\"token punctuation\">;</span><span class=\"token property\">opacity</span><span class=\"token punctuation\">:</span>0<span class=\"token punctuation\">;</span></span><span class=\"token punctuation\">\"</span></span>\n    <span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>section</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>container<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span><span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>VueToNuxtLogo<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Triangle Triangle--two<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Triangle Triangle--one<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Triangle Triangle--three<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>Triangle Triangle--four<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>title<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>blog-with-vuejs<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h2</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>subtitle<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>Nuxt.js project<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h2</span><span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>links<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>a</span> <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>https://nuxtjs.org/<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">target</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>_blank<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>button--green<span class=\"token punctuation\">\"</span></span>\n              <span class=\"token punctuation\">></span></span>Documentation<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>a</span>\n            <span class=\"token punctuation\">></span></span>\n            <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>a</span>\n              <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>https://github.com/nuxt/nuxt.js<span class=\"token punctuation\">\"</span></span>\n              <span class=\"token attr-name\">target</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>_blank<span class=\"token punctuation\">\"</span></span>\n              <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>button--grey<span class=\"token punctuation\">\"</span></span>\n              <span class=\"token punctuation\">></span></span>GitHub<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>a</span>\n            <span class=\"token punctuation\">></span></span>\n          <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n      <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>section</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>text/javascript<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"><span class=\"token language-javascript\">\n    window<span class=\"token punctuation\">.</span>__NUXT__ <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n      layout<span class=\"token operator\">:</span> <span class=\"token string\">'default'</span><span class=\"token punctuation\">,</span>\n      data<span class=\"token operator\">:</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n      error<span class=\"token operator\">:</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">,</span>\n      state<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n      serverRendered<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">}</span>\n  </span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>/_nuxt/manifest.6577d27b1c69002c3e9a.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">defer</span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>/_nuxt/common.65aa6f5764a5ec5e7c56.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">defer</span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>/_nuxt/app.9a3a71120f4feff88235.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">defer</span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>body</span><span class=\"token punctuation\">></span></span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<p>Note que dentro da tag <code class=\"language-text\">&lt;body&gt;</code> não tem apenas o famoso div <code class=\"language-text\">&lt;div id=&quot;app&quot;&gt;&lt;/div&gt;</code> como estamos acostumados a ver em SPA`s feitas com Vue e esse é o maior ponto positivo de um app que usa <strong>SSR</strong>.</p>\n<hr>\n<p>See you ✌️</p>\n<p>/ end</p>","excerpt":"Introdução Todo mundo (devs) tá acostumado a criar blogs utilizando o Jekyll e hospedá-los no GitHub pages. E se eu disser que existem muitas outras…","timeToRead":6,"frontmatter":{"category":["vue"],"date":"há 9 anos","description":"Essa é a parte 1 de uma série onde iremos usar a tecnologia SSR (Server Side Rendering) para criar um blog e no final hospeda-lo no GitHub pages e no Netlify.","path":"/criando-um-blog-com-vuejs-o-nuxtjs","tags":["vue","javascript"],"title":"Criando um blog com Vue.js e Nuxt.js","image":{"publicURL":"/static/criando-um-blog-com-javascript-vuejs-ebd5c2aa1260dd12581493938d2f9a22.jpg","name":"criando-um-blog-com-javascript-vuejs"}},"fields":{"readingTime":{"words":974}}}},{"node":{"id":"b4b4360f-a313-531a-bc3a-48e972dc7003","html":"<h2>Prólogo</h2>\n<p>Esse texto é para tentar responder algumas perguntas que me faço todos os dias, perguntas essas que você vai ler no decorrer desse texto.</p>\n<blockquote>\n<p>PS.: Esse texto expressa minha opinião sobre a comunidade em geral e sobre os devs de Curitiba, então se você tenha uma opinião contrária a minha e queira discutir sobre os assuntos comenta logo abaixo ;)</p>\n</blockquote>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 70.4%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDBP/EABUBAQEAAAAAAAAAAAAAAAAAAAME/9oADAMBAAIQAxAAAAFNKyaaRQaf/8QAGRAAAwEBAQAAAAAAAAAAAAAAAQIRABMx/9oACAEBAAEFApuMHmaQuSGctv/EABoRAAICAwAAAAAAAAAAAAAAAAABAhESMUH/2gAIAQMBAT8BeENodcP/xAAYEQACAwAAAAAAAAAAAAAAAAAAAQISMf/aAAgBAgEBPwFWlgj/xAAaEAADAQADAAAAAAAAAAAAAAAAASERAjFh/9oACAEBAAY/Al6XWU6vBIwuH//EABsQAQACAwEBAAAAAAAAAAAAAAEAESExYVFx/9oACAEBAAE/IdDZ35AZCcJTgEewZClK9SD1X2ICMCtT/9oADAMBAAIAAwAAABAn/wD/xAAYEQADAQEAAAAAAAAAAAAAAAAAAREhQf/aAAgBAwEBPxCxLSGj4P/EABgRAQADAQAAAAAAAAAAAAAAAAEAESFB/9oACAECAQE/EGKrstWz/8QAHBABAQADAQADAAAAAAAAAAAAAREAIWFBMVGR/9oACAEBAAE/EJ0dRu9wnt++Y1Q5shvmt4unfyDeOnFTdtS/kxq4GwReU8yiAAk6z//Z'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/0aa9eecde00fd56b67f8806aec1bccac/bc904/programador-a-comunidade-precisa-de-voce.webp 250w,\n/static/0aa9eecde00fd56b67f8806aec1bccac/4be29/programador-a-comunidade-precisa-de-voce.webp 500w,\n/static/0aa9eecde00fd56b67f8806aec1bccac/03f31/programador-a-comunidade-precisa-de-voce.webp 1000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/0aa9eecde00fd56b67f8806aec1bccac/0988f/programador-a-comunidade-precisa-de-voce.jpg 250w,\n/static/0aa9eecde00fd56b67f8806aec1bccac/d1f95/programador-a-comunidade-precisa-de-voce.jpg 500w,\n/static/0aa9eecde00fd56b67f8806aec1bccac/dbdff/programador-a-comunidade-precisa-de-voce.jpg 1000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/jpeg\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/0aa9eecde00fd56b67f8806aec1bccac/dbdff/programador-a-comunidade-precisa-de-voce.jpg\"\n          alt=\"Programador a comunidade precisa de você!\"\n          title=\"Programador a comunidade precisa de você!\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Programador a comunidade precisa de você!</figcaption>\n  </figure></p>\n<h2>A procura</h2>\n<p>Estamos procurando um dev <a href=\"https://github.com/lojaskd/frontend-challenge\">front-end</a> aqui na empresa onde trabalho, decidimos procurar os desenvolvedores que tinham um perfil no <a href=\"https://github.com/\">GitHub</a> e de alguma forma contribuem com a comunidade. Começamos a divulgar e receber emails.</p>\n<p>Nós achávamos que seria rápido (ou até mesmo fácil) encontrar o profissional dessa forma (<a href=\"http://portalrtn.com.br/wp-content/uploads/2014/05/1reproducao30.jpg\">sabem de nada inocentes</a>).</p>\n<p>Começamos a receber algumas respostas. Algumas nos deixaram tristes, recebemos frases e desculpas do tipo:</p>\n<ul>\n<li>\"Não tem muita coisa lá, pois não uso muito meu GitHub\"</li>\n<li>\"Meus projetos estão todos privados no Bitbucket\"</li>\n</ul>\n<p>Ou pior ainda.</p>\n<ul>\n<li>\"O que é Github?\"</li>\n</ul>\n<hr>\n<h2>A importância de se ter um GitHub</h2>\n<p>Pode ser que você não saiba o que é o <strong><a href=\"https://github.com/\">GitHub</a></strong>, caro desenvolvedor, ou não contribua com a comunidade por falta de tempo, ou não achar necessário, ou porque não quer mesmo no momento, eu entendo.</p>\n<p>Seja como for, em cima dessas afirmações eu vou lhe dar um conselho, não de um desenvolvedor ou de alguém interessado em suas contribuições, mas um conselho de amigo, que quer ver você bem sucedido profissionalmente.</p>\n<blockquote>\n<p>Se mostre online, tenha um perfil bom.</p>\n</blockquote>\n<p>Quando eu digo um perfil online, eu também digo portfolio/currículo/GitHub, um perfil na internet que diga quem você é, como desenvolvedor e como profissional.</p>\n<p>Ai você me questiona: <em>\"Ué! Mas o <strong><a href=\"https://www.linkedin.com/\">Linkedin</a></strong> não serve para isso?\"</em>, ou ainda <em>\"Mas eu tenho meu site, onde coloco os projetos que já trabalhei\"</em>, sim, ambos servem, mas não são o suficiente, cada um tem o seu público e serve para um propósito.</p>\n<p>O que eu imagino como um bom perfil de um desenvolvedor:</p>\n<ul>\n<li>Linkedin: com projetos e empresas onde já trabalhou;</li>\n<li>Site e/ou Portfolio: telas e textos detalhados de cada projeto;</li>\n<li>GitHub: com seus códigos, discussões, e PR`s com suas contribuições;</li>\n<li>E um Currículo bem diagramado.</li>\n</ul>\n<p>Claro que um não elimina o outro, mas ambos se completam e assim, além de ser visto você terá um perfil \"phoda\" online.</p>\n<p>Esse meu conselho é para que você um dia entre em empresas como <strong>Google</strong>, <strong>Twitter</strong>, <strong>Nubank</strong>, <strong>Spotfy</strong> e outras, que buscam desenvolvedores primeiro pelo seu perfil no GitHub e depois em outros canais.</p>\n<p>E vai por mim, quanto mais completo for seu perfil mais chances de ser recrutado para uma seleção.</p>\n<h2>Cadê os front-enders?</h2>\n<p>Como eu disse, se mostre, tenha um perfil bom, para facilitar a avaliação de empresas e recrutadores técnicos.</p>\n<p>Nessa busca árdua por um front-ender para preencher meu lugar, estávamos com muita dificuldade em encontrar profissionais em Curitiba pelo GitHub.</p>\n<p>Opções:</p>\n<ol>\n<li>Ou não estávamos procurando direito;</li>\n<li>Ou não tem muitos desenvolvedores em Curitiba;</li>\n<li>Ou temos muitos devs em Curitiba sim! Mas os que tem não se mostram online, deixam para procurar quando precisam, preenchem o currículo e atualizam o Linkedin quando querem arrumar um emprego.</li>\n</ol>\n<p>Eu voto na opção 3.</p>\n<p>Nós somos profissionais que estamos conectados, tecnologia corre em nossas veias, <a href=\"https://www.nngroup.com/articles/computer-skill-levels/\">fazemos parte de 5% da população com habilidades em computação</a>. Por que não ter um portfolio no GitHub?</p>\n<h2>Conclusão</h2>\n<p>Eu sempre me faço essas perguntas, todos os dias, desde do dia que me mudei para Curitiba e comecei a trabalhar com desenvolvimento web.</p>\n<ul>\n<li>Onde estão os desenvolvedores de Curitiba?</li>\n<li>Por que não temos comunidades ativas de desenvolvimento?</li>\n<li>Por que não temos meetups, eventos e encontros ativos?</li>\n<li>Será que é tão difícil para um dev Curitibano compartilhar seus conhecimentos?</li>\n<li>Por que não contribuem com a comunidade open-source?</li>\n<li>Por que é tão difícil de encontrar um dev front-end que tenha seu portfólio no GitHub?</li>\n<li>Onde então a grande massa dos desenvolvedores de Curitiba?</li>\n<li>Onde estão aqueles desenvolvedores que usam códigos open-source como Linux, PHP, Node, Ruby, WordPress, e outros?</li>\n</ul>\n<p>Já que querem ser tão egoístas, por que não contribuem pelo menos com a linguagem ou tecnologia que usam, mesmo que para agradecer por terem criado algo open-source que está ajudando-o a colocar comida na mesa.</p>\n<p>Alguém vai dizer: <em>“Ah, mas sempre tem alguém que contribui sim!”</em>, <em>“Você chora de barriga cheia.”</em>, <em>“Está reclamando sem motivo!”</em>, ou coisas do tipo.</p>\n<p>Pode ser que sim, pode ser que eu esteja reclamando de barriga cheia e não esteja encontrando esses devs ou pode ser que eu quem esteja escondido pro mundo.</p>\n<p>/end</p>","excerpt":"Prólogo Esse texto é para tentar responder algumas perguntas que me faço todos os dias, perguntas essas que você vai ler no decorrer desse texto. PS…","timeToRead":4,"frontmatter":{"category":["geral"],"date":"há 10 anos","description":"Sobre o porquê de alguns desenvolvedores não contribuem com a comunidade open-source.","path":"/programador-a-comunidade-precisa-de-voce","tags":["geral","comunidade"],"title":"Programador a comunidade precisa de você!","image":{"publicURL":"/static/programador-a-comunidade-precisa-de-voce-0aa9eecde00fd56b67f8806aec1bccac.jpeg","name":"programador-a-comunidade-precisa-de-voce"}},"fields":{"readingTime":{"words":780}}}},{"node":{"id":"248341b6-9bc4-5fab-91f7-e34dda54c290","html":"<p>Automatizadores de tarefas ou como são conhecidos pelo termo em inglês <a href=\"https://goo.gl/Zugcvt\">Task Runners</a>, tem a capacidade de fazer muita coisa, facilitam muito não só no desenvolvimento dos projetos mas também nos builds e deploys, cara é simplesmente lindo.</p>\n<p>Já usei o <a href=\"http://gruntjs.com/\">Gruntjs</a> e <a href=\"https://github.com/ruby/rake\">Rake tasks</a> do Ruby, ambos são muito bons e tem suas finalidades, mas hoje vou falar sobre o magnífico <a href=\"http://gulpjs.com/\">GulpJS</a>.</p>\n<h2>Poque eu deveria usar um Task Runner?</h2>\n<p>Usar um automatizador de tarefas te traz muitas vantagens, das quais se você desfrutar nunca mais vai querer começar o desenvolvimento de um novo projeto sem elas.</p>\n<p>Abaixo eu vou listar algumas, se não te fizer brilhar os olhos você talvez não precisará de um <strong>task runner</strong>.</p>\n<p>Com apenas um comando você consegue:</p>\n<ul>\n<li>Fazer a compressão de centenas de imagens de um projeto antigo (eu precisei fazer isso);</li>\n<li>Deploy para qualquer servidor sftp, ssh ou até mesmo para amazon S3;</li>\n<li>Fazer Watch de pré-processadores e template engines;</li>\n<li>Subir servidores locais de qualquer linguagem;</li>\n<li>Executar os testes do seu projeto;</li>\n<li>Executar tarefas complexas em segundos;</li>\n<li>… e ter mais tempo para tomar um café.</li>\n</ul>\n<p>E ai gostou? Ainda tem mais vantagens que não foram listadas acima, essas são as que eu mais gosto de citar quando me perguntam quais as vantagens de um Task Runner.</p>\n<p>Eu sempre gosto de dizer: “Ele me faz ter mais tempo para o meu café”.</p>\n<h2>Porque eu deveria usar o GulpJS?</h2>\n<p>O Gulp te dá todas as vantagens que citei no bloco anterior, além de:</p>\n<ul>\n<li>Ser super-rápido. Performance com certeza é uma vantagem grande do Gulpjs;</li>\n<li>Simples e fácil de implementar. Ele é simples e direto, com certeza você vai gostar;</li>\n<li>Quantidade enorme de plugins em seu repositório. O que você imaginar o Gulp tem um componente para isso.</li>\n<li>… e muito mais.</li>\n</ul>\n<blockquote>\n<p>“gulp is a toolkit for automating painful or time-consuming tasks in your development workflow, so you can stop messing around and build something.\"</p>\n</blockquote>\n<p>Essa frase acima está na homepage do gulp, ela te dá um breve overview do que você irá encontrar se começar a se aventurar com ele.</p>\n<h2>Instalação e configuração do Gulp</h2>\n<p>Vamos criar um projeto simples, apenas para executar algumas tarefas com Gulp, o nome do projeto será <a href=\"https://github.com/nandomoreirame/comece-com-gulp\">Comece com gulp</a>, e claro, ele tá lá no Github.</p>\n<p>😎</p>\n<p>Instale o Gulp global com o comando: <code class=\"language-text\">npm install -g gulp-cli</code>.</p>\n<blockquote>\n<p><strong>PS. em alguns sistemas operacionais, se você não estiver usando NVM para gerenciar suas versões do nodejs, você precisará executar o comando com SUDO.</strong></p>\n</blockquote>\n<p>Inicie o projeto npm com o comando: <code class=\"language-text\">npm init</code>.</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 102.4%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsSAAALEgHS3X78AAABgUlEQVQ4y5WU646CMBCFUdBti71yF/7svv9D7sfUmKiQXU4MmdKe6Zkzg0VKoWkiv9Q8EEJITQohxtTGlKwPSpvT6VR8Iq1oYDrv67q+XK9Kr/gSGK2rqir2ANVaG1Psus5ZS5ZhGEjnvVdKsUWKXXLf9/B5QrbOcc/5fC7LclvnG+Zlvt9nyKvmy6U4hHEcl2Xhci81X19BOp4I2SZ///zM86yUlsMUmP3SFLzappQxpix3PBvGMcaYjakFnL7dbkYAn5hd4g0X2FNaCcFyFIXZsBzk+Czxxs0+hPs8055pmtqm0aJWm1U2eUWHyVp4/U52zuHZOE0MFvZwTyXIQSnBI/60jXowjKkkfXEUONS2rbUuC1NiW7YK5X+QOQfZM/1KISw39tnk7NkuGXP4LCgYt0mUu7W2qq6f8e6QOOe7rjfSpMM1YxiD7R0t8ziPfmaGRfDrkjVvqr2ZRxh8CpbAWeELx7MEJFOfHc7AGJ65k4dl82eDRpQPff+y8Y/v+Rfp+R1hmQwrdgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/a45ce29ed1dcd0387e127ab8e2c3dce1/bc904/comece-com-gulp-npm-init.webp 250w,\n/static/a45ce29ed1dcd0387e127ab8e2c3dce1/4be29/comece-com-gulp-npm-init.webp 500w,\n/static/a45ce29ed1dcd0387e127ab8e2c3dce1/03f31/comece-com-gulp-npm-init.webp 1000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/a45ce29ed1dcd0387e127ab8e2c3dce1/43fa5/comece-com-gulp-npm-init.png 250w,\n/static/a45ce29ed1dcd0387e127ab8e2c3dce1/c6e3d/comece-com-gulp-npm-init.png 500w,\n/static/a45ce29ed1dcd0387e127ab8e2c3dce1/da8b6/comece-com-gulp-npm-init.png 1000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/a45ce29ed1dcd0387e127ab8e2c3dce1/da8b6/comece-com-gulp-npm-init.png\"\n          alt=\"Comece com Gulp - npm init\"\n          title=\"Comece com Gulp - npm init\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Comece com Gulp - npm init</figcaption>\n  </figure></p>\n<p>Esse comando irá criar um arquivo chamado <strong>package.json</strong>, com ele você gerencia todos os pacotes e dependências do seu projeto.</p>\n<p>O meu <strong>package.json</strong> ficou mais ou menos assim:</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-json line-numbers\"><code class=\"language-json\"><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"name\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"comece-com-gulp\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"version\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"1.0.0\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"description\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"> Repositório do artigo: http://nandomoreira.me/comece-com-gulp\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"main\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"gulpfile.js\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"dependencies\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"gulp\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"^3.9.1\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"devDependencies\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"scripts\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"test\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"echo \\\"Error: no test specified\\\" &amp;&amp; exit 1\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"repository\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"type\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"git\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"git+https://github.com/nandomoreirame/comece-com-gulp.git\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"author\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"license\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"ISC\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"bugs\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token property\">\"url\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://github.com/nandomoreirame/comece-com-gulp/issues\"</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token property\">\"homepage\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"https://github.com/nandomoreirame/comece-com-gulp#readme\"</span>\n<span class=\"token punctuation\">}</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<p>Instale o Gulp local com o comando: <code class=\"language-text\">npm install --save-dev gulp</code> ou <code class=\"language-text\">yarn add -D gulp</code></p>\n<p>Você vai notar que na linha onde tinha <code class=\"language-text\">&quot;devDependencies&quot;: {}</code>, foi adicionado o gulp.</p>\n<div class=\"gatsby-highlight\" data-language=\"json\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-json line-numbers\"><code class=\"language-json\"><span class=\"token property\">\"devDependencies\"</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">\"gulp\"</span><span class=\"token operator\">:</span> <span class=\"token string\">\"^3.9.1\"</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span></span></pre></div>\n<p>O gulp agora faz parte das dependências de dev do seu projeto, assim como os módulos que iremos instalar para ajudar na execução das tarefas.</p>\n<h2>Hello World com Gulp</h2>\n<p>Dentro do projeto temos o arquivo <strong>package.json</strong> e o diretório <strong>node_modules</strong> onde está instalado o Gulp local.</p>\n<p>Vamos criar o arquivo chamado <strong>gulpfile.js</strong>, que é obrigatório para criarmos as tarefas do Gulp.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-bash line-numbers\"><code class=\"language-bash\">$ <span class=\"token function\">touch</span> gulpfile.js</code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span></span></pre></div>\n<p>Nesse arquivo vamos requerir o Gulp usando <a href=\"https://pt.wikipedia.org/wiki/CommonJS\">CommomJS</a>: <code class=\"language-text\">require(&#39;gulp&#39;);</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-javascript line-numbers\"><code class=\"language-javascript\"><span class=\"token string\">'use strict'</span>\n\n<span class=\"token keyword\">var</span> gulp <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">'gulp'</span><span class=\"token punctuation\">)</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span></span></pre></div>\n<p>Na primeira linha temos o <code class=\"language-text\">&#39;use strict&#39;;</code>, se você não sabe para que serve o <code class=\"language-text\">‘use strict’;</code> eu indico assistir a palestra de <a href=\"https://youtu.be/7Ur9zN2vMcs?t=1m7s\">Javascript Secrets</a> do Fernando Daciuk, muito legal. Já na segunda linha criamos uma variável chamada <strong>gulp</strong>, a qual iremos usar muito por todo nosso código.</p>\n<p>Vamos ao Hello World.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-javascript line-numbers\"><code class=\"language-javascript\"><span class=\"token string\">'use strict'</span>\n\n<span class=\"token keyword\">var</span> gulp <span class=\"token operator\">=</span> <span class=\"token function\">require</span><span class=\"token punctuation\">(</span><span class=\"token string\">'gulp'</span><span class=\"token punctuation\">)</span>\n\ngulp<span class=\"token punctuation\">.</span><span class=\"token function\">task</span><span class=\"token punctuation\">(</span><span class=\"token string\">'hello'</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Hello World.'</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<p>Basta rodar o comando <code class=\"language-text\">gulp hello</code> no seu terminal que a mágica vai acontecer.</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 18.8%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsSAAALEgHS3X78AAAAsUlEQVQI102O7WrEIBBFx6ijaYzjjB/bxkWShUIp9P1fb4UtpYcL99fhXqjtq71/f/Sf4+jn47q3+1nPUUfP/WzXaOm67Yffh9mr9tF5ZhYRRISJSGxNakksWTMbuyJYDdqAcYAG0EHwy2aX1S5OgYL/jPE5k8shpWC7hTw7l7cSXLBo0alpawUWQAN4xN/NF1voIfRIIxJxmQfmqywkFCklTskyw2YUKbUCZIqR4p/7BLwQC9SZx7iMAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/d4eefe0885161df4636c7ab32955a68d/bc904/comece-com-gulp-hello.webp 250w,\n/static/d4eefe0885161df4636c7ab32955a68d/4be29/comece-com-gulp-hello.webp 500w,\n/static/d4eefe0885161df4636c7ab32955a68d/03f31/comece-com-gulp-hello.webp 1000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/d4eefe0885161df4636c7ab32955a68d/43fa5/comece-com-gulp-hello.png 250w,\n/static/d4eefe0885161df4636c7ab32955a68d/c6e3d/comece-com-gulp-hello.png 500w,\n/static/d4eefe0885161df4636c7ab32955a68d/da8b6/comece-com-gulp-hello.png 1000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/d4eefe0885161df4636c7ab32955a68d/da8b6/comece-com-gulp-hello.png\"\n          alt=\"Imagem com o comando gulp hello\"\n          title=\"Imagem com o comando gulp hello\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Imagem com o comando gulp hello</figcaption>\n  </figure></p>\n<h2>Comandos</h2>\n<p>Você pode obter a lista de comandos do Gulp apenas digitando o commando <code class=\"language-text\">gulp --help</code> no seu terminal.</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 90.6%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAIAAADUsmlHAAAACXBIWXMAAAsSAAALEgHS3X78AAACEUlEQVQ4y42T22rjMBCGbdmSJSs62oa0CaWFFDbv/4L7jeRsYWFhdZHo8J9mJA/l+BXSV0gfPn6EmI59r7XknGupKeVt20pWpY5RjUkNYRzCRUYIYVnM8P5+rTWt6zpMaRjC6i/WLsN/juv1WkoZRzUMahyneZqVYjL+C8/pPAtGFmR4PL6vb2/TpPBPOUfi5uJew1q7unVZlmmawO/78Xw+S8ldaaJUamAONMYYIqtQa80yEmv5QzAXf/ExJkrGXMj8ObdKzefcaWNwW/poE5Zaa2udWRZ0MQcmZMLA5Zi5dS6lBBo5Ses9IC/KsqRAACFcSq1g/ji73iFAxO6WbHZP1woWcrhoo9fV3243ajjJzLozZDqPcGmDFPu+c0rUFKm8II0/l297bMjges1ISMMCPxGJXDKrs+BmDsx7z/K8y1nripK1rGfpymJaw6Rn1pqWH0LL79SkcCaOa0lx1vtxpJanQ6W8hl5eTN875z07wPD/uSpKIrkIK2VfD6M3jISok6WltiyoiHKM0X83DIJ8CaVsteKDiferdRZuV+Rj6OZaGyGjHeRNxd7tlHidads3HOjFvm9Ae35OIbP3+fkF6ic2CBpGWHmD3sNnExlphDEcUZFqb5toj8fjvGecb22QBAdoxOUh49NF+/WQuX8YFHW/39k5nUEQsr1e29vOxw7l9dpEFH/UAVMLZLoB9ze7CChdfkIlpwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/4153be580604d085d268165a870e80cf/bc904/comece-com-gulp-comando-gulp-help.webp 250w,\n/static/4153be580604d085d268165a870e80cf/4be29/comece-com-gulp-comando-gulp-help.webp 500w,\n/static/4153be580604d085d268165a870e80cf/03f31/comece-com-gulp-comando-gulp-help.webp 1000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/4153be580604d085d268165a870e80cf/43fa5/comece-com-gulp-comando-gulp-help.png 250w,\n/static/4153be580604d085d268165a870e80cf/c6e3d/comece-com-gulp-comando-gulp-help.png 500w,\n/static/4153be580604d085d268165a870e80cf/da8b6/comece-com-gulp-comando-gulp-help.png 1000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/4153be580604d085d268165a870e80cf/da8b6/comece-com-gulp-comando-gulp-help.png\"\n          alt=\"Imagem com o comando gulp --help\"\n          title=\"Imagem com o comando gulp --help\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Imagem com o comando gulp --help</figcaption>\n  </figure></p>\n<p>Um comando bem interessante é o que lista todas as tasks do projeto <code class=\"language-text\">gulp --tasks</code>.</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 14.100000000000001%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAIAAAAcOLh5AAAACXBIWXMAAAsSAAALEgHS3X78AAAAjklEQVQI1x2G7RKCIBAAT4EUPO74OqDMNH/1/k9YubOzs0C8E28hnuy5ldpzkyQ11xKKpNqLtGRLmMXcgjI4AlrriRCRQ4DWjvVxPo8PH+/Irbt7da24elXE1ZWkY5ZbYO0UwDxNxhillNYaPO+eNqTX6DIsFWz6+/s5gs2jiyHCQgMpwHFYANbeF0S4+AIqNQoKnUGe4gAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/1788cfdc43f8aa96263a3eae0b924431/bc904/comece-com-gulp-comando-gulp-tasks.webp 250w,\n/static/1788cfdc43f8aa96263a3eae0b924431/4be29/comece-com-gulp-comando-gulp-tasks.webp 500w,\n/static/1788cfdc43f8aa96263a3eae0b924431/03f31/comece-com-gulp-comando-gulp-tasks.webp 1000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/1788cfdc43f8aa96263a3eae0b924431/43fa5/comece-com-gulp-comando-gulp-tasks.png 250w,\n/static/1788cfdc43f8aa96263a3eae0b924431/c6e3d/comece-com-gulp-comando-gulp-tasks.png 500w,\n/static/1788cfdc43f8aa96263a3eae0b924431/da8b6/comece-com-gulp-comando-gulp-tasks.png 1000w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/1788cfdc43f8aa96263a3eae0b924431/da8b6/comece-com-gulp-comando-gulp-tasks.png\"\n          alt=\"Imagem com o comando gulp --tasks\"\n          title=\"Imagem com o comando gulp --tasks\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Imagem com o comando gulp --tasks</figcaption>\n  </figure></p>\n<h2>Concluindo..</h2>\n<p>Esse foi apenas o primeiro passo para você começar com Gulpjs, vai por mim, tem muitas coisas legais que da pra fazer com uma task do gulp. Espero que tenha gostado do artigo, é simples mas útil.</p>\n<p>Logo mais vou fazer outro artigo um pouco mais avançado para você ir mais além com ele.</p>\n<p>Até breve.</p>\n<p><code class=\"language-text\">/end</code></p>","excerpt":"Automatizadores de tarefas ou como são conhecidos pelo termo em inglês Task Runners, tem a capacidade de fazer muita coisa, facilitam muito não só no…","timeToRead":4,"frontmatter":{"category":["gulp"],"date":"há 10 anos","description":"Eu particularmente gosto muito de ganhar tempo com o desenvolvimento dos meus projetos e usar automatizador de tarefas me dá esse poder.","path":"/comece-com-gulp","tags":["gulp","javascript","tasks","taskrunners"],"title":"Comece com Gulp!","image":{"publicURL":"/static/comece-com-gulp-29ad534bcd8c62207f472d6b92fe7f99.png","name":"comece-com-gulp"}},"fields":{"readingTime":{"words":839}}}},{"node":{"id":"cc039104-d278-55be-99bf-6e00f750ce89","html":"<h2>Retrospectiva 2016</h2>\n<p>2016 não foi um ano ruim, tanto na minha vida profissional quando na minha vida pessoal, confesso que tive alguns obstáculos, mas todos foram ultrapassados com sucesso.</p>\n<p>Ele pode ter sido um ano ruim para Brasil e para mundo, grandes desastres, fiasco da política, morte de grandes artistas, mas eu pessoalmente tenho que agradecer muito por minha vida ser maravilhosa como ela é, ter um trabalho que eu gosto muito, uma família maravilhosa, amigos próximos e pessoas próximas que me querem bem.</p>\n<h3>Aprendizado...</h3>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-javascript line-numbers\"><code class=\"language-javascript\"><span class=\"token function\">$</span><span class=\"token punctuation\">(</span><span class=\"token string\">'2016'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">remove</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span></span></pre></div>\n<p>Esse ano foi um ano de aprendizado, tanto para minha vida profissional quanto para vida pessoal.</p>\n<p>Aprendi a questionar mais, entender o que as pessoas ao meu redor estão fazendo e o que eu estou fazendo para ajudar essas pessoas.</p>\n<p>Aprendi que eu não sei o suficiente e que tenho que aprender muita coisa ainda pela frente, e isso me custou um emprego e um circulo de boas amizades.</p>\n<p>Aprendi que amigos verdadeiros são os que estão com você não só nas alegrias, mas nas tristezas e fases ruins da sua vida.</p>\n<p>Aprendi a questionar padrões.</p>\n<p>Aprendi que oportunidades não vem do nada, você que corre atrás e traz elas para perto de você.</p>\n<p>Aprendi que ouvir mais e falar menos não é tão fácil assim.</p>\n<p>Aprendi que ser uma pessoa bondosa e empática também não é fácil.</p>\n<p>Aprendi a meditar, mesmo com a falta de tempo.</p>\n<p>Aprendi a ler (sim, aprendi a ler de verdade), muitos livros técnicos e não técnicos, muitos blogs e artigos, notícias, medium, etc.</p>\n<p>Aprendi a olhar a vida de um ponto de vista diferente, em que o foco no estado atual (presente) é mais valioso que o foco no passado e/ou no futuro.</p>\n<p>Aprendi que o impossível é apenas uma questão de opinião, você consegue fazer qualquer coisa enquanto respirar.</p>\n<h3>Trabalho duro...</h3>\n<p>Ano de 2016 foi um ano de trabalho duro e tenho certeza que 2017 será ainda melhor.</p>\n<p>Eu consegui ser notado por algumas empresas legais como a <strong><a href=\"http://www.pipefy.com/\">Pipefy</a></strong>, <strong><a href=\"http://hero99.com.br/\">Hero99</a></strong>, <strong><a href=\"https://www.ebanx.com/br\">EBANX</a></strong>, <strong><a href=\"https://pagar.me/\">pagar.me</a></strong> e <strong><a href=\"http://wipro.com\">wipro.com</a></strong>.</p>\n<p>Tudo através do que fiz pela comunidade (foi pouco mas fiz), criando temas para <a href=\"http://jekyllrb.com\">Jekyll</a>, ajudando em discussões de front-end, enviando contribuições em alguns repositórios no <a href=\"https://github.com/nandomoreirame\">github</a> e compartilhando meu conhecimento como tutor no <a href=\"https://github.com/training-center\">Centro de Treinamento</a> e escrevendo nesse pequeno <a href=\"/blog\">blog</a>.</p>\n<p>Eu tive a oportunidade de trabalhar em uma startup chamada <strong><a href=\"http://www.pipefy.com/\">Pipefy</a></strong>, onde trabalhei com grandes mentes que me ensinaram grandes coisas, infelizmente não durou o tempo que eu gostaria, mas valeu a pena cada dia de trabalho.</p>\n<p>Em 2016 eu comecei a trabalhar na <strong><a href=\"https://www.lojaskd.com.br/\">LojasKD</a></strong>, onde tenho o prazer de trabalhar com pessoas incríveis, estou muito feliz em poder ajudar a melhorar e construir um projeto que vende algumas dezenas de milhares por dia.</p>\n<hr>\n<h2>Planing 2017</h2>\n<p>Quero fazer em 2017 o dobro das coisas que fiz em 2016.</p>\n<p><strong>Ajudar</strong> o máximo de pessoas a encontrarem o seu caminho no mundo do desenvolvimento.</p>\n<p><strong>Escrever mais</strong> no meu <a href=\"/blog\">blog</a>.</p>\n<p><strong>Fazer mais</strong> projetos pequenos e grandes.</p>\n<p><strong>Aprender mais</strong> sobre <strong>acessibilidade</strong>, <strong>UX</strong> e <strong>SEO</strong>.</p>\n<p><strong>Aprender</strong> sobre testes em <strong>JavaScript</strong> e <strong>aprender mais</strong> sobre <strong>es6/es7</strong>.</p>\n<p>Quero poder <strong>palestrar</strong> e participar mais de eventos de tecnologia.</p>\n<p><strong>Ler mais livros</strong>, não lembro quantos eu li em 2016 mas quero dobrar ou triplicar a quantidade em 2017.</p>\n<p>Quero <strong>mudar o mundo</strong> a minha volta, mudar <strong>pensamentos</strong>, mudar <strong>atitudes</strong>.</p>\n<p>Quero fazer a diferença.</p>\n<p><strong>Seja muito bem vindo 2017.</strong></p>\n<hr>\n<h2>Conclusão</h2>\n<p>Eita esse 2016 hein...</p>\n<p>Foi um ano de <strong>contribuições</strong>, <strong>ensino</strong>, <strong>aprendizado</strong> e <strong>trabalho duro</strong>, espero que esse legado continue em 2017 e em dobro.</p>\n<p>E o seu 2016 como foi?</p>\n<p>O que você espera fazer no seu ano novo?</p>\n<p>Comenta aí!</p>\n<p>Forte abraço!</p>\n<p>/end</p>","excerpt":"Retrospectiva 2016 2016 não foi um ano ruim, tanto na minha vida profissional quando na minha vida pessoal, confesso que tive alguns obstáculos, mas…","timeToRead":3,"frontmatter":{"category":["geral"],"date":"há 10 anos","description":"2016 não foi um ano ruim, tanto na minha vida profissional quando na minha vida pessoal, confesso que tive alguns obstáculos, mas todos foram ultrapassados com sucesso.","path":"/retro-2016-planing-2017","tags":["refrexão"],"title":"Retro 2016 Planing 2017","image":{"publicURL":"/static/retro-2016-planing-2017-d0c00c01693f39174e3998313336ed72.jpg","name":"retro-2016-planing-2017"}},"fields":{"readingTime":{"words":612}}}},{"node":{"id":"175b5993-dbf6-5b7d-8585-d20c2273761e","html":"<p><strong>TRABALHAR COMO UM TIME...</strong></p>\n<p>... não é fazer reuniões rápidas pelas manhãs pra não ultrapassar o tempo estimado pelo <a href=\"http://www.desenvolvimentoagil.com.br/scrum/daily_scrum\">\"desenvolvimento ágil\"</a>...</p>\n<p>... é saber ouvir cada membro da equipe o que houve de errado no dia anterior e perguntar se ele precisa de ajuda para resolver hoje.</p>\n<p>Não é ficar horas e horas tentando resolver um problema sozinho...</p>\n<p>... é consultar o colega do lado e perguntar se ele pode te ajudar a resolve o problema junto com você.</p>\n<p>Não é resolver as suas tarefas rápido e ir tomar aquele café demorado...</p>\n<p>... é levantar da sua cadeira e ir ver se seus colegas precisam de alguma ajuda com alguma tarefa complexa.</p>\n<p>Não é definir sozinho o padrão do projeto que você começou sozinho...</p>\n<p>... é saber definir o padrão da equipe e certificar de que todos estão de acordo com o padrão definido.</p>\n<p>Não é ler um artigo ou uma notícia bacana e guardar apenas para você...</p>\n<p>... é compartilhar aquele artigo que você leu e sabe que pode servir para toda equipe.</p>\n<p><strong>TRABALHAR COMO UM TIME</strong> é ter motivação intrínseca, que te faz sair da cama em dias ruins pra encontrar a equipe e fazer um bom trabalho...</p>\n<p>... é saber compartilhar o seu conhecimento nas standups, talks e conversas de corredor...</p>\n<p>... é saber ouvir e dizer não quando necessário...</p>\n<p>... é saber qual o nível de cada membro da equipe e como você pode ajuda-los a alcançar seus objetivos no time...</p>\n<p>... é rir de coisas engraçadas e entrar em conflitos quando necessário...</p>\n<p>... é acreditar e confiar no membro da equipe e saber que ele não vai decepcionar o time...</p>\n<p>... é elevar o projeto a um nível superior, que nem mesmo você nem seus superiores imaginariam chegar, mas só conseguiram chegar lá porque viram a necessidade de trabalhar em equipe, ...</p>\n<p>... <strong>como um time.</strong></p>\n<hr>\n<p>Esses são meus sinceros agradecimentos a todos as pessoas que já trabalhei e que me ensinaram o verdadeiro valor do trabalho em equipe.</p>\n<p>Em especial ao time de TI da <a href=\"https://www.lojaskd.com.br/\">LojasKD</a> por me acolherem como parte da equipe mesmo antes de entrar pro time, e que mesmo não curtindo as minhas piadas rirem do mesmo jeito.</p>\n<hr>\n<p>😎</p>\n<p>E como Bônus, para você refletir um pouco mais sobre o trabalho em equipe, vou deixar esse video do <strong>Bernard De Luna</strong> sobre <strong>Perseverança e time</strong>.</p>\n<p><a href=\"https://www.youtube.com/watch?v=EJzhit_HAIA\">https://www.youtube.com/watch?v=EJzhit_HAIA</a></p>\n<p><strong>UM FELIZ 2017 TIME!</strong></p>","excerpt":"TRABALHAR COMO UM TIME... ... não é fazer reuniões rápidas pelas manhãs pra não ultrapassar o tempo estimado pelo \"desenvolvimento ágil\"... ... é…","timeToRead":2,"frontmatter":{"category":["geral"],"date":"há 10 anos","description":"Trabalhar como um time é elevar o projeto a um nível superior, que nem mesmo você nem seus superiores imaginariam chegar, mas só conseguiram chegar lá porque viram a necessidade de trabalhar em equipe.","path":"/como-um-time","tags":["reflexão"],"title":"Como um time","image":{"publicURL":"/static/lojaskd-team-it-4724cb3fc37e434cb15810c2447840e6.jpeg","name":"lojaskd-team-it"}},"fields":{"readingTime":{"words":401}}}},{"node":{"id":"b86a1b05-4793-5845-9790-274eb878da18","html":"<p>O <a href=\"https://www.google.com/chrome/\">Google Chrome</a> em uma de suas atualizações implementou o tema <em>\"Dark\"</em> para o <em>Chrome DevTools</em>. Isso já faz uns 7 a 8 meses mais ou menos (eu acho), mas estou escrevendo esse pequeno artigo pra avisar os que ainda estão desavisados.</p>\n<h3>A surpresa de alguns</h3>\n<p>Estávamos no <a href=\"https://www.eventick.com.br/6o-femug-cwb\">Meetup de Front-end aqui em Curitiba</a>, onde palestrei sobre <a href=\"http://jekyllrb.com/\">Jekyll</a>, e em um determinado momento precisei abri o navegador e inspecionar alguns elementos no Google Chrome, o tema <em>\"default\"</em> do <em>DevTools</em> não ficou muito bem aos olhos de quem estava vendo de longe, então eu abri o <em>Settings</em> e troquei de <em>\"default\"</em> para <em>\"dark\"</em> e tudo ficou perfeito.</p>\n<p>Confesso que fiquei um pouco <strong><em>#HashTagXatiado</em></strong> com a surpresa de alguns na sala, realmente eles desconheciam tal funcionalidade.</p>\n<h3>Como proceder</h3>\n<p>A parada é tão simples que nem sei se devo explicar ilustrando com imagens, mas vou mesmo assim. hehehee</p>\n<hr>\n<h4>1. Abra o <em>Settings</em> (F1) do seu <em>DevTools</em></h4>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 976px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 79.30327868852459%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAAsSAAALEgHS3X78AAACYElEQVQoz21S226cMBDlryu175Xan+gfVFHTRlHf+pAqlapNspvdLAHWXIyxMdgGm/UCXbYDNFXU5mgYDcZz4cxxlFJ1XVdVNfsZf09mqAlw8sdLUZY8yzIHniiK0jQNgiBJkngCxIQQhBAEnufBHcoYnFPKsoxEmMekCNHOKctSa9113f4ZjDHWWvMEIURKSBhG4EmaBDFDmEchctQ0np0S+r4/vYSmaYIdch+99Wa7Q6HWFefjIA78hu26fhiOx+MwDHB1+A9Q1/X82+Vqtd6gMCqFjBMc7HbO+O9bt0GhretCyJwXc/85bQxOp3avaRqiwGVpOBzqrhFDWxdZ5BysPQnZY2K06foe+j8feEo/bbH+dI0/f9+dXZOL2+rLTXV+U39dViNhlTHaWpgfxoNNgAcW4HxcUlVboy4W5btz9uFb+f5SvznTr8/Mq4/7txfGUVKKBJdxjDEmWQbMAz2QJqWEYCyhda1EhPwIBbXIa0G1YFoyWWQOLOZomk6qtusg75+xZxyPM5vD4dC2bWcPdm8t3HcaY/ZCSsbaSUYgB9jwiwuD5HICYyzPc1g+JDc9ECalndQCdaD4rydARyB/DsBDDHKaPcCBXaMkxjQjlHLOKc3yfFYiBc2SNI3CMMEYuoG6ZvECO6BcEJwDl6K7ZXy39P1g47os51Ip6C+kmk0+C+DTZNXopXR83/e2rvuwCQNEY5qThJO4oCnPcEESeGVpQpOQYbCIpTEYTRDERcGdxWJxdXW1ur9f3a28+0cElVY37nrlP6yXP38oTve1bFRpRA6+qQSYERxioPw3eEt2MoVBXZEAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/2e05f867ede49820801c0edd852ae512/bc904/chrome-devtools-settings-menu.webp 250w,\n/static/2e05f867ede49820801c0edd852ae512/4be29/chrome-devtools-settings-menu.webp 500w,\n/static/2e05f867ede49820801c0edd852ae512/bbde0/chrome-devtools-settings-menu.webp 976w\"\n          sizes=\"(max-width: 976px) 100vw, 976px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/2e05f867ede49820801c0edd852ae512/43fa5/chrome-devtools-settings-menu.png 250w,\n/static/2e05f867ede49820801c0edd852ae512/c6e3d/chrome-devtools-settings-menu.png 500w,\n/static/2e05f867ede49820801c0edd852ae512/6d283/chrome-devtools-settings-menu.png 976w\"\n          sizes=\"(max-width: 976px) 100vw, 976px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/2e05f867ede49820801c0edd852ae512/6d283/chrome-devtools-settings-menu.png\"\n          alt=\"Chrome DevTools settings menu\"\n          title=\"Chrome DevTools settings menu\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Chrome DevTools settings menu</figcaption>\n  </figure></p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 57.82997762863534%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAIAAADtbgqsAAAACXBIWXMAAAsSAAALEgHS3X78AAABWElEQVQoz21Si46DIBDs/3/iJXfXNmeRp7xEEbAdxWp76YSIsjvs7Kynn7+2Yd3Xufm+EiI0VbaV26LShmGB9z6E0L8AJ3ieWkpLKeM4WGvTNN3fgZA2uuRy/4STcw4ZuNgY43yfc8bp/FwA1YHLruu0sa7vwxtZKQUy55yQ1jqHjDHGGptXNrXpeqOUspTSXI92MgpiG4aRC/F7Plchr2ThIqFCSjmBjFjJB7mmwgBtDFRAQoyxrKgZxgfGJdjGGiEEBNbWFnLdck6McSEVaWldMW7mtTY1VOBSSHPeo68QhoOMmxCC93iZpimv2NvzPSoL1emmuTHG4tORjTzfZ+us1ouqy+WC9mAu7KmNo6NOa3iJBFy9t3PIdmEilKNt55bp72UhAUYM4wi3PrhdN8wDluI/6UN41tyAT7SLRRlHcfxw/8k6ZKE0Aij1KmwdWKmHy5QWHNEHLkC3ogB9DgUAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/babc5a257fecace224c838b540b589d4/bc904/chrome-devtools-settings.webp 250w,\n/static/babc5a257fecace224c838b540b589d4/4be29/chrome-devtools-settings.webp 500w,\n/static/babc5a257fecace224c838b540b589d4/03f31/chrome-devtools-settings.webp 1000w,\n/static/babc5a257fecace224c838b540b589d4/9579c/chrome-devtools-settings.webp 1500w,\n/static/babc5a257fecace224c838b540b589d4/5052e/chrome-devtools-settings.webp 1788w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/babc5a257fecace224c838b540b589d4/43fa5/chrome-devtools-settings.png 250w,\n/static/babc5a257fecace224c838b540b589d4/c6e3d/chrome-devtools-settings.png 500w,\n/static/babc5a257fecace224c838b540b589d4/da8b6/chrome-devtools-settings.png 1000w,\n/static/babc5a257fecace224c838b540b589d4/2e9ed/chrome-devtools-settings.png 1500w,\n/static/babc5a257fecace224c838b540b589d4/04a44/chrome-devtools-settings.png 1788w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/babc5a257fecace224c838b540b589d4/da8b6/chrome-devtools-settings.png\"\n          alt=\"Chrome DevTools settings\"\n          title=\"Chrome DevTools settings\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Chrome DevTools settings</figcaption>\n  </figure></p>\n<hr>\n<h4>2. Logo na primeira abra vá até \"Theme\" e troque no select de \"Default\" para \"Dark\"</h4>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 114.91053677932406%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAIAAACEf/j0AAAACXBIWXMAAAsSAAALEgHS3X78AAAB40lEQVQ4y41U2Y6jMBDM///c7OzDIGUCgYA5fGKMMUcIWwFNFM0CSQlZGLnoruqCQ5JRWRqla6xUlEyUQlVCGaxM6q2Lg1DXB9s05zDyg7NUapqm6BIH5zCMLmmWT69wIITUthFC2sZh33Wdc67r71hO3LZx8DyPcREnBC0spxvnCso4FwnJlNZ7lY0xUgrGGGpib2ZorbuuH4ZhHMc9slKKz0C36CSO49PJD4LAWgt+CxVt287vXSFXVSWEQLVFHta+HwrKc8rgWZYXBbtL2Glbgr90iOYp56pUvu9/n3xj63G87WnWM5ay0KlUSdL08/Pvx8cfTA2Kuq22m9nkhbmQ7+aTVEgZhSHEx0midYXJQTlceJxcIQNwjguhSu3azpiaMoGBIQhcSIzwer3ukfFESIVzMAprXlDYBiZWOH8/vEqGZxAPF1AcFbB9rMOM5xorZKQ1QM6lxBYDbmZAK5j9U2bX20alUldoG4HP0tT7+joej0VeMMoISYui2CTPL7jZ2sBwBGMJCcly3FRPKdqs3F6niFmkBoZDKp6PP9ib88K2/eRTp0uFCVl8pW2L65fUTXLdTx4xaUrQLXIN8VxKTPuthLlhujCHyCIkcPjFn+T/kDzw/NN4l4zbHcK7lV/iHw6fOCRsHSbOAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/489727350cee48dac276d70ca1d148f7/bc904/chrome-devtools-settings-select.webp 250w,\n/static/489727350cee48dac276d70ca1d148f7/4be29/chrome-devtools-settings-select.webp 500w,\n/static/489727350cee48dac276d70ca1d148f7/03f31/chrome-devtools-settings-select.webp 1000w,\n/static/489727350cee48dac276d70ca1d148f7/a26de/chrome-devtools-settings-select.webp 1006w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/489727350cee48dac276d70ca1d148f7/43fa5/chrome-devtools-settings-select.png 250w,\n/static/489727350cee48dac276d70ca1d148f7/c6e3d/chrome-devtools-settings-select.png 500w,\n/static/489727350cee48dac276d70ca1d148f7/da8b6/chrome-devtools-settings-select.png 1000w,\n/static/489727350cee48dac276d70ca1d148f7/aabec/chrome-devtools-settings-select.png 1006w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/489727350cee48dac276d70ca1d148f7/da8b6/chrome-devtools-settings-select.png\"\n          alt=\"Chrome DevTools settings select\"\n          title=\"Chrome DevTools settings select\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Chrome DevTools settings select</figcaption>\n  </figure></p>\n<hr>\n<p>Ele vai dar um <em>refresh</em> (acho que reiniciando) e <strong>BAZINGA!</strong> o seu DevTools está todo <strong>Black Metal</strong>!! 🤘</p>\n<p><figure class=\"gatsby-resp-image-figure\" style=\"\">\n    <span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 1000px;\"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 56.00505689001264%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsSAAALEgHS3X78AAACbUlEQVQoz0VS227TQBD1L4BIpEJsJ7HX9l7s9S12m1BAFS+IPyCJoRJqqlS90ZZU5Ufql/5nm3iHWYcWS0cz6xmdnXNmjdOf37PV6uLh7u7P/e/VqtZY3d7Wv66u6tOzs/rs/LxenpzUi6Oj+vj4uF4sFvU5/r+5uamvr6+f4/3l5eXDcrnMDRHJw89fvsJkbxdSGUGWxJAjsli252fIOAEpJSKGoixhVBSQ53mL0WjUglJ6aNiD4be4nECRJo8hDZ6oR9a+hu+/wCVk7bju2nGctYugUbgOQtHWBoPBk+d5j1EkAc9Tw3y3M+VxCvuTSTNJhJKcAqMUOBfAEJRxIJ4PSAZICs5wCDRNICt3gVOsEaKQsOG8zWdGxqzpp5LDx/dZsxcTVUoCGKGUDpSRA7vShUlCYD/ztkgJyDwBjlIpY+C6RCHRf8KB1ZuG6A8XvAl8TxHXAeIOYRsd8IgDvue+IPAc4OixQM/COEaZQTthFEWAcWZYpjnl+R4URdEUUqgoDEGGAgRD2TQAGgRbqVqy48IQJefjMXw4OIAEB2GMqTAMmyRJ9FJmhvl2ZxpECaRptkkFU3EcK9yqEmGkGA0UNinXdRUuQzmu0+bFeKyyolA4ldKEKHejCTGfGbZtT6NiDFmWbYSMGxb4ykfpQaDJWBs9hPbqmTgIQ8WRLEC5eEmD3m20h1hHD4k3F+kIx8d3h7fo9xeiHxFnuGmGRnvabN28Bcpm+j2mKaCadjGoAoQQul4Zlt3X3w+Mc9Oy51Z/UGGshgO78qxO9er1m6rb6VSdf+h2u1XPtiur368s7Ov1enPTNOeaA/P+Xw2lNWrWUF4KAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n        <source\n          srcset=\"/static/456a5277bdd83f958a9efe0db13c24c1/bc904/chrome-devtools-dark.webp 250w,\n/static/456a5277bdd83f958a9efe0db13c24c1/4be29/chrome-devtools-dark.webp 500w,\n/static/456a5277bdd83f958a9efe0db13c24c1/03f31/chrome-devtools-dark.webp 1000w,\n/static/456a5277bdd83f958a9efe0db13c24c1/9579c/chrome-devtools-dark.webp 1500w,\n/static/456a5277bdd83f958a9efe0db13c24c1/b1218/chrome-devtools-dark.webp 2000w,\n/static/456a5277bdd83f958a9efe0db13c24c1/7abd2/chrome-devtools-dark.webp 3164w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/webp\"\n        />\n        <source\n          srcset=\"/static/456a5277bdd83f958a9efe0db13c24c1/43fa5/chrome-devtools-dark.png 250w,\n/static/456a5277bdd83f958a9efe0db13c24c1/c6e3d/chrome-devtools-dark.png 500w,\n/static/456a5277bdd83f958a9efe0db13c24c1/da8b6/chrome-devtools-dark.png 1000w,\n/static/456a5277bdd83f958a9efe0db13c24c1/2e9ed/chrome-devtools-dark.png 1500w,\n/static/456a5277bdd83f958a9efe0db13c24c1/9fabd/chrome-devtools-dark.png 2000w,\n/static/456a5277bdd83f958a9efe0db13c24c1/c0534/chrome-devtools-dark.png 3164w\"\n          sizes=\"(max-width: 1000px) 100vw, 1000px\"\n          type=\"image/png\"\n        />\n        <img\n          class=\"gatsby-resp-image-image\"\n          src=\"/static/456a5277bdd83f958a9efe0db13c24c1/da8b6/chrome-devtools-dark.png\"\n          alt=\"Chrome DevTools dark\"\n          title=\"Chrome DevTools dark\"\n          loading=\"lazy\"\n          style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        />\n      </picture>\n    </span>\n    <figcaption class=\"gatsby-resp-image-figcaption\">Chrome DevTools dark</figcaption>\n  </figure></p>\n<p>Dica simples e útil (ou não).</p>\n<p>Obrigado, de nada.</p>\n<p>Valeu, falou.</p>\n<p><code class=\"language-text\">{{end}}</code></p>","excerpt":"O Google Chrome em uma de suas atualizações implementou o tema \"Dark\" para o Chrome DevTools. Isso já faz uns 7 a 8 meses mais ou menos (eu acho), mas…","timeToRead":1,"frontmatter":{"category":["dicas"],"date":"há 10 anos","description":"O Google Chrome em uma de suas atualizações implementou o tema “Dark” para o Chrome DevTools.","path":"/ativando-o-tema-dark-nativo-do-chrome-dev-tools","tags":["dicas","google","chrome","devtools"],"title":"Ativando o tema Dark nativo do Chrome DevTools e indo para o lado negro da força","image":{"publicURL":"/static/chrome-devtools-dark-456a5277bdd83f958a9efe0db13c24c1.png","name":"chrome-devtools-dark"}},"fields":{"readingTime":{"words":220}}}}]}},"pageContext":{"limit":12,"skip":0,"numPages":4,"currentPage":1}}}