<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Débora Fernandes</title>
    <description>The latest articles on DEV Community by Débora Fernandes (@debborafernandess).</description>
    <link>https://dev.to/debborafernandess</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F214432%2Fee31788e-78ae-4da4-bba9-cb57e6bda367.jpeg</url>
      <title>DEV Community: Débora Fernandes</title>
      <link>https://dev.to/debborafernandess</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/debborafernandess"/>
    <language>en</language>
    <item>
      <title>How-to fix Git com GPG Lock</title>
      <dc:creator>Débora Fernandes</dc:creator>
      <pubDate>Wed, 26 Jun 2024 13:13:25 +0000</pubDate>
      <link>https://dev.to/debborafernandess/how-to-fix-git-com-gpg-lock-4p4h</link>
      <guid>https://dev.to/debborafernandess/how-to-fix-git-com-gpg-lock-4p4h</guid>
      <description>&lt;p&gt;Um dia, sem mais nem menos, você não consegue mergear uma branch em outra ou sequer fazer um commit manual, porque ao tentar recebe a mensagem de erro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpg: waiting for lock (held by 4242) ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E agora, o que aconteceu?&lt;br&gt;
&lt;em&gt;Será que a chave GPG expirou e eu devo renovar?&lt;br&gt;
Seria um lock no processo e matar o processo resolveria?&lt;br&gt;
Devo apelar para o desinstala/instala?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Esse problema vem de um congelamento durante o processo de commit que apesar de raramente acontecer, quando ocorre é geralmente causado por problemas de bloqueio GPG. &lt;/p&gt;

