<?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>Dev on ¬ just serendipity 🍀</title>
    <link>https://perrotta.dev/</link>
    <description>Recent content in Dev 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>
    <lastBuildDate>Tue, 26 May 2026 01:55:30 +0200</lastBuildDate>
    <atom:link href="https://perrotta.dev/pt/tags/dev/index.xml" rel="self" type="application/rss+xml" />
    <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>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>&#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>(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>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>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>
    <item>
      <title>Consertando caracteres estranhos em Markdown
      </title>
      <link>https://perrotta.dev/pt/2014/02/consertando-caracteres-estranhos-em-markdown/</link>
      <pubDate>Thu, 27 Feb 2014 12:32:17 +0000</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/02/consertando-caracteres-estranhos-em-markdown/</guid>
      <description>&lt;p&gt;♠ Ao converter um documento para Markdown com a sua &lt;em&gt;engine&lt;/em&gt; preferida, se você se&#xA;deparar com caracteres estranhos, do tipo:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;histÃ³ria de um programador e sua (possÃ­vel) evoluÃ§Ã£o Ã© recomendado para&#xA;quem estÃ¡ da computaÃ§Ã£o&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;É bastante fácil resolver isso: o problema é em relação ao &lt;em&gt;encoding /&lt;/em&gt; à&#xA;codificação do seu documento. Basta forçar o UTF-8, com a seguinte tag (pode&#xA;colocar no início do seu documento, por exemplo):&lt;/p&gt;&#xA;&#xA;&lt;pre&gt;&lt;code class=&#34;language-html&#34;&gt;&amp;lt;meta http-equiv=&amp;#39;Content-Type&amp;#39; content=&amp;#39;text/html; charset=utf-8&amp;#39; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Originalmente extraído do Stack Overflow (novidade&amp;hellip;). Durante muito tempo&#xA;fiquei com esse problema, deixando de usar Markdown por causa disso&amp;hellip;não mais&#xA;=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: Consertando caracteres estranhos em Markdown&#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>Novo blog – ICPC Journal
      </title>
      <link>https://perrotta.dev/pt/2014/02/novo-blog-icpc-journal/</link>
      <pubDate>Sat, 22 Feb 2014 23:32:16 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/02/novo-blog-icpc-journal/</guid>
      <description>&lt;p&gt;♠ Estou começando um novo blog em&#xA;&lt;a href=&#34;http://thiagowfx.github.io/icpc-journal/&#34;&gt;http://thiagowfx.github.io/icpc-journal/&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Eis uns simples &lt;em&gt;remarks:&lt;/em&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Pode ser que tudo isso vire &lt;em&gt;flood&lt;/em&gt;, sendo apenas um pretexto para aprender (e&#xA;praticar) Jekyll, e ganhar mais um pouco de familiaridade com Liquid, HTML,&#xA;YAML e CSS. Se isso acontecer, então ao menos terei aprendido algo útil;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Por outro lado, pode ser que isso vá para a frente, tornando-se (mais um)&#xA;projeto pessoal durante os 2 ou 3 próximos anos (ou quem sabe mais? O futuro é&#xA;tão incerto). Nesse caso, eu espero que alguém (isso inclui eu mesmo) possa&#xA;aprender alguma coisa com o que eu escrever lá.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Lá eu utilizarei uma linguagem bem mais simples, direta e menos pessoal do que&#xA;eu uso aqui (yeah, aqui tem o &lt;em&gt;inferno de parênteses&lt;/em&gt; (mas você já sabia&#xA;disso, certo?)), e isso vai fazer com que a linguagem que eu uso aqui também&#xA;mude um pouco.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;E, por último: os posts desse novo blog &lt;strong&gt;NÃO&lt;/strong&gt; serão replicados nas minhas&#xA;redes sociais (em geral, pois pode haver uma exceção ou outra), visto que esse&#xA;é um tema bastante específico portanto, se você quiser acompanhá-lo, dê o seu&#xA;jeito ;) – favoritos, RSS, enfim. Ademais, tentarei deixar o site leve, com&#xA;poucos add-ons, widgets ou outras firulas – diferente desse Wordpress aqui :D.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Se eu postar &lt;em&gt;aqui&lt;/em&gt; novamente sobre isso, provavelmente vai ser para falar sobre&#xA;a minha experiência (conclusão) em relação ao &lt;em&gt;Jekyll&lt;/em&gt; (devo dizer que estou&#xA;impressionado, é uma engine bastante simples, me lembra bastante do sistema CMS&#xA;do &lt;a href=&#34;http://xyne.archlinux.ca/&#34;&gt;Xyne&lt;/a&gt;, o Xac).&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: Novo blog – ICPC Journal&#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>Notas de Física 3
      </title>
      <link>https://perrotta.dev/pt/2014/02/notas-de-f%C3%ADsica-3/</link>
      <pubDate>Mon, 17 Feb 2014 00:09:43 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/02/notas-de-f%C3%ADsica-3/</guid>
      <description>&lt;p&gt;♠ Estou fazendo um experimento nesse período, de estudar a matéria de física 3 de&#xA;forma um pouco diferente (para mim), quase que inteiramente virtualmente,&#xA;utilizando as aulas em sala apenas como um complemento. O contrário funcionava&#xA;melhor até física 1: eu assistia as aulas, e fazia exercícios como um&#xA;complemento. A partir de física 2, percebi que não {era,é} uma boa ideia deixar&#xA;a parte de &amp;ldquo;estudar sozinho em casa&amp;rdquo; como um complemento, muito pelo contrário,&#xA;a matéria é densa e difícil, portanto  é melhor se esforçar mais em casa do que&#xA;em sala de aula.&lt;/p&gt;&#xA;&lt;p&gt;Como quer que seja, é muito mais fácil dizer qual decisão foi {boa,melhor} e&#xA;qual decisão foi {ruim,pior} olhando para trás; foi por isso que eu escrevi o&#xA;&lt;a href=&#34;https://perrotta.dev/pt/2013/12/c%C3%A1lculo-@-ufrj-sugest%C3%A3o-de-refer%C3%AAncias/&#34;&gt;post de referências de Cálculo {1,2,3,4}&lt;/a&gt;, só que ali eu já havia&#xA;terminado ({e} bem!) os meus Cálculos, então eu não corria risco nenhum de me&#xA;comprometer.&lt;/p&gt;&#xA;&lt;p&gt;No entanto, aqui, eu estou inventando essa firula enquanto eu curso física,&#xA;então pode ser que isso tudo dê errado (mas também pode ser que dê certo!), pode&#xA;ser que isso tudo seja esquecido daqui a 1 semana ou 1 mês (mas também pode ser&#xA;que isso seja levado a mais adiante do que eu imaginei) e, ainda, pode ser que&#xA;eu não me dê tão bem assim em física quanto eu quero (mas também pode ser que eu&#xA;passe bem!).&lt;/p&gt;&#xA;&lt;p&gt;Vou resumir a ideia nesse parágrafo, e chega de escrever: abaixo você vai&#xA;encontrar um link com as minhas notas de física 3. O que são notas? Anotações.&#xA;Algo como um diário de estudo. Referências. Plano de estudos. Exercícios.&#xA;Conclusões. Traps. Qualquer coisa que vier a minha cabeça. &lt;em&gt;Really&lt;/em&gt;. Veja bem,&#xA;&lt;em&gt;por design&lt;/em&gt;, eu nunca disse que essas notas &lt;em&gt;foram feitas&lt;/em&gt; para ajudar alguém,&#xA;ou para servir como um guia; portanto, não espere que elas estejam inteligíveis&#xA;ou bem formatadas ou sequer bem estruturadas (apesar de que conterão o mínimo de&#xA;estruturação). &lt;em&gt;Por design&lt;/em&gt;, essas notas são simplesmente uma forma de&#xA;compartilhar, de modo aberto, a minha experiência com uma matéria que eu&#xA;considero difícil (relativamente). Elas podem ou não ser úteis para você. Se não&#xA;forem, no mínimo elas estarão sendo úteis para mim mesmo, então, objetivo&#xA;cumprido ;). Falando sério agora, uma dessas duas coisas vai acontecer: a) ou&#xA;daqui a alguns dias essa ideia vai morrer (nesse caso, existe uma alta&#xA;probabilidade de eu deletar esse post), o que é bem provável; se isso acontecer,&#xA;provavelmente eu vou fazer o meu resumo à mão mesmo e, se ele ficar bom o&#xA;suficiente, vou escaneá-lo e compartilhá-lo (eu fiz isso com a segunda parte da&#xA;matéria de física 2, talvez você ainda encontre esse resumo por aí), mas não&#xA;garanto nada ou b) pela primeira vez terei conseguido estudar de maneira&#xA;estruturada e criando notas memoráveis ;) – porque, convenhamos, cadernos&#xA;usualmente vão para o lixo mais cedo ou mais tarde, mas não posso dizer o mesmo&#xA;de conteúdo digital.&lt;/p&gt;&#xA;&lt;p&gt;Blá blá blá, notas aqui: &lt;em&gt;dead dropbox link&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Se tudo correr bem, esse documento será atualizado constantemente, provavelmente&#xA;semanalmente. Por sinal, agora ele está uma bagunça mas, se ele ficar maior, vou&#xA;incluir mais links de referências e organizá-lo melhor (não faço isso agora&#xA;porque pode ser que eu simplesmente aperte a tecla DELETE&amp;hellip;enquanto isso, todas&#xA;as referências de que preciso estão nos meus favoritos).&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: Notas de Física 3&#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>Meu primeiro PKGBUILD
      </title>
      <link>https://perrotta.dev/pt/2014/02/meu-primeiro-pkgbuild/</link>
      <pubDate>Thu, 13 Feb 2014 20:08:04 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/02/meu-primeiro-pkgbuild/</guid>
      <description>&lt;p&gt;♠ Título mais legal: Meu primeiro PKGBUILD (&lt;em&gt;eeeeeeeeeeeee&lt;/em&gt;). Mas não coloque&#xA;firulas como esse &lt;em&gt;eeeeee&lt;/em&gt; em um título de post do Wordpress, obrigado.&lt;/p&gt;&#xA;&lt;p&gt;Você sabe, do primeiro PKGBUILD a gente não se esquece. Mas que raios é isso?&#xA;Bom, a menos que você viva no meu mundo, ou a menos que você já tenha usado o&#xA;Arch Linux alguma vez, eu realmente não tinha nenhuma intenção de que você&#xA;soubesse isso. Alerta: os próximos 3 parágrafos são bem didáticos.&lt;/p&gt;&#xA;&lt;p&gt;Um &lt;code&gt;PKGBUILD&lt;/code&gt; é um simples &lt;em&gt;script&lt;/em&gt; que diz como criar um pacote. É como uma&#xA;receita de bolo. Você diz tudo pra ele: baixa o código-fonte tal, compila de tal&#xA;jeito, extrai esse zip pra cá, põe esse arquivo em &lt;code&gt;/usr/share&lt;/code&gt;, esse outro em&#xA;&lt;code&gt;/etc&lt;/code&gt;, aplica o &lt;em&gt;patch&lt;/em&gt; tal. Um pacote contém um programa. Se você está&#xA;acostumado com setups do Windows, um pacote é como se fosse um setup, um&#xA;programa de instalação. A diferença é que você não precisa seguir um wizard&#xA;gráfico, clicando em next toda hora. Você simplesmente pega o arquivo, executa&#xA;um único comando, e pronto, seu programa está instalado.&lt;/p&gt;&#xA;&lt;p&gt;Existe uma curva (razoavelmente grandinha) para criar um bom pacote. Pegue um&#xA;setup do Windows, por exemplo. Se você quiser distribuir o seu programa legal&#xA;para outros usuários Windows, você vai demorar um bom tempo para criar um setup&#xA;&lt;code&gt;*.exe&lt;/code&gt;. Tem várias ferramentas para isso, é claro, e você pode simplificar o&#xA;seu trabalho, ou não. O próprio WinRAR tem uma utility de SFX que facilita&#xA;bastante esse processo. Mas, ainda assim, não acho isso &lt;em&gt;super&lt;/em&gt; elegante (mas é&#xA;simples, é verdade).&lt;/p&gt;&#xA;&lt;p&gt;No Mundo Linux, nada é padronizado (maldição). Existem pacotes &lt;code&gt;.deb&lt;/code&gt;, &lt;code&gt;.rpm&lt;/code&gt;,&#xA;&lt;code&gt;.tar.gz&lt;/code&gt;. Existem scripts que criam pacotes, como PKGBUILDs (Arch Linux),&#xA;ebuilds (Gentoo – não sei bem se ebuild faz isso, é melhor você pesquisar para&#xA;confirmar), até o Slackware tem a sua forma simples de criar pacotes através de&#xA;um script. Para criar um bom pacote &lt;code&gt;.deb&lt;/code&gt;, ou um bom pacote &lt;code&gt;.rpm&lt;/code&gt;, você também&#xA;vai demorar razoavelmente.&lt;/p&gt;&#xA;&lt;p&gt;Agora, eu tenho que dizer (de maneira suspeita, você deve saber) que um PKGBUILD&#xA;é perfeito. Uma das formas mais elegantes de manter e gerenciar pacotes. A curva&#xA;para você criar um pacote é bem pequena (curva de tempo entre você querer criar&#xA;um pacote e vê-lo efetivamente criado). Bom, supondo que você pelo menos saiba o&#xA;básico de &lt;em&gt;shell scripting&lt;/em&gt; – bash, ya know – combinado?&lt;/p&gt;&#xA;&lt;p&gt;Então, eu só queria compartilhar a minha primeira contribuição para a comunidade&#xA;do Arch. Ah, esqueci de dizer que qualquer usuário pode criar um PKGBUILD e&#xA;adicioná-lo num repositório no qual todos os outros usuários do Arch têm&#xA;acesso, sabia disso? Isso significa que qualquer um pode contribuir para a&#xA;comunidade (com pacotes – na verdade, PKGBUILDS&amp;hellip;!), e que a probabilidade&#xA;de você ter pensado em um programa open source &lt;em&gt;popular&lt;/em&gt; (às vezes, até,&#xA;não popular também) que NÃO está no &lt;a href=&#34;https://aur.archlinux.org/&#34;&gt;Arch User&#xA;Repository&lt;/a&gt; é bem pequena. A todo momento,&#xA;sempre tem alguém adicionando (e atualizando, mantendo) esses pacotes.&#xA;Claro, nem tudo é perfeito, não tem um ou outro, mas enfim. Eu falei que o&#xA;PKGBUILD é perfeito, não que a disponibilidade de pacotes é perfeita&amp;hellip;mas é&#xA;quase perfeita! :)&lt;/p&gt;&#xA;&lt;p&gt;Na verdade, eu sempre quis criar (e manter) algum PKGBUILD, mas todos os&#xA;programas legais nos quais eu pensei simplesmente já são mantidos por alguém.&#xA;Nesse caso, recentemente criei uma adaptação de um outro PKGBUILD que já existia&#xA;(sério, se você encontrar algum programa ainda sem PKGBUILD no AUR, me fala, que&#xA;provavelmente eu vou querer criar um para ele). Não há necessidade de reinventar&#xA;a roda.&lt;/p&gt;&#xA;&lt;p&gt;O meu PKGBUILD é &lt;a href=&#34;https://aur.archlinux.org/packages/arch-firefox-nightly-search/&#34;&gt;esse aqui&lt;/a&gt;. Você pode ver &lt;a href=&#34;https://aur.archlinux.org/packages/ar/arch-firefox-nightly-search/PKGBUILD&#34;&gt;aqui&lt;/a&gt; como um PKGBUILD é bastante simples &amp;ldquo;por dentro&amp;rdquo;. Ele não tem nada de especial, é um PKGBUILD como outro qualquer. Mas é o meu primeiro – na verdade, isso faz com que ele seja especial, &lt;em&gt;sim&lt;/em&gt;. Acho que já dá para perceber o que ele faz.&lt;/p&gt;&#xA;&lt;p&gt;Só para falar um pouquinho da minha experiência fazendo isso. Bom, foi difícil.&#xA;Mesmo adaptando um PKGBUILD já existente, foi difícil. Tudo que é novo, feito&#xA;pela primeira vez, é difícil, certo? Mas foi bastante legal. Na verdade, isso é&#xA;uma experiência extremamente fácil e ridícula.  Só foi difícil porque eu nunca&#xA;tinha feito isso antes. Mas essa que é a graça da coisa! Pior seria que fosse&#xA;uma atividade difícil mesmo para quem já está acostumado. Mas é por isso que eu&#xA;estou elogiando a simplicidade (e a elegância!) de um PKGBUILD. A Wiki do Arch é&#xA;bastante documentada. Não faltou tutorial ensinando sobre bons padrões de&#xA;scripting para &amp;ldquo;empacotamento&amp;rdquo;, nem guias sobre como contribuir para a&#xA;comunidade. E nem faltam exemplos, são mais de 40 mil PKGBUILDs espalhados por&#xA;aí (talvez já tenha chegado a 50k, não me lembro). Só para comparar, o&#xA;repositório do Debian tem em torno de 40 mil pacotes, se me lembro bem. Então,&#xA;dá para comparar a base de pacotes do Arch com a do Debian, o que é&#xA;impressionante (só não tem mais do que isso porque o Arch não é tão popular.&#xA;Isso também faz parte da beleza da coisa, mas é outra história).&lt;/p&gt;&#xA;&lt;p&gt;Digo uma coisa: a melhor coisa (pare de repetir a palavra &amp;lsquo;coisa&amp;rsquo;!) que você&#xA;pode fazer é interagir com a comunidade da sua distro (supondo que ela seja&#xA;minimamente ativa). É bastante fácil obter ajuda e ganhar experiência  com quem&#xA;já sabe. Eu não precisei fazer isso quando criei o meu pacote porque ele era&#xA;bastante simples, mas se ele fosse complexo eu certamente faria. E, de qualquer&#xA;modo, eu posso não ter lido nada recentemente, mas ao longo de alguns meses eu&#xA;estou sempre lendo &lt;em&gt;outras&lt;/em&gt; pessoas pedirem suporte, e essa também é uma boa&#xA;forma de você acompanhar e aprender como fazer melhor alguma atividade.&lt;/p&gt;&#xA;&lt;p&gt;Pronto, só queria deixar isso registrado aqui, obrigado por ler. Brincadeira.&#xA;Talvez esse post tenha servido para – remotamente falando&amp;hellip; – querer despertar&#xA;o seu eu interior para criar um PKGBUILD também. Er&amp;hellip;não.&lt;/p&gt;&#xA;&lt;p&gt;Falando sério agora, se você que está lendo isso é um usuário de Linux faz algum&#xA;tempo, considere criar um pacote para a sua distribuição. De preferência, um&#xA;pacote de algo que ainda não foi empacotado. Ou então ajude um mantenedor&#xA;(&amp;ldquo;maintainer&amp;rdquo; soa melhor) da sua distro a atualizar seu pacote.  Pode ser algo&#xA;simples. Talvez seja mais fácil criar um &lt;code&gt;.deb&lt;/code&gt; e um &lt;code&gt;.rpm&lt;/code&gt; do que eu afirmei&#xA;aqui, é só uma questão de prática.&lt;/p&gt;&#xA;&lt;p&gt;Se você é um usuário de OS X, de Windows, ou de outra plataforma, aprecie a&#xA;beleza do que é ter uma boa base de pacotes para a sua plataforma. Na verdade,&#xA;eu acho que o OS X tem um gerenciador de pacotes (macports, não é? Estou fora do&#xA;mundo &lt;em&gt;Apple&lt;/em&gt;, sorry), mas eu não sei o quanto é fácil para um usuário criar um&#xA;pacote lá (e, ainda, compartilhar com a comunidade do mesmo. Se bem que a forma&#xA;de compartilhar por lá é vendendo por 0,99 dólares, não é, mas OK, ainda assim é&#xA;compartilhar&amp;hellip;). E no Windows, bom, existem até alguns projetos de&#xA;gerenciadores de pacotes para lá (como o &lt;em&gt;chocolatey&lt;/em&gt;), mas praticamente nenhum&#xA;usuário usa (sequer conhece!) isso, então não é algo &lt;em&gt;tãaaaao&lt;/em&gt; valorizado. Mas&#xA;OK.&lt;/p&gt;&#xA;&lt;p&gt;Ainda existem gerenciadores de pacotes para várias linguagens de programação.&#xA;Npm, cabal, gem. É, acho que essa foi uma das melhores peças de software que já&#xA;inventaram, evita bastante dor de cabeça.&lt;/p&gt;&#xA;&lt;p&gt;Sinta-se à vontade para deixar um comentário ou apontar um link sobre sua&#xA;experiência de criar pacotes em outra distribuição de Linux, ou em alguma&#xA;linguagem de programaçã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: Meu primeiro 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>renew my Arch, please
      </title>
      <link>https://perrotta.dev/pt/2014/02/renew-my-arch-please/</link>
      <pubDate>Wed, 05 Feb 2014 00:26:37 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/02/renew-my-arch-please/</guid>
      <description>&lt;p&gt;♠ Reinstalei o Arch. Apesar de tê-lo deletado apenas durante um dia, valeu a pena,&#xA;porque pude reorganizar algumas coisas. Instalei 4 distros nesse meio tempo:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;openSUSE: package hell, me decepcionei com o zypper, do qual já gostei muito.&#xA;Falta de percepção na época, talvez. Agora fiquei na dúvida se fiquei com&#xA;falta de percepção do yum também&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;aptosid (debian sid), uma distro asiática, acho. Bah, não adianta ser sid,&#xA;ainda é Debian. Não gostei, teria sido melhor instalar o Debian mesmo.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Sabayon Linux: package hell hell hell. Equo/rigo/&lt;strong&gt;entropy&lt;/strong&gt;: o gerenciador de&#xA;pacotes binários mais bloated que eu já vi. Teria sido melhor usar o Gentoo&#xA;puro&amp;hellip;(apesar de que eu &lt;em&gt;não&lt;/em&gt; vou fazer isso no meu notebook. Talvez num&#xA;servidor ou num desktop, mas não no notebook).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;SparkyLinux (&amp;hellip;): na verdade, só rodei na máquina virtual. NÃO.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;No Arch&amp;hellip;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Agora estou usando o i3 como window manager. Não tenho nenhum outro instalado,&#xA;isso vai fazer com que eu me acostume com ele. Isso me lembra dos velhos&#xA;tempos em que eu só tinha o Ubuntu instalado para me acostumar com o mundo&#xA;Linux (Meu último Window Manager (DE) foi o Cinnamon);&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Não tenho nenhum editor de texto instalado além do Emacs. Sem vim, sem gedit,&#xA;sem kwrite, sem sublime (&amp;hellip;). Tá, tem o nano também. E o zile (mini emacs,&#xA;mas ainda é emacs);&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Sem Racket, só com o guile. Talvez assim eu me obrigue a usar Scheme;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;A guerra de navegadores ainda é acirrada, por enquanto parece uma boa ideia&#xA;manter tanto o Chromium quanto o Firefox instalados (Chrome não, por favor).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Thunar como gerenciador de arquivos. Tchau, Nemo&amp;hellip; (talvez a integração com o&#xA;Dropbox faça falta)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Aplicações leves e poucos pacotes! Vamos ver durante quanto tempo isso dá&#xA;certo (570 pacotes agora, antes eu tinha mais de 1100). A questão é que&#xA;pacotes como o wine, latex, libreoffice e steam ou qualquer coisa do KDE&#xA;possuem muitas dependências. Vou dar preferência a aplicativos na nuvem&#xA;(google docs por exemplo).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Poucas fontes! Gosto pra caramba das fontes do Chrome OS. E também estou com&#xA;as do Ubuntu e do Android.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Poucos temas! Estou usando o tema do CRUX junto com o icon set do Elementary&#xA;(OS).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Emulador de terminal: sakura! Uma alternativa seria o terminator. Sério, esse&#xA;negócio de {xfce4-,lx,gnome-,mate-}terminal e konsole, um terminal para cada&#xA;ambiente&amp;hellip;bobagem! Apesar de que eu acho que o xfce4-terminal seria&#xA;suficiente. Tmux e similares poderiam ser uma boa ideia também, mas são muitos&#xA;keystrokes para decorar. Já não basta Emacs e i3, uma coisa de cada vez.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Felizmente estou cada vez melhor em realizar uma instalação efetiva e rápida do&#xA;Arch. Há um ano eu tinha uma tremenda paranoia em bootar uma distro direto no&#xA;terminal. Essa história ainda vai terminar comigo rodando um servidor sério com&#xA;Arch. Há quem diga &lt;em&gt;mimimis&lt;/em&gt; porque não é estável. Tudo depende da aplicação. Se&#xA;for para rodar uma coisa bem definida, Apache + X + Y + Z, beleza, põe um Debian&#xA;ou CentOS da vida e faz os seus &lt;em&gt;tweaks&lt;/em&gt;. Mas, se for para trabalhar de&#xA;forma pesada com pacotes, resolver dependências e blábláblá&amp;hellip;sério, ainda&#xA;não consigo encontrar nada que supere o&#xA;&lt;a href=&#34;https://wiki.archlinux.org/index.php/Pacman_rosetta&#34;&gt;pacman&lt;/a&gt; (o Arch é o&#xA;pacman).&lt;/p&gt;&#xA;&lt;p&gt;Um único dia sem o Arch já foi o suficiente para perceber pelo menos uma dessas&#xA;coisas: a) a maioria das distros de Linux é uma porcaria (coração da distro =&#xA;&lt;em&gt;package manager&lt;/em&gt;, ou: vamos instalar mais Windows e OS X por aí) ou b) eu&#xA;passei a ficar extremamente dependente e/ou &lt;em&gt;fanboy&lt;/em&gt; do Arch ou c) alguma coisa&#xA;está bastante errada, só falta descobrir o que é.&lt;/p&gt;&#xA;&lt;p&gt;Off-topic: parece até que eu sou casado com essa distro. &lt;em&gt;Damn&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: renew my Arch, please&#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>★ #CPBR7 - Parte 1 - Hackatons (Firefox OS &#43; CERT.br)
      </title>
      <link>https://perrotta.dev/pt/2014/02/%23cpbr7-parte-1-hackatons-firefox-os--cert.br/</link>
      <pubDate>Mon, 03 Feb 2014 23:58:25 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>bestof</category>
      <category>dev</category>
      <category>legacy</category>
      <category>serenity</category>
      <guid>https://perrotta.dev/pt/2014/02/%23cpbr7-parte-1-hackatons-firefox-os--cert.br/</guid>
      <description>&lt;p&gt;♠ Ah, é claro que eu ia escrever algo sobre a Campus Party aqui! A princípio&#xA;pensei em escrever um único post gigante. Só haveria dois probleminhas em&#xA;relação a isso: a) ele seria &lt;strong&gt;gigante&lt;/strong&gt; (não disse?) ==&amp;gt; eu perderia tempo&#xA;demais pra estruturar tudo, e as pessoas provavelmente não leriam tudo direito,&#xA;etc, etc e etc e b) existe um equilíbrio entre ansiedade, lembrar-se bem dos&#xA;fatos, se focar no que você vai escrever x misturar vários pensamentos, escrever&#xA;melhor e não dormir tão tarde para poder ir à faculdade direito&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Então, vamos lá: participei de duas competições. A primeira foi relacionada à&#xA;comunidade da Mozilla Brasil (da qual, tenho que dizer, gostei pra caramba! Foi&#xA;ela, inclusive, que me motivou a escrever &lt;a href=&#34;https://perrotta.dev/pt/2014/02/software-e-outras-coisas-livres-revisitados-parte-0.0.01/&#34;&gt;esse outro&#xA;post&lt;/a&gt;.&#xA;A outra foi do CERT.br. Bom, tenho uma informação ruim e outra boa. Vamos&#xA;começar pela ruim&amp;hellip;&lt;/p&gt;&#xA;&lt;h2 id=&#34;firefox-os&#34;&gt;&#xA;  Firefox OS&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/02/%23cpbr7-parte-1-hackatons-firefox-os--cert.br/#firefox-os&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Sobre a hackathon da Mozilla, a proposta foi de criar um app para o Firefox OS.&#xA;Foram dadas várias palestras sobre o Firefox OS, acho que pelo menos 3 (ah, mas&#xA;a Mozilla deu várias outras palestras também!!!). Eu só vi a segunda, até onde&#xA;sei. Na Campus Party, são muitas palestras acontecendo &lt;em&gt;ao mesmo tempo&lt;/em&gt; (li em&#xA;algum lugar que são necessárias 500 horas para ver tudo&amp;hellip; o/o/). Provavelmente,&#xA;no momento das outras palestras, eu devia estar vendo alguma outra coisa (ou&#xA;fazendo alguma outra coisa, &lt;em&gt;who knows&lt;/em&gt;). De qualquer forma, depois de ver a&#xA;segunda palestra, dada pelo &lt;a href=&#34;https://andregarzia.com/&#34;&gt;Andre Garzia&lt;/a&gt;, eu fiquei&#xA;fascinado com o Firefox OS. Achei a sua simplicidade uma coisa incrível (se eu&#xA;falar que me lembrou do Arch Linux&amp;hellip;é people, qualquer palavra relacionada à&#xA;KISS ou simplicidade me lembra do Arch, sorry. Ah não, eu acabei de deletar o&#xA;Arch, isso vai me deixar triste&amp;hellip;). Sério mesmo. Antigamente eu via o Firefox&#xA;OS como &amp;ldquo;ah não, droga, mais uma opção no mercado.&amp;rdquo; Quer dizer, o &lt;em&gt;droga&lt;/em&gt; é só&#xA;pelo &lt;em&gt;mais uma opção&lt;/em&gt;, porque mais um sistema livre / open source nunca é demais&#xA;(agora vai contar quantas distros de Linux existem e o que eu acabei de dizer&#xA;torna-se um paradoxo). Muito bem, passei a ver o sistema deles como &amp;ldquo;caramba,&#xA;isso não é só mais um, na verdade é mais uma alternativa, bastante boa – e&#xA;simples!&amp;rdquo;. Claro, não vai competir com o Android, duvido que isso aconteça tanto&#xA;a curto quanto a longo prazo, mas a beleza da coisa é justamente essa – ele não&#xA;foi feito para competir com o Android, mas sim para ser simplesmente uma outra&#xA;opção. Da mesma forma que um smartphone não foi feito para completir com um&#xA;tablet (&amp;ndash; oi? Aí você coloca o Samsung Galaxy Note (3!!!) no meio&amp;hellip;).&lt;/p&gt;&#xA;&lt;p&gt;Eu gostei tanto do Firefox OS, que eu resolvi tentar criar um aplicativo para o&#xA;mesmo. A ideia por trás de um app no Firefox OS é saber usar HTML5, CSS3 e&#xA;Javascript. Basicamente, você constrói um aplicativo da mesma forma que constrói&#xA;uma interface / tecnologia para a web. A curva de aprendizado para aprender a&#xA;programar para o Firefox OS é quase zero se você já sabe programar para a web.&#xA;Well, eu quase não sabia nada de web&amp;hellip;eu aprendi HTML quando eu estava na minha&#xA;8ª série (uns 13 anos), e CSS um pouquinho depois. Mas foi um aprendizado super&#xA;&lt;em&gt;light&lt;/em&gt;, coisa de só querer saber usar. Naquela época nem ensino técnico eu&#xA;fazia&amp;hellip;basicamente, depois disso, eu quase nunca mais aprendi nada nem de HTML&#xA;nem de CSS. E sobre a parte de Javascript? Eu nunca estudei &lt;strong&gt;nada&lt;/strong&gt; de&#xA;Javascript. Aí você pensa: cacete, pra que se envolver com esta droga se você&#xA;não sabe nada? Eu não sei o que me deu, mas eu simplesmente quis participar&#xA;disso, talvez por realmente ter-me impressionado com o sistema.&lt;/p&gt;&#xA;&lt;p&gt;Então, vamos lá, a primeira coisa que eu precisava era de uma ideia. Não podia&#xA;ser nada muito complicado, afinal eu não sabia &lt;em&gt;quase&lt;/em&gt; nada de web&amp;hellip; No final&#xA;das contas, encontrar uma ideia foi algo bastante difícil. A minha ideia acabou&#xA;sendo uma adaptação de algo que já existia. Só que eu resolvi escrever o meu&#xA;próprio código-fonte, a minha própria lógica de implementação e o meu próprio&#xA;layout. Não era questão de reinventar a roda (Andrew Hunt e David Thomas não&#xA;iriam gostar disso&amp;hellip;), mas sim que o código das implementações que já existiam&#xA;eram fechados. E eu perguntei antes, para a galera da Mozilla, se tinha algum&#xA;problema adaptar uma ideia já existente. Veja bem, não era cópia de código +&#xA;adaptaçãozinha pra interface mobile. Eles disseram que tudo OK. Eu realmente&#xA;criei as coisas do zero (CSS, conteúdo, HTML, lógica Javascript, organização dos&#xA;arquivos, blablabla).&lt;/p&gt;&#xA;&lt;p&gt;Fiz o aplicativo em dois dias (não que houvesse muito tempo mesmo&amp;hellip;). No&#xA;primeiro dia, basicamente me importei com o HTML e com o CSS (=layout da coisa&#xA;toda). No segundo dia, com a lógica javascript. Da série &amp;ldquo;vamos deixar o mais&#xA;difícil para mais tarde&amp;hellip;&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Na verdade, HTML é ridiculamente fácil (se você não utilizar nada avançado). A&#xA;minha maior dificuldade no primeiro dia foi o CSS. Então&amp;hellip;depois de muito&#xA;trabalho, consegui o &lt;em&gt;meu&lt;/em&gt; layout perfeito. Obrigado DuckDuckGo + Google! Bela&#xA;parceria. Obrigado também ao Emacs&amp;hellip; (não que essas coisas realmente&#xA;importassem, no final das contas).&lt;/p&gt;&#xA;&lt;p&gt;No segundo dia a coisa foi mais feia. Você tem que dividir o seu tempo. Tem que&#xA;achar o equilíbrio certo (leia -&amp;gt; ótimo!) entre ler tutoriais de javascript (e&#xA;como obter esses tutoriais: videoaulas, tutoriais, posts de blog, wikis, stack&#xA;overflow, &amp;hellip;?) e implementar a lógica do seu aplicativo. Tá legal, depois de&#xA;apanhar um pouco, consegui fazer a coisa funcionar. Mesmo sem não saber quase&#xA;nada dessas coisas. Não sei quanto tempo perdi ao todo, mas acho que foi mais de&#xA;8 horas. Umas 4h em cada dia. Talvez 10h. Enfim, poderia estar utilizando esse&#xA;tempo para assistir palestras&amp;hellip;(perdi algumas palestras que queria ver!!!&#xA;&lt;em&gt;Damn&amp;hellip;&lt;/em&gt;).&lt;/p&gt;&#xA;&lt;p&gt;Depois, a entrega do aplicativo era via github. Se alguém tiver curiosidade,&#xA;&lt;a href=&#34;https://github.com/thiagowfx/Riddlefox&#34;&gt;esse&lt;/a&gt; foi o aplicativo que eu&#xA;desenvolvi, liberado sob a licença MIT. Aceito sugestões de como melhorá-lo,&#xA;mesmo que o hackathon já tenha acabado.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Aparentemente&lt;/em&gt; eu não ganhei a&#xA;competição&amp;hellip;&lt;a href=&#34;http://www.youtube.com/watch?v=Zcps2fJKuAI&#34;&gt;aaaaaaaaaaaaaaa&lt;/a&gt; (está&#xA;bem, essa música tocou lá uma vez). Mas, tudo bem. Aprendi bastante sobre&#xA;programação para a web (mesmo com um simples app!) e também sobre hackathons.&#xA;Nunca tinha participado antes de uma hackaton. Além disso, sequer esperava que&#xA;fosse participar de um! Até onde sei, só iria à CP para me divertir. Tudo isso&#xA;foi muito por acaso. Agradeço à comunidade da Mozilla Brasil pela oportunidade,&#xA;e também especialmente ao &lt;a href=&#34;http://andregarzia.com/&#34;&gt;André&lt;/a&gt; (que citei&#xA;antes) por tirar algumas de minhas dúvidas (e também por me despertar em relação&#xA;à simplicidade (beleza!) do Firefox OS). Também agradeço ao meus amigos que me&#xA;ajudaram a testar o aplicativo. Valeu a experiência.&lt;/p&gt;&#xA;&lt;p&gt;O resultado só seria divulgado após a Campus Party, uma pessoa da comunidade me&#xA;disse isso. Mas depois descobri (por e-mail) que a premiação seria divulgada no&#xA;sábado (um dia depois que me avisaram que não seria divulgada ali), mas me&#xA;enviaram um e-mail avisando sobre isso somente duas horas antes da mesma. Acabei&#xA;não vendo os vencedores. Por isso, nem sei se ganhei. É mais provável que não.&#xA;Estou esperando a resposta deles =/&lt;/p&gt;&#xA;&lt;h2 id=&#34;certbr&#34;&gt;&#xA;  CERT.BR&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/02/%23cpbr7-parte-1-hackatons-firefox-os--cert.br/#certbr&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Agora vem a parte boa. Really, eu falei mais da parte ruim do que vou falar da&#xA;boa agora, porque aprendemos mais com os nossos erros (na verdade, o &amp;rsquo;erro&amp;rsquo; aqui&#xA;é não conseguir uma colocação suficientemente boa) do que com nossos acertos.&lt;/p&gt;&#xA;&lt;p&gt;A outra competição da qual eu participei não foi exatamente uma hackathon. Foi&#xA;uma competição individual, promovida pelo CERT.br. Intitulada &lt;strong&gt;desafio&#xA;forense&lt;/strong&gt;. A palestra começava duas e meia da tarde. O desafio deveria ser&#xA;completado até seis e meia da tarde. Tivemos em torno de meia hora (talvez 40&#xA;minutos) de palestra, a qual nos explicou a ideia básica sobre como era o&#xA;desafio, quais ferramentas deveriam ser utilizadas no mesmo, e o que deveria ser&#xA;feito. Eu não esperava participar desse desafio também. Tudo ocorreu bastante&#xA;por acaso. De qualquer modo, participei. A palestra nos apresentou algumas&#xA;ferramentas forenses das quais eu nunca tinha ouvido falar (só tinha ouvido&#xA;falar do wireshark, mas não sabia usá-lo também&amp;hellip;). Ou seja, tudo novo. Por que&#xA;é que eu ia fazer aquilo, não sei mexer em nada&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Eu estava com uma desvantagem. O meu notebook estava carregado em torno de 50%,&#xA;e eu não tinha rede. Os pontos de rede, para os ouvintes das palestras, eram&#xA;extremamente limitados (não tinha Wi-fi, só para constar). Assim como as&#xA;tomadas&amp;hellip;E a bateria do meu notebook (na verdade, ultrabook, quem liga) é&#xA;péssima (2h, o que significava que eu só tinha 1 hora pra completar o desafio,&#xA;claramente não iria ter tempo o suficiente).&lt;/p&gt;&#xA;&lt;p&gt;Para realizarmos o desafio, nos foi provida uma máquina virtual. A senha para o&#xA;acesso da mesma só seria liberada após a palestra. Durante a palestra, cerca de&#xA;20 mídias foram passadas para os participantes (pen-drives e CD-ROMs), para que&#xA;os mesmos pudessem realizar suas respectivas cópias do ambiente do desafio. O&#xA;ambiente era um Ubuntu da vida (nunca escolhem outra distro&amp;hellip;). Já equipado com&#xA;as ferramentas que iríamos utilizar, e também com os arquivos o qual iríamos&#xA;tentar crackear (na verdade, analisar).&lt;/p&gt;&#xA;&lt;p&gt;Eu espero que não tenha ficado ambíguo a ponto de você achar que eram&#xA;necessários 20 pendrives para instalar o ambiente da palestra&amp;hellip;não estamos mais&#xA;na década de 90 onde eram precisos muitos disquetes para instalar um simples&#xA;sistema operacional&amp;hellip;.&lt;/p&gt;&#xA;&lt;p&gt;Logo quando a palestra acabou, saí correndo de lá para uma bancada. Eu precisava&#xA;de uma tomada o mais rápido possível. Já não havia mais tomadas livres. Isso foi&#xA;péssimo para mim. Durante o desafio, os palestrantes iriam dar algumas dicas.&#xA;Além do mais, o último slide continha um resumo de como usar as ferramentas. E&#xA;eu estava sem um caderno na ocasião, então não pude anotar nem isso&amp;hellip;&amp;ldquo;oh céus&amp;rdquo;.&#xA;Mas enfim. Eu carreguei o meu notebook um pouco, cerca de 20 minutos, talvez até&#xA;uns 65% por cento, não me lembro ao certo, e então saí correndo de volta para o&#xA;local da palestra. Sabe, enquanto carregava a bateria eu tentei ler alguma coisa&#xA;útil na internet, mas não tinha muito o que ler. Você sabe, eu não poderia&#xA;prosseguir direito sem o resumo, ou quem sabe sem as dicas.&lt;/p&gt;&#xA;&lt;p&gt;E vou te dizer, o desafio estava segmentado assim: tinham várias partes, e&#xA;conforme você completasse uma parte tinha que avisar a algum palestrante (eu&#xA;devia dizer &amp;lsquo;responsável&amp;rsquo;, mas vou continuar dizendo &amp;lsquo;palestrante&amp;rsquo;) sobre o seu&#xA;progresso. Isso teoricamente seria útil caso todo mundo empatasse. Então, mesmo&#xA;que eu conseguisse avançar alguma coisa, teria que voltar lá e cá para avisar a&#xA;algum palestrante.&lt;/p&gt;&#xA;&lt;p&gt;Tudo bem. Voltei para lá, e decidi que iria ficar lá até a minha bateria acabar.&#xA;Até que em certo ponto as pessoas estavam desistindo. Consegui uma tomada,&#xA;finalmente!!! Mas só depois de mais de uma hora desde o início da palestra&#xA;(depois de 16h, provavelmente). Pelo menos assim eu fiquei mais seguro e pude&#xA;pensar no desafio com mais calma. Você sabe, uma máquina virtual come a bateria&#xA;que é uma beleza.&lt;/p&gt;&#xA;&lt;p&gt;Consegui ir prosseguindo. Bem aos pouquinhos, mas consegui. Em particular, a&#xA;primeira parte foi a mais difícil (estranho, não?). Eu interpretei errado o que&#xA;era para fazer. Talvez tenha perdido alguma dica. Não sei, não estava lá nos&#xA;primeiros minutos do desafio&amp;hellip;mas só sei que demorei mais de meia hora até&#xA;consegui algum progresso. Quando consegui, fiquei ansioso (e contente!) pra&#xA;caramba. Saí avisando aos caras que nem um maluco que eu consegui passar da&#xA;parte tal.&lt;/p&gt;&#xA;&lt;p&gt;Depois da primeira parte, tive mais facilidade. Completei as partes subsequentes&#xA;em cada vez menos tempo. Estava indo tão bem que mudei as minhas esperanças.&#xA;Achei (=passei a achar) que eu tinha uma oportunidade de ganhar alguma coisa.&#xA;Nem que fosse algum brindezinho de recordação (tinham 3 prêmios para os 3&#xA;primeiros lugares, mais alguns brindes para os outros participantes que&#xA;conseguissem terminar o desafio forense).&lt;/p&gt;&#xA;&lt;p&gt;Perto de 18 horas eu estava praticamente completando o desafio. Faltava só mais&#xA;uns empurrõezinhos. Bateria realmente deixou de ser um problema. E a esperança&#xA;de ganhar se apoderava cada vez mais de mim. Na verdade, pouco me importava qual&#xA;fosse o prêmio. Eu realmente gostei do desafio, do jeito que o estruturaram, das&#xA;suas etapas. Achei bastante bacana. Realmente me diverti fazendo aquilo. E cada&#xA;vez mais eu chamava algum palestrante para ir avisando sobre o meu progresso&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Enfim, depois de bastante trabalho, consegui completar o desafio!!!! Aquilo,&#xA;para mim, foi sensacional. Cheguei ali sem conhecer nada, depois tive os&#xA;problemas de não ter uma única folha para fazer anotações, e de ter pouca&#xA;bateria (50% é pouco se 100% = 2 horas é pouco pra você). Realmente achei que&#xA;essas duas desvantagens poderiam ser cruciais para que tudo pudesse dar errado,&#xA;mas eu consegui! Me senti super orgulhoso com um toque de humildade (&amp;lsquo;você tinha&#xA;tudo pra perder, mas ganhou, seu maldito!&amp;rsquo;).&lt;/p&gt;&#xA;&lt;p&gt;Descobri que cheguei em segundo lugar. O primeiro lugar tinha completado o&#xA;desafio uns 25 min antes de mim. É engraçado, porque se não fosse a história da&#xA;bateria e de eu travar na primeira parte, &lt;em&gt;talvez&lt;/em&gt;, &lt;em&gt;talvez&lt;/em&gt; eu pudesse até&#xA;chegar em primeiro lugar (mas, na boa? Nem me importa). Mas eu juro que eu não&#xA;tive nenhum remorso. Em geral eu sou uma pessoa bastante competitiva. Se eu não&#xA;chegar em primeiro geralmente eu tendo a ficar meio, hmmmm – ya know – com o&#xA;desafio e com os que ficaram na minha frente. Mas caramba, acho que aprendi mais&#xA;uma lição de maturidade ali, porque não senti nenhuma raiva do primeiro cara&#xA;(mesmo que eu tivesse ficado em desvantagem). Achei a competição tão bonita, o&#xA;pessoal do CERT.br tão bacana, que meu espírito competitivo compreendeu tudo e&#xA;se encantou pra caramba com aquilo.&lt;/p&gt;&#xA;&lt;p&gt;O prêmio do segundo lugar foi um Kindle PaperWhite, da Amazon (um leitor de&#xA;livros, &lt;em&gt;um ótimo&lt;/em&gt; leitor de livros – só é uma pena que não leia EPUB&amp;hellip;). Eu&#xA;queria algo desse tipo há muito tempo. É sério, eu sou um leitor pesado de&#xA;e-books, sempre li pra caramba no meu Symbian de pouco mais de duas polegadas, e&#xA;atualmente no meu Android de 4.3&amp;rsquo;&amp;rsquo;. Um e-reader foi um prêmio que deixou a&#xA;competição ainda mais perfeita!!! Não preciso dizer que a qualidade de leitura&#xA;dele é bem melhor. Ainda não o testei com um livro meu, mas estou impressionado,&#xA;gostei de verdade do meu prêmio. O primeiro lugar ganhou um Samsung Galaxy Note&#xA;(é mais caro, mas não seria tão útil pra mim, já tenho um Android. Só que fosse&#xA;o Galaxy Note 2&amp;hellip;) Mas sério, um prêmio diferente me deixou mais animado ainda.&#xA;Nem que fosse um&amp;hellip;ahn, sei lá, fala aí alguma coisa. Nem que fosse um Windows&#xA;Phone ou um Blackberryzinho. Ganhar alguma coisa que você não tem mas que você&#xA;sempre quis – e ainda de forma inesperada, e ainda graças ao seu esforço /&#xA;talento // nesse caso mais esforço mesmo – é muito bom! Curiosamente, a história&#xA;do DRM e da &amp;rsquo;não-liberdade&amp;rsquo; da Amazon poderia gerar controvérsias nesse&#xA;meio&amp;hellip;mas isso fica para outro dia, okay? Acho que não vou me decepcionar&#xA;com DRM, para tudo dá-se um jeito.&lt;/p&gt;&#xA;&lt;h3 id=&#34;conclusões&#34;&gt;&#xA;  Conclusões?&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/02/%23cpbr7-parte-1-hackatons-firefox-os--cert.br/#conclus%c3%b5es&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Tente. Tentar é muito bom. Especialmente quando você pode errar. No mercado, no&#xA;mundo real, errar é extremamente custoso, a solução tem que aparecer, por melhor&#xA;ou pior que seja. Mas, num clima acadêmico, ou num clima &amp;lsquo;campus party&amp;rsquo; (que é&#xA;um clima único, bastante peculiar, ótimo, sem palavras!), vale bastante a pena&#xA;tentar, mesmo que você não saiba de porcaria nenhuma. Felizmente eu tive duas&#xA;experiências – uma ruim e uma boa –, o que é um complemento perfeito em relação&#xA;ao outro. A gente fica chateado quando não ganha, mas o esforço sempre vale.&lt;/p&gt;&#xA;&lt;h3 id=&#34;off-topic&#34;&gt;&#xA;  Off-topic&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/02/%23cpbr7-parte-1-hackatons-firefox-os--cert.br/#off-topic&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Tanto o pessoal da Mozilla Brasil, quando o pessoal do CERT.br foram simpáticos&#xA;e gente boa &lt;em&gt;pra caramba&lt;/em&gt;. Mais bônus ainda pela participação num ótimo&#xA;ambiente. Porque existiam várias competições por lá, eu poderia muito bem ter&#xA;escolhido a de uma empresa ou comunidade que não fosse lá tão amigável, ou&#xA;enfim. Vale mais a comunidade. Voltei a utilizar o Firefox (=saí do chromium)&#xA;só por causa da comunidade da Mozilla Brasil.&lt;/p&gt;&#xA;&lt;p&gt;É isso aí, em breve eu continuo a escrever sobre a minha experiência na Campus&#xA;Party, falando de outros aspectos, espero que tenham achado o post bacana. =)&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Criado com Emacs.&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: #CPBR7 - Parte 1 - Hackatons (Firefox OS + CERT.br)&#34;&gt;email&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&#34;https://perrotta.dev/tags/bestof/&#34;&gt;#bestof&lt;/a&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>Software e outras coisas livres, revisitados - Parte 0.0.01
      </title>
      <link>https://perrotta.dev/pt/2014/02/software-e-outras-coisas-livres-revisitados-parte-0.0.01/</link>
      <pubDate>Sat, 01 Feb 2014 02:16:31 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/02/software-e-outras-coisas-livres-revisitados-parte-0.0.01/</guid>
      <description>&lt;p&gt;♠ &lt;em&gt;Provavelmente&lt;/em&gt; não é novidade de que eu sou entusiasta de software livre (na&#xA;verdade, pode ser open source também). Também, provavelmente, não é novidade de&#xA;que a maioria das pessoas não está nem aí para isso (acredite, isso não é&#xA;necessariamente algo ruim – não que seja bom out-of-the-box também). Também,&#xA;saiba de antemão que esse post é épico e completamente descontínuo, então &lt;em&gt;não&lt;/em&gt;&#xA;espere ler o seu conteúdo de maneira síncrona e bonitinha, existe todo um mar de&#xA;ideias cá misturados, e essas ideias se interrompem o tempo todo, então você&#xA;&lt;em&gt;vai&lt;/em&gt; lê-las de maneira coerente porém não necessariamente coesas. OK.&lt;/p&gt;&#xA;&lt;p&gt;Por que não é necessariamente ruim? Ora, porque veja o caso do próprio Linux,&#xA;ele foi ficando mais popular, e por isso chamou a atenção de diversas empresas&#xA;(ya know, Google, Steam, blablabla&amp;hellip;) e, acredite, isso não é algo suuuuuper&#xA;bom. Também não é algo ruim (ah, esse ciclo). Existe um excelente post (recente)&#xA;do blog IgnorantGuru que fala sobre isso (eu não vou incluir o link aqui, faça o&#xA;seu dever de casa e vá pesquisar, incluir links implica em interrupção de&#xA;ideias (mais ainda)).&lt;/p&gt;&#xA;&lt;p&gt;Então, voltando ao tópico principal (existe um?), eu queria falar um pouquinho&#xA;sobre princípios. &lt;strong&gt;Até que ponto&lt;/strong&gt; vale a pena ser um entusiasta de software&#xA;livre / open source? Não apenas software, mas também da filosofia, do estilo, da&#xA;comunidade. Até que ponto vale a pena se comprometer e dizer que gosta disso? Aí&#xA;você instala um softwarezinho proprietário aqui ou ali que eu sei, e depois usa&#xA;blobs binários no kernel ou blablabla, dá mesmo para ser 100% livre / open&#xA;source? Tudo isso merece reflexão.&lt;/p&gt;&#xA;&lt;p&gt;Bom, aqui na Campus Party 7 (melhor referenciada como CPBR7) eu tive a&#xA;oportunidade de entrar em contato e assistir a palestras de diversas entidades&#xA;livres (well, entidade livre não é bem um termo 100% correto, mas OK). Dentre&#xA;elas, teve o time da Mozilla do Brasil, o Partido Pirata do Brasil, e – bom –&#xA;várias pessoas que também se dizem entusiastas dessas coisas. E então, depois de&#xA;quase 2 anos iniciado nesse mundo de Linux, liberdade e tudo o mais, essa foi&#xA;essencialmente a minha primeira oportunidade de entrar em contato &lt;strong&gt;na prática&lt;/strong&gt; com pessoas que gostam, apoiam e lutam por esse tipo de causa.&lt;/p&gt;&#xA;&lt;p&gt;Isso talvez (talvez? hummm) se misture um pouco com política, com ideologias e&#xA;etc, mas a questão é que, ao se relacionar com esse pessoal, você realmente&#xA;aprende a distinguir as pessoas que dizem se importar com essas coisas das que&#xA;realmente &lt;em&gt;têm paixão&lt;/em&gt; pelo que fazem e/ou lutam. E isso tudo é muito bom,&#xA;porque te faz refletir sobre as suas próprias ideologias e de tentar encontrar o&#xA;seu lugar no mundo.&lt;/p&gt;&#xA;&lt;p&gt;Atualmente eu me considero um membro ativo da comunidade do Arch Linux,&#xA;procurando participar dos fóruns de discussão e reportar bugs de forma regular&#xA;(de forma menos regular, editando (melhorando!) a Wiki também). E, depois da&#xA;CPBR7, eu estou seriamente pensando em largar o Chromium e voltar para o&#xA;Firefox. Na verdade, mais do que isso, também procurar fazer parte do time da&#xA;Mozilla do Brasil. Se isso vai acontecer, eu realmente não sei, o futuro é&#xA;imprevisível, mas definitivamente é uma possibilidade. Em particular, eu&#xA;participei do hackathon do Firefox OS, e gostei bastante da simplicidade dele&#xA;(me lembra da simplicidade do Arch!). É incrível, eu desenvolvi um aplicativo&#xA;para Firefox OS antes de desenvolver um aplicativo para Android. Hummmm,&#xA;provavelmente algo está errado (ou certo?).&lt;/p&gt;&#xA;&lt;p&gt;De qualquer modo, eu aprendi com a comunidade do Arch que não é necessário você&#xA;fazer parte da comunidade de maneira oficial para contribuir com um projeto. Lá&#xA;nos meus primórdios, eu sempre pensei em participar da comunidade do Ubuntu –&#xA;sabe, é bonitinho, você pode colocar no Facebook, no Google+, no seu portfólio&#xA;pessoal (&amp;ldquo;sou um membro XXX com a função YYY na comunidade do Ubuntu&amp;rdquo;) mas,&#xA;sinceramente, isso é uma tremenda bobagem. Bobagem, que eu digo, é ter o rótulo&#xA;&amp;ldquo;sou membro XXX&amp;rdquo;. Você não precisa de rótulo. Rótulo é coisa de capitalismo, é&#xA;coisa de mercado. A menos que você precise de investidores, isso é extremamente&#xA;desencorajado. Enfim, para se integrar, basta se integrar! Esperar um rótulo é&#xA;um erro grave.&lt;/p&gt;&#xA;&lt;p&gt;Existem várias maneiras de se integrar com comunidades livres. Uma delas é&#xA;simplesmente participando mais de discussões sobre isso (IRC, fóruns de&#xA;discussão, github, reddit – acredite!, listas de e-mail. Muitas pessoas (novas)&#xA;se sentem desconfortáveis com isso, talvez porque as portas de entrada&#xA;(&amp;lsquo;interfaces&amp;rsquo;) para esses canais de comunicação não sejam (não pareçam, na&#xA;verdade) tão amigáveis, tão Web (2, 3). Maaaaaaas isso não quer dizer nada.&lt;/p&gt;&#xA;&lt;p&gt;Vejamos o que mais. Já escrevi bastante. E não, não falei nada, esse é um post&#xA;de reflexão. Mas eu não precisava dizer isso para que você percebesse isso,&#xA;certo? Parar de rotular os posts provavelmente também pode ser uma boa ideia. Na&#xA;verdade, eu costumo fazer isso com certo equilíbrio, porque nem sempre é fácil&#xA;de perceber a verdadeira intenção por trás de um texto simplesmente pelo texto.&#xA;Existem alguns elementos não-verbais que não podem ser expressos direito&#xA;verbalmente. O meu uso (provavelmente) excessivo de parênteses interrompendo o&#xA;texto é uma forma (você já sabe, não é?) de tentar contornar essa situação e&#xA;que, a meu ver, é bastante efetiva (apesar de que eu não recomendo que você&#xA;escreva com excesso de parênteses em meios de comunicação relativamente mais&#xA;formais).&lt;/p&gt;&#xA;&lt;p&gt;Vou parar de escrever aqui, depois eu faço (ou não (&amp;hellip;)) uma continuação desse&#xA;post.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Escrito no Emacs&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: Software e outras coisas livres, revisitados - Parte 0.0.01&#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>(Usando) meu primeiro custom kernel
      </title>
      <link>https://perrotta.dev/pt/2014/01/usando-meu-primeiro-custom-kernel/</link>
      <pubDate>Sat, 25 Jan 2014 01:24:13 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <category>selfhosted</category>
      <guid>https://perrotta.dev/pt/2014/01/usando-meu-primeiro-custom-kernel/</guid>
      <description>&lt;p&gt;♠ Faz 2 dias que venho testando o Kernel&#xA;&lt;a href=&#34;https://wiki.archlinux.org/index.php/Linux-ck&#34;&gt;Linux-ck&lt;/a&gt;, cuja diferença em&#xA;relação ao kernel mainline é basicamente a aplicação de um conjunto de patches&#xA;(&amp;ldquo;ck&amp;rdquo;), os quais &lt;a href=&#34;https://en.wikipedia.org/wiki/Con_Kolivas&#34;&gt;Con Kolivas&lt;/a&gt;&#xA;mantêm, e o &lt;a href=&#34;https://en.wikipedia.org/wiki/Brain_Fuck_Scheduler&#34;&gt;Brainfuck&#xA;Scheduler&lt;/a&gt; (BFS), o qual&#xA;aparentemente é uma boa escolha para um desktop / notebook com poucos cores&#xA;(isto é, se você tiver mais de 4096 cores, por favor &lt;em&gt;não&lt;/em&gt; utilize o BFS – é&#xA;sério, eu li isso em algum lugar. Se sua CPU &lt;em&gt;só&lt;/em&gt; tiver 128 cores, pode usar!).&#xA;No Arch, a facilidade de utilizar / compilar um kernel customizado é enorme, já&#xA;que ele te dá toda a flexibilidade para isso (no Gentoo também, pra não dizer&#xA;que eu só falo do Arch =P). Além do mais, existe um repositório com o kernel já&#xA;compilado para diferentes arquiteturas, conhecido como&#xA;&lt;a href=&#34;https://wiki.archlinux.org/index.php/Repo-ck&#34;&gt;repo-ck&lt;/a&gt;, mantido pelo usuário&#xA;&lt;em&gt;graysky&lt;/em&gt; da comunidade do Arch.&lt;/p&gt;&#xA;&lt;p&gt;OK, e por que utilizar um custom kernel? &lt;em&gt;Por nada&lt;/em&gt;, só por hobby mesmo, talvez&#xA;pelo mesmo motivo de testar uma nova ROM para Android. Bom, diz-se por aí que&#xA;você pode ter um desempenho ligeiramente maior (mas nada &lt;em&gt;super&lt;/em&gt; notável) se&#xA;utilizar o linux-ck satisfazendo algumas condições: alguns stats podem ser&#xA;vistos &lt;a href=&#34;http://repo-ck.com/stats.pdf&#34;&gt;aqui&lt;/a&gt; (na verdade, esses stats são apenas&#xA;&lt;em&gt;trivia&lt;/em&gt; dos usuários de linux-ck, não tem nada de desempenho lá, pelo menos&#xA;não até hoje). &lt;a href=&#34;http://repo-ck.com/bench/cpu_schedulers_compared.pdf&#34;&gt;Esses&lt;/a&gt;&#xA;são os stats de desempenho.&lt;/p&gt;&#xA;&lt;p&gt;Da Wiki do Arch,&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;A major benefit of using the BFS is increased responsiveness. The benefits&#xA;however, are not limited to desktop feel. Graysky put together some&#xA;non-responsiveness based benchmarks to compare it to the CFS contained in the&#xA;&amp;ldquo;stock&amp;rdquo; linux kernel. Seven different machines were used to see if&#xA;differences exist and, to what degree they scale using performance based&#xA;metrics. Again, these end-points were never factors in the primary design&#xA;goals of the bfs. Results were encouraging.&lt;/p&gt;&#xA;&lt;p&gt;Many Archers elect to use this package for the BFS&amp;rsquo; excellent desktop&#xA;interactivity and responsiveness under any load situation. Additionally, the&#xA;bfs imparts performance gains beyond interactivity.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;É isso. Por sinal, se você quiser instalar o kernel ck para se divertir um&#xA;pouquinho, siga as instruções do repo ck (link acima). O processo deve ser&#xA;bastante &lt;em&gt;straightforward&lt;/em&gt; maaaaas, qualquer dúvida pergunta aí.&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: (Usando) meu primeiro custom kernel&#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/selfhosted/&#34;&gt;#selfhosted&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sugestão de guia de instalação do Windows 8[.1]
      </title>
      <link>https://perrotta.dev/pt/2014/01/sugest%C3%A3o-de-guia-de-instala%C3%A7%C3%A3o-do-windows-8.1/</link>
      <pubDate>Wed, 22 Jan 2014 16:11:11 -0300</pubDate><author>serendipity@perrotta.dev (Thiago Perrotta)</author>
      <category>dev</category>
      <category>legacy</category>
      <guid>https://perrotta.dev/pt/2014/01/sugest%C3%A3o-de-guia-de-instala%C3%A7%C3%A3o-do-windows-8.1/</guid>
      <description>&lt;h2 id=&#34;overview&#34;&gt;&#xA;  Overview&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/01/sugest%C3%A3o-de-guia-de-instala%C3%A7%C3%A3o-do-windows-8.1/#overview&#34; aria-label=&#34;Link to this section&#34;&gt;#&lt;/a&gt;&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A versão developer preview do Windows 8.1 expirou em 16 de janeiro. Isso implica&#xA;que o computador ficava reiniciando de duas em duas horas. A opção mais imediata&#xA;poderia ser procurar algo que parasse esse comportamento, mas&amp;hellip;vamos fazer as&#xA;coisas direitinho. Decidi instalar o Windows 8 (sim, do 8.1 pro 8. Não faz tanta&#xA;diferença assim, apesar do 8.1 ser ligeiramente melhor) no computador dos meus&#xA;pais.&lt;/p&gt;&#xA;&lt;p&gt;Em geral eu utilizo um processo bastante similar durante cada instalação, então&#xA;vou aproveitar que terei que realizá-lo mais uma vez para documentá-lo aqui.&#xA;Ademais, o objetivo é ter um Windows o mais clean e KISS possível (isso não é&#xA;100% verdadeiro. Na verdade, o objetivo é não introduzir &lt;em&gt;bloat&lt;/em&gt; na história).&#xA;Então, vamos lá:&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/2014/01/sugest%C3%A3o-de-guia-de-instala%C3%A7%C3%A3o-do-windows-8.1/#instala%c3%a7%c3%a3o&#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;Grave a .iso do Windows 8 no seu USB Flash Drive (aka Pendrive). Se você ainda&#xA;utiliza CDs ou DVDs, diga-me: qual é o seu problema?? Procurar &amp;ldquo;Windows 7 USB&#xA;DVD Download Tool&amp;rdquo;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Boote pelo seu pendrive. Se a sua placa-mãe tem um bom design, você faz isso&#xA;através de uma simples tecla (geralmente F2 ou F12, mas isso sempre varia.&#xA;Padrões, para quê?). Procure algo como &amp;ldquo;boot menu&amp;rdquo;. Caso contrário, altere a&#xA;ordem de Boot manualmente, através das configurações do chipset (BIOS).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Particione o HD. Eu gosto de deixar um espaço de 30 GB no final, caso eu&#xA;resolva fazer um dual boot mais tarde. A seu gosto.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Durante a tela de instalação: não saia avançando que nem um louco. Procure por&#xA;&amp;ldquo;personalizar&amp;rdquo;, evitando &amp;ldquo;configurações expressas&amp;rdquo; sempre que possível.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Modifique as suas configurações a gosto. Em particular, pode ser que convenha&#xA;mudar as definições do Windows Update. No mínimo, deixe &amp;ldquo;atualizações mais&#xA;importantes&amp;rdquo;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;(Opcional) Ative o Do Not Track do IE caso ele não esteja ativado por default.&#xA;Na verdade, se você for desinstalar o IE mais tarde, essa etapa não é&#xA;necessária.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Enviar informações à Microsoft: configure a seu gosto.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&amp;ldquo;Compartilhar informações com aplicativos&amp;rdquo;: desative TUDO. Principalmente a&#xA;plataforma de localização.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Usar uma conta do Microsoft? Olha, eu sempre fiz isso. Mas eu nunca utilizei&#xA;nenhum aplicativo da Modern UI. Então, sinceramente? Escolhi criar uma conta&#xA;local. Note que se você decidir baixar algum aplicativo mais tarde, precisará&#xA;de uma conta da Microsoft de qualquer modo. Pense nisso.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;pós-instalação&#34;&gt;&#xA;  Pós-instalação&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/01/sugest%C3%A3o-de-guia-de-instala%C3%A7%C3%A3o-do-windows-8.1/#p%c3%b3s-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;Nesse ponto o Windows está instalado. Agora vamos aos &lt;em&gt;tweaks&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Remova TODOS os aplicativos da Modern UI. Todos. Exceto: música, fotos, vídeo&#xA;e leitor. Nesse ponto só deve sobrar, além deles, a Loja e o Internet Explorer&#xA;(bom, a área de trabalho também).&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Abra o Internet Explorer e baixe ou o Chrome ou o Firefox. A gosto. Pode&#xA;utilizar o IE da Modern UI mesmo. Pronto? Agora mude o seu navegador padrão.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Agora, eu gosto de me livrar (pelo menos ocultar) da Modern UI. Utilize um&#xA;desses dois programas, ou outro que preferir: Classic Shell ou Start Menu 8.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Se durante qualquer wizard / setup a janela se mover para fora do display&#xA;visível, você pode apertar Alt + Space e depois selecionar a opção de movê-la&#xA;+ as teclas direcionais para resolver o seu problema.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Depois, vamos baixar alguns softwares para uso genérico. Nesse ponto, pode ser&#xA;interessante instalar o AdBlock plus e/ou os seus complementos favoritos para&#xA;seu browser para evitar algumas inconveniências. Eis a minha lista de&#xA;software:&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Avast (anti-vírus) (opcional). A menos que você seja um usuário experiente e&#xA;saiba o que está acessando.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;CCleaner (registro, startup, etc). Alternativamente, você pode querer utilizar&#xA;o &lt;strong&gt;msconfig&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Drivers! Impressora, placa de vídeo, etc&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Flash (opcional)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;GIMP (edição de imagens)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;IrFanView + plug-ins + idioma (imagens)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Java (opcional)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;LibreOffice (pacote office)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Notepad 2&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Notepad++&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;PDF X-Change Viewer (PDF)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;PeaZip (ZIP/RAR/etc) - melhor integrado ao Windows do que o 7-Zip&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;VLC (vídeos, música). Alternativa: BSPlayer&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;qBitTorrent (cliente de torrent)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Isso é o básico. Mais do que isso depende das necessidades de uso de cada um. No&#xA;entanto, eis uma lista que pode ser útil:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Chocolatey / Npackd (espécie de gerenciador de pacotes para o Windows)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Clementine (biblioteca de músicas)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Comodo Firewall&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Cygwin (ambiente UNIX no Windows)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;DirectX&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Dropbox ou &lt;a href=&#34;https://copy.com&#34;&gt;Copy&lt;/a&gt; (cloud syncing service)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;PowerISO / Daemon Tools (CD/DVD virtual)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Sandboxie (chroot like)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Skype / Raidcall&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Thunderbird (cliente de e-mail)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;VirtualBox (máquinas virtuais)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;É provável que, nesse ponto, você não tenha prestado muita atenção e (por isso)&#xA;tenha instalado alguma barra ou &lt;em&gt;crapware&lt;/em&gt; durante a instalação dos outros&#xA;programas. Agora vai lá e remove tudo o que não presta.&lt;/p&gt;&#xA;&lt;h2 id=&#34;pós-pós-instalação&#34;&gt;&#xA;  Pós-Pós-Instalação&#xA;  &lt;a class=&#34;heading-anchor&#34; href=&#34;https://perrotta.dev/pt/2014/01/sugest%C3%A3o-de-guia-de-instala%C3%A7%C3%A3o-do-windows-8.1/#p%c3%b3s-p%c3%b3s-instala%c3%a7%c3%a3o&#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;Remova o Internet Explorer.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Desinstale componentes do Windows não necessários (&amp;ldquo;ativar ou desativar&#xA;recursos do Windows&amp;rdquo;)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Desative os efeitos desnecessários da área de trabalho.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Instalar add-ons para o seu web browser.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Checar a lista de programas que iniciam com o Windows (pode ter um monte&#xA;agora) ==&amp;gt; CCleaner ou msconfig&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Pronto, isso resume o básico. Se você tiver um HD Externo, convém copiar os&#xA;setups utilizados agora para poupar algum trabalho da próxima vez. Esse não é um&#xA;guia de &lt;strong&gt;manutenção&lt;/strong&gt;, então vou parar por aqui. &lt;em&gt;Happy hacking!&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: Sugestão de guia de instalação do Windows 8[.1]&#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>
  </channel>
</rss>
