<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="https://perrotta.dev/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>¬ just serendipity 🍀</title>
    <link>https://perrotta.dev/</link>
    <description>Recent content on ¬ just serendipity 🍀</description>
    <generator>Hugo</generator>
    <language>pt</language>
    <managingEditor>serendipity@perrotta.dev (Thiago Perrotta)</managingEditor>
    <webMaster>serendipity@perrotta.dev (Thiago Perrotta)</webMaster>
    <copyright>© 2013 - 2026 Thiago Perrotta ·
  a fork of [hugo ʕ•ᴥ•ʔ bear](https://github.com/janraasch/hugo-bearblog/)
</copyright>
    <atom:link href="https://perrotta.dev/pt/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Pare de receber telemarketing: Não Me Perturbe
      </title>
      <link>https://perrotta.dev/pt/2025/01/pare-de-receber-telemarketing-n%C3%A3o-me-perturbe/</link>
      <pubDate>Mon, 13 Jan 2025 02:13:41 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>privacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2025/01/pare-de-receber-telemarketing-n%C3%A3o-me-perturbe/</guid>
      <description>&lt;p&gt;♠ &lt;a href=&#34;https://naomeperturbe.com.br/&#34;&gt;Não Me Perturbe&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Pare de receber ligações de telemarketing das Empresas participantes.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;O Não Me Perturbe permite, de forma fácil e gratuita, evitar a oferta de&#xA;produtos e serviços por meio de contato telefônico provenientes exclusivamente&#xA;das Prestadoras de Serviços de Telecomunicações (Telefone móvel, telefone&#xA;fixo, TV por assinatura e Internet) e pelas Instituições Financeiras&#xA;(operações de Empréstimo Consignado e Cartão de Crédito Consignado).&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Na prática: cadastre seu número de celular (+55) + CPF na plataforma, além de&#xA;email + senha para gerenciá-la.&lt;/p&gt;&#xA;&lt;p&gt;Em troca, chamadas automáticas de operatoras de telefonia, bancos, entre outras&#xA;empresas irão (teoricamente&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/pt/2025/01/pare-de-receber-telemarketing-n%C3%A3o-me-perturbe/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;) parar de realizar chamadas de telemarketing (spam!)&#xA;para o seu número.&lt;/p&gt;&#xA;&lt;p&gt;Uma vez cadastrado, o processo leva até 30 dias para ser efetivado.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Também descobri&lt;/strong&gt;: como identificar &lt;a href=&#34;https://qualempresameligou.com.br/&#34;&gt;qual empresa me&#xA;ligou?&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;A Agência Nacional de Telecomunicações (Anatel) determinou a criação de uma&#xA;ferramenta, que é o Portal &amp;ldquo;Qual empresa me ligou?&amp;rdquo;&#xA;(&lt;a href=&#34;https://qualempresameligou.com.br/%29&#34;&gt;https://qualempresameligou.com.br/)&lt;/a&gt;, com o objetivo de identificar o CNPJ e a&#xA;Razão Social associados a determinados números de telefone. Assim, caso você&#xA;receba chamada de um número que desconheça, e este pertencer a uma Pessoa&#xA;Jurídica, poderá identificar a empresa que te ligou.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Caso as empresas continuem violando o seu direito, mesmo após a inclusão&#xA;na lista, é possível realizar uma reclamação na própria plataforma.&amp;#160;&lt;a href=&#34;https://perrotta.dev/pt/2025/01/pare-de-receber-telemarketing-n%C3%A3o-me-perturbe/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Pare de receber telemarketing: Não Me Perturbe&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/privacy/&#34;&gt;#privacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emissor NFE Sebrae v4.01 para emissão de notas fiscais
      </title>
      <link>https://perrotta.dev/pt/2025/01/emissor-nfe-sebrae-v4.01-para-emiss%C3%A3o-de-notas-fiscais/</link>
      <pubDate>Wed, 08 Jan 2025 00:29:46 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <guid>https://perrotta.dev/pt/2025/01/emissor-nfe-sebrae-v4.01-para-emiss%C3%A3o-de-notas-fiscais/</guid>
      <description>&lt;p&gt;♠ &lt;em&gt;To my English-speaking readers: this post contains Brazilian bureaucracy and&#xA;it&amp;rsquo;s in Portuguese, you may want to skip it.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;instalação&#34;&gt;&#xA;  Instalação&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2025/01/emissor-nfe-sebrae-v4.01-para-emiss%C3%A3o-de-notas-fiscais/#instala%c3%a7%c3%a3o&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Baixe o arquivo JNLP (cópia): &lt;a href=&#34;https://perrotta.dev/pt/2025/01/emissor-nfe-sebrae-v4.01-para-emiss%C3%A3o-de-notas-fiscais/emissorNfe-4_0_1.jnlp&#34;&gt;emissorNfe-4_0_1.jnlp&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ou direto da fonte: &lt;a href=&#34;https://storage.googleapis.com/nfe-sebrae-prd/nfe/v401/producao/emissorNFe-4_0_1.jnlp&#34;&gt;GCS&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Execute-o com o Java Web Start (JWS) do Java 8. Não existe mais JWS a partir do&#xA;Java 11. Caso não tenha um runtime (JRE), baixe-o diretamente do &lt;a href=&#34;https://www.java.com/pt-BR/download/manual.jsp&#34;&gt;site da&#xA;Oracle&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Caso não funcione, delete e reinstale o applet:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Abra o Menu Iniciar&lt;/li&gt;&#xA;&lt;li&gt;Procure &amp;ldquo;Configurar Java&amp;rdquo; no campo de busca&lt;/li&gt;&#xA;&lt;li&gt;Clique na Aba &amp;ldquo;Geral&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Em &amp;ldquo;Arquivos Temporários na Internet&amp;rdquo;, clique em &amp;ldquo;Exibir&amp;hellip;&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Clique no ícone do emissor, e depois no botão &amp;lsquo;X&amp;rsquo; vermelho.&lt;/li&gt;&#xA;&lt;li&gt;Execute o arquivo JNLP novamente.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;notas&#34;&gt;&#xA;  Notas&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2025/01/emissor-nfe-sebrae-v4.01-para-emiss%C3%A3o-de-notas-fiscais/#notas&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://openwebstart.com/&#34;&gt;OpenWebStart&lt;/a&gt; não funcionou. Ele lança uma&#xA;exceção.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Emissor NFE Sebrae v4.01 para emissão de notas fiscais&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Matroshka
      </title>
      <link>https://perrotta.dev/pt/2016/10/matroshka/</link>
      <pubDate>Sun, 16 Oct 2016 15:49:01 -0200</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <guid>https://perrotta.dev/pt/2016/10/matroshka/</guid>
      <description>&lt;p&gt;♠ Recentemente participei de uma&#xA;&lt;a href=&#34;https://ctf.tecland.com.br/Pwn2Win/game/scoreboard/&#34;&gt;CTF&lt;/a&gt; promovida pelo&#xA;&lt;a href=&#34;https://ctf-br.org/elt&#34;&gt;ELT&lt;/a&gt; (Epic Leet Team). Uma das &lt;em&gt;challs&lt;/em&gt; que consegui&#xA;resolver completamente foi a &lt;strong&gt;matroshka&lt;/strong&gt;, e aqui está um breve &lt;em&gt;write-up&lt;/em&gt;&#xA;sobre a mesma.&lt;/p&gt;&#xA;&lt;p&gt;Dado um arquivo &lt;code&gt;matroshka.tar.gz&lt;/code&gt;, precisávamos encontrar a &lt;em&gt;flag&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Não era difícil desconfiar do que esse arquivo / &lt;em&gt;chall&lt;/em&gt; se tratava: matroshkas&#xA;são aquelas bonecas russas que se encaixam umas dentro das outras. Então&amp;hellip;de&#xA;cara, logo já desconfiei: provavelmente existe um arquivo compactado dentro de&#xA;outro, dentro de outro, dentro de outro, e assim por diante&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Por experiência, não valeria a pena tentar descompactar tudo manualmente, pois&#xA;sabe-se lá quantos níveis de compactação esse negócio iria ter (provavelmente&#xA;mais do que 100).&lt;/p&gt;&#xA;&lt;p&gt;De cara logo pensei em usar o &lt;a href=&#34;https://brettcsmith.org/2007/dtrx/&#34;&gt;dtrx&lt;/a&gt;, que é&#xA;um excelente programa (não perco tempo e sempre rodo um &lt;code&gt;port install dtrx&lt;/code&gt;)&#xA;para extrair arquivos sem ter que ficar se lembrando das sintaxes individuais de&#xA;cada programa. Nesse caso, não iria rolar: os arquivos eram renomeados de forma&#xA;a &lt;em&gt;trickear&lt;/em&gt; o dtrx, que funciona através de heurísticas, uma delas é a&#xA;&amp;rsquo;extensão&amp;rsquo; do nome do arquivo. Por exemplo, vários arquivos (após&#xA;descompactados) eram renomeados na forma &lt;code&gt;*.elt&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A segunda alternativa foi (&lt;strong&gt;serendipidade&lt;/strong&gt;, não conhecia essa ferramenta&#xA;antes) tentar utilizar o &lt;a href=&#34;http://www.nongnu.org/atool/&#34;&gt;atool&lt;/a&gt;. Por motivos&#xA;similares ao &lt;code&gt;dtrx&lt;/code&gt;, não rolou.&lt;/p&gt;&#xA;&lt;p&gt;Pois bem, então o jeito ia ser descompactar tudo na marra. Pensei em escrever um&#xA;programa que faria o seguinte:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-cpp&#34;&gt;try {&#xA;&#x9;unzip &amp;lt;file&amp;gt;&#xA;}&#xA;catch {&#xA;&#x9;try {&#xA;&#x9;&#x9;tar xf &amp;lt;file&amp;gt;&#xA;&#x9;}&#xA;&#x9;catch {&#xA;&#x9;&#x9;// ...e assim por diante&#xA;&#x9;}&#xA;}&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Obviamente eu utilizaria os programas diretamente, então a coisa poderia ficar&#xA;um pouco mais simples, utilizando os return codes dos mesmos para detectar se&#xA;descompactaram o arquivo com sucesso. Por exemplo, &lt;code&gt;tar xf &amp;lt;file&amp;gt;&lt;/code&gt; retorna &lt;code&gt;0&lt;/code&gt;&#xA;se rodou corretamente, do contrário ele retorna algo diferente de zero. Isso se&#xA;mostrou válido para todos os programas de descompactação que utilizei, exceto o&#xA;lha, que insistia em retornar &lt;code&gt;0&lt;/code&gt; de qualquer jeito, mesmo quando falhava.&lt;/p&gt;&#xA;&lt;p&gt;Para automatizar essa tarefa, resolvi utilizar &lt;code&gt;python2&lt;/code&gt;. &lt;code&gt;C/C++&lt;/code&gt; provavelmente&#xA;também seriam bons candidatos, mas eu queria praticar o meu &lt;code&gt;python&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Após algumas inspeções, notei que cada arquivo continha um e somente um arquivo&#xA;dentro dele, então a ideia base seria:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;mantenha uma lista com todos os arquivos conhecidos até então (no começo, só&#xA;haveria um);&lt;/li&gt;&#xA;&lt;li&gt;descompacte esse arquivo;&lt;/li&gt;&#xA;&lt;li&gt;detecte qual arquivo acabou de ser descompactado&lt;/li&gt;&#xA;&lt;li&gt;continue fazendo isso até encontrar a &lt;code&gt;flag&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Meu código ficou assim:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-python&#34;&gt;#!/usr/bin/env python&#xA;&#xA;import os&#xA;import subprocess&#xA;&#xA;TARGET_DIR = &amp;#39;mat&amp;#39;&#xA;&#xA;def uncompress_kgb(file):&#xA;    return subprocess.call([&amp;#34;kgb&amp;#34;, file])&#xA;&#xA;def uncompress_gzip(file):&#xA;    return subprocess.call([&amp;#34;gunzip&amp;#34;, &amp;#34;-S&amp;#34;, &amp;#39;.&amp;#39; &amp;#43; file.split(&amp;#39;.&amp;#39;)[-1], file])&#xA;&#xA;def uncompress_tar(file):&#xA;    return subprocess.call([&amp;#34;tar&amp;#34;, &amp;#34;xvf&amp;#34;, file])&#xA;&#xA;def uncompress_rar(file):&#xA;    return subprocess.call([&amp;#34;unrar&amp;#34;, &amp;#34;x&amp;#34;, file])&#xA;&#xA;def uncompress_lha(file):&#xA;    return subprocess.call([&amp;#34;lha&amp;#34;, &amp;#34;e&amp;#34;, file])&#xA;&#xA;def uncompress_zip(file):&#xA;    return subprocess.call([&amp;#34;unzip&amp;#34;, file])&#xA;&#xA;def uncompress_arj(file):&#xA;    subprocess.call([&amp;#34;cp&amp;#34;, file, file &amp;#43; &amp;#34;.arj&amp;#34;])&#xA;    err = subprocess.call([&amp;#34;arj&amp;#34;, &amp;#34;x&amp;#34;, file])&#xA;    subprocess.call([&amp;#34;rm&amp;#34;, file &amp;#43; &amp;#34;.arj&amp;#34;])&#xA;    return err&#xA;&#xA;def uncompress_7z(file):&#xA;    subprocess.call([&amp;#34;7z&amp;#34;, &amp;#34;x&amp;#34;, file])&#xA;&#xA;def colorprint(s):&#xA;    print &amp;#39;\033[93m&amp;#39; &amp;#43; repr(s) &amp;#43; &amp;#39;\033[0m&amp;#39;&#xA;&#xA;os.chdir(TARGET_DIR)&#xA;&#xA;base = set()&#xA;&#xA;while True:&#xA;    newbase = set(os.listdir(&amp;#39;.&amp;#39;))&#xA;&#xA;    diff = newbase - base&#xA;    colorprint(diff)&#xA;&#xA;    if len(diff) &amp;gt; 1:&#xA;        raise Exception(&amp;#34;len(diff) &amp;gt; 1&amp;#34;)&#xA;    elif len(diff) == 0:&#xA;        print &amp;#34;len(diff) == 0&amp;#34;&#xA;        break&#xA;&#xA;    for file in diff:&#xA;        err = uncompress_kgb(file)&#xA;        if err != 0:&#xA;            err = uncompress_gzip(file)&#xA;            if err != 0:&#xA;                err = uncompress_tar(file)&#xA;                if err != 0:&#xA;                    err = uncompress_rar(file)&#xA;                    if err != 0:&#xA;                        err = uncompress_zip(file)&#xA;                        if err != 0:&#xA;                            err = uncompress_arj(file)&#xA;                            if err != 0:&#xA;                                err = uncompress_7z(file)&#xA;                                if err != 0:&#xA;                                    err = uncompress_lha(file)&#xA;                                    if err != 0:&#xA;                                        print &amp;#34;lha fail&amp;#34;&#xA;&#xA;    base = newbase&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Essa ideia funcionou bastante bem. A única coisa &lt;em&gt;overkill&lt;/em&gt; foi que eu não&#xA;deletei arquivos anteriores; isso poderia ter simplificado significativamente o&#xA;problema (e os &lt;em&gt;sets&lt;/em&gt; no python).&lt;/p&gt;&#xA;&lt;p&gt;Ademais, uma das coisas chatas do &lt;code&gt;arj&lt;/code&gt; é que ele só é capaz de extrair arquivos&#xA;que terminam em &lt;code&gt;*.arj&lt;/code&gt;, então fui obrigado a renomear/copiar um arquivo antes&#xA;de tentar utilizá-lo para extrair seu conteúdo.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Matroshka&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mulheres na computação, cadê vocês?
      </title>
      <link>https://perrotta.dev/pt/2015/03/mulheres-na-computa%C3%A7%C3%A3o-cad%C3%AA-voc%C3%AAs/</link>
      <pubDate>Sun, 08 Mar 2015 16:26:42 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2015/03/mulheres-na-computa%C3%A7%C3%A3o-cad%C3%AA-voc%C3%AAs/</guid>
      <description>&lt;p&gt;♠ 08 de março. Você sabe que dia é hoje. Muitos dizem que é um dia especial. Já&#xA;eu, pessoalmente, em geral sou indiferente para qualquer comemoração do tipo,&#xA;porque eu acredito que todos os 365,25 dias do ano são igualmente especiais.&#xA;Não é necessário tirar um único dia do ano (menos de 1%!!!) para dizer que as&#xA;mulheres são especiais&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/pt/2015/03/mulheres-na-computa%C3%A7%C3%A3o-cad%C3%AA-voc%C3%AAs/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Mas bem, hoje resolvi aproveitar a deixa para fazer uma pequena divulgação. Como&#xA;você pode ler no título, eu restringi o post a &amp;ldquo;mulheres na computação&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Muito bem, pois é que existe um grupo bem bacana na comunidade do Arch Linux&#xA;chamado &lt;a href=&#34;https://archwomen.org/&#34;&gt;Arch Women&lt;/a&gt;, que no fundo é uma organização sem&#xA;fins lucrativos que visa incentivar a participação de (mais) mulheres no mundo&#xA;do Arch e de &lt;em&gt;open source&lt;/em&gt; em geral. Mais do que isso, no fundo é um grupo que&#xA;acredita na igualdade de gêneros e que quer enviar qualquer tipo de&#xA;preconceito para &lt;code&gt;/dev/null&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A organização é bem bacana, de vez em quando são organizadas algumas aulas pelo&#xA;IRC, também existem projetos de &amp;ldquo;estágio&amp;rdquo;, digamos assim (um exemplo típico é o&#xA;&lt;em&gt;Google Summer of Code&lt;/em&gt;) e, bem, é uma comunidade &lt;em&gt;open source&lt;/em&gt;, então as&#xA;possibilidades de interação são inúmeras.&lt;/p&gt;&#xA;&lt;p&gt;Adicionalmente, existem alguns encontros (encontro talvez não seja uma palavra&#xA;boa. Vamos dizer: reuniões) todo início do mês no IRC, onde são realizadas&#xA;algumas discussões sobre as coisas que eu falei aí em cima.&lt;/p&gt;&#xA;&lt;p&gt;Ah sim, esqueci de falar duas coisas: 1) não é uma comunidade só para mulheres;&#xA;na verdade, é uma comunidade que incentiva a participação de mulheres na&#xA;tecnologia. Então, existem vários rapazes por lá também. Se você quiser ajudar,&#xA;seja bem-vindo. 2) já falei de IRC umas duas vezes mas não disse onde: é no&#xA;irc.freenode.net, no canal #archlinux-women. É, o idioma é em inglês.&lt;/p&gt;&#xA;&lt;p&gt;Enfim, essa história de &amp;ldquo;mulheres na tecnologia&amp;rdquo; (computação, whatever) é&#xA;frequentemente tratada como um tabu, mas não precisa(va) ser assim. E eu&#xA;aproveito a deixa desse post para incentivar mais as pessoas a criar&#xA;organizações que incentivem a inclusão de mulheres no mundo digital. Não precisa&#xA;ser só a Arch Women, afinal.&lt;/p&gt;&#xA;&lt;p&gt;Até mais ver!&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;afinal, elas são &lt;strong&gt;especiais&lt;/strong&gt; &lt;strong&gt;sempre&lt;/strong&gt;, certo? ;)&amp;#160;&lt;a href=&#34;https://perrotta.dev/pt/2015/03/mulheres-na-computa%C3%A7%C3%A3o-cad%C3%AA-voc%C3%AAs/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Mulheres na computação, cadê vocês?&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Meus dois minutos de fama
      </title>
      <link>https://perrotta.dev/pt/2014/07/meus-dois-minutos-de-fama/</link>
      <pubDate>Fri, 25 Jul 2014 16:02:04 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2014/07/meus-dois-minutos-de-fama/</guid>
      <description>&lt;p&gt;♠ E, depois de um ano escrevendo aleatoriedades nesse espaço, com um pouco de&#xA;serendipidade finalmente meu blog apareceu em algum lugar, mais precisamente no&#xA;semanal videocast &lt;a href=&#34;http://www.bsdnow.tv/&#34;&gt;bsdnow.tv&lt;/a&gt; (do &lt;a href=&#34;http://www.jupiterbroadcasting.com/&#34;&gt;Jupiter&#xA;Broadcasting&lt;/a&gt;), mais precisamente em seu&#xA;&lt;a href=&#34;http://www.bsdnow.tv/episodes/2014_07_23-des_challenge_iv&#34;&gt;episódio 47&lt;/a&gt;, mais&#xA;precisamente em torno de 1h07min da edição final do vídeo. O mais legal é que&#xA;isso foi espontâneo (= eu não falei com ninguém do podcast, e o motivo de eu ter&#xA;começado a escrever sobre&#xA;&lt;a href=&#34;https://perrotta.dev/posts/2014-07-20-here-be-dragons-freebsd-overview-part-i/&#34;&gt;FreeBSD&lt;/a&gt;&#xA;foi bem por acaso mesmo) e que eu ouço regularmente alguns podcasts deles – não&#xA;o BSD Now.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;&amp;ldquo;E daí?&amp;rdquo;&lt;/strong&gt; Pra você eu não sei, mas pra mim isso é mais um &lt;em&gt;badge unlocked&lt;/em&gt;.&#xA;Tais como &lt;a href=&#34;https://perrotta.dev/pt/2014/02/meu-primeiro-pkgbuild/&#34;&gt;meu primeiro&#xA;PKGBUILD&lt;/a&gt;,&#xA;meu primeiro &lt;a href=&#34;https://perrotta.dev/pt/2014/03/pull-request/&#34;&gt;pull&#xA;request&lt;/a&gt;,&#xA;meu &lt;a href=&#34;https://perrotta.dev/pt/2014/02/%23cpbr7-parte-1-hackatons-firefox-os--cert.br/&#34;&gt;primeiro&#xA;hackathon&lt;/a&gt;&#xA;e uma submissão em 2 minutos na&#xA;&lt;a href=&#34;https://perrotta.dev/pt/2013/09/ontem-maratona-de-programa%C3%A7%C3%A3o/&#34;&gt;maratona&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;É bastante bacana poder olhar para trás e percebi que eu alcancei essas coisas&#xA;pelo menos uma vez. E é mais bacana ainda deixar isso tudo registrado aqui, com&#xA;a minha emoção da época. Eu jamais conseguiria reescrever todos esses posts&#xA;anteriores hoje com a mesma sensação que eu senti quando realizei essas coisas;&#xA;são momentos únicos e especiais, principalmente por serem os primeiros. É claro&#xA;que &lt;strong&gt;hoje&lt;/strong&gt; eu já criei vários PKGBUILDs, submeti vários pull requests, etc.&lt;/p&gt;&#xA;&lt;p&gt;Mas o mais legal foi (é) sempre a primeira vez, quando a gente não sabe muito&#xA;bem onde está pisando ou o que está fazendo, nem aonde aquilo vai dar. É isso&#xA;aí, e então espero poder desbloquear muito mais badges vida à frente e poder&#xA;registrá-los todos aqui. &lt;em&gt;See ya&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Meus dois minutos de fama&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emacs e golang, uma dupla perfeita
      </title>
      <link>https://perrotta.dev/pt/2014/07/emacs-e-golang-uma-dupla-perfeita/</link>
      <pubDate>Tue, 22 Jul 2014 22:09:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/07/emacs-e-golang-uma-dupla-perfeita/</guid>
      <description>&lt;p&gt;♠ (Sim, o título é clichê.)&lt;/p&gt;&#xA;&lt;p&gt;Dentre todas as linguagens de programação que tive contato até hoje, sem dúvida&#xA;Go é a que teve a melhor integração com o Emacs. A integração é tão grande que&#xA;eu até dispensei completamente a necessidade de utilizar a&#xA;&lt;a href=&#34;https://code.google.com/p/golangide/&#34;&gt;LiteIDE&lt;/a&gt; (aparentemente a IDE mais&#xA;standard para Go).&lt;/p&gt;&#xA;&lt;p&gt;(&lt;a href=&#34;http://geekmonkey.org/articles/20-comparison-of-ides-for-google-go&#34;&gt;Esse&lt;/a&gt; site&#xA;lista mais IDEs ainda. Pessoalmente acho uma lista exagerada, mas o leitor pode&#xA;optar pelo que se sentir mais confortável. Adicionalmente, o&#xA;&lt;a href=&#34;http://www.reddit.com/r/golang/comments/2739gp/golang_ides/&#34;&gt;reddit&lt;/a&gt; é sempre&#xA;uma boa fonte adicional.)&lt;/p&gt;&#xA;&lt;p&gt;Então, o que você espera ver nesse post? Certamente como integrar o Emacs com o&#xA;Go, certo? A verdade é que já existem duas fontes (em inglês) muito boas sobre o&#xA;assunto:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://tleyden.github.io/blog/2014/05/22/configure-emacs-as-a-go-editor-from-scratch/&#34;&gt;https://tleyden.github.io/blog/2014/05/22/configure-emacs-as-a-go-editor-from-scratch/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://dominik.honnef.co/posts/2013/03/writing_go_in_emacs/&#34;&gt;http://dominik.honnef.co/posts/2013/03/writing_go_in_emacs/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Qualquer coisa que eu reproduzisse aqui seria simplesmente uma repetição do que&#xA;já está listado nelas. Então, em vez disso, primeiramente listo a minha&#xA;configuração atual:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-lisp&#34;&gt;(when (locate-library &amp;#34;go-mode&amp;#34;)&#xA;  ;; golang -- you should go get external tools by yourself!&#xA;  (add-hook &amp;#39;before-save-hook #&amp;#39;gofmt-before-save)&#xA;  (when (locate-library &amp;#34;go-autocomplete&amp;#34;)&#xA;    (require &amp;#39;go-autocomplete))&#xA;  (when (locate-library &amp;#34;go-eldoc&amp;#34;)&#xA;    (add-hook &amp;#39;go-mode-hook &amp;#39;go-eldoc-setup))&#xA;  (when (locate-library &amp;#34;go-projectile&amp;#34;)&#xA;    (require &amp;#39;go-projectile))&#xA;  (when (locate-library &amp;#34;golint&amp;#34;)&#xA;    (require &amp;#39;golint))&#xA;  (setq gofmt-command &amp;#34;goimports&amp;#34;)&#xA;  (add-hook &amp;#39;go-mode-hook (lambda () (if (not (string-match &amp;#34;go&amp;#34; compile-command))&#xA;                     (set (make-local-variable &amp;#39;compile-command)&#xA;                          &amp;#34;go build -v &amp;amp;&amp;amp; go test -v &amp;amp;&amp;amp; go vet&amp;#34;))))&#xA;  (add-hook &amp;#39;go-mode-hook (lambda () (local-set-key (kbd &amp;#34;M-.&amp;#34;) #&amp;#39;godef-jump))))&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Depois, dou uma demonstração da introspecção que podemos alcançar com isso,&#xA;através de uma ferramenta que divulguei aqui uns dias atrás…asciinema! Só existe&#xA;uma pequena limitação, eu só posso usar o asciinema com o emacs no modo&#xA;terminal, então ele não fica completamente funcional; mas, mesmo assim, isso já&#xA;é suficiente para que vocês possam perceber o poder e a flexibilidade dessa&#xA;integração.&lt;/p&gt;&#xA;&lt;p&gt;Note, no vídeo, que criei um arquivo em &lt;a href=&#34;http://orgmode.org/&#34;&gt;orgmode&lt;/a&gt; (quantas&#xA;vezes nesse blog já indiquei a homepage desse maravilhoso projeto?) e o usei&#xA;como base para gravar o asciicast. Aproveitem!&lt;/p&gt;&#xA;&lt;p&gt;Link: &lt;a href=&#34;http://asciinema.org/a/10965&#34;&gt;http://asciinema.org/a/10965&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;OBS.: Note que a gravação do asciinema é ligeiramente mais lenta do que o tempo&#xA;real. É claro que eu escrevi mais rápido do que parece no vídeo.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Emacs e golang, uma dupla perfeita&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Melhorando a renderização de fontes no Windows
      </title>
      <link>https://perrotta.dev/pt/2014/07/melhorando-a-renderiza%C3%A7%C3%A3o-de-fontes-no-windows/</link>
      <pubDate>Sat, 12 Jul 2014 21:23:58 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/07/melhorando-a-renderiza%C3%A7%C3%A3o-de-fontes-no-windows/</guid>
      <description>&lt;p&gt;♠ Ah, sempre que eu logo no Windows acabo implicando com alguma coisa. A última da&#xA;vez foi a renderização das fontes. A renderização de fontes no Linux é muito&#xA;boa, chega aos pés (isso se não passar) da do Mac. Especialmente se você&#xA;utilizar o&#xA;&lt;a href=&#34;https://wiki.archlinux.org/index.php/Infinality-bundle&amp;#43;fonts&#34;&gt;infinality&lt;/a&gt;&#xA;(&lt;a href=&#34;http://www.infinality.net/blog/&#34;&gt;upstream&lt;/a&gt;). Agora, a renderização do Windows&#xA;é&amp;hellip;feia. Quando você abre o seu &lt;em&gt;browser&lt;/em&gt; e vê aquela página cheia de Times&#xA;New Roman para todo o lado&amp;hellip;errrrgh. Não estamos mais no início dos anos 2000,&#xA;algumas coisas podem melhorar.&lt;/p&gt;&#xA;&lt;p&gt;Com um pouco de &lt;a href=&#34;https://pt.wikipedia.org/wiki/Serendipidade&#34;&gt;serendipidade&lt;/a&gt;&#xA;(minha palavra predileta nos últimos tempos), encontrei o&#xA;&lt;a href=&#34;https://code.google.com/p/mactype/&#34;&gt;MacType&lt;/a&gt;. Esse é um projeto que promete&#xA;melhorar a renderização das fontes no Windows (do 7 para cima, por favor). Não&#xA;tem muito o que falar: instale, experimente e perceba a diferença!&lt;/p&gt;&#xA;&lt;p&gt;Note que esse projeto é desenvolvido em japonês (bem, alguma língua oriental).&#xA;Então, em algumas partes da instalação (e mesmo na pós-instalação), pode ser que&#xA;você não veja caracteres, ou que veja caracteres em forma de quadrado. Nesse&#xA;caso, procure a opção para trocar o idioma para inglês; depois disso, é super&#xA;intuitivo.&lt;/p&gt;&#xA;&lt;p&gt;Mais uma nota: você só precisa abrir e configurar o programa uma única vez.&#xA;Existem várias opções para salvar as opções de renderização: você pode utilizar&#xA;o registro do Windows (uma boa opção!) e um serviço do Windows (outra boa&#xA;opção). Eu optei pela segunda, não me deu dor de cabeça.  Existe também a&#xA;possibilidade de aplicar a renderização apenas para algumas janelas, acho, e&#xA;também a de controlar as opções pelo system tray. Não há necessidade disso,&#xA;convenhamos; ou você utiliza em todos os lugares, ou não utiliza: seja&#xA;consistente. Note que se você escolher a opção de registro, a renderização só&#xA;terá efeito após a reinicialização do computador.&lt;/p&gt;&#xA;&lt;p&gt;Finalmente, uma &lt;strong&gt;mini review&lt;/strong&gt;: achei a nova renderização muito boa. Dá até&#xA;gosto de ficar lendo. Aproxima-se relativamente bem da qualidade de renderização&#xA;do Linux (ou, do Mac, que é o que o nome do projeto sugere). Notei que o mactype&#xA;está disponível no &lt;a href=&#34;http://chocolatey.org/packages/mactype&#34;&gt;chocolatey&lt;/a&gt; (é&#xA;uma pena que eu só tenha visto isso depois que o instalei manualmente),&#xA;então, se quiser automatizar o processo:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;cinst mactype&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Melhorando a renderização de fontes no Windows&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setups no Windows, nunca mais
      </title>
      <link>https://perrotta.dev/pt/2014/06/setups-no-windows-nunca-mais/</link>
      <pubDate>Mon, 30 Jun 2014 20:56:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/06/setups-no-windows-nunca-mais/</guid>
      <description>&lt;p&gt;♠ Uma vez que você se acostuma com &lt;strong&gt;package managers&lt;/strong&gt; no Linux, é bastante inconveniente voltar à vibe de ficar instalando programa por programa no Windows, clicando em &amp;rsquo;next&amp;rsquo; o tempo todo.&lt;/p&gt;&#xA;&lt;p&gt;Para resolver isso foi criado o &lt;a href=&#34;http://chocolatey.org/&#34;&gt;chocolatey&lt;/a&gt;, um repositório com vários pacotes para o Windows, descrevendo-o a grosso modo.&lt;/p&gt;&#xA;&lt;p&gt;Eu o uso há bastante tempo, para falar a verdade. Só que agora me apareceu um novo problema: como reproduzir a mesma instalação em vários computadores diferentes, de uma vez só?&lt;/p&gt;&#xA;&lt;p&gt;Motivado por isso, criei um repositório com o sugestivo nome de &lt;a href=&#34;https://github.com/thiagowfx/windows-setups-nevermore&#34;&gt;windows-setups-nevermore&lt;/a&gt;. As instruções estão no arquivo README. Resumidamente, basta você especificar todos os pacotes que você quer em um arquivo chamado &lt;code&gt;packages.config&lt;/code&gt;, depois executar o arquivo &lt;code&gt;setup.cmd&lt;/code&gt;. E voilà, em poucos minutos todos os seus programas serão &lt;strong&gt;automagicamente&lt;/strong&gt; instalados, adicionados ao PATH e ao menu iniciar.&lt;/p&gt;&#xA;&lt;p&gt;Naturalmente isso se limita, &lt;em&gt;a priori&lt;/em&gt;, somente aos pacotes na galeria/catálogo do chocolatey. Se o pacote que você quiser não estiver lá, você terá que adicioná-lo sozinho, ou instalá-lo manualmente, o que for preferível. Além do mais, só estão lá os programas cujas licenças admitem que eles sejam redistribuídos (você não vai encontrar o Microsoft Office lá, por exemplo).&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update (2014-07-07):&lt;/strong&gt; esse método provavelmente não instala bloatware – por exemplo, as diversas barras de ferramentas ou outros plug-ins para seus web browsers. No entanto, a melhor forma de comprovar isso é ou analisando o código-fonte do pacote ou instalando-o.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Setups no Windows, nunca mais&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Asciinema
      </title>
      <link>https://perrotta.dev/pt/2014/06/asciinema/</link>
      <pubDate>Sun, 29 Jun 2014 20:01:00 +0000</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/06/asciinema/</guid>
      <description>&lt;p&gt;♠ Descobri uma ferramenta bastante útil para gravar sessões de terminal:&#xA;asciinema. E, é claro, ela é open-source: cliente e website. Feita em python, e&#xA;bastante KISS. Aproveitei para gravar um screencast (asciicast?) de exemplo:&#xA;&lt;a href=&#34;https://asciinema.org/a/10546q&#34;&gt;https://asciinema.org/a/10546q&lt;/a&gt;. Disponível no AUR.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Asciinema&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Olá, desenvolvimento web
      </title>
      <link>https://perrotta.dev/pt/2014/06/ol%C3%A1-desenvolvimento-web/</link>
      <pubDate>Sat, 21 Jun 2014 05:03:21 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/06/ol%C3%A1-desenvolvimento-web/</guid>
      <description>&lt;p&gt;♠ Durante a última semana fiquei pesquisando bastante sobre o assunto. Posso dizer&#xA;que gostei bastante do tema, e que ele é bastante vasto. A sensação de&#xA;aprendizado me é familiar (dèjá vu), me senti da mesma maneira quando comecei no&#xA;mundo do Linux e, mais em geral, de comunidades e de &lt;em&gt;open source&lt;/em&gt;. Bem,&#xA;acredito que eu vá tomar uma boa parte do meu tempo para estudar sobre isso no&#xA;futuro.&lt;/p&gt;&#xA;&lt;p&gt;Um segundo tema que toquei de leve (mas bem de leve mesmo) é o de design de&#xA;linguagens e de compiladores. Na verdade, gramáticas, coisas assim. Vi mais a do&#xA;javascript, mas também comecei a juntar algumas referências para estudar sobre o&#xA;assunto no futuro.&lt;/p&gt;&#xA;&lt;p&gt;Agora, vou voltar a estudar sobre algoritmos e tudo o mais, pois a maratona de&#xA;programação é daqui a alguns dias apenas. Além disso, comecei um curso de&#xA;Machine Learning no Coursera, e estou investindo uma boa parte do meu tempo em&#xA;interação com os outros estudantes do curso – acredito, por experiência, que&#xA;essa é a melhor maneira de tirar o máximo de proveito do coursera: estudar em&#xA;grupo; bem, ao menos participar das discussões dos fóruns.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Olá, desenvolvimento web&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hello, my little ol&#39; Arch Server
      </title>
      <link>https://perrotta.dev/pt/2014/06/hello-my-little-ol-arch-server/</link>
      <pubDate>Sat, 14 Jun 2014 16:06:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/06/hello-my-little-ol-arch-server/</guid>
      <description>&lt;p&gt;♠ Durante os últimos dias venho brincando um pouco com configurações de&#xA;servidores. Não é a parte mais prazerosa de se administrar ou programar um&#xA;sistema, admito. Mas tem lá seus méritos.&lt;/p&gt;&#xA;&lt;p&gt;Bem, eis alguns pedaços de conhecimento registrados aqui.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Vanilla vs Patched&lt;/strong&gt;: você talvez se lembre de que uma vez eu inventei de&#xA;instalar ubuntu, centos, apache e opensuse, e aquilo era mais para ter uma visão&#xA;&amp;ldquo;big picture&amp;rdquo; da coisa. Atualmente estou testando configurações apenas no arch e&#xA;no debian, e são dois sistemas suficientemente diferentes porém que se completam&#xA;para que eu não precise testar em mais nenhum. A questão principal aqui é: no&#xA;Arch, os pacotes são minimamente alterados (usualmente, não são alterados); isto&#xA;é, eles são empacotados da mesma forma que &lt;strong&gt;upstream&lt;/strong&gt; quer que esteja. Isso é&#xA;muito bom para você aprender como as coisas funcionam de maneira pura, e também&#xA;para perceber como várias distros tentam resolver várias coisas por você; às&#xA;vezes isso é bom, às vezes isso é ruim; no entanto, é melhor você se expor aos&#xA;problemas para entender como eles funcionam, na minha visão.&lt;/p&gt;&#xA;&lt;p&gt;&amp;hellip;percebemos que no debian tudo isso já funciona out-of-the-box (isto é, o&#xA;Apache já vem pré-configurado); enquanto que, no Arch, é necessário fazer umas&#xA;pequenas configurações (10 minutos se você quiser tentar entendê-las sem nunca&#xA;tê-las feito; 2 minutos se já sabe o que fazer), coisa de descomentar algumas&#xA;linhas ou acrescentar outras. Isso não é feito às escuras, tudo é muito bem&#xA;documentado na ArchWiki, para a qual eu tenho o orgulho de contribuir.&lt;/p&gt;&#xA;&lt;p&gt;Outra diferença é em relação à localização padrão do DocumentRoot: no Arch&#xA;(logo, upstream) é &lt;code&gt;/srv/http&lt;/code&gt;, no debian era (se não me engano) &lt;code&gt;/var/www&lt;/code&gt;, e&#xA;no XAMPP é em &lt;code&gt;/opt/lampp/htdocs&lt;/code&gt;. Nenhum padrão, isso dá dor de cabeça às&#xA;vezes.&lt;/p&gt;&#xA;&lt;p&gt;Também estou realizando alguns testes com o nginx. Minha conclusão é que o nginx&#xA;é bem mais KISS do que o apache (e alguns dizem que ele é mais rápido também).&#xA;De fato, ele parece ser mais confortável de se trabalhar. Porém, ainda estou&#xA;tendo um pouco de dor de cabeça para integrá-lo com o PHP, através de FastCGI e&#xA;php-fpm. Provavelmente deixei escapar algum detalhe, alguma linha de&#xA;configuração, mas estou quase lá.&lt;/p&gt;&#xA;&lt;p&gt;Outro aspecto legal é o PHPMyAdmin. Não é nada mal poder configurar todas as&#xA;suas tabelas de MySQL (ou MariaDB, se estiver no Arch, tecnologia iuhul) através&#xA;de uma interface intuitiva. O PhpMyAdmin vem pré-configurado tanto no Arch&#xA;quanto no Debian, o que me diz que ele realmente foi feito para facilitar a vida&#xA;de um administrador de sistemas.&lt;/p&gt;&#xA;&lt;p&gt;Por outro lado, não achei absolutamente difícil utilizar a linha de comando do&#xA;mysql / mariadb. Pela pouca experiência que tenho hoje com MySQL, mas somada com&#xA;a minha boa experiência com linha de comando em geral, posso dizer que a&#xA;interface CLI do MySQL/MariaDB é bastante intuitiva. O problema é que você&#xA;precisa saber o que está fazendo (isso não é um problema, é?), precisa saber a&#xA;sintaxe dos comandos e tudo o mais, coisa que não é tão essencial no PhpMyAdmin.&#xA;Mas, ainda assim, não tem nada demais, só questão de se acostumar mesmo.&lt;/p&gt;&#xA;&lt;p&gt;Apesar de toda a vibe e estabilidade do MySQL, estou considerando seriamente em&#xA;utilizar alguma tecnologia NoSQL para um futuro projeto. Acredito que sua&#xA;flexiblidade combine mais com meu modo de pensar do que o do MysQL, mas, cada&#xA;tecnologia possui seus méritos, tirarei minhas próprias conclusões acerca disso&#xA;no futuro.&lt;/p&gt;&#xA;&lt;p&gt;Conectar o PHP com o MySQL é bastante fácil. Só questão de descomentar o módulo&#xA;correto no /etc/php/php.ini. Por sinal, tem bastantes módulos interessantes por&#xA;lá.&lt;/p&gt;&#xA;&lt;p&gt;Vejamos…ah sim, usuários e permissões; é bom tomar bastante cuidado com isso! É&#xA;um assunto que pode dar dor de cabeça. Cada distro tem seus próprios usuários&#xA;para a web, e seus próprios conjuntos de permissões para que tudo funcione&#xA;corretamente (e para que o seu sistema não fique tão exposto para o mundo).&#xA;Posso dizer que se você não usar o chmod, chgrp ou chown sem querer, e deixar os&#xA;defaults quietos, provavelmente tudo vai correr bem. Isso assume que você não&#xA;vai fazer nada de anormal, o que…bem, pode nem sempre ser verdadeiro.&lt;/p&gt;&#xA;&lt;p&gt;Mais uma coisa: use senhas seguras! Isso pode evitar dores de cabeça no futuro.&#xA;Por outro lado, cuidado para não utilizar senhas seguras demais e depois se&#xA;esquecer das mesmas. Se você utilizar algum software para administrá-las,&#xA;certifique-se de que a senha master dele seja ENORME, REALMENTE ENORME. E, se&#xA;possível, utilize algum método adicional para protegê-lo (2-factor auth, key,&#xA;etc).&lt;/p&gt;&#xA;&lt;p&gt;É uma boa prática utilizar 100% da linha de comando para administrar o seu&#xA;server. Talvez com a exceção do PhpMyAdmin, eu acho que todo bom administrador&#xA;deveria saber fazer tudo pela linha de comando.&lt;/p&gt;&#xA;&lt;p&gt;Bem, acho que até aqui isso resume parte da minha brincadeira. É claro que eu&#xA;não falei sobre uma porção de coisas, tem SSH, tem os arquivos de configuração,&#xA;tem LAMP/LEMP, tem todos os cenários mais extravagantes que você puder criar.&#xA;Mas esse é um começo. Para quem disse que ia começar a ler e estudar sobre o&#xA;assunto , sinto que estou no caminho certo e que comecei bem. Agora, o restante&#xA;desse caminho depende o que é que eu vou fazer com isso.&lt;/p&gt;&#xA;&lt;p&gt;Até breve.&lt;/p&gt;&#xA;&lt;p&gt;(Por sinal, o blog deve continuar congelado. Com exceção de posts como esse,&#xA;para marcar determinado badge/meta, o tempo de férias é curto, então não vou&#xA;tomá-lo para inventar posts que não precisam ser inventados)&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Hello, my little ol&#39; Arch Server&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Novos paradigmas @ Redes sociais &amp; News
      </title>
      <link>https://perrotta.dev/pt/2014/05/novos-paradigmas-@-redes-sociais-news/</link>
      <pubDate>Fri, 30 May 2014 11:57:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>socialmedia</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2014/05/novos-paradigmas-@-redes-sociais-news/</guid>
      <description>&lt;p&gt;♠ Produtividade já foi uma questão que discuti bastante por aqui. Por exemplo,&#xA;&lt;a href=&#34;http://thiagoperrotta.wordpress.com/2013/06/23/privacidade-nas-redes-sociais-parte-i/&#34;&gt;esse&lt;/a&gt;&#xA;post contém alguns pensamentos soltos, e &lt;a href=&#34;http://thiagoperrotta.wordpress.com/2013/11/01/journal-4-aaaaaargh-facebook/&#34;&gt;esse&#xA;outro&lt;/a&gt;&#xA;algumas &lt;em&gt;guidelines&lt;/em&gt; para o Facebook.&lt;/p&gt;&#xA;&lt;p&gt;Apesar de tudo, essa não é a única questão para a qual temos que abrir nossos&#xA;olhos. Parando para refletir um pouco, se você se imaginar há 3 anos e comparar&#xA;o seu eu ao eu atual, você irá notar que a forma com que a internet entrou em&#xA;sua vida e passou a &lt;strong&gt;fazer parte&lt;/strong&gt; dela, de modo intrínseco, é uma&#xA;&lt;strong&gt;metamorfose absurda&lt;/strong&gt;. Naturalmente, se você está lendo esse post, então o que&#xA;eu falei é uma suposição razoável para você.&lt;/p&gt;&#xA;&lt;p&gt;A questão é: perdemos muito tempo vendo notícias e &lt;em&gt;updates&lt;/em&gt; que não são&#xA;essenciais para a nossa cabeça, nem para uma eventual tomada de decisões. Claro&#xA;que alguns &lt;em&gt;updates&lt;/em&gt; são importantes, e outros são relacionados a pessoas que&#xA;você gosta de seguir / acompanhar, de modo que não acho que valha a pena você&#xA;ficar 100% sem adquirir informação nenhuma simplesmente porque a &lt;a href=&#34;https://en.wikipedia.org/wiki/Information_overload&#34;&gt;Information&#xA;Overload&lt;/a&gt; te dominou. Por&#xA;outro lado, &lt;a href=&#34;http://pennystocks.la/internet-in-real-time/&#34;&gt;tentar acompanhar&#xA;tudo&lt;/a&gt; é uma tremenda perda de&#xA;produtividade.&lt;/p&gt;&#xA;&lt;p&gt;Então, motivado por essas coisas, vou tentar mudar alguns de meus próprios&#xA;paradigmas em relação às redes sociais. Naturalmente, vou compartilhar algumas&#xA;coisas que soam como boas práticas, e que possivelmente você também poderá&#xA;querer adotar.&lt;/p&gt;&#xA;&lt;p&gt;1 - &lt;strong&gt;Deprecated&lt;/strong&gt;. Usei o&#xA;&lt;a href=&#34;https://perrotta.dev/pt/2014/03/bloqueando-websitesadsmalware-no-linux/&#34;&gt;hostsblock&lt;/a&gt;&#xA;durante uma semana (é só para Linux). Ele realmente bloqueia todos os domínios&#xA;que você especificar, mas isso acaba tendo a desvantagem que eu mencionei antes:&#xA;bloquear 100% não é uma solução ótima.&lt;/p&gt;&#xA;&lt;p&gt;2 - &lt;strong&gt;Deprecated&lt;/strong&gt;. Também cheguei a usar&#xA;&lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/leechblock/?src=search&#34;&gt;esse&lt;/a&gt;&#xA;add-on na época que usava Firefox. Mesmo comentário que o anterior.&lt;/p&gt;&#xA;&lt;p&gt;3 - Recentemente um&#xA;&lt;a href=&#34;https://chrome.google.com/webstore/detail/kill-news-feed/hjobfcedfgohjkaieocljfcppjbkglfd&#34;&gt;add-on&lt;/a&gt;&#xA;do Neal Wu para Chrome ficou bastante popular. Fiquei bastante feliz tanto pelo&#xA;que o add-on se propõe a fazer (não é um bloqueio de 100%!), quanto pela&#xA;pessoa que o desenvolveu (dica: é um cara bastante inteligente). E o melhor:&#xA;ele é &lt;a href=&#34;https://github.com/nealwu/KillNewsFeed&#34;&gt;open source&lt;/a&gt;, de modo que&#xA;você pode tentar adaptá-lo para bloquear outros sites também!&lt;/p&gt;&#xA;&lt;p&gt;Agora chega de &lt;em&gt;software&lt;/em&gt;, vamos às boas práticas.&lt;/p&gt;&#xA;&lt;p&gt;4 - Sempre que você ver um link da categoria &lt;em&gt;funny&lt;/em&gt;, &amp;ldquo;engraçadinho&amp;rdquo;,&#xA;&amp;ldquo;legalzinho&amp;rdquo;, NÃO O POSTE. Seus amigos não precisam ver isso. É, isso inclui a&#xA;categoria &amp;ldquo;reddit&amp;rdquo; também. Quem gosta do reddit vai ler coisas lá, eu não&#xA;preciso ficar compartilhando o post do dia do reddit que mais gostei na minha&#xA;&lt;em&gt;timeline&lt;/em&gt;. Isso se aplica principalmente ao 9gag e similares. Eu detesto esse&#xA;tipo de sites (9gag, não reddit), mas ainda assim vejo compartilhamentos sobre&#xA;isso o tempo todo. Dica: já dei unfollow na maior parte das pessoas que&#xA;compartilha sobre isso, mas parece que é algo viral, em todo o canto aparece&#xA;mais uma.&lt;/p&gt;&#xA;&lt;p&gt;5 - Boas plataformas para compartilhar links, GIFs e firulas?&#xA;&lt;a href=&#34;https://www.tumblr.com/&#34;&gt;Tumblr&lt;/a&gt;! (Eu não tenho um…).&lt;/p&gt;&#xA;&lt;p&gt;6 - Utilizar agregadores de feed (RSS ou não) para juntar as notícias que você&#xA;quer ver é uma ótima prática. Baseado em RSS, atualmente eu uso do&#xA;&lt;a href=&#34;https://www.commafeed.com/&#34;&gt;CommaFeed&lt;/a&gt;. O Reader do Wordpress também pode ser&#xA;razoável (ele também funciona para RSSs que não estão no Wordpress).&lt;/p&gt;&#xA;&lt;p&gt;7 - Eu procuro evitar entrar diretamente em portais de notícias (ainda mais se&#xA;forem grandes portais de notícias. Prefiro receber as principais notícias de&#xA;forma descentralizada. Bons sites para isso incluem&#xA;&lt;a href=&#34;http://www.reddit.com/&#34;&gt;Reddit&lt;/a&gt;, &lt;a href=&#34;https://news.ycombinator.com/&#34;&gt;Hacker News&lt;/a&gt;&#xA;(@Ycombinator), &lt;a href=&#34;http://slashdot.org/&#34;&gt;Slashdot&lt;/a&gt;, &lt;a href=&#34;https://news.google.com/news&#34;&gt;Google&#xA;News&lt;/a&gt;. O último não é bem descentralizado, mas&#xA;reúne notícias diversas.&lt;/p&gt;&#xA;&lt;p&gt;8 - Gosto do &lt;a href=&#34;http://getpocket.com/a/&#34;&gt;Pocket&lt;/a&gt; para reunir coisas para ler. Veja&#xA;bem: ler tudo é &lt;strong&gt;overkill&lt;/strong&gt;, mas algumas coisas valem a pena. No entanto, mesmo&#xA;para essas últimas, nem sempre você vai querer digerir dado artigo em dado&#xA;momento, então você o guarda para ler depois, é simples.&lt;/p&gt;&#xA;&lt;p&gt;9 - Sobre redes sociais de fotos (atualmente, Instagram e Imgur, a meu ver):&#xA;deixe as fotos dessas redes &lt;strong&gt;nessas redes&lt;/strong&gt;! Isto é, não conecte a sua conta do&#xA;Instagram com a sua conta do Facebook. Os seus amigos que não estão no Instagram&#xA;provavelmente não têm nenhum interesse em ficar visualizando &lt;strong&gt;todas&lt;/strong&gt; as&#xA;selfies que você posta. Por outro lado, é razoavelmente provável que os seus&#xA;amigos &lt;strong&gt;que estão&lt;/strong&gt; no Instagram possam gostar de ver essas fotos. Então, a meu&#xA;ver, conectar o Instagram com outras redes sociais é uma forma de narcisismo.&lt;/p&gt;&#xA;&lt;p&gt;10 - Conectar o Twitter com o Facebook é uma questão a se pensar. Se você é uma&#xA;daquelas pessoas que posta centenas de Tweets por dia, não faça isso, os seus&#xA;amigos do Facebook não irão querer ler todos os seus tweets. Por outro lado, se&#xA;você só posta alguns por dia (meu caso, ao menos hoje), talvez isso seja&#xA;razoável. Não tenho certeza se é 100% razoável, porque a probabilidade de um&#xA;único tweet ser relevante é bem pequena; por outro lado, talvez o conjunto de&#xA;tweets seja relevante, tudo depende do contexto.&lt;/p&gt;&#xA;&lt;p&gt;11 - Finalmente, a &lt;strong&gt;relevância&lt;/strong&gt; das redes sociais está no conceito de&#xA;&lt;strong&gt;comunidades&lt;/strong&gt;. Se você compartilha uma coisa X que interessa à comunidade Y,&#xA;então em geral as pessoas da comunidade Y vão ficar satisfeitas com X. Por outro&#xA;lado, quando você compartilha X com todo o seu feed, é bem provável que apenas&#xA;pouquíssimas pessoas achem X relevante. Assim, acho o conceito dos círculos do&#xA;Google+ fantástico.&lt;/p&gt;&#xA;&lt;p&gt;Essa lista poderia continuar de forma indefinida, mas acho que é mais prática do&#xA;que teoria, então fico satisfeito com os itens anteriores.&lt;/p&gt;&#xA;&lt;p&gt;E para finalizar, acho que o erro do News Feed do facebook é o seguinte: ele&#xA;assume que você quer ver os updates de &lt;strong&gt;todos&lt;/strong&gt; os seus amigos. Só que existe&#xA;um problema fundamental nisso: não é só porque uma pessoa X é sua conhecida que&#xA;você necessariamente quer ver todos os updates de X. Às vezes X é um colega de&#xA;trabalho, ou de faculdade, ou um antigo amigo de escola, e você quer se manter&#xA;conectado com X, não tem problema nenhum nisso; mas, isso não quer dizer que&#xA;você queira ver os updates de X. Assim, na maior parte das vezes, um usuário&#xA;médio do Facebook acaba vendo mais coisas que não o interessam do que as que o&#xA;interessam.&lt;/p&gt;&#xA;&lt;p&gt;O modelo do Twitter, ou do Google+ (por exemplo) é ligeiramente diferente: você&#xA;só segue, por definição, quem você quer seguir – então você em suma não tem o&#xA;direito de reclamar que a pessoa está postando futilidades, afinal foi você quem&#xA;a seguiu, qualquer coisa é só dar &lt;strong&gt;unfollow&lt;/strong&gt; nela. No caso do Google+ você só&#xA;visualiza updates dos círculos que você quer (assim como só posta para os&#xA;círculos que você quer).&lt;/p&gt;&#xA;&lt;p&gt;Note que a única plataforma que não inclui nessa discussão foi &lt;strong&gt;blogs&lt;/strong&gt;.&#xA;Trato-a de maneira diferente. Quem sabe não falo sobre isso em um outro dia. Até&#xA;a próxima.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Novos paradigmas @ Redes sociais &amp; News&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/socialmedia/&#34;&gt;#socialmedia&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>&#39;My setup&#39; series (aka &#39;How I do my computing&#39;)
      </title>
      <link>https://perrotta.dev/pt/2014/05/my-setup-series-aka-how-i-do-my-computing/</link>
      <pubDate>Sat, 17 May 2014 17:42:58 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2014/05/my-setup-series-aka-how-i-do-my-computing/</guid>
      <description>&lt;p&gt;♠ Alguém precisa me explicar a relação entre &amp;lsquo;ser desenvolvedor web front-end&amp;rsquo; e&#xA;&amp;rsquo;ter paixão por produtos da Apple&amp;rsquo;, sério&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/pt/2014/05/my-setup-series-aka-how-i-do-my-computing/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. Recentemente encontrei 3&#xA;excelentes sites que descrevem como algumas pessoas trabalham / utilizam seus&#xA;computadores, dentre outras coisas também. &lt;sup id=&#34;fnref1:1&#34;&gt;&lt;a href=&#34;https://perrotta.dev/pt/2014/05/my-setup-series-aka-how-i-do-my-computing/#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; é brasileiro (bacana!), &lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;https://perrotta.dev/pt/2014/05/my-setup-series-aka-how-i-do-my-computing/#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&#xA;sobre usuários de Linux e &lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;https://perrotta.dev/pt/2014/05/my-setup-series-aka-how-i-do-my-computing/#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; descreve os mais variados &lt;em&gt;setups&lt;/em&gt; de muita gente&#xA;boa!&lt;/p&gt;&#xA;&lt;p&gt;Naturalmente, adicionei esses 3 sites no meu&#xA;&lt;a href=&#34;https://github.com/thiagowfx/open-bookmarks&#34;&gt;open-bookmarks&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://setup.loopinfinito.com.br/&#34;&gt;http://setup.loopinfinito.com.br/&lt;/a&gt;&amp;#160;&lt;a href=&#34;https://perrotta.dev/pt/2014/05/my-setup-series-aka-how-i-do-my-computing/#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&amp;#160;&lt;a href=&#34;https://perrotta.dev/pt/2014/05/my-setup-series-aka-how-i-do-my-computing/#fnref1:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.mylinuxrig.com/tagged/the_linux_setup/&#34;&gt;http://www.mylinuxrig.com/tagged/the_linux_setup/&lt;/a&gt;&amp;#160;&lt;a href=&#34;https://perrotta.dev/pt/2014/05/my-setup-series-aka-how-i-do-my-computing/#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://usesthis.com/interviews/&#34;&gt;http://usesthis.com/interviews/&lt;/a&gt;&amp;#160;&lt;a href=&#34;https://perrotta.dev/pt/2014/05/my-setup-series-aka-how-i-do-my-computing/#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: &#39;My setup&#39; series (aka &#39;How I do my computing&#39;)&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Física 3 @ UFRJ: Sugestão de referências
      </title>
      <link>https://perrotta.dev/pt/2014/05/f%C3%ADsica-3-@-ufrj-sugest%C3%A3o-de-refer%C3%AAncias/</link>
      <pubDate>Sun, 11 May 2014 01:19:08 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2014/05/f%C3%ADsica-3-@-ufrj-sugest%C3%A3o-de-refer%C3%AAncias/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;OBS.: Pequeno update em 10/06/2014.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;1 - Professor Walter Lewin&lt;/strong&gt;, &lt;a href=&#34;https://twitter.com/thiagowfx/status/473999504107003905&#34;&gt;eu te&#xA;amo&lt;/a&gt;! Sugestão:&#xA;assistir essas &lt;em&gt;lectures&lt;/em&gt; como se fossem introdutórias. Não espere entender ou&#xA;dominar toda a matéria de primeira.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://ocw.mit.edu/courses/physics/8-02-electricity-and-magnetism-spring-2002/video-lectures/&#34;&gt;http://ocw.mit.edu/courses/physics/8-02-electricity-and-magnetism-spring-2002/video-lectures/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update (2015-03-22):&lt;/strong&gt; caso o link acima esteja fora do ar, tente a seguinte&#xA;&lt;em&gt;playlist&lt;/em&gt; do YouTube:&#xA;&lt;a href=&#34;https://www.youtube.com/playlist?list=PLUdYlQf0_sSsfcNOPSNPQKHDhSjTJATPu&#34;&gt;https://www.youtube.com/playlist?list=PLUdYlQf0_sSsfcNOPSNPQKHDhSjTJATPu&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;2 - Professor Luiz Brescansin:&lt;/strong&gt; eu não te amo tanto quanto o WL, mas você&#xA;também foi um ótimo professor. Sugestão: ao final dessas aulas, você já deverá&#xA;estar dominando (ou, pelo menos, saber de onde vieram as fórmulas, os&#xA;desenvolvimentos e os raciocínios) os conceitos passados.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.youtube.com/playlist?list=PLxI8Can9yAHdG8tw2QofrU02IuAEVyGlL&#34;&gt;https://www.youtube.com/playlist?list=PLxI8Can9yAHdG8tw2QofrU02IuAEVyGlL&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;3 - Livro do Young &amp;amp; Freedman:&lt;/strong&gt; para fixar e formalizar o conteúdo exposto&#xA;nas vídeoaulas; e também como uma fonte primária para obter um resumo das&#xA;principais fórmulas utilizadas.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;4 - Opcional:&lt;/strong&gt; Livro do Moysés: complemento para fixar ainda mais as ideias.&#xA;Recomendo não utilizá-lo caso não haja tempo suficiente.&lt;/p&gt;&#xA;&lt;p&gt;Agora, essa matéria é tão prática quanto Cálculo 3. Julgo completamente inútil&#xA;ficar só na teoria, então&amp;hellip;faça exercícios! Sugestão: a) provas antigas, b)&#xA;listas de exercícios de seu professor, c) listas de exercícios do Open Course&#xA;Ware (mesmo link do Walter Lewin), d) exercícios recomendados pelo IF do livro&#xA;do Young.&lt;/p&gt;&#xA;&lt;p&gt;&lt;del&gt;Recomendação adicional: não perca tempo estudando em grupo para essa matéria,&#xA;em particular. Ela é bem individual. &lt;em&gt;No pain, no gain&lt;/em&gt;.&lt;/del&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; faça como achar melhor.&lt;/p&gt;&#xA;&lt;p&gt;Minhas fontes prediletas para a teoria foram 1) e 3); e, para a prática: a),&#xA;parte de b) e parte de c).&lt;/p&gt;&#xA;&lt;p&gt;(Fiz um &lt;a href=&#34;https://perrotta.dev/pt/2013/12/c%C3%A1lculo-@-ufrj-sugest%C3%A3o-de-refer%C3%AAncias/&#34;&gt;post parecido com esse para os Cálculos&lt;/a&gt; da UFRJ, bem mais&#xA;detalhado que esse).&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Física 3 @ UFRJ: Sugestão de referências&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenPGP
      </title>
      <link>https://perrotta.dev/pt/2014/05/openpgp/</link>
      <pubDate>Fri, 09 May 2014 13:49:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>security</category>
      <guid>https://perrotta.dev/pt/2014/05/openpgp/</guid>
      <description>&lt;p&gt;♠ Em meu &lt;a href=&#34;https://perrotta.dev/pt/2014/04/openpgp/&#34;&gt;último post&lt;/a&gt; incluí uma porção de&#xA;referências introdutórias ao tema, que são suficientes para que você comece a&#xA;utilizar o GNUPG. Agora eu mesmo já comecei a utilizá-lo publicamente. Em suma,&#xA;as duas principais razões para se ter uma chave pública são:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Autenticação&lt;/strong&gt;: assinar (=validar) arquivos; isto é, se eu distribuir&#xA;(digamos) um software para você, e eu assiná-lo com a minha chave privada,&#xA;você poderá utilizar a minha chave pública para conferir se aquele arquivo foi&#xA;realmente assinado por mim. Caso alguém (um &lt;em&gt;man in the middle&lt;/em&gt;) pegue o meu&#xA;arquivo original e o falsifique, fazendo-o se passar por mim, você poderá&#xA;detectar que o arquivo é falso, pois a minha chave pública invalidará a&#xA;assinatura desse software. Em outras palavras: a minha chave privada (que só&#xA;eu tenho) é utilizada para assinar arquivos ou documentos; e a minha chave&#xA;pública (disponível para todos) é utilizada como um validador da minha&#xA;assinatura digital/eletrônica. Legal, né? Quer ver um exemplo? &lt;a href=&#34;https://mailman.archlinux.org/pipermail/aur-general/2014-May/028299.html&#34;&gt;*&#xA;Aqui*&lt;/a&gt;,&#xA;meu primeiro e-mail validado com a minha chave.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Criptografia&lt;/strong&gt;: se você quiser me enviar uma mensagem criptografada, basta&#xA;você utilizar a minha chave pública para criptografá-la. Desse modo, somente&#xA;eu (dono da minha chave privada) serei capaz de descriptografá-la. Da mesma&#xA;maneira, se você me enviar a sua chave pública, eu poderei enviar uma mensagem&#xA;criptografada para você (e somente você, com a sua chave privada, poderá&#xA;descriptografá-la).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Essas razões não parecem importantes o suficiente para você? Veja bem, estamos&#xA;entrando cada vez mais numa era (se é que já não entramos nela)&#xA;predominantemente digital. Proteger a autenticidade e a privacidade do que&#xA;postamos na rede é algo que vai adquirir cada vez mais importância.&#xA;Naturalmente, ninguém vai assinar um post no facebook ou no twitter, isso é&#xA;exagero (Será mesmo? Talvez daqui a uns anos não seja mais).&lt;/p&gt;&#xA;&lt;p&gt;Mas eu acredito que toda corporação decente deveria incentivar os seus&#xA;funcionários a enviar mensagens assinadas com suas chaves pessoais. Mais do que&#xA;isso, toda corporação deveria ter um modelo de &lt;strong&gt;Web of Trust&lt;/strong&gt; com todas as&#xA;chaves de seus funcionários. Não se trata de paranoia ou de super proteger&#xA;informações as quais não valem tanto esforço de serem super protegidas, mas é um&#xA;passo básico na direção da privacidade moderna! O OpenPGP foi criado em 1991&#xA;(&lt;a href=&#34;https://en.wikipedia.org/wiki/OpenPGP#OpenPGP&#34;&gt;referência&lt;/a&gt;), agora estamos em&#xA;2014, será que isso é demais?&lt;/p&gt;&#xA;&lt;p&gt;Vou lançar um &lt;strong&gt;desafio&lt;/strong&gt;: me envie uma mensagem criptografada com a &lt;a href=&#34;http://pgp.mit.edu/pks/lookup?op=vindex&amp;amp;search=0x755D25D2A905373C&#34;&gt;minha&#xA;chave&#xA;pública&lt;/a&gt;! Se&#xA;quiser, envie nessa mensagem também a sua própria chave pública, assim eu posso&#xA;te responder (também) de modo criptografado. Os links do meu &lt;a href=&#34;https://perrotta.dev/pt/2014/04/openpgp/&#34;&gt;post anterior&lt;/a&gt; são suficientes para você aprender como fazer&#xA;isso. Eu espero que você se surpreenda com isso, muita gente boa troca mensagens&#xA;assim.&lt;/p&gt;&#xA;&lt;p&gt;Se eu receber pelo menos um e-mail, vou considerar escrever mais coisas a&#xA;respeito de OpenPGP.&lt;/p&gt;&#xA;&lt;p&gt;Além disso, espero criar as minhas próprias carteiras digitais {bitcoin,&#xA;litecoin, dogecoin} em breve. Naturalmente, seguidas de posts de divulgação&#xA;sobre elas!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Happy GPG&amp;rsquo;ing!&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: confundir PGP e GPG é algo bastante comum. Acho que já aprendi a&#xA;diferença, ao menos não cometi nenhum erro nesse post sobre isso (no post&#xA;anterior eu cometi&amp;hellip;). O nome bonito da coisa é OpenPGP; gpg é o comando (no&#xA;linux) que a gente usa para gerenciar as chaves. GPG vem de &amp;ldquo;GNU Privacy&#xA;Guard&amp;rdquo;).&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: OpenPGP&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/security/&#34;&gt;#security&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redesign do blog
      </title>
      <link>https://perrotta.dev/pt/2014/05/redesign-do-blog/</link>
      <pubDate>Fri, 09 May 2014 12:47:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>meta</category>
      <guid>https://perrotta.dev/pt/2014/05/redesign-do-blog/</guid>
      <description>&lt;p&gt;♠ Acabei de remover várias features inúteis / bloated para esse blog. Por&#xA;exemplo, removi todas as categorias: agora só existem tags. Além do mais,&#xA;retirei vários widgets que ninguém utilizava. E, finalmente, mudei o tema!&#xA;Espero que gostem do novo formato.&lt;/p&gt;&#xA;&lt;p&gt;A inspiração veio do Jekyll, que é uma blogging engine simples porém elegante.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Redesign do blog&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/meta/&#34;&gt;#meta&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>(Re)formatando um pen-drive (@ Linux)
      </title>
      <link>https://perrotta.dev/pt/2014/05/reformatando-um-pen-drive-@-linux/</link>
      <pubDate>Wed, 07 May 2014 23:07:11 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/05/reformatando-um-pen-drive-@-linux/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;Motivação:&lt;/strong&gt; toda vez que insiro um pen-drive em um computador com Windows da&#xA;faculdade, pego um vírus. &lt;strong&gt;SEMPRE&lt;/strong&gt;. Incrível. Naturalmente, a opção mais óbvia&#xA;para se livrar disso é inserindo o pen-drive em um outro Windows e ativando a&#xA;opção para formatar o pen-drive.&lt;/p&gt;&#xA;&lt;p&gt;Só existem dois probleminhas com essa &amp;ldquo;solução&amp;rdquo;. A primeira é que, ao inserir o&#xA;pen-drive nesse outro computador, você estará automaticamente infectando esse&#xA;computador. Na verdade, a coisa toda se parece com um vírus não-virtual mesmo:&#xA;bastou entrar em contato, infectou o novo organismo. Os seus únicos potenciais&#xA;anticorpos são: a) utilizar um outro sistema não compatível com o Windows ou b)&#xA;desativar a opção de &lt;em&gt;autorun&lt;/em&gt; de novas mídias no Windows em que o pen-drive for&#xA;inserido. O problema é que essa opção está quase sempre ativada, e ninguém se&#xA;lembra de desativá-la (ou não se importa, porque não é algo muito prático para&#xA;quem quer fazer uma simples apresentação de apenas alguns minutos!).&lt;/p&gt;&#xA;&lt;p&gt;O segundo é que, mesmo que você formate o pen-drive, alguns instantes depois o&#xA;vírus se recopiará para o mesmo. Ou seja, você só teria formatado por meros&#xA;instantes&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Claro, a melhor forma de atacar isso é começando por rodar um anti-vírus no&#xA;Windows originalmente infectado, mas isso foge do escopo desse post.&lt;/p&gt;&#xA;&lt;p&gt;Vou expor aqui uma forma de recuperar o pen-drive a partir do Linux. Recuperar,&#xA;nesse contexto, significa simplesmente formatá-lo: recriar o sistema de&#xA;arquivos. Só isso.&lt;/p&gt;&#xA;&lt;p&gt;Gostaria de destacar que existem boas chances de existir uma forma de fazer o&#xA;que eu vou listar a seguir através de um programa com interface gráfica&#xA;(exemplo: &lt;strong&gt;gparted&lt;/strong&gt;). No entanto, vou me ater à linha de comando, porque é uma&#xA;forma que vai sempre funcionar, e que é confiável (talvez não seja&#xA;necessariamente fácil, mas isso é outra história).&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Etapas – atenção! Recomendo que leia tudo antes de testar em seu próprio&#xA;dispositivo. Se você utilizar esses documentos no disco errado, vai perder os&#xA;arquivos desse disco. Apenas atenção!:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;1 - Obtenha uma máquina com Linux, abra um emulador de terminal, e insira o&#xA;pen-drive.&lt;/p&gt;&#xA;&lt;p&gt;2 - Certifique-se que o Pen-drive foi reconhecido pelo sistema. Para isso, você&#xA;deverá checar os discos da forma /dev/sdX, onde X é uma única letra, como por&#xA;exemplo /dev/sda, /dev/sdb/, /dev/sdc. Usualmente o primeiro disco da máquina (o&#xA;/dev/sda) é o que está rodando o sistema. Então, atenção: **praticamente nunca o&#xA;pen-drive vai ser o /dev/sda.**Note que a palavra &lt;strong&gt;disco&lt;/strong&gt;, nesse contexto,&#xA;significa (em geral): Disco Rígido (HD), SSD, Pen-Drive, Cartão SD, &amp;hellip; ou seja,&#xA;praticamente qualquer dispositivo moderno de armazenamento de dados.&lt;/p&gt;&#xA;&lt;p&gt;2.1 - Como checar os discos? Rode o comando&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;sudo fdisk -l&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;É necessário um pouco de bom-senso. Geralmente você sabe a capacidade do seu&#xA;pen-drive (digamos, 4GB); portanto, procure o dispositivo que indicar 4GB. Se&#xA;você estiver na dúvida, retire o pen-drive, rode esse comando novamente, então&#xA;recoloque o pen-drive e rode esse comando mais uma vez: agora compare qual disco&#xA;apareceu dessa vez.&lt;/p&gt;&#xA;&lt;p&gt;3 - Vou supor que o pen-drive é o /dev/sdX. **Atenção! Utilize essa linha de&#xA;comando para a letra que é correta para você.**Agora, rode&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;sudo cfdisk /dev/sdX&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Provavelmente você só possui uma partição alocada, do tipo FAT32. Eu recomendo&#xA;deletar essa partição e criar uma nova. Isso deve ser intuitivo, apenas siga a&#xA;interface. Depois de criar a nova partição, usualmente ela vai ter algum sistema&#xA;de arquivos que tem a ver com o Linux. Nesse caso, é necessário mudar o tipo do&#xA;sistema de arquivos (procure a opção &amp;ldquo;type&amp;rdquo;, ou similar) para FAT32. NTFS também&#xA;é uma opção, mas eu realmente recomendo colocar FAT32: é o que o próprio windows&#xA;seleciona (geralmente)!&lt;/p&gt;&#xA;&lt;p&gt;Se você fez isso direitinho, agora procure a opção &amp;ldquo;write&amp;rdquo; para gravar as&#xA;mudanças realizadas. Se você NÃO FEZ isso direito e, por algum motivo, se&#xA;enrolou ou não encontrou dada opção, então procure &amp;ldquo;cancel&amp;rdquo;. Se você cancelar,&#xA;nada do que você fez foi gravado em disco, então é como se você nunca tivesse&#xA;rodado o comando &lt;strong&gt;cfdisk&lt;/strong&gt;, pode ficar tranquilo.&lt;/p&gt;&#xA;&lt;p&gt;4 - Agora que recriamos o nosso sistema de arquivos FAT32, devemos criá-lo&#xA;efetivamente! OK, perdão pela minha terminologia. É o seguinte: na etapa&#xA;anterior, &lt;strong&gt;indicamos&lt;/strong&gt; que o sistema de arquivos é FAT32 (ou NTFS, depende de&#xA;você). Agora vamos &lt;strong&gt;alocar&lt;/strong&gt; esse sistema de arquivos &lt;strong&gt;efetivamente&lt;/strong&gt;. O&#xA;comando típico é o seguinte:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;sudo mkfs.ntfs -L &amp;#34;MEULABEL&amp;#34; /deb/sdX1&lt;/code&gt;&lt;/pre&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;sudo mkfs.vfat /dev/sdX1&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Qual você vai usar? Depende se você escolheu FAT32 ou NTFS. Para especificar um&#xA;label no caso de ter escolhido FAT32, utilize o comando&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;sudo fatlabel /dev/sdX1 &amp;#34;MEULABEL&amp;#34;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Sobre a numeração, /dev/sdX1, /dev/sdX2, etc, se referem às partições do disco&#xA;/dev/sdX. No caso, eu assumi que você só criou uma única partição (o que é o&#xA;comum em pen-drives), então você vai utilizar /dev/sdX1 mesmo.&lt;/p&gt;&#xA;&lt;p&gt;Bom, é isso! Se você seguiu as etapas corretamente, o seu pen-drive estará&#xA;formatado, livre do vírus. Não o insira na mesma máquina que o infectou, senão&#xA;você vai ter que formatá-lo novamente.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: (Re)formatando um pen-drive (@ Linux)&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kernel Panic, uma história de amor, parte ????
      </title>
      <link>https://perrotta.dev/pt/2014/05/kernel-panic-uma-hist%C3%B3ria-de-amor-parte/</link>
      <pubDate>Tue, 06 May 2014 23:36:13 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2014/05/kernel-panic-uma-hist%C3%B3ria-de-amor-parte/</guid>
      <description>&lt;p&gt;♠ É, meus amigos, a minha (longa) jornada de exploração do mundo Linux Desktop&#xA;está praticamente chegando ao fim. Pessoalmente, já explorei tudo o que eu&#xA;queria. Foram 2 longos anos, e acredito que eu tenha atingido um nível de&#xA;maturidade razoavelmente bom, a ponto de recomendar a outras pessoas que se&#xA;interessam por TI fazerem o mesmo que eu fiz. Felizmente, várias (mas,&#xA;infelizmente, não todas) das minhas etapas ao longo dessa jornada estão&#xA;registradas (às vezes, documentadas também!) nesse blog.&lt;/p&gt;&#xA;&lt;p&gt;OBS.: estou escrevendo esse post sem absolutamente nenhum link e nenhum tipo de&#xA;marcação (negrito, etc), isso é proposital.&lt;/p&gt;&#xA;&lt;p&gt;O desafio final, necessário para o meu diploma autodidata, foi adiado o máximo&#xA;possível. Sim, ele é exatamente isso que você está pensando: testar o Gentoo.&#xA;Hoje o meu Grub possui entradas tanto do Arch quanto do Gentoo. Vou adiantar uma&#xA;coisa: a entrada do Gentoo é temporária. Assim que eu terminar de explorar todas&#xA;as features que parecerem interessantes de uma distro baseada em código-fonte,&#xA;do portage, do eix, equery, masks, slots, OpenRC, e mais todas as&#xA;características peculiares do Gentoo, vou me desfazer dele.&lt;/p&gt;&#xA;&lt;p&gt;Vale a pena dedicar pelo menos um parágrafo para falar sobre o porquê disso. Vai&#xA;ser só um, prometo. Desde o meu primeiro dia com Linux (com nada menos&#xA;que&amp;hellip;Ubuntu! É, já falei disso aqui várias vezes), eu percebi que iria gostar&#xA;muito daquilo. Daquilo o quê? Tanto do design da coisa, quanto das comunidades,&#xA;de outras pessoas que também eram entusiastas por aquele design. Assim, tentei&#xA;me envolver com a comunidade do Ubuntu. Cadastrei-me no Launchpad, no fórum&#xA;Ubuntu-BR, no fórum oficial do Ubuntu (em inglês), tentei acessar o IRC do&#xA;&lt;code&gt;#ubuntu&lt;/code&gt;, ixi, foram várias coisas desse tipo. Fiquei um tempo fazendo isso. Mas&#xA;não me senti 100% à vontade. Por quê? Porque parecia algo não muito natural. Não&#xA;era algo com que eu chegasse um fim de semana e estivesse super animado e&#xA;entusiasmado para postar no fórum do Ubuntu, não mesmo.&lt;/p&gt;&#xA;&lt;p&gt;Ops, cá estou eu quebrando minha promessa e criando outro parágrafo&amp;hellip;daí, eu&#xA;decidi partir para outra, fui para o mundo do KDE, tentei fazer parte da&#xA;comunidade deles, etc, etc, ficou esse ciclo, e depois testei uma distro atrás&#xA;da outra, valendo destacar que também tentei participar da comunidade do&#xA;openSUSE e do Fedora.&lt;/p&gt;&#xA;&lt;p&gt;Só que existia um problema, nada disso parecia certo, nada disso parecia feliz,&#xA;natural. Parecia só uma modinha. Ah, um usuário de Linux novo, se juntar com a&#xA;comunidade. Tem um monte de wannabes por aí, colocando em seus blogs pessoais&#xA;vários símbolos de coisas relacionadas a open source e distros de Linux&#xA;(ops&amp;hellip;eu sou um deles???). Sabe qual é o problema? O problema é quando você&#xA;inclui essas coisas sem sequer saber sobre o significado delas direito. Quando&#xA;você tem uma pressão interna para colocar um símbolo do (digamos) Ubuntu&#xA;relacionado a você, mas você mal sabe o que é o Ubuntu, com a maior parte da sua&#xA;experiência limitando-se apenas usar o sistema.&lt;/p&gt;&#xA;&lt;p&gt;Uma das coisas que eu aprendi, um dos significados mais importantes e mais&#xA;(permita-me dizer) belos sobre esse mundo, é o significado de: COMUNIDADES.&#xA;Comunidades são uma coisa bastante complexa mas, uma vez que você entende o&#xA;propósito, a motivação, e o objetivo por trás de uma, tudo se torna&#xA;infinitamente mais fácil, e você passa automaticamente a entender sobre todas as&#xA;comunidades. Em outras palavras: conheça bem uma comunidade, e você conhecerá&#xA;todas!&lt;/p&gt;&#xA;&lt;p&gt;A questão foi: depois de passar por todas aquelas comunidades de distros que&#xA;citei, e ter detestado isso tudo, de maneira frustrada, chegou um certo dia que&#xA;eu conheci a comunidade certa PARA MIM. É óbvio que eu estou falando da&#xA;comunidade do Arch Linux. Se a comunidade do Arch é perfeita? Para mim, é! Mas,&#xA;note que a resposta para &amp;ldquo;X é perfeito?&amp;rdquo; é relativa, e depende do referencial.&#xA;Perfeita para quem? Continuando com esse exemplo, para a maior parte das pessoas&#xA;que eu conheço, o Arch é uma das piores comunidades que você tem para&#xA;participar. Você tem que correr atrás para interagir com os outros membros (isto&#xA;é, ninguém vai fazer nada por você se você próprio não se esforçar), ela é&#xA;fortemente baseada em meritocracia (quanto mais você colaborar, mais os outros&#xA;membros vão reconhecer o seu valor dentro da comunidade. Nem todas são assim. Em&#xA;alguns lugares, o mais rico é o mais foda. Ou, quem tem as melhores redes de&#xA;contatos. Ou, quem dedica mais tempo (não necessariamente mais contribuições)&#xA;para a comunidade. Cada comunidade tem a sua própria forma de atribuir valores a&#xA;si mesma!), em manter as coisas simples e evitar complexidades e firulas&#xA;desnecessárias (o que, por exemplo, muitas vezes acaba com o conceito de &amp;ldquo;ser&#xA;fácil de usar de primeira&amp;rdquo;, o que é claramente ruim para muita gente).&lt;/p&gt;&#xA;&lt;p&gt;Ah, enfim, quanto uma comunidade é bem definida, os seus valores são bem&#xA;definidos. Para o Arch, existe o &amp;ldquo;Arch Way&amp;rdquo;, para o Ubuntu, &amp;ldquo;Ubuntu code of&#xA;conduct&amp;rdquo;, para o Fedora, &amp;ldquo;core values&amp;rdquo;. Para o seu grupo de amigos (que também&#xA;forma uma comunidade!), talvez preferir pizza de Pepperonni (escrevi certo?) e&#xA;torcer para o time XXX de futebol (sorry, me recuso a citar qualquer time de&#xA;futebol brasileiro nesse espaço) sejam os valores da sua comunidade e, em&#xA;princípio, não há problema nenhum nisso!&lt;/p&gt;&#xA;&lt;p&gt;Muito bem, vamos voltar a ter foco no tema do post (se é que ele tem um). Eu ia&#xA;escrever 3 posts separados, um falando sobre comunidades, um falando sobre o&#xA;Arch e sobre o Gentoo, e o outro falando sobre um pouco de tudo, mas acabou que&#xA;ficou tudo misturado aqui.&lt;/p&gt;&#xA;&lt;p&gt;Sobre comunidades, uma das coisas que eu considero um MUST DO para qualquer&#xA;pessoa, é ler o sensacional &amp;ldquo;The art of community&amp;rdquo;, do Jono Bacon (eu disse que&#xA;não vou indicar links, faça seu dever de casa e pesquise, caso se interesse).&#xA;Esse livro está disponível sob a Creative Commons, então você pode baixá-lo&#xA;gratuitamente. Jono Bacon é o atual Community Manager do Ubuntu, ele é&#xA;responsável por gerenciar uma boa parte da comunidade do Ubuntu, e de assegurar&#xA;que os interesses da Canonical estejam mais ou menos congruentes aos da&#xA;comunidade do Ubuntu. Ele também é um dos atuais hosts do Bad Voltage, um&#xA;podcast que gosto bastante.&lt;/p&gt;&#xA;&lt;p&gt;Enfim, o negócio desse livro é que ele é uma lição de política, de comunidades,&#xA;de interação, de gestão, de (&amp;hellip;), AH, de tudo. Um livro perfeito para se ler em&#xA;um ano de eleições, mostra o quão falha é a gestão do nosso Brasil. E também o&#xA;quanto algumas empresas desse mesmo país estão fadadas ao fracasso.&#xA;Naturalmente, essas são conclusões que uma leitura atenta lhe permite tirar.&lt;/p&gt;&#xA;&lt;p&gt;Depois que li esse livro e refleti sobre a minha tentativa por procurar a&#xA;&amp;ldquo;comunidade perfeita&amp;rdquo;, percebi que tudo isso se relacionava e fazia completo&#xA;sentido. Encontrar uma comunidade da qual você se sinta parte é uma sensação&#xA;muito boa!&lt;/p&gt;&#xA;&lt;p&gt;Agora, já que eu estou falando de fazer parte, vale dizer outra coisa. O que é&#xA;preciso para fazer parte de uma comunidade? Há algumas que possuem os seus&#xA;métodos oficiais. &amp;ldquo;Fedora Ambassor&amp;rdquo; (acho que se escreve assim) é um exemplo de&#xA;badge oficial. Só vou dizer uma coisa sobre isso: existe uma vibe muito grande&#xA;de pseudocults e de pseudo community members nessa área (nessa = não me refiro&#xA;ao Fedora, não! Me refiro aos badges e tudo o mais). Pessoas que só querem um&#xA;badge de certa comunidade, mas que não sabem nem um pouco sobre a mesma, mas só&#xA;querem participar da organização para se promoverem, e ganharem algum nome,&#xA;aproveitando-se da reputação da organização. Bom, felizmente me orgulho de dizer&#xA;que na comunidade do Arch não existe a possibilidade disso acontecer,&#xA;simplesmente porque não há badges (bem, só em torno de umas 100 pessoas possuem&#xA;esses badges, então na prática é como se não houvesse; essas pessoas são os&#xA;usuários confiáveis (&amp;ldquo;trusted users&amp;rdquo;) e mais outros, que contribuem DIRETAMENTE&#xA;para a manutenção da distro): a forma de você se envolver com a comunidade é se&#xA;envolvendo, e pronto. Não existe nenhum selo para ser exibido. A vantagem disso&#xA;é que pseudocults usualmente desistem fácil de comunidades desse jeito: ora&#xA;bolas, o objetivo é acumular badges, e não participar da comunidade em si.&#xA;Resumindo: participa quem quer, quando quer, PORQUE quer. Quer o quê? Ver a&#xA;comunidade crescer, evoluir, e se interagir cada vez mais! Sem selos.&lt;/p&gt;&#xA;&lt;p&gt;O parágrafo anterior foi fortemente baseado no livro do Bacon, mas OK. Um resumo&#xA;mal feito, verdade. Quando um livro é sensacional, qualquer resumo dele é mal&#xA;feito, não tem como. Nada substitui o conteúdo original do livro.&lt;/p&gt;&#xA;&lt;p&gt;OK, se você ainda está lendo isso, ou você está curioso para ver onde esse post&#xA;vai dar, ou talvez você tenha um espírito puro em relação a comunidades e não&#xA;seja pseudocult, portanto. Talvez você ainda esteja procurando a sua comunidade&#xA;perfeita. Enfim, você é especial, porque a maioria das pessoas já ficam de saco&#xA;cheio logo nos primeiros parágrafos desse texto xDD, aprendi a fazer isso com a&#xA;comunidade do Arch, viu como aprendemos coisas?&lt;/p&gt;&#xA;&lt;p&gt;Mas, voltando a falar sério: essa é a minha terceira versão de um texto que eu&#xA;sempre quis escrever, de algo que eu sempre quis expressar. As duas primeiras&#xA;versões nunca foram publicadas, estão bagunçadas demais. Essa também está, mas&#xA;está bem menos, acredite. E, mesmo que eu escrevesse 10 vezes, continuaria&#xA;assim, sabe por quê? Porque quando tentamos falar de modo perfeito de algo no&#xA;qual acreditamos e de que somos entusiasmados, não tem como não misturar&#xA;sentimentos e pensamentos pessoais com o fluxo do texto. Isso só mostra que esse&#xA;tema é algo realmente bastante especial para você.&lt;/p&gt;&#xA;&lt;p&gt;Mas, muito bem, essa parte foi um pouco (muito!?) filosófica. Vou escrever uma&#xA;outra parte, comparando o Gentoo ao Arch e, nessa, prometo que vou ser mais&#xA;objetivo. Além disso, existe uma possibilidade de que eu poste uma continuação&#xA;para esse post, com mais filosofia. Se você tiver curiosidade em ver os dois&#xA;primeiros rascunhos para esse post (uma bagunça&amp;hellip;), deixe-me saber disso.&lt;/p&gt;&#xA;&lt;p&gt;Até a próxima. E, vou reforçar: o meu conteúdo sobre Linux está em breve&#xA;chegando ao fim. Quer dizer, não sobre Linux, mas sobre Linux Desktop. Realmente&#xA;foi uma jornada bastante legal, mas eu vou me mover para outras áreas agora.&#xA;Qual? Muito possivelmente: ou redes/servidores/essas coisas, ou teoria de&#xA;linguagens de programação e de compiladores. Existem outras possibilidades, mas&#xA;essas são as mais prováveis. E, é claro, sempre tem um pedaço da maratona de&#xA;programação, mas sobre isso você sabe que eu escrevo em outro lugar.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Kernel Panic, uma história de amor, parte ????&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Instalando o Gentoo a partir do Arch
      </title>
      <link>https://perrotta.dev/pt/2014/05/instalando-o-gentoo-a-partir-do-arch/</link>
      <pubDate>Thu, 01 May 2014 02:20:00 +0000</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <guid>https://perrotta.dev/pt/2014/05/instalando-o-gentoo-a-partir-do-arch/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;TL;DR&lt;/strong&gt;: pequena TODO list sobre como instalar o Gentoo. Você vai passar 90% do seu tempo olhando para &lt;strong&gt;texto&lt;/strong&gt; dando scroll na tela (processo demorado…).&lt;/p&gt;&#xA;&lt;p&gt;Esse é o método mais tradicional possível (e que me interessa) que pude constatar. Adapte-o para as suas próprias necessidades:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Boote em um ambiente com o Arch (na verdade, você pode fazer isso a partir de qualquer distro decente).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Crie uma partição &lt;code&gt;/&lt;/code&gt;, do tipo ext4, para acomodar a instalação do Gentoo. De preferência, coloque um label decente lá. Sugestões de ferramentas para isso: &lt;code&gt;cfdisk&lt;/code&gt; ou &lt;code&gt;gparted&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Monte essa partição em &lt;code&gt;/mnt/gentoo&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Continue a partir do &lt;a href=&#34;http:www.gentoo.org/doc/en/handbook/handbook-amd64.xml?part=1&amp;amp;chap=4&#34;&gt;handbook&lt;/a&gt; oficial do Gentoo – nesse caso, para a arquitetura amd64. No entanto, &lt;strong&gt;atenção&lt;/strong&gt;. Use &lt;a href=&#34;https:wiki.gentoo.org/wiki/Installation_alternatives&#34;&gt;esse&lt;/a&gt; guia para perceber quais etapas de instalação e configuração são diferentes (em relação a se estivéssemos instalando pelo método oficial, a partir do live environment do gentoo), mais especificamente &lt;strong&gt;da parte 4 à parte 6&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Baixe o &lt;code&gt;PKGBUILD&lt;/code&gt; &lt;code&gt;gentoo-mirrorselect&lt;/code&gt; do AUR.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Use &lt;code&gt;mirrorselect -i -o&lt;/code&gt; e então selecione interativamente os mirrors mais próximos da sua localização atual. Copie o valor da variável &lt;code&gt;GENTOO_MIRRORS&lt;/code&gt; para o final do seu &lt;code&gt;/mnt/gentoo/etc/portage/make.conf&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Copie o seu &lt;code&gt;/etc/resolv.conf&lt;/code&gt; para &lt;code&gt;/mnt/gentoo/etc/resolv.conf&lt;/code&gt;. Isso é &lt;a href=&#34;https:bbs.archlinux.org/viewtopic.php?id=95865&#34;&gt;importante&lt;/a&gt; para ter conectividade dentro do ambiente de chroot.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;CFLAGS&lt;/code&gt; que recomendo para o &lt;code&gt;/etc/portake/make.conf&lt;/code&gt; (&lt;a href=&#34;https:forums.gentoo.org/viewtopic-t-933456-start-0.html&#34;&gt;helper&lt;/a&gt;):&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;-march=native -O2 -pipe&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;A partir daqui, nada especial, apenas continue seguindo o handbook do gentoo, até a parte do bootloader.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Chegando na parte do bootloader, optei por deixar o Arch gerenciá-lo. Nesse caso, basta rodar um típico &lt;code&gt;grub-mkconfig -o /boot/grub/grb.cfg&lt;/code&gt; que o Gentoo deverá ser automaticamente detectado (supondo que o pacote &lt;code&gt;os-prober&lt;/code&gt; esteja instalado).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Configure a rede no Gentoo. Isso é bastante específico, mas o procedimento é bem parecido com a configuração da rede no Arch. A única questão é que, ao dar emerge no &lt;code&gt;wpa_supplicant&lt;/code&gt; (no caso de você utilizar Wi-fi), vai demorar bastante até todas as dependências serem instaladas (esse é o ponto principal que me afastou do Gentoo até hoje. Sem pacotes binários, ter que compilar tudo localmente…ao menos, se no final a otimização do sistema for maior, poderia ter valido mais a pena.)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Teste o Gentoo durante uma semana e diga o que você achou dele 😉&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Decida se você gosta mais do Gentoo ou do Arch. Isso vale tanto para o sistema, tanto para a comunidade. Não tenho ideia de como seja a comunidade do Gentoo (a do Arch eu já tinha uma boa noção de como era mesmo antes de ter o sistema instalado).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Valeu pessoal. Como sou 100% newbie no Gentoo, apreciarei quaisquer dicas! (Enquanto as dicas não aparecem, Wiki Pages e Forums Threads me esperam). Sabe, é bom, de vez em quando, ser newbie em alguma coisa. Claro que ser expert / muito bom / hacker em algumas aplicações é ótimo, mas eu acredito na importância de possuir uma boa base de conhecimento em geral (não necessariamente apenas para fins acadêmicos ou financeiros, mas também para satisfazer a mente: desafios são importantes!).&lt;/p&gt;&#xA;&lt;p&gt;Ah, mais dois comentários:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Terminando de escrever esse post e de editá-lo, a compilação dos (130) pacotes que o &lt;code&gt;wpa_supplicant&lt;/code&gt; puxou não chegou nem na metade… (eu teria instalado uns três ou quatro Archs automatizados nesse tempo – tá bom, não vale comparar pacotes binários com código-fonte, eu sei)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Esse é o meu terceiro ou quarto post utilizando o &lt;code&gt;org2blog&lt;/code&gt; (do emacs). Já ficou bastante claro para mim que vou passar a usá-lo de maneira fixa. O único problema é que eu ainda não sei a sintaxe de formatação dele direito, é muita informação. Não é nem que não seja intuitiva, mas já tem LaTeX, BBCode, Markdown, aí eu tenho que aprender mais uma markup language. Mas, provavelmente vou me submeter a isso, o &lt;strong&gt;orgmode&lt;/strong&gt; é sensacional para &lt;em&gt;management&lt;/em&gt; em geral.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Instalando o Gentoo a partir do Arch&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenPGP
      </title>
      <link>https://perrotta.dev/pt/2014/04/openpgp/</link>
      <pubDate>Sat, 26 Apr 2014 16:21:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>privacy</category>
      <category>security</category>
      <guid>https://perrotta.dev/pt/2014/04/openpgp/</guid>
      <description>&lt;p&gt;♠ Resolvi tomar mais um passo em direção à minha privacidade e segurança, passo&#xA;esse que deveria ter tomado faz bastante tempo. Não é um passo secreto; se&#xA;fosse, então esse post não existiria, naturalmente. Estou falando de &lt;a href=&#34;https://en.wikipedia.org/wiki/Pretty_Good_Privacy&#34;&gt;PGP&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Esse post serve para mostrar que isso existe (afinal, nem todos estão cientes&#xA;sobre isso) e para deixar uma coleção de links que podem ser úteis para quem&#xA;quiser ler mais sobre isso ou, até mesmo, entrar nesse mundo.&lt;/p&gt;&#xA;&lt;p&gt;Gostaria de ressaltar que esse assunto não é algo que eu considero trivial, nem&#xA;que possa ser aprendido em um único dia. Existem vários conceitos de segurança e&#xA;de criptografia envolvidos nisso. No entanto, acho que isso faz alguém que se&#xA;importe com TI em geral aumentar a sua maturidade em relação a segurança.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;You should keep your private master key very, very safe. However, keeping all&#xA;your keys extremely safe is inconvenient: every time you need to sign a new&#xA;package upload, you need to copy the packages onto suitable portable media, go&#xA;into your sub-basement, prove to the armed guards that you&amp;rsquo;re you by using&#xA;several methods of biometric and other identification, go through a deadly maze,&#xA;feed the guard dogs the right kind of meat, and then finally open the safe, get&#xA;out the signing laptop, and sign the packages. Then do the reverse to get back&#xA;up to your Internet connection for uploading the packages.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;(retirado da wiki do debian)&lt;/p&gt;&#xA;&lt;h2 id=&#34;links&#34;&gt;&#xA;  Links&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/04/openpgp/#links&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://straightedgelinux.com/blog/howto/setupgnupg.html&#34;&gt;http://straightedgelinux.com/blog/howto/setupgnupg.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.pgpi.org/doc/pgpintro/&#34;&gt;http://www.pgpi.org/doc/pgpintro/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.pgp.net/pgpnet/pgp-faq/pgp-faq-security-questions.html&#34;&gt;http://www.pgp.net/pgpnet/pgp-faq/pgp-faq-security-questions.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://pgp.mit.edu/&#34;&gt;http://pgp.mit.edu/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.void.gr/kargig/blog/2013/12/02/creating-a-new-gpg-key-with-subkeys/&#34;&gt;https://www.void.gr/kargig/blog/2013/12/02/creating-a-new-gpg-key-with-subkeys/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wiki.debian.org/Subkeys&#34;&gt;https://wiki.debian.org/Subkeys&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://keyring.debian.org/creating-key.html&#34;&gt;http://keyring.debian.org/creating-key.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.iusmentis.com/technology/encryption/pgp/pgpattackfaq/&#34;&gt;http://www.iusmentis.com/technology/encryption/pgp/pgpattackfaq/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://wiki.archlinux.org/index.php/GnuPG&#34;&gt;https://wiki.archlinux.org/index.php/GnuPG&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://we.riseup.net/riseuplabs&amp;#43;paow/openpgp-best-practices&#34;&gt;https://we.riseup.net/riseuplabs+paow/openpgp-best-practices&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;OBS.: ainda não utilizo a minha chave de maneira pública. &lt;strong&gt;Em breve&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: OpenPGP&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/privacy/&#34;&gt;#privacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/security/&#34;&gt;#security&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Os servidores de DNS da Net/Virtua foram hackeados
      </title>
      <link>https://perrotta.dev/pt/2014/04/os-servidores-de-dns-da-net/virtua-foram-hackeados/</link>
      <pubDate>Sat, 26 Apr 2014 12:00:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/04/os-servidores-de-dns-da-net/virtua-foram-hackeados/</guid>
      <description>&lt;p&gt;♠ Se você é usuário da NET, tome MUITO CUIDADO se, ao digitar um link no seu&#xA;navegador predileto, você se deparar com uma página falsa do Flash Player. &lt;strong&gt;NÃO&#xA;CLIQUE EM NADA!!&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Isso não acontece só para o site do facebook, acontece para outros sites também.&#xA;Mas não acontece para todas as páginas. No meu caso, quando não acontece para&#xA;algumas páginas, é porque o servidor de DNS utilizado para consulta é algum&#xA;outro.&lt;/p&gt;&#xA;&lt;p&gt;O motivo dessa página estar aparecendo é que &lt;strong&gt;o DNS da Net foi hackeado&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;O servidor 201.6.4.116 é um dos servidores DNS da Net, e o 8.8.8.8 (assim como o&#xA;8.8.4.4) são servidores DNS do Google. Se fizermos uma consulta de DNS no&#xA;domínio &lt;code&gt;www.google.com&lt;/code&gt; com o servidor de DNS da Net, e depois com o servidor&#xA;de DNS do Google, vemos que esses dois resultados são diferentes. Motivo? &lt;strong&gt;A&#xA;DROGA DO SERVIDOR DE DNS DA NET FOI HACKEADO!!!&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Notem que o servidor 206.190.150.21 (que o servidor de DNS da Net diz ser o&#xA;endereço do Google) é, justamente, o servidor de origem daquele arquivo .zip&#xA;malicioso.&lt;/p&gt;&#xA;&lt;h2 id=&#34;recomendação&#34;&gt;&#xA;  Recomendação&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/04/os-servidores-de-dns-da-net/virtua-foram-hackeados/#recomenda%c3%a7%c3%a3o&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Em primeiro lugar, se você ver a página acima do Flash Player, &lt;strong&gt;feche-a&#xA;imediatamente, NÃO CLIQUE EM NADA!!&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Segundo, mude os seus servidores de DNS para os do Google (8.8.4.4) e (8.8.8.8)&#xA;o mais rápido possível, e então reinicie o seu computador (reiniciar a rede&#xA;basta, mas só para garantir).&lt;/p&gt;&#xA;&lt;h3 id=&#34;linux-networkmanager&#34;&gt;&#xA;  Linux (NetworkManager)&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/04/os-servidores-de-dns-da-net/virtua-foram-hackeados/#linux-networkmanager&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Supondo que você usa NetworkManager (provavelmente, é o default do Ubuntu se não&#xA;me engano), crie um arquivo&#xA;&lt;code&gt;/etc/NetworkManager/dispatcher.d/use-my-custom-dns.sh&lt;/code&gt;:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;#!/bin/bash&#xA;cp -f /etc/resolv.conf.custom /etc/resolv.conf&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;E depois crie outro arquivo &lt;code&gt;/etc/resolv.conf.custom&lt;/code&gt;:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;# Google&amp;#39;s DNS&#xA;nameserver 8.8.8.8&#xA;nameserver 8.8.4.4&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;E então reinicie o NetworkManager (se você não sabe como fazer isso, a melhor&#xA;forma é reiniciando o computador).&lt;/p&gt;&#xA;&lt;p&gt;Ao reiniciá-lo, verifique o conteúdo do arquivo &lt;code&gt;/etc/resolv.conf&lt;/code&gt;. Ele deve ser&#xA;exatamente igual ao &lt;code&gt;/etc/resolv.conf.custom&lt;/code&gt; anterior que criamos.&lt;/p&gt;&#xA;&lt;h3 id=&#34;outros-sistemas-operacionais&#34;&gt;&#xA;  Outros sistemas operacionais&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/04/os-servidores-de-dns-da-net/virtua-foram-hackeados/#outros-sistemas-operacionais&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Se você for usuário Windows, pesquise como fazer isso.&lt;/p&gt;&#xA;&lt;p&gt;Se tudo estiver OK, eu recomendaria que vocês deletassem a cache (e tudo o mais)&#xA;dos seus navegadores, e então &lt;strong&gt;provavelmente&lt;/strong&gt; vocês estarão seguros. Pelo&#xA;menos enquanto o DNS do Google não for hackeado também&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Se você for usuário do Chromium/Chrome, além de mudar o seu DNS e&#xA;deletar a sua sessão (Ctrl + Shift + Delete), assegure-se de que a URL&#xA;&lt;code&gt;chrome://net-internals/#dns&lt;/code&gt; esteja OK. Na dúvida, clique em &amp;ldquo;Clear host&#xA;cache&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Os servidores de DNS da Net/Virtua foram hackeados&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Emacs, I just love you
      </title>
      <link>https://perrotta.dev/pt/2014/04/emacs-i-just-love-you/</link>
      <pubDate>Thu, 24 Apr 2014 22:08:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/04/emacs-i-just-love-you/</guid>
      <description>&lt;p&gt;♠ Hoje, dois anos depois de ouvir falar desse aparentemente simples, comum e&#xA;mundano editor de texto, agora ele faz parte do meu ambiente de forma&#xA;intrínseca.&lt;/p&gt;&#xA;&lt;p&gt;Algumas ferramentas de que gosto:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;org-mode&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;org2blog (comecei a usar hoje!!)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;yasnippet (comecei a usar hoje!!)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;emacs –daemon (comecei a usar hoje!!)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;magit (para controlar repositórios)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;dired (gerenciador de arquivos dentro do emacs)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;helm – ferramentas do emacs integradas entre si&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;my-favorite-programming-language&lt;/code&gt;-mode&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;web-mode: para arquivos em html/css/javascript (em geral)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;markdown-mode (!!!!)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;E tantas outras…&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Emacs, I just love you&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>i3lock-wrapper PKGBUILD
      </title>
      <link>https://perrotta.dev/pt/2014/04/i3lock-wrapper-pkgbuild/</link>
      <pubDate>Mon, 21 Apr 2014 17:42:45 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/04/i3lock-wrapper-pkgbuild/</guid>
      <description>&lt;p&gt;♠ Após ler os logs da aula de PKGBUILD, me senti inspirado para melhorar mais um&#xA;&lt;a href=&#34;https://aur.archlinux.org/packages/i3lock-wrapper/&#34;&gt;PKGBUILD&lt;/a&gt; que resolvi&#xA;manter recentemente.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: i3lock-wrapper PKGBUILD&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dota 2 @ Linux
      </title>
      <link>https://perrotta.dev/pt/2014/04/dota-2-@-linux/</link>
      <pubDate>Sun, 20 Apr 2014 22:15:34 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/04/dota-2-@-linux/</guid>
      <description>&lt;p&gt;♠ Nesse post: configurando o Linux para ter um bom desempenho no Dota 2 no Steam.&lt;/p&gt;&#xA;&lt;p&gt;1 - Utilizar as seguintes flags para lançar o jogo:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;-console -novid -noborder -high -autoconfig -nomousegrab&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Fonte:&#xA;&lt;a href=&#34;http://dota2.gamepedia.com/Launch_Options&#34;&gt;http://dota2.gamepedia.com/Launch_Options&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Depois de lançá-lo pela primeira vez com o &lt;em&gt;autoconfig&lt;/em&gt;, vá nas opções de vídeo&#xA;e coloque tudo na menor qualidade possível (menos qualidade ==&amp;gt; mais&#xA;desempenho). Depois, retire a flag de autoconfig.&lt;/p&gt;&#xA;&lt;p&gt;2 - Recomendo habilitar cl_showfps 1 no console. Esse console é o de dentro do&#xA;jogo, o atalho default para acessá-lo é a contrabarra, mas eu mudei para o&#xA;apóstrofo/aspas simples, porque a contrabarra não estava funcionando aqui. Você&#xA;pode mudar o atalho nas configurações das hotkeys. Consegui um fps entre 30 e 50&#xA;(variando loucamente).&lt;/p&gt;&#xA;&lt;p&gt;Fonte com outros comandos no console: &lt;a href=&#34;http://dota2.gamepedia.com/List_of_Console_Commands&#34;&gt;http://dota2.gamepedia.com/List_of_Console_Commands&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;3 - Se a sua placa de vídeo for Intel (exemplo: Intel Graphics HD 4000), crie um&#xA;arquivo &lt;code&gt;~/.drirc&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;p&gt;Fonte:&#xA;&lt;a href=&#34;https://github.com/thiagowfx/dotfiles/blob/master/.drirc&#34;&gt;https://github.com/thiagowfx/dotfiles/blob/master/.drirc&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Isso tende a aumentar o desempenho do jogo, eu acho. A experiência me mostrou&#xA;que é uma boa prática ter esse arquivo, mas não tenho certeza do porquê que ele&#xA;funciona.&lt;/p&gt;&#xA;&lt;p&gt;4 - Utilize os últimos &lt;em&gt;drivers&lt;/em&gt; / pacotes, se possível. Especialmente o mesa3d&#xA;e as bibliotecas de 32 bits. Se você estiver utilizando o Arch&#xA;(rolling-release), um Ubuntu recente (suporte oficial da Steam) ou o Steam OS,&#xA;provavelmente estará tudo certo (desde que você atualize o sistema&#xA;regularmente).&lt;/p&gt;&#xA;&lt;p&gt;Vale dizer que eu quase nunca consegui rodar o dota direito nesse notebook, mas&#xA;após seguir todos esses passos eu consigo um bom desempenho. Tudo bem que eu&#xA;estou rodando com tudo no mínimo, mas antes nem assim rodava direito. Alguma&#xA;dessas modificações fez bastante diferença. Qual? Boa pergunta.&lt;/p&gt;&#xA;&lt;p&gt;Vale dizer que eu estou utilizando um &lt;em&gt;tiling window manager&lt;/em&gt;, o que significa&#xA;que a flag de &lt;strong&gt;noborder&lt;/strong&gt; é especialmente atraente. Isso significa que posso&#xA;mudar de workspace/tag (equivalente a Alt+Tab para &lt;em&gt;stacking window managers&lt;/em&gt;)&#xA;de forma ridiculamente fácil. Além do mais, eu consigo redimensionar e mover o&#xA;contexto OpenGL do Dota 2 como se eu estivesse brincando. Essa flexibilidade&#xA;vale a pena, e é melhor (a meu ver) do que rodar o game em&lt;em&gt;fullscreen&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Dota 2 @ Linux&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Recovery típico via USB
      </title>
      <link>https://perrotta.dev/pt/2014/04/recovery-t%C3%ADpico-via-usb/</link>
      <pubDate>Fri, 18 Apr 2014 13:38:36 +0000</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/04/recovery-t%C3%ADpico-via-usb/</guid>
      <description>&lt;ol&gt;&#xA;&lt;li&gt;Meu computador não boota! E agora? Possíveis sintomas: tela preta congelada,&#xA;tela de splash congelada, systemd travado, upstart travado, corrupção (fsck&#xA;não ficou satisfeito), bootloader (grub,syslinux,EFI) mal configurado (ou não&#xA;configurado)&lt;/li&gt;&#xA;&lt;li&gt;Obter uma distro de Linux e gravá-la num USB Flash Drive (pendrive). Meu&#xA;gosto pessoal: System rescue cd, Parted magic, Slitaz ou Arch Linux.&lt;/li&gt;&#xA;&lt;li&gt;Bootar a distro e imediatamente abrir um console/emulador de terminal. Com&#xA;interface gráfica ou não, a gosto.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;fdisk -l&lt;/code&gt; para detectar os discos do computador. Detectar o disco cujo&#xA;sistema está com problema. Geralmente o que contém a partição /boot ou /.&#xA;Identificar as partições também é usualmente importante.&lt;/li&gt;&#xA;&lt;li&gt;Se você precisar formatar alguma partição, &lt;code&gt;cfdisk&lt;/code&gt; ou &lt;code&gt;parted&lt;/code&gt;. Exemplo:&#xA;&lt;code&gt;cfdisk /dev/sda1&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Se você precisar (re)criar algum &lt;em&gt;filesystem&lt;/em&gt; , &lt;code&gt;mkfs&lt;/code&gt; (por exemplo,&#xA;&lt;code&gt;mkfs.ext4 -L &amp;quot;archroot&amp;quot; /dev/sda1&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Para (re)montar o seu sistema de arquivos: (por exemplo) &lt;code&gt;mount /dev/sda1 /mnt&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;chroot no sistema que você acabou de montar: &lt;code&gt;chroot /mnt&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Para recuperar (na verdade, gerar novamente) o arquivo de configuração do&#xA;grub dentro do chroot: &lt;code&gt;grub-mkconfig -o /boot/grub/grub.cfg&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Para reinstalar o grub (fora do chroot!), use &lt;code&gt;grub-install&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Explorar o diretório &lt;code&gt;/etc/systemd/system&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Usualmente um desses passos é um caminho para resolver o problema. No final das&#xA;contas, as coisas são bastante específicas, dependem do contexto.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Recovery típico via USB&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>[Opinião] Ubuntu 14.04 lançado
      </title>
      <link>https://perrotta.dev/pt/2014/04/opini%C3%A3o-ubuntu-14.04-lan%C3%A7ado/</link>
      <pubDate>Fri, 18 Apr 2014 01:51:56 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2014/04/opini%C3%A3o-ubuntu-14.04-lan%C3%A7ado/</guid>
      <description>&lt;p&gt;♠ O &lt;a href=&#34;http://www.ubuntu.com/download/&#34;&gt;Ubuntu&lt;/a&gt; 14.04 acabou de ser lançado. Olhando&#xA;rapidamente as &lt;a href=&#34;https://wiki.ubuntu.com/TrustyTahr/ReleaseNotes&#34;&gt;&lt;em&gt;release&#xA;notes&lt;/em&gt;&lt;/a&gt;, dá para notar que&#xA;tem muita coisa (e &lt;em&gt;bastante&lt;/em&gt; atualizada) boa nessa versão LTS. Também não faz&#xA;muito tempo (menos de 1 mês) que a versão 3.12 do Gnome foi&#xA;&lt;a href=&#34;https://help.gnome.org/misc/release-notes/3.12/&#34;&gt;lançada&lt;/a&gt;, o que não é nenhuma&#xA;surpresa, já que as &lt;em&gt;releases&lt;/em&gt; dos dois projetos são mais ou menos&#xA;sincronizadas.&lt;/p&gt;&#xA;&lt;p&gt;Desde que a interface &lt;em&gt;Unity&lt;/em&gt; foi introduzida, depois de muito mimimi (alguns&#xA;com razão, outros nem tanto) por parte da comunidade e do papo que &lt;a href=&#34;https://encrypted.google.com/search?hl=en&amp;amp;q=%22ubuntu%20is%20not%20a%20democracy%22&#34;&gt;&lt;em&gt;Ubuntu is&#xA;not a democracy&lt;/em&gt;&lt;/a&gt;,&#xA;depois que o Steam passou a ser suportado no Ubuntu, depois que o bug #1 foi&#xA;&lt;a href=&#34;https://bugs.launchpad.net/ubuntu/&amp;#43;bug/1&#34;&gt;fechado&lt;/a&gt; e o Skype passou a ser&#xA;suportado no Ubuntu e, finalmente, depois que pude acompanhar um pouco sobre&#xA;como a comunidade do Ubuntu funciona, e ter conhecido um pouco mais o Jono Bacon&#xA;(&lt;em&gt;community manager&lt;/em&gt;), tenho que dizer que a Canonical está fazendo um ótimo&#xA;trabalho.&lt;/p&gt;&#xA;&lt;p&gt;Apesar de não adotá-lo como a minha distro principal atualmente, é bastante&#xA;bonito ver um projeto &lt;em&gt;open source&lt;/em&gt; vastamente utilizado por vários usuários no&#xA;mundo todo, inclusive vários conhecidos, prosperar. Esse é o poder da&#xA;&lt;a href=&#34;https://www.artofcommunityonline.org/&#34;&gt;comunidade&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Aproveito e deixo&#xA;&lt;a href=&#34;https://www.omgubuntu.co.uk/2014/04/10-things-to-do-after-installing-ubuntu-14-04&#34;&gt;esse&lt;/a&gt;&#xA;link para quem acabou de instalar essa versão.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: [Opinião] Ubuntu 14.04 lançado&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Spotify
      </title>
      <link>https://perrotta.dev/pt/2014/04/spotify/</link>
      <pubDate>Tue, 15 Apr 2014 22:57:13 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2014/04/spotify/</guid>
      <description>&lt;p&gt;♠ Raramente recomendo algum serviço / algo comercial, mas faço questão de&#xA;recomendar o &lt;a href=&#34;http://www.spotify.com/&#34;&gt;Spotify&lt;/a&gt;. Estou usando-o há mais de uma&#xA;semana, e é uma boa forma (1) de indexar as músicas que você gosta (2),&#xA;certamente melhor do que &lt;a href=&#34;https://perrotta.dev/pt/2013/10/movendo-quase-todas-as-m%C3%BAsicas-para-a-nuvem/&#34;&gt;a nuvem&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Resumidamente:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Um bom modelo de negócios (para o usuário final): você ouve músicas&#xA;gratuitamente, tendo apenas que ouvir uns 30 segundos de propaganda&#xA;ocasionalmente (tipo a cada 3 ou 4 músicas, não é tanto assim). Esse é o tipo&#xA;de negócio que dá gosto de&#xA;&lt;a href=&#34;https://github.com/thiagowfx/open-bookmarks&#34;&gt;suportar&lt;/a&gt; (veja a parte de &amp;ldquo;NOT&#xA;ADBLOCK&amp;rdquo;).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;em&gt;scrobbles&lt;/em&gt; podem ser encaminhados(?) para o &lt;em&gt;last.fm&lt;/em&gt; (ainda estou&#xA;procurando uma forma de fazer isso para o &lt;em&gt;libre.fm&lt;/em&gt;); o cliente (&lt;em&gt;player&lt;/em&gt;)&#xA;para Desktop e para Web possuem uma forma fácil e integrada de dizer quais&#xA;músicas você gostou e quais você detestou, aumentando cada vez mais o poder&#xA;de previsão / recomendação desse serviço.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Vejamos algumas controvérsias:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Com DRM (isso pode ser superado de maneira relativamente fácil, porém&#xA;demorada, mas isso não é algo que queremos fazer com um serviço bom, certo?).&#xA;Mas o que mais esperar de um serviço de músicas? Já acho incrível o catálogo&#xA;que ele tem – em termos de quantidade e de qualidade. Não dá para reclamar&#xA;disso. É uma forma parecida com a do Steam.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ainda não está 100% disponível no Brasil (deve ficar em breve). Se o seu IP&#xA;diz que você é do Brasil, dê o seu jeito. As boas e velhas &lt;em&gt;keywords&lt;/em&gt; são&#xA;&lt;em&gt;proxy&lt;/em&gt; e/ou &lt;em&gt;VPN&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Ele possui cliente nativo para Linux! No Arch, veja no&#xA;&lt;a href=&#34;https://aur.archlinux.org/packages/spotify/&#34;&gt;AUR&lt;/a&gt; (a quantidade de votos&#xA;reflete a sua popularidade).&lt;/p&gt;&#xA;&lt;p&gt;Para completar, mais tarde quero testar o Pandora também, para comparar os dois.&#xA;Vale dizer que ouvi falar pela primeira vez do Spotify faz muito tempo, no&#xA;&lt;a href=&#34;http://elementopie.com/everyday-linux-episodes&#34;&gt;Everyday Linux Podcast&lt;/a&gt; (valeu&#xA;Mark, Seth e Chris!), em algum episódio entre o 50º e o 100º (não vou me lembrar&#xA;de qual&amp;hellip;), mas só pude testá-lo agora.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Spotify&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Android dev: summary
      </title>
      <link>https://perrotta.dev/pt/2014/04/android-dev-summary/</link>
      <pubDate>Sat, 12 Apr 2014 22:57:34 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/04/android-dev-summary/</guid>
      <description>&lt;p&gt;♠ Esse é um &lt;em&gt;draft&lt;/em&gt; perdido com algumas anotações sobre Android. Foi criado&#xA;enquanto eu estava fazendo um curso no Coursera. Na época, acabei escrevendo&#xA;aqui por falta de um lugar melhor para isso. Hoje em dia eu faria diferente,&#xA;tenho todo um plano para organizar (e compartilhar!) algumas das minhas&#xA;anotações. Por enquanto esse plano ainda não está em prática, mas enfim.&lt;/p&gt;&#xA;&lt;p&gt;Abaixo está o &lt;em&gt;draft&lt;/em&gt;, reproduzido na íntegra:&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Hello there. This is just part of a experiment. Usually I take notes with my&#xA;notebooks, but they usually become messed up. Temporarily I&amp;rsquo;ll use this blogging&#xA;space as a note taking platform too. I have to find more convenient ways to do&#xA;that&amp;hellip;any recommendations accepted! I&amp;rsquo;ve already thought of github, but it is&#xA;not &lt;em&gt;that&lt;/em&gt; indexable. This public information should (may) be useful for&#xA;someone a day.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Debug @ Console: &lt;code&gt;xinetd&lt;/code&gt; w/ &lt;code&gt;systemctl service&lt;/code&gt; &amp;gt; &lt;code&gt;telnet localhost&lt;/code&gt; &amp;gt; 5554 &amp;gt; 5556 &amp;gt; &amp;hellip; // help FTW&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Use 5554/5556 to refer to the device (e.g. to send text messages or make calls)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Use LogCat View @ Eclipse to see log messages (filter options FTW) // Code: Log.e [&amp;hellip;]&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;C-F12&lt;/code&gt; to rotate the emulator (other hotkeys @ developer.android.com page)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;command android&lt;/code&gt; to open the Android SDK Manager&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;KISS: only the Intel images + the SDK platform are important&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Enable HAXM (Windows or Mac) or KVM (Linux) acceleration if you can&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;.xml&lt;/code&gt; files everywhere&amp;hellip;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;android-udev&lt;/code&gt;: use it to connect your device to your computer on Linux (see the AUR)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Android API: 10 (2.3.3 - Gingerbread), 16 (4.1.2 - Jelly Bean!), 18 (4.3)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;do not make your &lt;code&gt;~/workspace&lt;/code&gt; a mess, please&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;R.java ==&amp;gt; if any problems, go to Project &amp;gt; Clean&amp;hellip;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;C-S-O&lt;/code&gt; come in handy (Eclipse: organize imports)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Use the &amp;lsquo;Quick Access View&amp;rsquo;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;alias emulator-template=&amp;quot;emulator -avd &amp;quot;Intel-10-480x800&amp;quot; -qemu -m 512 -enable-kvm -gpu on&amp;quot;&lt;/code&gt; // &lt;a href=&#34;https://developer.android.com/tools/devices/emulator.html#acceleration&#34;&gt;https://developer.android.com/tools/devices/emulator.html#acceleration&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;host is acessible from the emulator via 10.0.2.2 (QEMU feature)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;C-I&lt;/code&gt; auto indent @ Eclipse&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Android dev: summary&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Integrando QT Creator com cmake
      </title>
      <link>https://perrotta.dev/pt/2014/04/integrando-qt-creator-com-cmake/</link>
      <pubDate>Sat, 12 Apr 2014 15:38:15 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/04/integrando-qt-creator-com-cmake/</guid>
      <description>&lt;p&gt;♠ &lt;strong&gt;TL;DR&lt;/strong&gt;: movendo o estilo de desenvolvimento de Emacs + programa na linha de&#xA;comando para QT Creator + programa com interface gráfica (em&amp;hellip;QT, é claro!).&lt;/p&gt;&#xA;&lt;p&gt;Existem basicamente duas etapas para realizar essa transição. A primeira é tão&#xA;ridiculamente fácil, que nem precisaria ficar registrada aqui. Apesar disso, não&#xA;parece ser tão trivial ou que vá funcionar &lt;em&gt;out-of-the-box&lt;/em&gt;, então vou&#xA;documentá-la aqui assim mesmo.&lt;/p&gt;&#xA;&lt;p&gt;Já a segunda requer um pouco de entendimento sobre como o &lt;strong&gt;cmake&lt;/strong&gt; e o &lt;strong&gt;qmake&lt;/strong&gt;&#xA;(ferramenta de gerenciamento de compilação utilizada por&lt;em&gt;default&lt;/em&gt; por um projeto&#xA;do QT Creator) funcionam.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;OBS.: QT5. Mas, você também pode aplicar o que está escrito aqui para QT4. Com&#xA;alguns cuidados.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;primeira-etapa&#34;&gt;&#xA;  Primeira etapa&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/04/integrando-qt-creator-com-cmake/#primeira-etapa&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;1-) Assegure-se de que o seu projeto em cmake funciona corretamente. A estrutura&#xA;atual dele deverá ser similar à seguinte:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;ProjectTopLevelDir/&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;ProjectTopLevelDir/CMakeLists.txt&lt;/strong&gt;(arquivo top-level de configuração do cmake)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;ProjectTopLevelDir/src/ (código-fonte do projeto)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;ProjectTopLevelDir/build/ (onde o projeto é compilado)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Existe uma variação comum para o caminho de &lt;em&gt;build&lt;/em&gt;:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;ProjectTopLevelDir/../build/&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Tanto faz a variação adotada. No entanto, ao utilizarmos o QT Creator, o &lt;em&gt;wizard&lt;/em&gt;de importação de projeto nos recomendará a segunda, por&lt;em&gt;default&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;2-) Abra o QT Creator, clique em &lt;em&gt;Open File or Project&lt;/em&gt;, e importe o&#xA;CMakeLists.txt indicado no item anterior. É importante importar o CMakeLists.txt&#xA;mais &lt;strong&gt;top-level&lt;/strong&gt; do seu projeto.&lt;/p&gt;&#xA;&lt;p&gt;3-) A pasta de build especificada pode ser a mesma que a anterior. Ou, você pode&#xA;adotar o padrão sugerido pelo &lt;em&gt;wizard&lt;/em&gt;, que é algo do tipo&#xA;&lt;strong&gt;ProjectTopLevelDir-build/&lt;/strong&gt;(a segunda variação, como eu disse anteriormente).&lt;/p&gt;&#xA;&lt;p&gt;4-) Clique em &amp;ldquo;Run CMake&amp;rdquo;. Você provavelmente irá querer o &amp;ldquo;Unix Generator&#xA;(Desktop)&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;5-) Sente-se e espere a mágica acontecer. Brincadeira, não é mágica, na verdade&#xA;é um comportamento muito bem definido. O que o Qt Creator faz&#xA;&lt;em&gt;behind-the-scenes&lt;/em&gt;é, basicamente, rodar o cmake para gerar um .cbp (output de&#xA;projeto para o Code::Blocks, mas que o Qt Creator sabe interpretar também &amp;ndash;&#xA;thank you!), em vez de um usual Makefile. Esse .cbp configura o ambiente do Qt&#xA;Creator para o seu novo projeto.&lt;/p&gt;&#xA;&lt;p&gt;6-) Clique em &lt;strong&gt;Finish.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;segunda-etapa---preliminares&#34;&gt;&#xA;  Segunda etapa - preliminares&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/04/integrando-qt-creator-com-cmake/#segunda-etapa---preliminares&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Agora você vai notar que o botão de &amp;ldquo;play&amp;rdquo; (&lt;strong&gt;Run&lt;/strong&gt;, atalho Control-R)&#xA;construirá o seu projeto corretamente e, provavelmente, também rodará o&#xA;executável correto. Isso indica o fim da primeira parte.&lt;/p&gt;&#xA;&lt;p&gt;Se você realizar quaisquer modificações significativas no seu projeto (no que&#xA;diz respeito à estrutura dele, ou algum CMakeLists.txt), assegure-se de rodar o&#xA;CMake novamente. Você pode fazer isso clicando com o botão direito no projeto&#xA;(na sidebar da esquerda) e depois em &amp;ldquo;Run CMake&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;E daí você percebe que especificar etapas em linha de comando é algo bem mais&#xA;fácil e &lt;strong&gt;preciso&lt;/strong&gt; do que especificar etapas em uma IDE. Além do mais, daqui a&#xA;algumas versões, a interface do Qt Creator pode mudar, e o que eu acabei de&#xA;descrever aqui terá de ser reaprendido / readaptado. Use o bom senso.&lt;/p&gt;&#xA;&lt;p&gt;Muito bem, na segunda etapa dispensaremos &lt;strong&gt;completamente&lt;/strong&gt; a ferramenta&#xA;&lt;strong&gt;qmake&lt;/strong&gt;, passando a utilizar somente o **cmake.**Assumiremos que você quer&#xA;criar uma interface em Qt. Se você só quiser utilizar o QT Creator, sem criar&#xA;nenhuma interface, então você pode parar na etapa 1.&lt;/p&gt;&#xA;&lt;h2 id=&#34;segunda-etapa---agora-sim&#34;&gt;&#xA;  Segunda etapa - agora sim&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/04/integrando-qt-creator-com-cmake/#segunda-etapa---agora-sim&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;1-) Abra o seu CMakeLists.txt top-level num editor de texto. Pode ser no próprio Qt Creator, ou não, tanto faz.&lt;/p&gt;&#xA;&lt;p&gt;2-) Vá para o final desse arquivo. Vamos adicionar as seguintes instruções lá:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://gist.github.com/thiagowfx/10549532&#34;&gt;https://gist.github.com/thiagowfx/10549532&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;3-) Comentários:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Note que essa é a instrução de um dos meus projetos. Toda a parte onde contém &amp;ldquo;raytracer&amp;rdquo; você deve mudar de acordo com o seu próprio projeto.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;A parte do &lt;strong&gt;automoc&lt;/strong&gt;é essencial se você utiliza &lt;strong&gt;signals e slots.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;A parte do &lt;strong&gt;wrap_ui&lt;/strong&gt; é essencial se você utiliza o Qt Designer para criar um arquivo .ui. Se você criou o seu código &amp;ldquo;na mão&amp;rdquo;, não precisa. O que a &lt;strong&gt;wrap_ui&lt;/strong&gt; faz é invocar o &lt;strong&gt;uic&lt;/strong&gt;(ui compiler) do Qt nos arquivos .ui especificados. Isso é exatamente o que o &lt;strong&gt;qmake&lt;/strong&gt; faz&lt;em&gt;behind-the-scenes&lt;/em&gt;(assim como a parte do &lt;strong&gt;moc&lt;/strong&gt;, descrita no item anterior).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Se você utiliza *resources,*também é necessário adicionar uma instrução para isso. Ela não existe no meu exemplo. Olhe as referências no fim desse post.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Depois de criar quaisquer executáveis, é importante linká-los com a biblioteca do Qt. É para isso que a parte &lt;strong&gt;use_modules&lt;/strong&gt; serve.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Depois disso, o seu projeto está sendo completamente gerenciado pelo **cmake.**Sem necessidade de &lt;strong&gt;qmake.&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;referências&#34;&gt;&#xA;  Referências&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/04/integrando-qt-creator-com-cmake/#refer%c3%aancias&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Sugiro olhar o meu repositório no Github,&#xA;&lt;a href=&#34;https://github.com/thiagowfx/open-bookmarks&#34;&gt;open-bookmarks&lt;/a&gt;. Olha a parte&#xA;que fala de cmake com qt5. Vou deixar uma cópia dessas referências aqui, no&#xA;entanto, se eu adicionar quaisquer referências no futuro, elas serão&#xA;adicionadas no repositório, e não nesse post.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Referências:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.kdab.com/using-cmake-with-qt-5/&#34;&gt;http://www.kdab.com/using-cmake-with-qt-5/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blogs.kde.org/node/4495&#34;&gt;https://blogs.kde.org/node/4495&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://qt-project.org/doc/qt-5/cmake-manual.html&#34;&gt;http://qt-project.org/doc/qt-5/cmake-manual.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.itk.org/pipermail/insight-users/2009-October/032974.html&#34;&gt;http://www.itk.org/pipermail/insight-users/2009-October/032974.html&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.executionunit.com/blog/2014/01/22/moving-from-qmake-to-cmake/&#34;&gt;http://www.executionunit.com/blog/2014/01/22/moving-from-qmake-to-cmake/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Integrando QT Creator com cmake&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>btrfs, let&#39;s go
      </title>
      <link>https://perrotta.dev/pt/2014/04/btrfs-lets-go/</link>
      <pubDate>Thu, 10 Apr 2014 21:48:36 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/04/btrfs-lets-go/</guid>
      <description>&lt;p&gt;♠ Hoje ouvi num &lt;em&gt;podcast&lt;/em&gt; que o Facebook em breve usará o sistema de arquivos&#xA;&lt;em&gt;btrfs&lt;/em&gt; em seus servidores. Link upstream em&#xA;&lt;a href=&#34;http://www.theinquirer.net/inquirer/news/2336904/facebook-will-trial-btrfs-linux-file-system-in-its-data-centres&#34;&gt;1&lt;/a&gt;.&#xA;Servidores reais! De produção. R-E-A-I-S.&lt;/p&gt;&#xA;&lt;p&gt;(OK, não são todos os servidores, mas isso já é um começo. Uma bateria de&#xA;testes.)&lt;/p&gt;&#xA;&lt;p&gt;Isso possui algumas implicações bem interessantes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Os dias de &lt;em&gt;ext4&lt;/em&gt; como o filesystem principal do Linux podem estar contados.&#xA;Na verdade, é dito que o btrfs &lt;strong&gt;não&lt;/strong&gt; foi criado para substituir o ext4, ele&#xA;seria apenas mais uma opção. Mas, o ext4 não vai ficar no topo para sempre&amp;hellip;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Quando uma super empresa resolve tomar uma decisão como essa, significa que&#xA;eles não vêem mais o btrfs como uma brincadeirinha. Além do mais, note que a&#xA;versão 13.2 do openSUSE provavelmente trará o btrfs como filesystem padrão.&#xA;Lembrando que o openSUSE (assim como o Fedora, e o Arch) é uma das distros&#xA;mais pioneiras no que diz respeito a adotar novas tecnologias.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Ou seja, usar o &lt;em&gt;btrfs&lt;/em&gt; como filesystem principal no&amp;hellip;DESKTOP pode começar a&#xA;ser uma boa ideia. Pessoalmente, só não migrei para o btrfs por dois motivos.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;sem swap!&lt;/li&gt;&#xA;&lt;li&gt;dor de cabeça&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Na verdade, o primeiro motivo ocupa 90% de espaço. Dor de cabeça é natural,&#xA;seria a mesma coisa se fosse para usar LVM, criptografar o HD/SSD inteiro ou&#xA;aderir à uma nova tecnologia com o qual não se está acostumado. Documentação não&#xA;falta! Migraria sem nenhum problema. Amanhã mesmo.&lt;/p&gt;&#xA;&lt;p&gt;O grande problema é a falta de &lt;em&gt;swap&lt;/em&gt;, é uma função que eu particularmente prezo&#xA;bastante. Naturalmente, não é algo super útil em servidores, mas em desktops ( /&#xA;notebooks, bah) é uma &lt;em&gt;feature&lt;/em&gt; cômoda. Nada como acordar no dia seguinte e ver&#xA;todas as suas janelas e seu trabalho restaurado do último ponto onde estavam.&lt;/p&gt;&#xA;&lt;p&gt;Um dia eu testo o &lt;em&gt;combo&lt;/em&gt; máximo: btrfs + LVM + criptografia. No desktop. Na&#xA;verdade, acho que o btrfs dispensa LVM, aquelas &lt;em&gt;pools&lt;/em&gt; dele devem ter uma&#xA;função similar a ela. Enfim.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: btrfs, let&#39;s go&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Séries com finais ruins
      </title>
      <link>https://perrotta.dev/pt/2014/04/s%C3%A9ries-com-finais-ruins/</link>
      <pubDate>Thu, 10 Apr 2014 00:55:00 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2014/04/s%C3%A9ries-com-finais-ruins/</guid>
      <description>&lt;p&gt;♠ Certo, a palavra &lt;em&gt;trivia&lt;/em&gt; distingue bem computação/programação de outros&#xA;tópicos.&lt;/p&gt;&#xA;&lt;p&gt;Ultimamente, tive a sorte de ter escolhido boas séries para ver (motivação&#xA;inicial, desde anos atrás: entender bem o inglês falado. Hoje isso está longe de&#xA;ser minha motivação para ver séries: &lt;em&gt;podcasts&lt;/em&gt; são muito melhores (=mais&#xA;eficazes (ou eficientes?)) para se ouvir um idioma não-nativo, pelo menos isso é&#xA;o que a minha experiência me diz.).&lt;/p&gt;&#xA;&lt;p&gt;Escolher boas séries é importante, porque tomar a decisão de assisti-las do&#xA;início ao fim é algo custoso, que toma bastante tempo. Então, no mínimo vale a&#xA;pena parar para analisar se a série certa para você foi escolhida. Certo?&lt;/p&gt;&#xA;&lt;p&gt;As 3 últimas séries que eu terminei de assistir (na ordem), assim como meus&#xA;comentários pessoais (bem resumidamente, pois muito poderia ser comentado sobre&#xA;elas, afinal, são vários minutos (horas!) de diálogos e entretenimento (ou não))&#xA;foram:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;em&gt;The Office (US)&lt;/em&gt;. Humor sutil e inteligente, bem &lt;em&gt;light&lt;/em&gt;, muitos personagens,&#xA;dá para se apegar fácil a eles, situações do cotidiano. Mockumentary-style&#xA;(~sitcom + documentary). Problema: a última temporada (9º) foi completamente&#xA;chata (lembre-se de que é uma série de humor). Poderia ter terminado na&#xA;oitava, e todos ficaríamos felizes com isso. O motivo é bastante simples: um&#xA;dos personagens principais (O Michael -&amp;gt; Steve Carell) saiu na 8ª temporada, e&#xA;isso simplesmente quebrou o ritmo e a fluidez da coisa.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;em&gt;How I Met Your Mother&lt;/em&gt;. OK, nunca fui um fã 100% dela, mas era legalzinha e&#xA;&lt;em&gt;light.&lt;/em&gt; Sitcom americana clássica. &lt;strong&gt;Problema&lt;/strong&gt;: o último episódio rompeu&#xA;completamente a evolução dos personagens e decepcionou uma base enorme de fãs&#xA;(basta ver o &lt;em&gt;thread&lt;/em&gt; de discussão do último episódio no Reddit).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;em&gt;Burn Notice&lt;/em&gt;. Parando para pensar agora, uma das poucas séries fora da&#xA;categoria &lt;em&gt;sitcom&lt;/em&gt; que eu assisti. É uma série de ação, meio policial (na&#xA;verdade, de espionagem, pequena sutileza). Esse é um gênero que eu costumo&#xA;evitar, simplesmente porque a maioria dos episódios tende a ser previsível&#xA;(CSI é um ótimo exemplo de roteiro fixado). No entanto, fiz uma boa escolha,&#xA;porque a direção dessa série é ligeiramente diferente (leia: menos previsível)&#xA;do que séries típicas desse gênero. Terminei de ver o último episódio faz uns&#xA;minutos atrás. Problema: a última temporada inteira (7ª). Podia ter parado&#xA;na 6ª, ela tinha sido sensacional do início ao fim, depois a série&#xA;simplesmente se perdeu.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Comentários:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Será que é tão difícil escolher fazer um final bom para uma série? Podemos&#xA;parar para tentar definir o que é um final bom (ou bom final). Agradar os fãs?&#xA;Deixar os personagens no seu estágio máximo de evolução (=maturidade)? Ocorrer&#xA;algum evento clímax? Seja como for, para as três séries anteriores, nenhuma&#xA;dessas coisas aconteceu.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Você sabe que escolheu uma série boa quando sente um sentimento de nostalgia /&#xA;de vazio quando ela acaba. Das 3, HIMYM foi a que eu menos senti nostalgia&#xA;(provavelmente porque o ruim foi o último episódio; diferentemente das outras&#xA;duas, onde o que foi ruim foi a última temporada (inteira!)).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Passei a achar que assistir séries (mas não muitas, sem exagero, por favor!) é&#xA;uma boa prática, por um número de motivos. Não vou explicitá-los agora, mas um&#xA;deles é o fato de que você passa a achar os roteiros de filmes algo simples e&#xA;previsível. Dado o fato de que em uma temporada muita coisa acontece com os&#xA;personagens, sendo uma evolução usualmente complexa (e peculiar, para cada um&#xA;deles), o espaço de tempo entre 1 e 2 horas que um filme te proporciona passa&#xA;a parecer algo simples e fútil. É questão de contexto e relatividade, mas isso&#xA;implica (no fim das contas) que, ao menos, os filmes que você escolher para&#xA;assistir no futuro provavelmente serão escolhidos de maneira mais cuidadosa do&#xA;que se você não assistisse série nenhuma. (OK, que argumentação extensa, já&#xA;posso escrever uma dissertação sobre isso.)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Também achei uma boa prática escrever esse &lt;em&gt;post&lt;/em&gt;. Às vezes faz bem fugir do&#xA;tema central do seu &lt;em&gt;blog&lt;/em&gt; (oi? Eu tenho um tema central por acaso?).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Isso poderia ser considerado &lt;em&gt;off-topic&lt;/em&gt;, mas esse é um ótimo contexto para&#xA;introduzir essa noção: descobri, na semana passada, que o meu estilo de&#xA;escrita (o qual eu gosto bastante e, infelizmente, conheço pouquíssimas&#xA;pessoas que gostam de escrever nesse estilo. Hum, provavelmente isso é bom,&#xA;significa que meu estilo de escrita é razoavelmente original) foi fortemente&#xA;influenciado pelo Douglas Adams (isto é, ele escrevia bastante num estilo no&#xA;qual eu me inspirei para escrever dessa maneira, hoje). Descobri isso tendo&#xA;terminado de ler (o original) &lt;a href=&#34;https://www.goodreads.com/book/show/359.The_Salmon_of_Doubt&#34;&gt;&lt;em&gt;The Salmon of&#xA;Doubt&lt;/em&gt;&lt;/a&gt;:&#xA;aproveito para deixá-lo como recomendação. É um livrinho bonzinho, bem &lt;em&gt;light&lt;/em&gt;&#xA;(já usei essa palavra pelo menos 3 vezes nesse post).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Só faltou falar do conceito de &lt;em&gt;upstreamness&lt;/em&gt; de séries. OK, esse é um&#xA;neologismo meu (acho que essa palavra não existe com o significado que eu&#xA;adotei). Isso é um conceito bastante poderoso (=provoca uma boa influência),&#xA;pelo menos é o que você passa a achar com o tempo. Acho que dá para entender o&#xA;que significa, não é? Estou tomando emprestado o conceito de &lt;a href=&#34;https://en.wikipedia.org/wiki/Upstream_%28software_development%29&#34;&gt;upstream de&#xA;desenvolvimento de&#xA;software&lt;/a&gt;. É&#xA;basicamente o fato de você acompanhar uma série enquanto ainda há episódios em&#xA;produção (isto é, em contraste com ver uma série que parou de ser produzida).&#xA;Vou falar mais sobre o poder do conceito de &lt;em&gt;upstream&lt;/em&gt; em um post futuro, só&#xA;que com o significado voltado para &lt;em&gt;open source&lt;/em&gt; e desenvolvimento de&#xA;software mesmo. Deixa isso para depois.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Pronto, nada mais a acrescentar. Agora estou na fase de procurar uma nova&#xA;série para ver. Isso não vai acontecer tão cedo: como eu disse, escolher&#xA;uma &lt;strong&gt;boa&lt;/strong&gt; série é um processo custoso. Mas, aceito recomendações.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Séries com finais ruins&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/serenity/&#34;&gt;#serenity&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sugestão de app de gravação de som
      </title>
      <link>https://perrotta.dev/pt/2014/04/sugest%C3%A3o-de-app-de-grava%C3%A7%C3%A3o-de-som/</link>
      <pubDate>Sun, 06 Apr 2014 14:40:02 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/04/sugest%C3%A3o-de-app-de-grava%C3%A7%C3%A3o-de-som/</guid>
      <description>&lt;p&gt;♠ Na Play Store, naturalmente, existe uma infinidade de aplicativos que fazem&#xA;isso (duh), mas a maioria deles é cheia de ads. Em&#xA;&lt;a href=&#34;https://f-droid.org/repository/browse/?fdfilter=sound%20recorder&amp;amp;fdid=net.micode.soundrecorder&#34;&gt;(1)&lt;/a&gt;&#xA;você encontra um &lt;em&gt;open source&lt;/em&gt; e sem ads.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Sugestão de app de gravação de som&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Erro de sincronização no Chromium
      </title>
      <link>https://perrotta.dev/pt/2014/03/erro-de-sincroniza%C3%A7%C3%A3o-no-chromium/</link>
      <pubDate>Sat, 29 Mar 2014 00:14:06 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/03/erro-de-sincroniza%C3%A7%C3%A3o-no-chromium/</guid>
      <description>&lt;p&gt;♠ Faz uns dias que noto que a sincronização dos meus favoritos no Chromium não&#xA;estava sendo realizada corretamente. Com um pouco de investigação, descobri que&#xA;o domínio &lt;code&gt;clients4.google.com&lt;/code&gt; (utilizado para o servidor de sync, pelo menos&#xA;no meu caso) estava bloqueado no meu Arch (adivinha &lt;a href=&#34;https://perrotta.dev/pt/2014/03/bloqueando-websitesadsmalware-no-linux/&#34;&gt;por causa de&#xA;que&lt;/a&gt;&amp;hellip;).&lt;/p&gt;&#xA;&lt;p&gt;Moral da história: cuidado, muito cuidado, com os seus &lt;em&gt;próprios&lt;/em&gt; filtros.&lt;/p&gt;&#xA;&lt;p&gt;OBS.: escreva &lt;code&gt;chrome://sync-internals&lt;/code&gt; (ou &lt;code&gt;chrome://sync&lt;/code&gt;) na barra de&#xA;endereços e seja feliz.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Erro de sincronização no Chromium&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CT sem luz: vamos indexar isso!
      </title>
      <link>https://perrotta.dev/pt/2014/03/ct-sem-luz-vamos-indexar-isso/</link>
      <pubDate>Sat, 22 Mar 2014 21:28:22 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/03/ct-sem-luz-vamos-indexar-isso/</guid>
      <description>&lt;p&gt;♠ &amp;ldquo;Inspirado&amp;rdquo; pelas quedas de luz nessa semana no Centro de Tecnologia da UFRJ , resolvi criar &lt;a href=&#34;http://thiagowfx.github.io/ct-sem-luz/&#34;&gt;uma página&lt;/a&gt;para indexar (a partir de hoje) sempre que novas quedas de luz ocorrerem.&lt;/p&gt;&#xA;&lt;p&gt;O objetivo disso? Dados são poder. É muito fácil chegar e reclamar &amp;ldquo;&lt;em&gt;toda hora a luz acaba&lt;/em&gt;&amp;rdquo;, mas como podemos sustentar essas reclamações com uma devida argumentação se não possuímos dados (estatísticas) sobre a frequência com que essas coisas ocorrem?&lt;/p&gt;&#xA;&lt;p&gt;Além do mais, se algum dia um futuro (ou atual) diretor ou decano resolver se gabar de que estamos em uma grande universidade, alguém pode aproveitar para lembrá-lo de que uma grande universidade &lt;em&gt;sem luz&lt;/em&gt; não é algo muito útil.&lt;/p&gt;&#xA;&lt;p&gt;Não espero que essa página fique completa, pelo menos não comigo sozinho. Vou anotar todas as vezes em que eu perceber quedas de luz, mas encorajo fortemente que outras pessoas também anotem, e me avisem para que eu possa incluir mais dados lá.&lt;/p&gt;&#xA;&lt;p&gt;Esse projeto é o início de (provavelmente) muitos outros. Hoje a indexação é sobre as quedas de luz, amanhã pode ser sobre o estacionamento, sobre a segurança, sobre a infraestrutura. A internet está aí, só falta mais alunos quererem correr atrás para melhorar o que é deles.&lt;/p&gt;&#xA;&lt;p&gt;(OBS.: não estou realizando a divulgação desse &lt;em&gt;website&lt;/em&gt;em lugar nenhum, além do meu próprio blog pessoal. Se você achar esse projeto relevante, pelo menos deixe seus amigos saberem que ele existe.)&lt;/p&gt;&#xA;&lt;p&gt;(OBS2.: quando esse projeto crescer, eu espero encontrar um domínio melhor para hospedá-lo. Mas, por enquanto, o github me parece suficiente.)&lt;/p&gt;&#xA;&lt;p&gt;Obrigado pela atenção.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: CT sem luz: vamos indexar isso!&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>(Removendo) Bloatware @ Android
      </title>
      <link>https://perrotta.dev/pt/2014/03/removendo-bloatware-@-android/</link>
      <pubDate>Sat, 22 Mar 2014 16:40:51 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>privacy</category>
      <guid>https://perrotta.dev/pt/2014/03/removendo-bloatware-@-android/</guid>
      <description>&lt;p&gt;♠ Recentemente tive contato com um &lt;em&gt;Stock Android&lt;/em&gt; 4.4.x (KitKat) e, &lt;em&gt;whooooa&lt;/em&gt;,&#xA;como eu tinha me esquecido o quanto um Android novo era &lt;em&gt;bloated&lt;/em&gt;, cheio de&#xA;firulas e coisas desnecessárias, que só complicam a usabilidade e a compreensão&#xA;do usuário.&lt;/p&gt;&#xA;&lt;p&gt;Vou utilizar um vocabulário relativamente mais amigável, já que esse post&#xA;pretende dar alguma luz a um usuário não experiente (ou experiente).&lt;/p&gt;&#xA;&lt;h2 id=&#34;motivação&#34;&gt;&#xA;  Motivação&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/03/removendo-bloatware-@-android/#motiva%c3%a7%c3%a3o&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Vejamos, em primeiro lugar eu vou reforçar o que eu acabei de falar: &lt;strong&gt;qual o&#xA;objetivo disso, pra quê??&lt;/strong&gt; Se o público alvo for usuários experientes, eles vão&#xA;ficar extremamente descontentes e insatisfeitos, porque serão expostos a firulas&#xA;as quais eles não querem. Você poderia argumentar o seguinte: &amp;ldquo;ah, então é só&#xA;eles removerem essas coisas. Certo?&amp;rdquo; Não. Errado. Quer dizer, estaria certo, o&#xA;problema é que não dá para desinstalar programas &amp;ldquo;de fábrica&amp;rdquo; &lt;em&gt;por default&lt;/em&gt; – a&#xA;menos que você ganhe acesso &lt;em&gt;root&lt;/em&gt; no seu Android. Então, porque não a)&#xA;distribuir &lt;em&gt;smartphones&lt;/em&gt; com acesso root &lt;em&gt;out-of-the-box&lt;/em&gt; (=por padrão) ou b)&#xA;fazer com que os aplicativos que já vêm instalados não tenham status &amp;ldquo;de&#xA;fábrica&amp;rdquo;, o que significa que eles poderiam ser facilmente removidos.&lt;/p&gt;&#xA;&lt;p&gt;Por outro lado, se o público alvo for usuários não experientes (e é, essa é a&#xA;maior parte do &lt;em&gt;market share&lt;/em&gt; do Android), então para que ficar incluindo um&#xA;monte de funções, aplicativos e firulas que esses usuários nunca usarão? Pior&#xA;ainda, muitos deles em inglês (estamos falando de usuários não experientes, nem&#xA;todos sabem inglês). Naturalmente, não se pode agradar a todos, sempre vai haver&#xA;alguma parcela dos usuários que terá que se descontentar um pouquinho, isso em&#xA;si seria extremamente natural. O problema é que a parcela é enorme, e o&#xA;descontentamento não é só &lt;em&gt;um pouquinho&lt;/em&gt;. Bom, você pode dizer que a maioria das&#xA;pessoas não está nem aí / não liga para isso (é verdade). Então, justamente&#xA;&lt;strong&gt;por não ligarem&lt;/strong&gt; é que esses &amp;ldquo;extras&amp;rdquo; (a partir de agora me refiro a isso&#xA;como &lt;strong&gt;bloat/bloatware&lt;/strong&gt; poderiam (deveriam?) ser reduzidos ao mínimo possível.&#xA;Aí não tem como falar disso sem falar no KISS (~Keep it Simple); provavelmente&#xA;esse é o acrônimo que eu mais uso aqui, mas é porque é um conceito que a maioria&#xA;das pessoas e dos fabricantes parecem ignorar completamente. Como Albert&#xA;Einstein disse uma vez, ~&amp;ldquo;mantenha as coisas o mais simples possível, mas não&#xA;simplórias&amp;rdquo;. Não se trata de disponibilizar só o kernel para o usuário, não é,&#xA;&lt;em&gt;caramba&lt;/em&gt;, mas também não há a necessidade de incluir um monte de funções só&#xA;para complicar a vida dele. Aí você diz: ah, mas a maioria dos Androids possui&#xA;algum aplicativo &amp;ldquo;helper&amp;rdquo;, que vem com um tutorial e instruções de uso das&#xA;funções mais importantes do aparelho. Mas esse é outro erro, parece ajudar, mas&#xA;na verdade só complica. Segundo Donald Norman, um produto com um design bom é um&#xA;produto que &lt;strong&gt;dispensa&lt;/strong&gt; tutoriais, textos explicativos e/ou manuais. Ele é&#xA;intuitivo, de forma que o usuário consegue perceber o objetivo de seu uso e como&#xA;usá-lo &amp;ldquo;automagicamente&amp;rdquo; (pequena analogia: imagine um elevador, você entra&#xA;nele, aperta o botão, e vai para o andar que você quer. Isso é um exemplo de bom&#xA;design. Agora, se em determinado elevador você precisar parar para ler as&#xA;instruções de como operá-lo, isso é (em geral) um &lt;em&gt;design&lt;/em&gt; ruim. Exceções&#xA;existem, cuidado para não generalizar esse argumento!).&lt;/p&gt;&#xA;&lt;p&gt;Vou parar por aqui, esse assunto está longe de ser &lt;em&gt;exaustado&lt;/em&gt; apenas com dois&#xA;parágrafos, &lt;strong&gt;mas&lt;/strong&gt; acho que isso já resume a minha motivação por trás desse&#xA;&lt;em&gt;post&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;algumas-guidelines&#34;&gt;&#xA;  Algumas &lt;em&gt;guidelines&lt;/em&gt;&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/03/removendo-bloatware-@-android/#algumas-guidelines&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Nessa seção: algumas coisas que você pode fazer (ou pelo menos tentar fazer, ou&#xA;se informar sobre) para reduzir o &lt;em&gt;bloat&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Note que eu também vou incluir algumas &lt;em&gt;features&lt;/em&gt;. Dependendo do seu ponto de&#xA;vista, elas também podem ser &lt;em&gt;bloat&lt;/em&gt; (isto é, você apenas estaria trocando um&#xA;&lt;em&gt;bloat&lt;/em&gt; por outro). No final, o produto perfeito não é genérico, mas sim&#xA;&lt;em&gt;tailored&lt;/em&gt; e adaptado para as necessidades de cada usuário (mesmo que o próprio&#xA;usuário não esteja ciente do que ele mesmo quer).&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Primeiro de tudo: REMOVA todos os aplicativos &lt;strong&gt;default&lt;/strong&gt; que você não&#xA;&lt;strong&gt;instalaria&lt;/strong&gt; caso eles não viessem nativamente. Por exemplo: você baixaria o&#xA;jogo XXXX sag(?) ou o aplicativo da rede social YYYY caso ele não viesse junto&#xA;com o seu Android? Não? &lt;strong&gt;Então remova ele&lt;/strong&gt;!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Aí vem o problema do tópico anterior: você não vai conseguir (em geral)&#xA;remover esses aplicativos. Então, o que você pode fazer? a) root (apenas se o&#xA;seu aparelho for suficientemente popular, e você for um usuário mais&#xA;experiente, disposto a se arriscar um pouquinho) ou b) desativar os&#xA;aplicativos. Não é tão bom quanto remover, mas pelo menos eles não ficarão&#xA;rodando em segundo plano, nem aparecerão na sua &lt;em&gt;app drawer.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Instale o &lt;a href=&#34;https://play.google.com/store/apps/details?id=de.j4velin.notificationToggle&#34;&gt;Notification&#xA;Toggle&lt;/a&gt;.&#xA;Ótimo design, isso deveria ser nativo em todos os Androids.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Instale um &lt;em&gt;launcher&lt;/em&gt;! O Launcher nativo do Android é limitado até demais.&#xA;Agora, cuidado aqui. Dependendo do &lt;em&gt;launcher&lt;/em&gt; que você instalar e das&#xA;configurações que vocẽ for &lt;em&gt;tweakar&lt;/em&gt; depois, isso pode acabar trazendo mais&#xA;&lt;em&gt;bloat&lt;/em&gt; pro seu smartphone. Eu gosto do&#xA;&lt;a href=&#34;https://play.google.com/store/apps/details?id=com.anddoes.launcher&#34;&gt;Apex&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Aprenda como limpar a cache do seu dispositivo. Dá para fazer isso através de&#xA;um aplicativo, ou manualmente. Não convém fazer isso com muita frequência, mas&#xA;de vez em quando é uma boa ideia.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Desative a localização (GPS, Wi-Fi e redes móveis). A menos que você use com&#xA;frequência algum aplicativo relacionado a isso. Sério, não &amp;lsquo;venda&amp;rsquo; seus dados&#xA;de localização tão facilmente.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Instale um &lt;em&gt;browser&lt;/em&gt; decente! O Stock Browser do Android é muito ruim. Dentre&#xA;as recomendações, Chrome, Firefox ou Dolphin (não necessariamente nessa&#xA;ordem). O Opera Mini ainda é útil para navegar no 3G e economizar mais dados.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Desative o &lt;em&gt;bluetooth&lt;/em&gt;. Quase ninguém usa isso hoje em dia. A única vez que&#xA;eu usei isso foi para se comunicar com o meu notebook. Economiza bateria.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Retire todos os &lt;em&gt;widgets&lt;/em&gt; que vieram por padrão na sua &lt;em&gt;Home Screen&lt;/em&gt;. A&#xA;menos que você realmente precise deles&amp;hellip; (é tão importante assim saber o&#xA;clima / a temperatura toda hora?)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Desative o &lt;em&gt;Google Now&lt;/em&gt;. Ser interrompido toda hora com notificações é&#xA;contraprodutivo. A menos que isso seja importante para você&amp;hellip;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Perceba, esses itens são apenas recomendações, pode ser que um aspecto ou&#xA;outro seja importante para você, eu não vou mais ficar repetindo isso, acho&#xA;que já deu para captar a mensagem.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://f-droid.org/repository/browse/?fdfilter=adaway&amp;amp;fdid=org.adaway&#34;&gt;Adblock&lt;/a&gt;!&#xA;Funciona &lt;strong&gt;bem pra caramba&lt;/strong&gt;, um dos aplicativos que eu mais prezo. Precisa de&#xA;root!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Desative as transições / animações / haptic feedback / audio feedback.&#xA;Traduzindo: desativar os efeitos visuais quando você muda de tela, desativar a&#xA;vibração quando você toca em um botão (virtual) ou numa tecla (do teclado&#xA;virtual), desativar o barulho de quando você toca em algo. Procure isso na&#xA;configurações (&lt;em&gt;settings&lt;/em&gt;). Geralmente está lá para o final, nas últimas&#xA;opções.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Revise os aplicativos que vieram por padrão na sua &lt;em&gt;Home Screen&lt;/em&gt;. Você não&#xA;precisa usar os que vieram (mas, provavelmente você irá querer alguns, como o&#xA;dos contatos e o do telefone, assim como o web browser – senão, eu me pergunto&#xA;qual é o objetivo do seu smartphone).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Sincronização &lt;em&gt;upstream&lt;/em&gt; com o fabricante: você não precisa disso, desative&#xA;isso. Explicando melhor: geralmente os fabricantes disponibilizam algum&#xA;aplicativo para sincronizar ou ajudar você a fazer alguma coisa. Isso varia&#xA;bastante de um para o outro, e até mesmo o mesmo fabricante costuma mudar o&#xA;nome desses aplicativos de uma versão do Android para outra. Note que eu&#xA;&lt;strong&gt;não&lt;/strong&gt; me refiro à sincronização do Google.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Instale uma &amp;ldquo;*store&amp;rdquo; alternativa, com &lt;em&gt;&lt;strong&gt;softwares livres&lt;/strong&gt;&lt;/em&gt;!&#xA;&lt;a href=&#34;https://f-droid.org/&#34;&gt;F-Droid&lt;/a&gt;. Se você, além disso, puder utilizar algum&#xA;&lt;em&gt;software&lt;/em&gt; de lá (em vez de um &lt;em&gt;closed source&lt;/em&gt;), melhor ainda.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Vou parar por aqui. Esse post pode muito bem ter uma continuação no futuro,&#xA;ainda daria para falar de outras coisas. Tenho certeza de que você não conhecia&#xA;pelo menos um item que estava aí em cima. Assim como eu ainda não conheço outros&#xA;que não estão aí em cima. Sempre tem alguma coisinha nova para aprender, ou&#xA;alguma dica nova para melhorar a usabilidade. Aceito sugestões!&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: (Removendo) Bloatware @ Android&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/privacy/&#34;&gt;#privacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>2^11 (aka 2048)
      </title>
      <link>https://perrotta.dev/pt/2014/03/211-aka-2048/</link>
      <pubDate>Tue, 18 Mar 2014 20:33:37 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>gaming</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/03/211-aka-2048/</guid>
      <description>&lt;p&gt;♠ Ah, eis o &lt;em&gt;hit&lt;/em&gt; dos últimos dias, um jogo simples, com um nome simples, com uma&#xA;jogabilidade simples, e também com uma maneira bastante simples de agradar os&#xA;&lt;em&gt;first-timers&lt;/em&gt;. E não precisa de instruções, é bastante intuitivo, qualquer um&#xA;pode jogá-lo (se você não achou ele intuitivo, então &lt;em&gt;Houston, we have a&#xA;problem!&lt;/em&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Uma leitura (ou releitura) atenta mostra que o &lt;strong&gt;simples&lt;/strong&gt; é um aspecto bastante&#xA;positivo aqui (e não uma forma de depreciação, como talvez desse a entender em&#xA;outro contexto), definitivamente uma ótima aplicação do princípio&#xA;&lt;a href=&#34;https://en.wikipedia.org/wiki/KISS_principle&#34;&gt;KISS&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Você pode se perguntar porque eu estou postando sobre isso, e essa é uma ótima&#xA;pergunta mesmo. Vejamos, eu compartilhei no meu Mural do Facebook pelo menos 3&#xA;vezes sobre esse jogo (em menos de uma semana), então isso significa que é algo&#xA;que eu realmente achei bacana – veja bem, existe uma enorme diferença entre um&#xA;jogo como esse ficar popular e &lt;em&gt;outros&lt;/em&gt; jogos ficarem populares, digamos, uma&#xA;diferença que dá muito mais orgulho do que ver o Flappy Bird ficar popular. E é&#xA;realmente uma pena que o desenvolvedor original desse jogo não esteja faturando&#xA;a mesma coisa que o desenvolvedor original do Flappy Bird faturava antes de&#xA;retirar os seus &lt;em&gt;apps&lt;/em&gt; das &lt;em&gt;stores&lt;/em&gt;. É realmente uma pena.&lt;/p&gt;&#xA;&lt;p&gt;Estou postando sobre isso porque eu realmente gosto de ver esse efeito de&#xA;compartilhamentos em massa de coisas &lt;em&gt;boas&lt;/em&gt; (vou deixar essa definição&#xA;subjetiva). Considerando que a) tem tanta porcaria sendo compartilhada por aí e&#xA;b) os compartilhamentos desse jogo realmente atingiram uma excelente expansão:&#xA;vi desde vários &lt;em&gt;shares&lt;/em&gt; nas timelines nas quais eu ainda não dei &lt;em&gt;unfollow&lt;/em&gt;&#xA;no Facebook, em vários grupos de lá, e em vários blogs e redes sociais por aí.&lt;/p&gt;&#xA;&lt;p&gt;Sabe outro aspecto que é bastante legal de se ver? A criatividade de algumas&#xA;pessoas. Vi várias versões derivadas desse jogo. Não vou tentar reencontrar&#xA;(logo, postar) os &lt;em&gt;links&lt;/em&gt; aqui, até porque a maioria deles eu já compartilhei,&#xA;mas eis um &lt;em&gt;mini index&lt;/em&gt; do que eu vi:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;2048 original, vanilla, &lt;em&gt;simple, simple&lt;/em&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;2048-AI: um cara que usou um algoritmo de minimax e sei lá mais o que para&#xA;tentar resolver o jogo automaticamente. Segundo ele, o algoritmo funcionava (=&#xA;terminava o jogo) em ~90% dos casos (está no Stack Overflow a explicação dele,&#xA;em algum lugar), bastante bom.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Outros limites: 4096, etc (nada criativo, mas pelo menos mostra que a pessoa&#xA;já sabe mudar um número no código-fonte, infelizmente eu conheço muita gente&#xA;que não saberia sequer fazer isso – claro que eu estou me referindo somente a&#xA;pessoas que fizeram alguma disciplina de computação)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Uma versão com números de Fibonacci (depois do 21, nós começam a surgir na&#xA;cabeça)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Uma versão com vários 1024 já preenchidos (¬¬)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Uma versão com emoticons (isto é, sem nenhuma indicação numérica). Não achei&#xA;essa ideia trivial, utilizar figuras em vez de números, também é interessante.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Por sinal, acabei de descobrir que existe um &lt;a href=&#34;https://play.google.com/store/apps/details?id=gabriele.cirulli.puzzle&#34;&gt;aplicativo para&#xA;Android&lt;/a&gt;&#xA;do mesmo. Oh, não&amp;hellip;e o desenvolvedor tem 19 anos (note que eu não usei a&#xA;palavra &lt;em&gt;somente&lt;/em&gt; (como em &amp;ldquo;somente 19 anos&amp;rdquo;). Bobagem. No mundo da&#xA;programação, &lt;em&gt;idade&lt;/em&gt; e &lt;em&gt;limite&lt;/em&gt; estão em escopos diferentes).&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Indie Games FTW&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;(Não deixe de dar uma olhada no código-fonte&amp;hellip;&#xA;&lt;a href=&#34;https://github.com/gabrielecirulli/2048&#34;&gt;https://github.com/gabrielecirulli/2048&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: 2^11 (aka 2048)&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/gaming/&#34;&gt;#gaming&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>pull request
      </title>
      <link>https://perrotta.dev/pt/2014/03/pull-request/</link>
      <pubDate>Sun, 16 Mar 2014 23:42:19 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/03/pull-request/</guid>
      <description>&lt;p&gt;♠ Meu primeiro &lt;em&gt;pull request&lt;/em&gt; para um projeto &lt;em&gt;open source&lt;/em&gt; acabou de ser aceito!&#xA;:D&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/robbyrussell/oh-my-zsh/pull/2574&#34;&gt;Aqui&lt;/a&gt; está o commit.&lt;/p&gt;&#xA;&lt;p&gt;Em si, esse é o mesmo tipo de alegria que eu tive quando contribui com o &lt;a href=&#34;https://perrotta.dev/pt/2014/02/meu-primeiro-pkgbuild/&#34;&gt;meu&#xA;primeiro&#xA;PKGBUILD&lt;/a&gt;&#xA;para o &lt;a href=&#34;http://aur.archlinux.org/&#34;&gt;AUR&lt;/a&gt;. É realmente bastante bom poder&#xA;contribuir com alguma coisa para a comunidade, por menor que ela seja, desde um&#xA;simples post ajudando um &lt;em&gt;newbie&lt;/em&gt; em um fórum, passando por um simples &lt;em&gt;commit&lt;/em&gt;&#xA;ou por uma simples edição numa wiki,até mesmo a criação de um projeto &lt;a href=&#34;https://groups.google.com/d/msg/comp.os.minix/dlNtH7RRrGA/SwRavCzVE7gJ&#34;&gt;novo e&#xA;aparentemente&#xA;inofensivo&lt;/a&gt;,&#xA;porém relevante para muita gente (&lt;em&gt;damn&lt;/em&gt;, pra completar a minha lista só falta o&#xA;último item).&lt;/p&gt;&#xA;&lt;p&gt;Espero que, depois desse, ainda venham muito mais por aí (&lt;strong&gt;virão!&lt;/strong&gt;).&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: pull request&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scilab Notes (HOWTO)
      </title>
      <link>https://perrotta.dev/pt/2014/03/scilab-notes-howto/</link>
      <pubDate>Fri, 07 Mar 2014 17:09:30 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/03/scilab-notes-howto/</guid>
      <description>&lt;p&gt;♠ Resumo sobre como utilizar o Scilab. Objetivo: matrizes, equações lineares e,&#xA;mais geralmente, álgebra linear (computacional, ou não). A motivação para essas&#xA;notas são basicamente a) resumo pessoal e b) estudar para uma prova.&lt;/p&gt;&#xA;&lt;p&gt;Essas notas não tendem a ser extensivas. Na verdade, estou colocando aqui&#xA;apenas as coisas que parecem ser mais importantes / úteis, e que eu&#xA;provavelmente possa precisar uma vez ou outra. O Scilab é um ambiente&#xA;full-featured, bem mais rico e complexo do que esse resumo pareça demonstrar&#xA;(por exemplo, não estou cobrindo nada de programação, nem de Cálculo, aqui). É&#xA;realmente impressionante. Eu já o tinha usado uma vez mas, agora que passo&#xA;novamente por ele, percebo o quão completo ele é.&lt;/p&gt;&#xA;&lt;p&gt;Essas notas estão licenciadas sob a Creative Commons BY-NC-SA (assim como todo&#xA;o conteúdo desse blog, até hoje), o que significa que você pode compartilhá-las&#xA;à vontade, desde que não faça uso comercial das mesmas; além disso, você pode&#xA;criar derivados a partir delas, desde que os distribuam sob a mesma licença.&#xA;OK, agora vamos ao trabalho.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Se você quiser aprimorar esse trabalho (por exemplo, indicando algum erro, ou&#xA;acrescentando mais alguma coisa), por favor deixe um comentário ou me mande uma&#xA;mensagem para que eu inclua mais itens aqui. Obrigado.&lt;/strong&gt; No entanto, lembre-se&#xA;que essa lista não pretende ser exaustiva.&lt;/p&gt;&#xA;&lt;h2 id=&#34;geral&#34;&gt;&#xA;  Geral&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/03/scilab-notes-howto/#geral&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Definindo um vetor / matriz linha: &lt;code&gt;a = [1, 2, 3]&lt;/code&gt; ou &lt;code&gt;b = [1 2 3]&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Soma, subtração: &lt;code&gt;a + b&lt;/code&gt;, &lt;code&gt;a — b&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Obtendo ajuda (interativa) sobre uma função: &lt;code&gt;help&lt;/code&gt;, exemplo &lt;code&gt;help help&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Atribuição: &lt;code&gt;c = a + b&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Definindo constantes: &lt;code&gt;k = 5.23&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Ele suporta as keybindings do Emacs (parcialmente&amp;hellip;)! Que alegria ao descobrir isso:&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;C-a: início da linha&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;C-e: fim da linha&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;C-k: matar a linha&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;C-b: volta um caractere&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;C-f: ops, em vez de avançar um caractere ele entra no search&amp;hellip;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Up/down: navegar no histórico de comandos&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;$ scilab -nw: modo console&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Listas: declarar como &lt;code&gt;l = list(1,2,3,4)&lt;/code&gt;. Existem várias formas de manipulá-las. Não achei uma função super útil a princípio, manipular vetores parece mais útil na maior parte das aplicações.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;clc()&lt;/code&gt;: clear no console&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;%eps&lt;/code&gt;, sim, isso mesmo.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;%T&lt;/code&gt;, &lt;code&gt;%F&lt;/code&gt;: true, false.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;%inf&lt;/code&gt;, infinito.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;rand()&lt;/code&gt; gera número aleatório (sempre de 0 a 1), &lt;code&gt;rand(5,4)&lt;/code&gt; gera uma matriz com elementos aleatórios.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Funções / variáveis matemáticas: &lt;code&gt;exp&lt;/code&gt; (e^), &lt;code&gt;log&lt;/code&gt;, &lt;code&gt;log10&lt;/code&gt;, &lt;code&gt;ceil&lt;/code&gt;, &lt;code&gt;floor&lt;/code&gt;, &lt;code&gt;abs(-10)&lt;/code&gt;, &lt;code&gt;max&lt;/code&gt;, &lt;code&gt;min&lt;/code&gt;, &lt;code&gt;sum&lt;/code&gt;, &lt;code&gt;prod&lt;/code&gt;, &lt;code&gt;sqrt(10)&lt;/code&gt;, &lt;code&gt;%pi&lt;/code&gt;, &lt;code&gt;%e&lt;/code&gt;, trigonométricas &lt;code&gt;cos&lt;/code&gt;, &lt;code&gt;sin&lt;/code&gt;, &lt;code&gt;tan&lt;/code&gt;, &lt;code&gt;sec&lt;/code&gt;, &lt;code&gt;csc&lt;/code&gt;, &lt;code&gt;cotg&lt;/code&gt;, inversas &lt;code&gt;atan&lt;/code&gt;,&lt;code&gt;acos&lt;/code&gt;, &lt;code&gt;asin&lt;/code&gt;, hiperbólicas, &lt;code&gt;sinh&lt;/code&gt;, &lt;code&gt;cosh&lt;/code&gt;, &amp;hellip; tudo o que você imaginar.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Funções matemáticas: &lt;code&gt;factor&lt;/code&gt;, &lt;code&gt;factorial&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Operações típicas com números complexos:&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;z=complex(1,2)&lt;/code&gt;: define a partir da parte real, e depois da parte imaginária&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Alternativamente: &lt;code&gt;1 + 2 * %i&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;real(z)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;imag(z)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Conjugado &lt;code&gt;z&#39;&lt;/code&gt; ou &lt;code&gt;conj(z)&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;ans&lt;/code&gt; retorna a última resposta que você não atribuiu (útil!)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;:&lt;/code&gt; forma vetores (implícitos). Python-like. Exemplo: &lt;code&gt;1:5&lt;/code&gt; retorna &lt;code&gt;[1,2,3,4,5]&lt;/code&gt; e &lt;code&gt;1:2:5:&lt;/code&gt; retorna &lt;code&gt;[1,3,5]&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;álgebra-linear&#34;&gt;&#xA;  Álgebra linear&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/03/scilab-notes-howto/#%c3%a1lgebra-linear&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Multiplicação por escalar: &lt;code&gt;k * a&lt;/code&gt;, &lt;code&gt;5 * a&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Comprimento de um vetor/matriz (= número de elementos): &lt;code&gt;length(l)&lt;/code&gt; ou &lt;code&gt;size(l)&lt;/code&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Declarando uma matriz: &lt;code&gt;m = [ [1,2]; [3,4] ]&lt;/code&gt; ou &lt;code&gt;m = [1,2; 3,4]&lt;/code&gt;, isto é, o ponto-e-vírgula separa as linhas. Convém declarar todos os elementos dela!&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Multiplicação de matrizes: &lt;code&gt;m * n&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Multiplicação de uma matriz por ela mesmo == potenciação: &lt;code&gt;m^2&lt;/code&gt;, &lt;code&gt;m^5&lt;/code&gt;, &lt;code&gt;m**5&lt;/code&gt;, etc.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Inversa de uma matriz: &lt;code&gt;m^-1&lt;/code&gt; ou &lt;code&gt;inv(m)&lt;/code&gt;. Lembrando que &lt;code&gt;m * m^-1&lt;/code&gt; = matriz identidade.* Falando em identidade, para declarar uma matriz identidade com n linhas e m colunas:&lt;code&gt;eye(n, m)&lt;/code&gt;. Note que &lt;code&gt;eye(k)&lt;/code&gt; (onde k é uma constante) é igual a 1 (constante). A matriz não precisa ser quadrada, porém note que apenas a diagonal principal é preenchida. Você também pode fazer &lt;code&gt;eye(m)&lt;/code&gt; (de uma matriz).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;zeros(3,4)&lt;/code&gt;, &lt;code&gt;ones(5,2)&lt;/code&gt;: matriz com apenas zeros, ou apenas uns, com a dimensão especificada.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;diag(m)&lt;/code&gt; retorna a diagonal principal de m.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Matriz transposta: &lt;code&gt;m&#39;&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Norma (quadrada) da matriz: &lt;code&gt;norm(a)&lt;/code&gt;. Você pode calcular a norma p especificando um segundo argumento: norm(a,1) retorna a norma de Manhattan / Táxi.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;triu(m)&lt;/code&gt; ou &lt;code&gt;tril(m)&lt;/code&gt;: retorna a matriz triangular superior e inferior, respectivamente. Basicamente, a mesma matriz de entrada, só que as posições adequadas são preenchidas com zero.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Essa achei super útil: &lt;code&gt;clean(m)&lt;/code&gt;. Arredonda para zero os elementos muito pequenos (algo como &lt;code&gt;1e-10&lt;/code&gt;, por exemplo).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Extrair elemento de matriz: &lt;code&gt;m(1,2)&lt;/code&gt; (da linha 1, coluna 2) (1-based index).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Extrair uma linha ou uma coluna (respec.): &lt;code&gt;m(1,:)&lt;/code&gt;, &lt;code&gt;m(:,1)&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Slices de uma matriz: &lt;code&gt;m(2,2:3)&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;A\B e A/B: divisão de matriz, pela esquerda e pela direita, respectivamente. Isso é super útil, especialmente a do backslash.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;clear a, m, k, b&lt;/code&gt;: mata as variáveis/matrizes/etc especificadas. Como se nunca tivessem existido.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;kernel(m)&lt;/code&gt; - nullspace&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;[L,U] = lu(m)&lt;/code&gt; - retorna a fatoração LU de m. Também existe uma versão alternativa, com uma matriz de permutação, &lt;code&gt;[L,U,E] = lu(m)&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;det(m)&lt;/code&gt; &amp;ndash;&amp;gt; determinante&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;rank(m)&lt;/code&gt;&amp;ndash;&amp;gt; posto de m = número de vetores linearmente independentes&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;code&gt;trace(m)&lt;/code&gt; &amp;ndash;&amp;gt; traço da matriz (=soma dos elementos da diagonal). O mesmo que &lt;code&gt;sum(diag(m))&lt;/code&gt;. Faz sentido, né?&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;autovetores, autovalores = spec(A) ==&amp;gt; só podem ser calculados todos de uma vez.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Acho que estou satisfeito. A única coisa que falta para completar essa lista é&#xA;como definir funções. Isso inevitavelmente nos fará entrar na parte de&#xA;programação do Scilab&amp;hellip;if, for e amigos. Provavelmente não postarei aqui como&#xA;definir funções. Existe uma pequena chance de eu incluir aqui uma função como&#xA;exemplo, mas só.&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Scilab Notes (HOWTO)&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>&#39;Livrando-se&#39; da notificação de voicemail no Android
      </title>
      <link>https://perrotta.dev/pt/2014/03/livrando-se-da-notifica%C3%A7%C3%A3o-de-voicemail-no-android/</link>
      <pubDate>Tue, 04 Mar 2014 02:02:11 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/03/livrando-se-da-notifica%C3%A7%C3%A3o-de-voicemail-no-android/</guid>
      <description>&lt;p&gt;♠ Em geral não tenho nada a reclamar do Android, mas uma das piores decisões de&#xA;design que já vi foi com a função de voicemail.&lt;/p&gt;&#xA;&lt;p&gt;Basicamente, se você recebe uma mensagem de voz na sua operadora, você receberá&#xA;uma notificação sobre isso. Legal, né? Até aí tudo certo. O problema é que essa&#xA;notificação é diferente, ela não funciona como as outras&amp;hellip;você &lt;em&gt;não&lt;/em&gt; pode se&#xA;livrar dela. Sabe? Tudo o que você quer é dar scroll pro lado para nunca mais&#xA;ver aquilo, mas não dá, simplesmente não dá. Como fica a UX (=user experience)??&lt;/p&gt;&#xA;&lt;p&gt;O design é tão ruim, que você não consegue se livrar disso nem com permissões de&#xA;root.&lt;/p&gt;&#xA;&lt;p&gt;Isso se aplica, pelo menos, até a versão 4.1.2 do Android (que é a minha).&#xA;&lt;strong&gt;Talvez&lt;/strong&gt; isso tenha sido corrigido com novas versões do Android, mas eu não&#xA;posso confirmar isso.&lt;/p&gt;&#xA;&lt;p&gt;Eis um &lt;em&gt;workaround&lt;/em&gt; (gambiarra) para se livrar dessa notificação: abra o&#xA;aplicativo &amp;ldquo;Phone&amp;rdquo; (você pode fazer isso segurando a notificação, e depois&#xA;clicando em &amp;ldquo;App info&amp;rdquo;), e depois clique em &amp;ldquo;Force Stop&amp;rdquo; / &amp;ldquo;Forçar Parada&amp;rdquo;.&#xA;Depois disso, abra o aplicativo do telefone de novo, só para garantir que está&#xA;tudo OK. A notificação deverá ter sumido.&lt;/p&gt;&#xA;&lt;p&gt;No entanto, isso não é uma solução permanente. Por quê? Se você desligar o seu&#xA;telefone e religá-lo, ou se você entrar no modo avião (ou perder sinal com a&#xA;operadora) e depois reentrar em contato com a sua operadora, a notificação de&#xA;voicemail voltará. Mas, isso é o máximo que se pode fazer.&lt;/p&gt;&#xA;&lt;p&gt;Se você descobrir uma forma mais eficiente do que eu falei para se livrar do&#xA;voicemail, não deixe de me avisar =P&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: &#39;Livrando-se&#39; da notificação de voicemail no Android&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Bloqueando {websites,ads,malware} no Linux
      </title>
      <link>https://perrotta.dev/pt/2014/03/bloqueando-websitesadsmalware-no-linux/</link>
      <pubDate>Sun, 02 Mar 2014 20:52:27 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>privacy</category>
      <category>security</category>
      <guid>https://perrotta.dev/pt/2014/03/bloqueando-websitesadsmalware-no-linux/</guid>
      <description>&lt;p&gt;♠ &amp;ldquo;For the sake of the productivity&amp;rdquo;, notas pessoais sobre o bloqueio de websites.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1---a-forma-nua-e-crua-etchosts&#34;&gt;&#xA;  1 - A forma nua e crua: /etc/hosts&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/03/bloqueando-websitesadsmalware-no-linux/#1---a-forma-nua-e-crua-etchosts&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Um arquivo &lt;code&gt;/etc/hosts&lt;/code&gt; típico é da forma:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-bash&#34;&gt;$ cat /etc/hosts&#xA;#&#xA;# /etc/hosts: static lookup table for host names&#xA;#&#xA;#&amp;lt;ip-address&amp;gt; &amp;lt;hostname.domain.org&amp;gt; &amp;lt;hostname&amp;gt;&#xA;127.0.0.1 localhost.localdomain localhost&#xA;::1 localhost.localdomain localhost&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Para bloquear um novo site, basta redirecioná-lo localmente para localhost&#xA;(=127.0.0.1). Por exemplo, para bloquear o Facebook, adicione a esse arquivo as&#xA;linhas:&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-plaintext&#34;&gt;127.0.0.1 facebook.com&#xA;127.0.0.1 www.facebook.com&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h3 id=&#34;11-servidor-local-nulo-para-localhost&#34;&gt;&#xA;  1.1 Servidor local &amp;ldquo;nulo&amp;rdquo; para localhost&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/03/bloqueando-websitesadsmalware-no-linux/#11-servidor-local-nulo-para-localhost&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Mas essa maneira por si só é muito sem graça então, além de redirecionar para&#xA;localhost, vamos fazer com que o usuário receba uma página &amp;ldquo;vazia&amp;rdquo;/&amp;ldquo;nula&amp;rdquo; ao&#xA;tentar acessar esses websites. Mas isso é bastante simples, basta instalar um&#xA;servidor local como o kwakd ou o pixelserv.&lt;/p&gt;&#xA;&lt;h2 id=&#34;2---um-pouco-mais-de-estrutura-por-favor&#34;&gt;&#xA;  2 - Um pouco mais de estrutura, por favor&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/03/bloqueando-websitesadsmalware-no-linux/#2---um-pouco-mais-de-estrutura-por-favor&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;O programa &lt;strong&gt;hostsblock&lt;/strong&gt; é excelente para isso. Veja a página oficial. Como um&#xA;bônus, você ainda bloqueia malware e ads (na verdade, esse é o objetivo primário&#xA;dele), isso no sistema inteiro, não apenas no navegador – por exemplo, se você&#xA;quiser instalar um Adblock, geralmente tem que instalar individualmente para&#xA;todos os seus navegadores. Estou utilizando-o recentemente, e o achei bastante&#xA;bom. Ele é bastante elegante (do ponto de vista de simplicidade de código) e&#xA;extremamente funcional. Ao ser combinado com o dnsmasq, ele fica mais elegante&#xA;ainda. Ao ser combinado com o cron, você tem uma lista de domínios a ser&#xA;bloqueados que é atualizada periodicamente.&lt;/p&gt;&#xA;&lt;p&gt;Se você quiser combiná-lo com o Network Manager e tiver problemas com isso,&#xA;&lt;a href=&#34;https://wiki.archlinux.org/index.php/Dnsmasq&#34;&gt;esse post&lt;/a&gt; talvez seja útil. Se&#xA;você achou todos esses projetos relevantes, considere votá-los no AUR para que&#xA;eles ganhem mais relevância.&lt;/p&gt;&#xA;&lt;h2 id=&#34;se-você-usa-o-chromium&#34;&gt;&#xA;  Se você usa o Chromium&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/03/bloqueando-websitesadsmalware-no-linux/#se-voc%c3%aa-usa-o-chromium&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;OBS.: Se você utiliza o Chromium ou o Google Chrome, vai descobrir que ele é&#xA;esperto e tenta contornar os websites que ele não consegue acessar. Depois de&#xA;bastante pesquisa, descobri a razão para isso:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.chromium.org/developers/design-documents/dns-prefetching&#34;&gt;http://www.chromium.org/developers/design-documents/dns-prefetching&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://superuser.com/questions/723703/why-is-chromium-bypassing-etc-hosts-and-dnsmasq/&#34;&gt;https://superuser.com/questions/723703/why-is-chromium-bypassing-etc-hosts-and-dnsmasq/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://encrypted.google.com/search?hl=en&amp;amp;q=make%20chromium%20not%20use%20google%20default%20dns#hl=en&amp;amp;q=remove&amp;#43;google&amp;#43;dns&amp;#43;from&amp;#43;chrome&#34;&gt;https://encrypted.google.com/search?hl=en&amp;q=make%20chromium%20not%20use%20google%20default%20dns#hl=en&amp;q=remove+google+dns+from+chrome&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;O problema é que ele fazia &lt;em&gt;DNS prefetching&lt;/em&gt; para agilizar o carregamento de&#xA;algumas páginas (ainda não estou 100% certo disso, mas tudo indica que esse era&#xA;o problema). Foi difícil descobrir isso principalmente porque a maioria das&#xA;discussões sobre o assunto se aplica apenas a versões antigas do Chromium (sabe,&#xA;daquela época que ainda tinham dois botões, em vez de um só).&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Happy blocking!&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;— § —&lt;/p&gt;&lt;p&gt;Reply via &lt;a href=&#34;mailto:serendipity@perrotta.dev?subject=Reply to: Bloqueando {websites,ads,malware} no Linux&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/dev/&#34;&gt;#dev&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/legacy/&#34;&gt;#legacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/privacy/&#34;&gt;#privacy&lt;/a&gt; &lt;a href=&#34;https://perrotta.dev/tags/security/&#34;&gt;#security&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