&lt;p&gt;A boa notícia é que é super simples resolver esse problema!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Começamos procurando e removendo o(s) arquivo(s) de lock&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯ ls -l ~/.gnupg/*.lock
❯ rm ~/.gnupg/[lock-file-name].lock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;E finalizamos reiniciando o GPG&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯ gconf --reload gpg-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uma vez removido o arquivo e reiniciado o GPG, você consegue outra vez commitar e realizar outras operações do GIT =)&lt;/p&gt;

&lt;p&gt;Ah, e caso queira consultar o 'status' do GPG, você pode imprimí-lo no seu terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❯ echo "test" | gpg --clearsign
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Um brinde à coragem das primeiras vezes</title>
      <dc:creator>Débora Fernandes</dc:creator>
      <pubDate>Thu, 02 May 2024 03:08:24 +0000</pubDate>
      <link>https://dev.to/debborafernandess/um-brinde-a-coragem-das-primeiras-vezes-30l4</link>
      <guid>https://dev.to/debborafernandess/um-brinde-a-coragem-das-primeiras-vezes-30l4</guid>
      <description>&lt;p&gt;Como é maravilhoso criar um momento de primeiras vezes para si!&lt;/p&gt;

&lt;p&gt;Estou vivendo um momento de várias primeiras vezes, planejado com antecedência e mesmo assim &lt;strong&gt;como é bom viver algo pela primeira vez&lt;/strong&gt;! &lt;br&gt;
Estou cheia de empolgação, totalmente fora da zona de conforto e, mais importante, vivendo momentos especiais &amp;amp; únicos!&lt;/p&gt;

&lt;p&gt;Em abril tive minha primeira experiência como organizadora de um evento presencial de grande porte em Tech: a &lt;a href="https://www.linkedin.com/company/tropicalrb" rel="noopener noreferrer"&gt;Tropical.rb&lt;/a&gt;!&lt;br&gt;
Deu muito trabalho, houveram decisões a serem pensadas de forma rápida e o desafio de construir algo tão importante com pessoas que nunca tinha trabalhado ou convivido antes. O plus de atuar como host deixou tudo ainda mais assustadoramente-emocionante. &lt;br&gt;
A Tropical.rb foi incrível, um sucesso coletivo: não teve um fator individual e mas o envolvimento de cada uma das pessoas que fizeram parte dessa edição tão inspiradora. &lt;br&gt;
Parabéns &amp;amp; obrigada comunidade Rails e Ruby!&lt;/p&gt;

&lt;p&gt;Logo na sequência, teve a edição especial do Rails Girls, especialmente pensada para as dev@s junior a  caminho de virarem plenas. Uma edição tão emocionante como só o &lt;a href="https://www.linkedin.com/company/rails-girls-sao-paulo" rel="noopener noreferrer"&gt;Rails Girls&lt;/a&gt; pode ser. O desafio foi passar uma mensagem de empoderamento na dose certa para encorajar sem assustar; receber convidadas e convidados especiais e internacionais e desenhar um desafio técnico totalmente novo para essa edição. &lt;br&gt;
O resultado ficou estampado em cada rosto (e lágrima hehe) das pessoas que deram seu depoimento ao final do dia =) &lt;br&gt;
Aguardamos a inscrição de vocês na próxima edição como mentoras, hein?&lt;/p&gt;

&lt;p&gt;A partir daí veio a trip internacional sozinha: alguns meses fora, passando por diferentes culturas,  conhecendo muita gente nova e balanceando a saudades das pessoas que preenchem meu dia-a-dia normalmente.&lt;/p&gt;

&lt;p&gt;No início de maio, está chegando a &lt;a href="https://railsconf.org" rel="noopener noreferrer"&gt;Railsconf&lt;/a&gt;, que vou pela primeira vez tbm e tbm vou ajudar na entrega do evento o/&lt;br&gt;
Dessa vez em outra cultura, vai ser ainda mais desafiador…&lt;/p&gt;

&lt;p&gt;Mesmo com toda a parte legal de toda essa novidade, tem sempre um medinho ( às vezes não tão inho) envolvido. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A melhor parte desse meu momento de primeiras vezes, está sendo a superação! Seja no aprendizado em si; seja em me arriscar fazer algo mesmo sem ter a desenvoltura da forma segura que eu já gostaria de ter: afinal, experiência você só ganha vivendo!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ainda tem outras primeiras vezes pra acontecer nos proximos meses, muita superação para enfrentar e depois muitos bons momentos para recordar.&lt;br&gt;
Se você chegou até aqui, o que eu espero para você é o que estou vivendo: fazer algo fora da sua zona de conforto para que cada vez mais seu mundo se expanda e você acumle experiências e sonhos realizados!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How-to fix: not find a valid mapping for #&lt;User ...&gt;</title>
      <dc:creator>Débora Fernandes</dc:creator>
      <pubDate>Fri, 24 Jul 2020 20:36:49 +0000</pubDate>
      <link>https://dev.to/debborafernandess/how-to-fix-invalid-mapping-ao-ativar-devise-confirmable-1n88</link>
      <guid>https://dev.to/debborafernandess/how-to-fix-invalid-mapping-ao-ativar-devise-confirmable-1n88</guid>
      <description>&lt;p&gt;Após adicionar a confirmação de usuário em uma Rails gem:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class User &amp;lt; ApplicationRecord
...
  devise :confirmable
...
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e atualizar as factories para como padrão ter um &lt;code&gt;User#confirmed?&lt;/code&gt; &lt;br&gt;
com &lt;code&gt;confirmed_at { 1.day.ago }&lt;/code&gt;, os testes que envolviam o model User na minha aplicação passaram a quebrar de uma forma inesperada...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Could not find a valid mapping for #&amp;lt;User id: 1...&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Por que os testes quebraram?!
&lt;/h3&gt;

&lt;p&gt;Após ativar o &lt;a href="https://github.com/heartcombo/devise/blob/master/lib/devise/models/confirmable.rb" rel="noopener noreferrer"&gt;Devise::Confirmable&lt;/a&gt;, o create do objeto passa a chamar o &lt;a href="https://github.com/heartcombo/devise/blob/master/lib/devise/models/confirmable.rb#L115" rel="noopener noreferrer"&gt;send_confirmation_instructions&lt;/a&gt;.&lt;br&gt;
Esse método por sua vez, depende que na rota do rails esteja configurado &lt;em&gt;devise_for ou devise_scope :resource&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A gem não tem o arquivo &lt;strong&gt;routes.rb&lt;/strong&gt; configurado e com isso, também não tem o mapping &lt;code&gt;devise_for ou devise_scope&lt;/code&gt; e isso que faz com que o método &lt;code&gt;Devise::Mapping#find_scope!&lt;/code&gt; &lt;em&gt;dê raise&lt;/em&gt;&lt;br&gt;
&lt;code&gt;raise "Could not find a valid mapping for #{obj.inspect}"&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Could not find a valid mapping for #&amp;lt;User id: 1...&amp;gt;
     # /Users/username/.rvm/gems/ruby-2.6.6/gems/devise-4.7.2/lib/devise/mapping.rb:46:in
# `find_scope!'
     # /Users/username/.rvm/gems/ruby-2.6.6/gems/devise-4.7.2/lib/devise/mailers/helpers.rb:23:in
     # `initialize_from_record'
     # /Users/username/.rvm/gems/ruby-2.6.6/gems/devise-4.7.2/lib/devise/mailers/helpers.rb:18:in
     # `devise_mail'
     # /Users/username/.rvm/gems/ruby-2.6.6/gems/devise-4.7.2/app/mailers/devise/mailer.rb:9:in
     # `confirmation_instructions'
     # /Users/username/.rvm/gems/ruby-2.6.6/gems/devise-4.7.2/lib/devise/models/authenticatable.rb:200:in
     # `send_devise_notification'
     # /Users/username/.rvm/gems/ruby-2.6.6/gems/devise-4.7.2/lib/devise/models/confirmable.rb:121:in
     # `send_confirmation_instructions'
     # /Users/username/.rvm/gems/ruby-2.6.6/gems/devise-4.7.2/lib/devise/models/confirmable.rb:183:in
     # `send_on_create_confirmation_instructions'
     # ./spec/models/user_spec.rb:125:in `block (4 levels) in &amp;lt;top (required)&amp;gt;''`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deu um pouco de trabalho encontrar essa causa, já que a maioria dos relatos são para projetos completos e não para gems...&lt;br&gt;
Mas uma vez encontrada, a solução foi bem simples ;]&lt;/p&gt;
&lt;h3&gt;
  
  
  A solução
&lt;/h3&gt;

&lt;p&gt;No &lt;code&gt;rails_helper.rb&lt;/code&gt; adicionei as configurações para o Devise não enviar e-mail no ambiente de teste e isso faz com que , não chamar o &lt;strong&gt;Devise::Mapping&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RSpec.configure do |config|
...
  Devise::Mailer.delivery_method = :test
  Devise::Mailer.perform_deliveries = false
...
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Na spec que eu precisava testar esse novo comportamento, apenas adicionei um mock para o método que envia o email:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
allow_any_instance_of(described_class)
  .to receive(:send_confirmation_instructions)
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  TL; DR
&lt;/h3&gt;

&lt;p&gt;O Devise chama o disparo de e-mail apenas quando o &lt;code&gt;confirmed_at&lt;/code&gt; é do momento corrente (&lt;code&gt;Time.current&lt;/code&gt; e suas variações)&lt;br&gt;
Inicialmente, antes de encontrar a configuração do rails_helper, havia alterado o &lt;code&gt;confirmed_at { 1.day.ago }&lt;/code&gt; para &lt;code&gt;confirmed_at { 1.day.ago }&lt;/code&gt; e havia resolvido, daí a descoberta do momento de disparo do e-mail =]&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Não confie em mim , leia a doc :)&lt;/em&gt;&lt;br&gt;
&lt;a href="https://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Confirmable" rel="noopener noreferrer"&gt;DOC Confirmable&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/heartcombo/devise/blob/master/lib/devise/mapping.rb" rel="noopener noreferrer"&gt;DOC Devise::Mapping&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devise</category>
      <category>rspec</category>
      <category>confirmable</category>
      <category>gem</category>
    </item>
    <item>
      <title>Obrigada!</title>
      <dc:creator>Débora Fernandes</dc:creator>
      <pubDate>Fri, 15 Mar 2019 20:39:13 +0000</pubDate>
      <link>https://dev.to/debborafernandess/obrigada-788</link>
      <guid>https://dev.to/debborafernandess/obrigada-788</guid>
      <description>&lt;p&gt;Há uma semana, muitas pessoas em São Paulo e grande São Paulo passaram pelos piores momentos que uma pessoa pode passar: ver a vida ser virada de cabeça pra baixo, com suas casas enchendo de água e levando o muito e o pouco que lutou-se tanto para construir…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--af9cfa6B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/1%2Aw3tauT1T6d5QxBP6ziItkw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--af9cfa6B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/600/1%2Aw3tauT1T6d5QxBP6ziItkw.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Grande parte dessas pessoas de repente se viram sem suas roupas, em abrigos com poucas condições de oferecer aquilo que nos é trivial e tão indispensável no dia-a-dia: água, itens de higiene, roupas, comida… e contando com a solidariedade alheia.&lt;/p&gt;

&lt;p&gt;Os locais que abrigaram essas pessoas, começaram a mobilizar a comunidade para compartilhar solicitações de doações que pudessem prover essas necessidades básicas.&lt;/p&gt;

&lt;p&gt;Já que comunidade é comum-unidade: pessoas unidas por um propósito comum. &lt;strong&gt;&lt;em&gt;Foi aí que entramos eu e você!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quando essa necessidade chegou a mim, meu primeiro impulso foi doar o que eu tinha mas, pelo tamanho da necessidade, minha doação faria pouca diferença… Então lembrei que tenho amizades com pessoas maravilhosas que já cruzaram meu caminho e de perto ou apenas pelas redes sociais, é o tesouro mais valioso que possuo!&lt;/p&gt;

&lt;p&gt;Ao longo dessa semana, pedi a colaboração de muitas pessoas, falando, mandando mensagem, e-mail, pelo stories do Instagram….&lt;/p&gt;

&lt;p&gt;As reações ao meu pedido foram maravilhosas!&lt;/p&gt;

&lt;p&gt;Em um dia, recebi mais roupas do que poderia carregar, um dos postos de doações conseguiu distribuir uma muda e uma troca para cada pessoa necessitada que foi buscar com doações de apenas 2 dias!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tJwz0udV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A8Uvg6QZhiZF27PvjfWfyeA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tJwz0udV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A8Uvg6QZhiZF27PvjfWfyeA.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7yM9qQqQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A4upZwg4U72Reni2r07DB-w.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7yM9qQqQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A4upZwg4U72Reni2r07DB-w.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SwOhBwXG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AzaJnYwetSS3SdjJaTeE6SQ.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SwOhBwXG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AzaJnYwetSS3SdjJaTeE6SQ.jpeg" alt=""&gt;&lt;/a&gt;Distribuição dos itens doados de Domingo à Quarta&lt;/p&gt;

&lt;p&gt;Pedi também ajuda para conseguirmos doar itens de limpeza e higiene, e alimentos e cada demonstração de carinho que recebi &lt;em&gt;de-pessoas-para-pessoas&lt;/em&gt; só me faz acreditar que a sociedade não está doente não: os heróis estão escondidos esperando apenas o chamado para serem ativados.&lt;/p&gt;

&lt;p&gt;Perdi a conta de quantas vezes meu olho marejou de alegria e amor com a generosidade que encontrei…&lt;/p&gt;

&lt;p&gt;Queria que você soubesse que aquele primeiro impulso que eu tive de colaborar sozinha foi multiplicado 15x mais até o momento que te escrevo, graças a pessoas como você, que virou um herói, uma heroína quando alguém pediu socorro.&lt;/p&gt;

&lt;p&gt;Obrigada por estar nessa comigo, por ser um &lt;strong&gt;Ser-Humano&lt;/strong&gt; na totalidade da palavra, para quem apenas fazer o bem importa, mesmo que seja para desconhecidos que você não sabe onde ou em que situação se encontra no detalhe!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quero te dizer que sucesso é isso, esse imenso orgulho de ter amigos e familiares como você!&lt;br&gt;&lt;br&gt;
Eu e você (e todos como nós) são alicerces de um mundo melhor =)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A luta não acabou, as pessoas estão voltando aos poucos para limparem suas casas e reerguerem seus mundos. Como são muitas, a ajuda continua sendo muito bem-vinda!&lt;/p&gt;

&lt;p&gt;E eu só posso te dizer: &lt;strong&gt;obrigada&lt;/strong&gt;!&lt;/p&gt;

</description>
      <category>saocaetano</category>
      <category>enchente</category>
      <category>solidariedade</category>
      <category>doação</category>
    </item>
    <item>
      <title>Ano novo, dinheiro novo</title>
      <dc:creator>Débora Fernandes</dc:creator>
      <pubDate>Tue, 08 Jan 2019 01:26:17 +0000</pubDate>
      <link>https://dev.to/debborafernandess/ano-novo-dinheiro-novo-37c9</link>
      <guid>https://dev.to/debborafernandess/ano-novo-dinheiro-novo-37c9</guid>
      <description>&lt;h4&gt;
  
  
  Começando a investir com segurança
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I_0QtJn0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2AeSOugQzsJ27WgQCG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I_0QtJn0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2AeSOugQzsJ27WgQCG" alt=""&gt;&lt;/a&gt;começando a investir com segurança&lt;/p&gt;

&lt;p&gt;Investir, apesar de não ser uma prática comum, pode ser bem menos complicado do que se imagina.&lt;/p&gt;

&lt;p&gt;O truque é conhecer e aprender sua rotina e então melhorar seu controle financeiro para separar uma porção da sua receita para que ela lhe gere mais receita!&lt;/p&gt;

&lt;p&gt;Outro truque é pagar o mínimo possível para as instituições que irão operar seus investimentos, corretoras como &lt;strong&gt;&lt;em&gt;Rico, Clear, Easynvest, Banco Inter, Daycoval&lt;/em&gt;&lt;/strong&gt; entre outras costumam cobrar muuuuuuito menos que os grandes bancos para administrar seus investimentos.&lt;/p&gt;

&lt;p&gt;Criar uma conta nessas corretoras não é NADA burocrático, podem ser pela internet ou aplicativo mesmo e ainda demorar apenas 2 dias em média para estar aprovada =)&lt;/p&gt;

&lt;h4&gt;
  
  
  3 dicas iniciais básicas
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WBSovO66--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2As9GzF1m46a0Fsn-7" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WBSovO66--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/0%2As9GzF1m46a0Fsn-7" alt=""&gt;&lt;/a&gt;Dicas de Ouro para começar a investir&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;conhecer meus gastos mensais para me organizar para eliminar os desperdícios que escoam meu dinheiro&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;aplicar meu R$ para que eu crie um "fundo de emergência", de onde eu possa retirar dinheiro rápido em uma eventualidade&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;diversificar meus investimentos&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;Troquei de propósito aqui o sujeito da frase, para que ao ler você já se imagine realizando esses passos!&lt;/p&gt;

&lt;h4&gt;
  
  
  Qual minha rotina de gastos?
&lt;/h4&gt;

&lt;p&gt;Vou deixar aqui algumas dicas de pessoais para você levantar informações e começar hoje:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;abra uma planilha ou ferramenta de controle de gastos que você conheça e confie — eu pessoalmente gosto muito do &lt;a href="https://www.organizze.com.br"&gt;&lt;em&gt;Organizze&lt;/em&gt;&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;abra seu extrato bancário de outro — se puder pegar informações de 2 a 3 meses no mínimo, isso aumenta seu conhecimento da variação média da sua rotina, principalmente das suas despesas que não são comuns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Com essas informações, você terá uma média de gastos &amp;amp; ganhos e conseguirá identificar gastos supérfluos que poder ser eliminados ou ter limites redefinidos…&lt;/p&gt;

&lt;h3&gt;
  
  
  Aplicações de Curto Prazo
&lt;/h3&gt;

&lt;p&gt;Criando meu Fundo de Emergência&lt;/p&gt;

&lt;p&gt;O fundo de emergência é uma fonte de dinheiro que apesar de estar investido, você tem acesso &lt;strong&gt;rápido&lt;/strong&gt; em qualquer eventualidade. Com um fundo de emergência você não deixa o dinheiro parado na conta e ao mesmo tempo, não enfrenta barreiras ao precisar retirar esse valor.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O tamanho de um fundo de emergência tem um cálculo para que as pessoas tenham uma base de quando já esta guardado em segurança:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLT's&lt;/strong&gt; : 6 vezes do seu custo mensal&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PJ's&lt;/strong&gt;  &lt;strong&gt;ou empreendedores&lt;/strong&gt; : 12 vezes do seu custo mensal&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Algumas opções de investimento para montar seu fundo de emergencia são:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fundo DI&lt;/strong&gt; : vc investe em um fundo, junto com outras pessoas e o gestor, um cara experiente, escolhe o melhor fundo de Renda Fixa para aplicar esse dinheiro. Tem alta liquidez e um bom rendimento para curto prazo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tesouro Selic&lt;/strong&gt; : rende mais que a poupança, rende próximo ao Fundo DI e você pode resgatar a qualquer momento.&lt;/p&gt;

&lt;p&gt;Um problema com aplicações de curto prazo, é a incidência de Imposto de Renda sobre &lt;strong&gt;&lt;em&gt;seu lucro.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Outra opção, livre de imposto de renda são os LCI's ou LCA’s: com eles você pode escolher opções para 3 meses, 6 meses, 12 meses e ter seu dinheiro livre para emergências ou re-aplicações na data de vencimento deles.&lt;/p&gt;

&lt;p&gt;Além desses há vários outros tipos de aplicações de Renda Fixa que você pode encontrar pesquisando por aí, que dão uma rentabilidade maior que a poupança e ao mesmo tempo são investimentos de baixíssimo risco.&lt;/p&gt;

&lt;h3&gt;
  
  
  Diversificando meus Investimentos
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Com os conhecimentos que você for adquirindo através do tempo, você conhecerá alternativas para diversificar a rentabilidade dos seus investimentos: a &lt;strong&gt;Renda Variável.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;melhor investimento&lt;/strong&gt; para diversificar sua rentabilidade será aquele que você compreender melhor o funcionamento!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Estude sempre como te trará os lucros, , qual o prazo no qual você poderá reaver seu dinheiro se precisar e quais os possíveis riscos que você poderá correr e; se isso está de acordo com seu momento financeiro.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Conhecendo mais sobre Renda Variável&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;FII&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;(Fundo de Investimento Imobiliário)&lt;/em&gt;: são compostos por imóveis físicos ou ativos do setor imobiliário, dos quais você adquire uma parte chamada &lt;em&gt;cota.&lt;/em&gt; Comprando &lt;strong&gt;&lt;em&gt;alguma(s) cota(s)&lt;/em&gt;&lt;/strong&gt;, você investe no setor imobiliário e passa a receber " &lt;strong&gt;&lt;em&gt;aluguéis&lt;/em&gt;&lt;/strong&gt;" mensalmente, com o investimento infinitamente menor do que o valor de comprar um imóvel. Com FII’s, você pode lucrar tanto na valorização das cotas quanto no recebimento mensal dos “aluguéis”. &lt;a href="https://blog.rico.com.vc/melhores-fundos-imobiliarios"&gt;+ mais informações&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Com FII's, você pode lucrar tanto na valorização das cotas quanto no recebimento mensal dos “ &lt;strong&gt;&lt;em&gt;aluguéis&lt;/em&gt;&lt;/strong&gt; ”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Ações&lt;/em&gt;&lt;/strong&gt; : talvez &lt;em&gt;o primeiro&lt;/em&gt; tipo de investimento que ouvimos falar assim como &lt;strong&gt;&lt;em&gt;o que mais assusta ao pensar em investir&lt;/em&gt;&lt;/strong&gt;. Quando você compra uma ação, está injetando seu dinheiro em uma empresa; então para ter retorno, é importante que você conheça e confie que essa empresa está bem posicionada no mercado onde ela atua. Investir em ações se torna &lt;strong&gt;&lt;em&gt;bem menos arriscado&lt;/em&gt;&lt;/strong&gt; se você estuda a empresa na qual deseja investir ;=). Similar aos FII's, ao comprar uma ação você pode &lt;em&gt;lucrar tanto na valorização dela quanto no recebimento mensal dos dividendos&lt;/em&gt;. &lt;a href="https://financaspessoais.organizze.com.br/como-comecar-a-investir-em-acoes/"&gt;+ informações&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;É importante que você conheça e confie que essa empresa está bem posicionada no mercado onde ela atua para comprar ações com segurança!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Pesquise mais sobre Renda Variável como &lt;strong&gt;&lt;em&gt;ETFs, Fundos e Clubes de Investimento, COE&lt;/em&gt;&lt;/strong&gt; ….&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rendavariável</category>
      <category>rendafixa</category>
      <category>investimento</category>
      <category>educaçãofinanceira</category>
    </item>
    <item>
      <title>Sequel para ActiveRecord heavy-users</title>
      <dc:creator>Débora Fernandes</dc:creator>
      <pubDate>Mon, 23 Jul 2018 18:05:42 +0000</pubDate>
      <link>https://dev.to/debborafernandess/sequel-para-activerecord-heavy-users-5a3d</link>
      <guid>https://dev.to/debborafernandess/sequel-para-activerecord-heavy-users-5a3d</guid>
      <description>&lt;p&gt;“&lt;em&gt;Uso apenas o ActiveRecord em minhas aplicações”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;“Já &lt;em&gt;tive problemas com features simples de desenvolver que geraram problemas em produção por consultar / escrever em tabelas gigantes”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Se alguma das afirmações acima for verdadeira para você, quero compartilhar com você, em especial se trabalha com Rails e usa exclusivamente o ActiveRecord, um modo alternativo de se comunicar com o banco de dados.&lt;br&gt;&lt;br&gt;
Assim, você terá mais opções quando precisar implementar nossas features que lidarão com grandes massas de dados.&lt;/p&gt;
&lt;h3&gt;
  
  
  O que é o SEQUEL?
&lt;/h3&gt;

&lt;p&gt;Se nunca ouviu falar de Sequel, essa gem é até hoje a menor das libs de banco de dados para o Ruby em termos de tamanho de código e é também a que faz o load mais rápido na inicialização da sua APP, já que carrega apenas o CORE com as funcionalidades básicas para comunicação com o banco!&lt;/p&gt;

&lt;p&gt;De acordo com suas necessidades, você pode adicionar funcionalidades adicionais via &lt;strong&gt;plugins,&lt;/strong&gt; sendo que cada plugin corresponde a um único arquivo incluso na gem, que é carregado &lt;strong&gt;APENAS&lt;/strong&gt; quando o plugin é requerido.&lt;/p&gt;

&lt;p&gt;É isso que o torna mais rápido num comparativo com outros ORM’s.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Em uma classe limpa por exemplo, apenas realizando conexão com o banco, o ActiveRecord tem um load time de 0.4ms enquanto o Sequel tem um load time de 0.08ms, um ganho de 5x de velocidade!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A gem do sequel tem sido permanentemente estável e muito bem suportada desde sua criação até hoje, o Jeremy Evans seu criador, que mantém as issues perto de ZERO e lança releases geralmente mensais.&lt;/p&gt;
&lt;h3&gt;
  
  
  SEQUEL vs ActiveRecord
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Sintaxe
&lt;/h4&gt;

&lt;p&gt;A sintaxe de ambos é bem similar, o que é uma vantagem por não adicionar grande complexidade na implementação =)&lt;/p&gt;

&lt;p&gt;Estamos acostumados a consultar o banco e aguardar que todos os registros da busca sejam carregados para depois serem retornados para uso, isso é o  &lt;strong&gt;&lt;em&gt;preload&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Preload x Layz fetch
&lt;/h4&gt;

&lt;p&gt;O sequel faz &lt;strong&gt;&lt;em&gt;lazy fetch&lt;/em&gt;&lt;/strong&gt; nas suas consultas ao banco de dados.&lt;br&gt;&lt;br&gt;
Aí você pensa: Hmm, legal… que isso?&lt;br&gt;&lt;br&gt;
Com o lazy fetch ele te retorna o resultado a cada busca, não é necessário aguardar todos os registros serem carregados na memória para obter os retornos.&lt;br&gt;&lt;br&gt;
Isso te gera uma economia de load time e memória.&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;a href="http://sequel.jeremyevans.net/rdoc/classes/Sequel/Dataset.html"&gt;Dataset&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Como quase todas as consultas no Sequel são representadas por datasets, e a maioria dos métodos de dataset retornam cópias modificadas de si mesmos. O seu retorno é formato de hash, que é bem fácil de manipular.&lt;/p&gt;

&lt;p&gt;Com ele é possível retornar informações de mais de uma tabela no mesmo conjunto de dados, fazer recursão e retornar seus dados na mesma busca, entre outros, pois você pode sobrescrever o dataset conforme sua necessidade.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module DB::Version
 def dataset
 time = 1.week.ago
 original\_data = super
 table\_name = original\_data.first\_source\_alias

original\_data.from(Sequel.lit(\&amp;lt;\&amp;lt;-SQL, time, time))
 (
 SELECT \* FROM #{table\_name}
 WHERE sys\_period @\&amp;gt; ?::timestamptz
 UNION ALL
 SELECT \* from #{table\_name}\_history
 WHERE sys\_period @\&amp;gt; ?::timestamptz
 ) #{table\_name}
 SQL
 end
end
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;No exemplo acima, temos um exemplo do que citei acima.&lt;/p&gt;

&lt;p&gt;Nele, sobrescrevemos o método &lt;strong&gt;&lt;em&gt;dataset&lt;/em&gt;&lt;/strong&gt; original da classe para retornar em um mesmo momento os dados atuais e os dados da tabela que guarda as alterações em um registro =)&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="http://sequel.jeremyevans.net/rdoc/files/doc/sql_rdoc.html"&gt;Sequel &amp;amp; SQL&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Desenvolvedorxs adoram escrever código sem ter que recorrer a consultas SQL personalizadas e esse também é um dos plus do Sequel!&lt;br&gt;&lt;br&gt;
Com ele é fácil fazer &lt;a href="http://sequel.jeremyevans.net/rdoc/files/doc/sql_rdoc.html#label-Aliasing"&gt;alias&lt;/a&gt;, &lt;a href="http://sequel.jeremyevans.net/rdoc/files/doc/sql_rdoc.html#label-Casts"&gt;type cast&lt;/a&gt;, operações com string, operações matemáticas, manipulação da estrutura do banco, views e muito mais.&lt;/p&gt;
&lt;h4&gt;
  
  
  Time is money, não vamos disperdiçá-lo
&lt;/h4&gt;

&lt;p&gt;Num local database, há quase zero latência entre a database and a aplicação;&lt;br&gt;&lt;br&gt;
Quando sua aplicação está usando por exemplo a AWS, com a database e a aplicação em diferentes servidores e na mesma zona, há quase meio milissegundos de latência;&lt;br&gt;&lt;br&gt;
Já quando sua database está em zonas diferentes ainda que no mesmo datacenter, a latência ja sobre para 2 milliseconds e por aí vai….&lt;/p&gt;

&lt;p&gt;Isso significa que trabalhar com grandes ou massas de dados leva um tempo muito maior entre a solicitação e a resposta que obtemos.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Na Smart FIT, tinhamos um relatorio que levava 12h para ser rodado apenas para o Brasil. Após implementarmos o Sequel, o tempo de carregamento para TODOS os sete paises caiu para 8h e uns minutos!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Isso aconteceu porque com a implementação do Sequel metodo EAGER ( que faz eaguer load), além de eliminarmos os N+1, eliminamos os callbacks que o AR chama para antes de salvar um registro por padrão.&lt;br&gt;&lt;br&gt;
Além disso, o Sequel implementa o octopus, que faz gerenciamento de pool de conexão multibanco por padrão, enquanto com o ActiveRecord tínhamos que add a “gem octopus” que usa o &lt;em&gt;method missing&lt;/em&gt; que torna a resposta 2x mais lenta!&lt;/p&gt;

&lt;p&gt;Essas são algumas das vantagens que o Sequel disponibiliza, tanto que desde 2015 o ActiveRecord passou a implementar algumas delas. Sua implentação é muito simples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gem install 'sequel-rails' ou adicioná-lo ao Gemfile

_Configuração inicial no_ **_application.rb_** _:_

config.sequel.after\_connect = proc do 
 Sequel::Model.plugin :timestamps, update\_on\_create: true 
 Sequel::Model.plugin :update\_or\_create 
 Sequel::Model.plugin :validation\_helpers 
 Sequel::Model.plugin :tactical\_eager\_loading 
end

Criação do seu model:

class DB::State \&amp;lt; Sequel::Model 
 one\_to\_many :cities 
end

class DB::City \&amp;lt; Sequel::Model 
 one\_to\_one :state 
end

e no IRB:
\&amp;gt; DB::State.where(uf: %w(sp rj))

Sequel::Mysql2::Database SELECT \* FROM `states` WHERE (`uf` IN ('sp'))
#\&amp;lt;DB::State [@values](http://twitter.com/values)={:id=\&amp;gt;1, :name=\&amp;gt;"São Paulo", :created\_at=\&amp;gt;2009-06-22 21:13:44 -0300, :updated\_at=\&amp;gt;2016-04-07 18:31:17 -0300, :uf=\&amp;gt;"SP"}\&amp;gt;

\&amp;gt; DB::State.where(uf: %w(sp)).eager(:cities).each do |state|
 p state
 p state.cities
end
 Sequel::Mysql2::Database SELECT \* FROM `states` WHERE (`uf` IN ('sp')) #\&amp;lt;DB::State [@values](http://twitter.com/values)={:id=\&amp;gt;1, :name=\&amp;gt;"São Paulo", :created\_at=\&amp;gt;2009-06-22 21:13:44 -0300, :updated\_at=\&amp;gt;2016-04-07 18:31:17 -0300, :uf=\&amp;gt;"SP"}
Sequel::Mysql2::Database SELECT \* FROM `cities` WHERE (`cities`.`state_id` = 1) [#\&amp;lt;DB::City [@values](http://twitter.com/values)={:id=\&amp;gt;79, :state\_id=\&amp;gt;11, :name=\&amp;gt;"Rio Claro", :created\_at=\&amp;gt;2009-06-22 21:13:54 -0300, :updated\_at=\&amp;gt;2016-06-09 08:06:44 -0300}...

Bem similar ao que conhecemos, não?
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Há muito mais em sua &lt;a href="http://sequel.jeremyevans.net/documentation.html"&gt;documentação&lt;/a&gt;, espero ter despertado sua curiosidade para fazer alguns testes e brincadeiras por conta própria!&lt;/p&gt;

&lt;p&gt;That’s all folks!&lt;/p&gt;

&lt;p&gt;​&lt;/p&gt;

&lt;p&gt;​&lt;/p&gt;

</description>
      <category>sequels</category>
      <category>rails</category>
      <category>performance</category>
    </item>
    <item>
      <title>Upload de SVG com Image Magick + AWS</title>
      <dc:creator>Débora Fernandes</dc:creator>
      <pubDate>Fri, 05 Jan 2018 17:57:47 +0000</pubDate>
      <link>https://dev.to/debborafernandess/upload-de-svg-com-image-magick-aws-4p74</link>
      <guid>https://dev.to/debborafernandess/upload-de-svg-com-image-magick-aws-4p74</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F500%2F1%2AiiBd1DD7NaAkjL9cOCgYaQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F500%2F1%2AiiBd1DD7NaAkjL9cOCgYaQ.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esse foi mais um dia daqueles &lt;em&gt;“Na minha máquina funciona”&lt;/em&gt;, onde o upload de arquivos funcionava perfeitamente no ambiente de DEV e no ambiente de produção antigo, mas quebrava na nova instância que estavamos homologando na AWS.&lt;br&gt;&lt;br&gt;
Já imaginava que tinha o ImageMagick instalado em produção, mas como o upload de imagens não acontecia:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;convert -background none some\_image.svg some\_image.jpg 
convert: not authorized `some\_image.svg’ @ error/constitute.c/ReadImage/454.
convert: no images defined `some\_image.jpg’ @ error/convert.c/ConvertImageCommand/3046.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;h1&gt;
  
  
  whathell
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;p&gt;Desconfiei que talvez a versão estivesse desatualizada…&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ convert -version

Version: ImageMagick 6.7.8–9 2016–06–22 Q16 http://www.imagemagick.org
Copyright: Copyright © 1999–2012 ImageMagick Studio LLC
Features: OpenMP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Okay, tinha a versão atualizada!&lt;br&gt;&lt;br&gt;
😏 até janeiro de 2018 ao menos&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Aí começou aquele trabalho de formiguinha, para entender um pouco melhor como funciona o ImageMagick.&lt;/p&gt;

&lt;p&gt;O ImageMagick tem entre outros helpers, o comando convert -list delegate, que exibe o comando que é executado para cada tipo de manipulação de imagem. A conversão de SVG usa por baixo dos panos o comando rsvg-convert-o "%o" "%i".&lt;br&gt;&lt;br&gt;
Como esse comando não era reconhecido no SO do server, foi fácil de ver que era necessário instalar essa &lt;strong&gt;&lt;em&gt;lib e suas dependências&lt;/em&gt;&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Se tornou mais fácil, pq contamos com a ajuda do @tavinus que publicou esse gist &lt;a href="https://gist.github.com/tavinus/2265625d3e323737211e" rel="noopener noreferrer"&gt;install-gm-w-librvg.sh&lt;/a&gt;. 😃&lt;/p&gt;

&lt;p&gt;Legal né? Mas após tudo isso, ainda não conseguia fazer a conversão de arquivos &lt;em&gt;svg&lt;/em&gt; para &lt;em&gt;png&lt;/em&gt;…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F748%2F1%2APHzmIie9PDr1RrYI6KtlFA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F748%2F1%2APHzmIie9PDr1RrYI6KtlFA.jpeg" width="800" height="400"&gt;&lt;/a&gt;Não foi =/ #dammit!&lt;/p&gt;

&lt;p&gt;Pesquisando um pouco mais, vi que alguns tipos de arquivos .svg, .txt, etc e algumas fontes ( como imagens vindas da web ) tem upload blockeada por padrão na configuração de policies do ImageMagick, que geralmente fica em /etc/ImageMagick/policy.xml e podem ser vistas nos rightsdo comando convert -list policy&lt;/p&gt;

&lt;p&gt;A solução então era alterar esses direitos para esse tipo de arquivo na linha:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;\&amp;lt;policy domain=”coder” rights=”none” pattern=”MVG” /\&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E finalmente, após instalar a lib necessária para conversão de SVG e ajustar a regra para esse tipo de arquivo, meu upload finalmente funcionou!&lt;/p&gt;

</description>
      <category>rails</category>
      <category>aws</category>
      <category>imagemagick</category>
      <category>desenvolvimento</category>
    </item>
    <item>
      <title>Rails Girls Novo Hamburgo -RS</title>
      <dc:creator>Débora Fernandes</dc:creator>
      <pubDate>Wed, 30 Aug 2017 15:01:41 +0000</pubDate>
      <link>https://dev.to/debborafernandess/rails-girls-novo-hamburgo-rs-402e</link>
      <guid>https://dev.to/debborafernandess/rails-girls-novo-hamburgo-rs-402e</guid>
      <description>&lt;p&gt;Em março de 2017, tive o prazer de participar do #RailsGirlsNH2017 na Feevale de Novo Hamburgo: foi uma experiência incrível!&lt;/p&gt;

&lt;p&gt;O clima da galera foi sensacional o tempo todo, as gurias do Rio Grande do Sul, tanto as participantes quanto as organizadoras, são muito unidas e engajadas!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F640%2F1%2A4qpAUODG4WHkbMyfVT7fWg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F640%2F1%2A4qpAUODG4WHkbMyfVT7fWg.jpeg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dessa vez, tive a honra de palestrar pela &lt;a href="https://medium.com/u/aa05497bb32d" rel="noopener noreferrer"&gt;Locaweb&lt;/a&gt; apresentar um pouco do básico de &lt;a href="https://docs.google.com/presentation/d/1BxiEWgTaWiG47RsY4SMujN7jUKcCdbo0quhWWft0UQU/pub?start=false&amp;amp;loop=true&amp;amp;delayms=3000&amp;amp;slide=id.g35f391192_04" rel="noopener noreferrer"&gt;Ruby e de Rails&lt;/a&gt; após a palestra da &lt;strong&gt;&lt;em&gt;Milena Lacerda&lt;/em&gt;&lt;/strong&gt; que apresentou &lt;a href="https://speakerdeck.com/milenevlacerda/a-sopa-de-letrinhas-do-front-end-bora-entender" rel="noopener noreferrer"&gt;noções de Front-end&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Nesta edição do Rails Girls em Novo Hamburgo, seguimos a versão de app rails do site do &lt;a href="http://www.maujor.com/railsgirlsguide/" rel="noopener noreferrer"&gt;Maujor&lt;/a&gt;, que deriva da versão original do &lt;a href="http://guides.railsgirls.com/app" rel="noopener noreferrer"&gt;RailsGirls&lt;/a&gt;, pulando a parte de configuração, pois usamos o &lt;a href="https://codeanywhere.com/" rel="noopener noreferrer"&gt;CodeAnywhere&lt;/a&gt; para diminuir a curva de aprendizado. #FicaDica&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que aprendi no RailsGirls e porque já quero voltar&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O formato do #RailsGirls é desafiador: em um curto espaço de tempo as participantes recebem informação sobre o ecossistema de desenvolvimento (Git, Agile, Ruby, Rails, REST, etc ) e colocam imediatamente em prática.&lt;/p&gt;

&lt;p&gt;Sempre acontece em dois dias: um dia para apresentação do ambiente de TI, do quão importante é ampliar a diversidade neste ambiente e como ingressantes e veteranos podem e precisam se empenhar para isso e outro dia para colocar de fato a mão na massa.&lt;/p&gt;

&lt;p&gt;No momento final, as gurias fazem apresentações de seus projetos, do código e das ideias; e foi muito gratificante ver o brilho de “Eureka” nos olhos das garotas, a alegria em produzir algo real em tão pouco tempo.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A troca de experiências também foi sensacional, alguns coaches partilharam sobre como é seu dia-a-dia ou como foi seu começo e como é importante continuar a insistir para ser uma boa programadora.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gostaria de ter participado de um projeto assim lá atrás quando comecei a programar, mas agora, poder colaborar um pouco que seja com iniciantes foi um dos melhores momentos como programadorA.&lt;/p&gt;

&lt;p&gt;Espero que as participantes continuem a estudar e se qualificar como desenvolvedoras, estarei sempre disponível a ajudá-las sempre que a necessidade surgir.&lt;/p&gt;

&lt;p&gt;A toda galera da organização, aos patrocinadores e à #Locaweb que me incentivou a partilhar no evento um pouco de como foi e é a minha carreira como mulher na área de desenvolvimento, o meu &lt;strong&gt;&lt;em&gt;Muito Obrigada&lt;/em&gt;&lt;/strong&gt;!&lt;/p&gt;

</description>
      <category>codelikeagirl</category>
      <category>womenwhocode</category>
      <category>railsgirls</category>
    </item>
    <item>
      <title>Vilões da web: Phishing</title>
      <dc:creator>Débora Fernandes</dc:creator>
      <pubDate>Mon, 13 Feb 2017 13:55:10 +0000</pubDate>
      <link>https://dev.to/debborafernandess/viloes-da-web-phishing-2cd1</link>
      <guid>https://dev.to/debborafernandess/viloes-da-web-phishing-2cd1</guid>
      <description>&lt;p&gt;Phishing é a tentativa de coletar dados sensíveis como dados bancários, de cartões de crédito ou de acesso para obter informações pessoais em plataformas como Facebook, Paypal, entre outros, através de mensagens falsas. É importante se familiarizar com as várias formas de phishing mais usadas para aprender a se prevenir contra elas.&lt;/p&gt;

&lt;p&gt;Quem faz phishing envia mensagens como se fosse um amigo pessoal ou imita a identidade visual ( cores, layouts, logotipos ) de alguma marca conhecida como confiável e, se passando por ela, tenta induzir pessoas a revelar informações confidenciais ao clicar em links suspeitos ou até instalar secretamente malwares.&lt;/p&gt;

&lt;p&gt;Como a criatividade não tem limites, as formas de phishing também não, e sempre se diversificam: pode ser por SMS, mensageiros instantâneos como WhatsApp e afins, e-mails ou mesmo páginas web que imitem sites confiáveis. Todas essas maneiras, no entanto, convergem para o mesmo ponto: tentar roubar informações confidenciais.&lt;/p&gt;

&lt;p&gt;Existem algumas maneiras de identificar um phishing, já que eles tem algumas características mais comuns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;é enviado por contatos desconhecidos,&lt;/li&gt;
&lt;li&gt;é envidado por contatos que você conhece, porém a forma de comunicação é diferente do que esse remetente costuma usar&lt;/li&gt;
&lt;li&gt;não é personalizados, tem uma comunicação genérica, abrangente&lt;/li&gt;
&lt;li&gt;tenta te induzir a agir com urgência, passando a idéia que evitar ou adiar a ação que a mensagem recomenda pode acarretar em problemas futuros&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Se atentando a esses “perfis”, é só adotar algumas posturas para sua prevenção:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ao acessar um site, prestar atenção no logotipo, cores e estrutura do sites para tentar identificar alterações: os imitadores conseguem fazer imitações similares mas quase nunca perfeitas de quem eles estão se fazendo passar;&lt;/li&gt;
&lt;li&gt;Ao acessar uma página, principalmente se o acesso foi através de um link recebido, prestar atenção se a url na barra de endereço no browser é a mesma que você conhece, ou se sofreu alguma alteração;&lt;/li&gt;
&lt;li&gt;Ao passar o mouse sobre links recebidos, identificar se existem alterações entre o nome do link recebido e o endereço para onde ele vai. Exemplo: você tem um link para acessar o sites &lt;a href="http://www.bancodobrasil.com.br" rel="noopener noreferrer"&gt;www.facebook.com&lt;/a&gt; e ao passar o mouse sobre ele, o que aparece embaixo é &lt;a href="http://www.bamcodobrasil.com.br" rel="noopener noreferrer"&gt;www.faceibook.com&lt;/a&gt;: então “isso é cilada Bino!”&lt;/li&gt;
&lt;li&gt;Nunca responder informações confidenciais perguntadas por e-mail (nem SMS ou mensagem instantânea)&lt;/li&gt;
&lt;li&gt;Só abra anexos que você solicitou ou que saiba do que se trata, mesmo de remetentes conhecidos;&lt;/li&gt;
&lt;li&gt;Nunca acessar o sites de bancos ou de cartões através de links recebidos por e-mail: digite a url no seu browser ou salve-a nos seus favoritos se você desejar mais agilidade;&lt;/li&gt;
&lt;li&gt;Mantenha seu computador e smartphone protegidos por um bom antí-virus ( o que te ajuda com esse tipo de ataques e outros tantos )&lt;/li&gt;
&lt;li&gt;Sites que tratam de informações confidenciais precisam prover segurança aos seus usuários, então precisam começar com ‘https://' ( geralmente em sites seguros, aparece na barra de endereço do seu browser o ícone de um cadeado fechado, que indica que o sites tem um certificado de segurança )&lt;/li&gt;
&lt;li&gt;O mais importante: na dúvida denuncie e caia fora, delete o e-mail, mensagem ou saia do site sem realizar nenhuma interação!&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Como foi participar do #RailsGirlsSP2016</title>
      <dc:creator>Débora Fernandes</dc:creator>
      <pubDate>Fri, 16 Dec 2016 20:51:23 +0000</pubDate>
      <link>https://dev.to/debborafernandess/como-foi-participar-do-railsgirlssp2016-115b</link>
      <guid>https://dev.to/debborafernandess/como-foi-participar-do-railsgirlssp2016-115b</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Oq9L4oOf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/310/1%2ASuJe30FHT-AmX2MhiDZMmQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Oq9L4oOf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/310/1%2ASuJe30FHT-AmX2MhiDZMmQ.png" alt=""&gt;&lt;/a&gt;Cover muito fofo de uma das organizadoras&lt;/p&gt;

&lt;p&gt;Recentemente tive o prazer de participar do &lt;strong&gt;#RailsGirlsSP2016,&lt;/strong&gt; evento gratuito que incentiva mulheres a ingressar no mundo da programação.&lt;/p&gt;

&lt;p&gt;O evento aconteceu em dois dias, lá no #VivaReal. Além dos organizadores, devs se voluntariaram como coaches para ajudar as participantes a dar os primeiros passos e diminuir a barreira entre quem busca uma oportunidade e quem já teve a oportunidade e se vê naquela pessoa que está iniciando.&lt;/p&gt;

&lt;p&gt;No primeiro dia, palestras evidenciaram o quão importante é ampliar a diversidade na área de desenvolvimento e como ingressantes e veteranos podem e precisam se empenhar para isso. Após as palestras, as participantes receberam ajuda para preparar o ambiente de desenvolvimento em suas máquinas.&lt;/p&gt;

&lt;p&gt;O segundo dia começou com palestras para apresentar a sintaxe do Ruby. Foram formados times, onde cada time discutiu a ideia do seu projeto e começou a programar de fato com orientação dos coaches.&lt;/p&gt;

&lt;p&gt;Ao fim do dia, os projetos foram apresentados e ficou nítido quão realizador foi para as participantes aprender a programar: tornar suas idéias em algo real, algumas saindo com projetos para serem usados no seu dia-a-dia!!!! Foi incrível!&lt;/p&gt;

&lt;h4&gt;
  
  
  O que aprendi no RailsGirls e porque já quero voltar
&lt;/h4&gt;

&lt;p&gt;O formato do Rails Girls é desafiador: em um curto espaço de tempo as participantes recebem muita informação sobre desenvolvimento (Git, Agile, Ruby, Rails, REST, etc ) e colocam imediatamente em prática. Como coach me esforcei ao máximo para tentar transmitir o que sabia, para que cada pessoa do meu time tivesse a oportunidade de fixar o máximo tudo o que aprendeu codando.&lt;/p&gt;

&lt;p&gt;No momento das apresentações, foi muito gratificante ver o brilho de “Eureka” nos olhos das garotas, a alegria em produzir algo real em tão pouco tempo.&lt;/p&gt;

&lt;p&gt;A troca de experiências também foi sensacional, alguns coaches partilharam sobre como é seu dia-a-dia ou como foi seu começo e como é importante continuar a insistir para ser uma boa programadora.&lt;/p&gt;

&lt;p&gt;Gostaria de ter participado de um projeto assim lá atrás quando comecei a programar, mas agora, poder colaborar um pouco que seja com iniciantes foi um dos melhores momentos como programadorA.&lt;/p&gt;

&lt;p&gt;Espero que as participantes continuem a estudar e se qualificar como desenvolvedoras, estarei sempre disponível a ajudá-las sempre que a necessidade surgir.&lt;/p&gt;

&lt;p&gt;A toda galera da organização, aos patrocinadores e à #Locaweb que me incentivou a partilhar no evento um pouco de como foi e é a minha carreira como mulher na área de desenvolvimento, o meu Muito Obrigada!&lt;/p&gt;

&lt;p&gt;Para quem deseja continuar os estudos ou relembrar o básico de forma rápida, deixo um link abaixo com os passos básicos para criar um projeto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://s3.amazonaws.com/ruby-thursday-pdfs/new_rails_app_cheatsheet_as_of_8_18_16.txt"&gt;Rails Cheatsheet&lt;/a&gt;&lt;/p&gt;

</description>
      <category>railsgirlssp2016</category>
      <category>rails</category>
      <category>mulheresqueprogram</category>
      <category>iniciante</category>
    </item>
  </channel>
</rss>
