<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>bisko.be</title><description>Blog pessoal e textos de bisko - ideias sobre desenvolvimento, aventuras e vida.</description><link>https://bisko.be/pt/</link><language>pt</language><item><title>Rodando o Ollama com GPUs antigas no CachyOS</title><link>https://bisko.be/pt/posts/dev/running-ollama-with-older-gpus-on-cachyos/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/running-ollama-with-older-gpus-on-cachyos/</guid><description>Hoje eu estava migrando minha VM com Windows 11 para o Linux, para ter mais flexibilidade nos serviços rodando nela, e encontrei um problema: o Ollama não conseguia rodar nas minhas GPUs antigas - GTX1070 e GTX970</description><pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h3 id=&quot;tldr&quot;&gt;TL;DR;&lt;/h3&gt;
&lt;p&gt;O &lt;code&gt;ollama-cuda&lt;/code&gt; no CachyOS vem (neste momento) com suporte apenas para &lt;code&gt;compute &gt;= 7.5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Se você tem GPUs mais antigas, com &lt;code&gt;compute&lt;/code&gt; anterior, você TEM QUE fazer uma de 2 coisas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compilar o &lt;code&gt;ollama-cuda&lt;/code&gt; a partir do código-fonte, com suporte aos targets de compute mais antigos&lt;/li&gt;
&lt;li&gt;Instalar o &lt;code&gt;ollama-vulkan&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eu escolhi o &lt;code&gt;ollama-vulkan&lt;/code&gt; e está funcionando perfeitamente!&lt;/p&gt;
&lt;h3 id=&quot;hora-da-história&quot;&gt;Hora da história&lt;/h3&gt;
&lt;p&gt;Hoje tive a inspiração de finalmente desligar minha VM com Windows 11 e migrá-la para o Linux.&lt;/p&gt;
&lt;p&gt;Os requisitos eram conseguir rodar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama - para a mágica dos modelos locais&lt;/li&gt;
&lt;li&gt;Docker - para desenvolvimento remoto&lt;/li&gt;
&lt;li&gt;Steam - para jogar&lt;/li&gt;
&lt;li&gt;Jellyfin - para o arquivo de vídeos caseiros&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Agora vou focar apenas no Ollama, porque foi uma experiência interessante e me fez pensar por que as coisas não são mais óbvias.&lt;/p&gt;
&lt;p&gt;A máquina tem 2 GPUs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GTX 1070 - 8GB&lt;/li&gt;
&lt;li&gt;GTX 970 - 4GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eu queria rodar o Ollama nelas, para brincar com modelos locais e ver como poderia integrá-los em alguns projetos. Por exemplo: anonimizar dados localmente, fazer uma implementação não destrutiva do OpenClaw que sirva para os meus casos de uso, OCR local para documentos que escaneio com o celular, automatizar algumas coisas do gerenciamento cotidiano de uma casa.&lt;/p&gt;
&lt;p&gt;Então, naturalmente, instalei o &lt;code&gt;ollama&lt;/code&gt; e o &lt;code&gt;ollama-cuda&lt;/code&gt;, já que tenho 2 GPUs Nvidia aqui, esperando que funcionasse sem problemas, já que estava funcionando no Windows poucos minutos antes.&lt;/p&gt;
&lt;p&gt;Iniciei o Ollama, carreguei o &lt;code&gt;qwen3:8b&lt;/code&gt; para um experimento rápido e… estava rodando na CPU 🤔&lt;/p&gt;
&lt;p&gt;As GPUs eram perfeitamente capazes de manter o modelo na VRAM, mas por algum motivo o Ollama escolhia rodá-lo na CPU.&lt;/p&gt;
&lt;p&gt;Depois de tentar descobrir o motivo pelos logs, pedi ajuda ao Claude, que chegou a uma conclusão bem desanimadora:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;The&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; logs&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; tell&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; story&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; clearly.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Both&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; your&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GPUs&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; are&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; detected&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; but&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; then&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; filtered&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; out&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; because&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; they&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; fail&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; initialization:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  &quot;filtering device which didn&apos;t fully initialize&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; id=GPU-eb132a13-b9f4-40e3-d85d-60f211dfd21e&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ...&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; library=CUDA&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  &quot;filtering device which didn&apos;t fully initialize&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; id=GPU-550263c8-37e2-2a25-c0b6-10cc7511ed20&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ...&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; library=CUDA&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  The&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; reason&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; library&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; bundled&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; with&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 0.17.4&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; was&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; compiled&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; these&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; architectures&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; only:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  CUDA.0.ARCHS&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;=750,800,860,870,880,890,900,1000,1030,1100,1200,1210&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  The&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; minimum&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; supported&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; compute&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; capability&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 7.5&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (Turing &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; RTX&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; 20xx&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; series&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;). Your GPUs are older than that:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  ┌──────────┬────────────────────┬──────────────┐&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;   GPU&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;    │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Compute&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Capability&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Architecture&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  ├──────────┼────────────────────┼──────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GTX&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1070&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; │&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 6.1&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Pascal&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;       │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  ├──────────┼────────────────────┼──────────────┤&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GTX&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 970&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;  │&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 5.2&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;                │&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Maxwell&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;      │&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  └──────────┴────────────────────┴──────────────┘&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  Neither&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; is&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; in&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; the&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; supported&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; list,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; so&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; initialization&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; fails&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; both,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; and&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; falls&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; back&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CPU-only&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; inference.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  Your&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; options:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  1.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Downgrade&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; an&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; older&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; version&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; that&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; still&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; included&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Pascal/Maxwell&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; support&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (pre-0.6.x &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;era&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; had&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; broader&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; arch&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; coverage,&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; but&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; check&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; release&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; notes&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; for&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; specifics&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  2.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Build&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Ollama&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; from&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; source&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; with&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; CUDA_ARCHITECTURES=&quot;52;61;75;80;86&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; include&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; your&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GPU&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; architectures.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;  3.&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Upgrade&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; GPUs&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; to&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; at&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; least&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; an&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; RTX&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 2060&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; or&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; newer&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; (compute &lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;7.5+&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Isso foi meio decepcionante para mim, porque quero usar as GPUs o máximo possível antes de partir para uma nova.&lt;/p&gt;
&lt;p&gt;Eu não queria realmente recompilar o Ollama a partir do código-fonte, já que ele deveria funcionar de cara, e fiquei muito confuso sobre por que não funcionava, sendo que na instalação do Windows ele suportava essas arquiteturas.&lt;/p&gt;
&lt;p&gt;Essas placas também apareciam como suportadas no site do Ollama!&lt;/p&gt;
&lt;p&gt;Para resumir uma longa história de pesquisas no Google:&lt;/p&gt;
&lt;p&gt;Acontece que o &lt;code&gt;ollama-cuda&lt;/code&gt; vem apenas com os requisitos listados acima… e a sugestão foi instalar o &lt;code&gt;ollama-vulkan&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Depois de fazer isso, tudo passou a funcionar muito bem!&lt;/p&gt;</content:encoded><category>dev</category><category>linux</category><category>llm</category><category>ollama</category><category>cachyos</category><category>vulcan</category><category>cuda</category></item><item><title>[Linux] Recuperando uma sessão desconectada do `apt dist-upgrade`</title><link>https://bisko.be/pt/posts/dev/linux-recovering-a-disconnected-apt-dist-upgrade-session/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/linux-recovering-a-disconnected-apt-dist-upgrade-session/</guid><description>Hoje eu estava atualizando minha instalação do Proxmox remotamente pelo console embutido, mas esqueci o que estava fazendo e fechei a aba no meio do processo. O resultado foi que não consegui me conectar de novo, já que os pacotes continuavam sendo atualizados em segundo plano e a atualização tinha feito uma pergunta sobre substituir um arquivo e estava esperando uma resposta</description><pubDate>Wed, 23 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hoje eu estava atualizando minha instalação do Proxmox remotamente pelo console embutido, mas esqueci o que estava fazendo e fechei a aba no meio do processo.&lt;/p&gt;
&lt;p&gt;O resultado foi que não consegui me conectar de novo, já que os pacotes continuavam sendo atualizados em segundo plano e a atualização tinha feito uma pergunta sobre substituir um arquivo e estava esperando pela minha resposta.&lt;/p&gt;
&lt;p&gt;Ou seja, eu conseguia entrar via SSH, mas não podia fazer nada, porque o processo ainda esperava uma resposta num console ao qual eu não conseguia me conectar, já que a interface não abria.&lt;/p&gt;
&lt;p&gt;Depois de uma olhada rápida por aí, tropecei em uma &lt;a href=&quot;https://serverfault.com/questions/19634/how-to-reconnect-to-a-disconnected-ssh-session&quot;&gt;thread do Serverfault&lt;/a&gt; que mencionava o uso do &lt;code&gt;reptyr&lt;/code&gt; para assumir o controle da sessão de terminal via SSH.&lt;/p&gt;
&lt;p&gt;Estou registrando aqui exatamente o que foi feito para recuperar a sessão e terminar a atualização:&lt;/p&gt;
&lt;p&gt;A partir &lt;a href=&quot;https://serverfault.com/questions/19634/how-to-reconnect-to-a-disconnected-ssh-session#comment1506308_979180&quot;&gt;deste comentário&lt;/a&gt;:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;git&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; clone&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; https://github.com/nelhage/reptyr&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;cd&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; reptyr&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;make&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Isso instalou o &lt;code&gt;reptyr&lt;/code&gt; na máquina.&lt;/p&gt;
&lt;p&gt;Depois procurei todas as sessões abertas com &lt;code&gt;ps ax | grep pts&lt;/code&gt; para encontrar o processo que eu queria.&lt;/p&gt;
&lt;p&gt;Então encontrei o processo mais acima na árvore de chamadas que tinha um &lt;code&gt;pts&lt;/code&gt; associado a ele e me anexei a ele pelo seu PID:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;reptyr&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -T&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1390511&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aí eu consegui terminar a atualização! 🎉&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Planta de hibisco sob os raios da manhã</title><link>https://bisko.be/pt/posts/blog/hibiscus-plant-under-the-morning-rays/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/hibiscus-plant-under-the-morning-rays/</guid><pubDate>Sun, 21 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Grande flor vermelha de hibisco em foco, com botões acima, contra um céu azul com nuvens finas e casas de vilarejo ao fundo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_2327-b97d8968.C7nMUQ33_Z1YnOwk.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flower</category><category>flowers</category><category>nature</category></item><item><title>Timelapse: Porto à beira do rio</title><link>https://bisko.be/pt/posts/blog/timelapse-porto-by-the-river/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/timelapse-porto-by-the-river/</guid><description>Há alguns dias tivemos um encontro da equipe no Porto. Finalmente conheci pessoalmente alguns colegas que eu só tinha visto por Zoom nos últimos dois anos. Passamos alguns dias no incrível espaço de coworking Porto I/O Riverside. O espaço tem uma varanda incrível, que aproveitamos bastante e onde tivemos</description><pubDate>Tue, 07 Jun 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Há alguns dias tivemos um encontro da equipe no &lt;a href=&quot;https://en.wikipedia.org/wiki/Porto&quot;&gt;Porto&lt;/a&gt;. Finalmente conheci pessoalmente alguns colegas que eu só tinha visto por Zoom nos últimos dois anos.&lt;/p&gt;
&lt;p&gt;Passamos alguns dias no incrível espaço de coworking &lt;a href=&quot;https://porto.io/en/location/riverside/&quot;&gt;Porto I/O Riverside&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;O espaço tem uma varanda incrível, que aproveitamos bastante, e tivemos várias discussões produtivas quando não nos perdíamos demais só olhando o tráfego de barcos no rio&lt;/p&gt;
&lt;p&gt;Num daqueles momentos em que estávamos apenas sentados em silêncio, admirando a paisagem, consegui capturar um timelapse bem bonito.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>Timelapse</category><category>travel</category><category>boats</category><category>Porto</category><category>Portugal</category><category>river</category><category>roofs</category></item><item><title>[Linux] Syncthing – sistema de arquivos somente leitura ao rodar como serviço</title><link>https://bisko.be/pt/posts/dev/linux-syncthing-read-only-file-system-when-running-as-service/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/linux-syncthing-read-only-file-system-when-running-as-service/</guid><description>Já faz alguns meses que uso o Syncthing para sincronizar minha cópia de trabalho com um servidor de desenvolvimento local. No começo, eu o usava logando e rodando manualmente pela CLI. Estava funcionando bem, então nem pensei duas vezes quando passei a rodá-lo como serviço.</description><pubDate>Wed, 06 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Já faz alguns meses que uso o &lt;a href=&quot;https://syncthing.net/&quot;&gt;Syncthing&lt;/a&gt; para sincronizar minha cópia de trabalho com um servidor de desenvolvimento local.&lt;/p&gt;
&lt;p&gt;No começo, eu o usava logando e rodando manualmente pela CLI. Estava funcionando bem, então nem pensei duas vezes quando passei a rodá-lo como serviço. Ele iniciou, sincronizou alguns dados, tudo certo.&lt;/p&gt;
&lt;p&gt;Até que não estava, claro! 🙂&lt;/p&gt;
&lt;p&gt;Acontece que eu não percebi um monte de erros aparecendo nos logs dizendo que o sistema de arquivos no servidor de desenvolvimento era somente leitura, e isso estava fazendo o Syncthing não sincronizar nada.&lt;/p&gt;
&lt;p&gt;Achei que fosse um bug e que ele só estava mostrando &lt;code&gt;Out of Sync&lt;/code&gt; para as pastas, mas que na verdade estava sincronizando. Pois é, eu estava errado.&lt;/p&gt;
&lt;p&gt;Depois de algumas horas depurando e sem encontrar nenhuma pista nos fóruns em algumas buscas no Google, cheguei a um &lt;a href=&quot;https://wiki.archlinux.org/title/syncthing#read-only_file_system_error_on_/etc_although_run_as_root&quot;&gt;artigo sobre o Syncthing na ArchWiki&lt;/a&gt;, que mencionava exatamente o meu caso:&lt;/p&gt;
&lt;p&gt;read-only file system error on /etc although run as root&lt;/p&gt;
&lt;p&gt;Era exatamente o meu caso de uso, exceto que a pasta problemática não era &lt;code&gt;/etc&lt;/code&gt;, e sim &lt;code&gt;/usr/local/src&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Bem, depois de ler o que dizia, descobri que, se você roda o Syncthing (ou qualquer coisa) via &lt;code&gt;systemd&lt;/code&gt; e tem &lt;code&gt;ProtectSystem&lt;/code&gt; configurado como &lt;code&gt;full&lt;/code&gt; para o serviço, alguns diretórios ficam somente leitura por padrão. &lt;code&gt;/usr&lt;/code&gt; é um desses caminhos.&lt;/p&gt;
&lt;p&gt;Para resolver, você precisa adicionar uma nova linha na configuração do serviço e reiniciar o serviço (e rodar &lt;code&gt;daemon-reload&lt;/code&gt;):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ReadWritePaths=/usr/local/src&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Depois disso, o Syncthing deve funcionar normalmente.&lt;/p&gt;</content:encoded><category>dev</category><category>Homelab</category><category>linux</category><category>permissions</category><category>read-only</category><category>syncthing</category><category>systemd</category></item><item><title>Acesso Negado</title><link>https://bisko.be/pt/posts/blog/access-denied/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/access-denied/</guid><pubDate>Sat, 31 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Três vespas caminham ao redor de um buraco enferrujado em um poste de portão de metal, uma delas pousada em uma chave presa na fechadura, ao lado de flores brancas&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_4506-8e7e236d.BcqhatkL_zWajt.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>door</category><category>insect</category><category>insects</category><category>key</category><category>lock</category><category>nature</category><category>wasp</category><category>wasps</category></item><item><title>Pôr do Sol de Lavanda</title><link>https://bisko.be/pt/posts/blog/lavender-sunset/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/lavender-sunset/</guid><pubDate>Sat, 03 Jul 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Espigas de lavanda em contraluz, em silhueta, com o sol baixo brilhando atrás da haste mais alta, contra um céu azul e árvores escuras&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/image_534908fa-cab6-4233-832b-e401bab27a30.img_3963-ccdc9838.CHRt9-9J_ZxRqVE.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>Uncategorized</category><category>flower</category><category>sun</category></item><item><title>Timelapse: Uma tempestade se aproximando</title><link>https://bisko.be/pt/posts/blog/timelapse-a-storm-rolling-over/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/timelapse-a-storm-rolling-over/</guid><pubDate>Sat, 26 Jun 2021 00:00:00 GMT</pubDate><content:encoded/><category>blog</category><category>Photography</category><category>clouds</category><category>storm</category><category>Timelapse</category><category>weather</category></item><item><title>Raios de sol sobre o amarelo</title><link>https://bisko.be/pt/posts/blog/sunrays-on-yellow/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/sunrays-on-yellow/</guid><pubDate>Sat, 05 Jun 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Flores amarelas de onagra iluminadas pelo sol, com estames delicados, contra um fundo desfocado de folhas verdes e céu brilhante&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/image_42f35f6f-2341-47f4-a7a0-eb0a75d3678f.img_3167-8b4daa1a.WUo3hBS8_BI9FB.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flower</category><category>sunrays</category><category>yellow</category></item><item><title>Rosas</title><link>https://bisko.be/pt/posts/blog/roses/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/roses/</guid><pubDate>Sun, 23 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Rosas vermelhas vibrantes em plena floração e botões em uma roseira trepadeira contra um céu azul, com a beira de um telhado à direita&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_2866-bd30e710.fEDlZ8s7_Z3rCvg.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category></item><item><title>Nublado com chance de tulipas</title><link>https://bisko.be/pt/posts/blog/cloudy-with-a-chance-of-tulips/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/cloudy-with-a-chance-of-tulips/</guid><description>Uma lembrança de 2013, quando eu estava visitando meu avô na aldeia. Encontrei esta tulipa linda cortada e jogada na beira da estrada.</description><pubDate>Mon, 03 May 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Tulipa vermelha iluminada por trás pela luz do sol, vista de baixo contra um céu azul profundo com nuvens brancas, com uma folha verde subindo ao lado&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1936&quot; height=&quot;2592&quot; src=&quot;/_astro/img_1645-bb728269.BHDQHNQt_1vNnmk.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Uma lembrança de 2013, quando eu estava visitando meu avô na aldeia. Encontrei esta tulipa linda cortada e jogada na beira da estrada.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>clouds</category><category>flower</category><category>flowers</category><category>nature</category><category>red</category><category>sky</category><category>travel</category></item><item><title>[Linux] Executando vários comandos em vários servidores em paralelo</title><link>https://bisko.be/pt/posts/dev/linux-running-multiple-commands-on-multiple-servers-in-parallel/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/linux-running-multiple-commands-on-multiple-servers-in-parallel/</guid><description>Tenho um cluster de Raspberry Pis em casa rodando Docker Swarm. Para manter tudo em ordem, todos usam a mesma configuração – usuários, versões do Docker, etc. Às vezes, algumas atualizações exigem rodar a mesma coisa em todos os nós do cluster – por exemplo – criar uma nova rede macvlan do Docker. Para</description><pubDate>Mon, 19 Apr 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tenho um cluster de Raspberry Pis em casa rodando Docker Swarm. Para manter tudo em ordem, todos usam a mesma configuração – usuários, versões do Docker, etc.&lt;/p&gt;
&lt;p&gt;Às vezes, algumas atualizações exigem rodar a mesma coisa em todos os nós do cluster – por exemplo – criar uma nova rede macvlan do Docker.&lt;/p&gt;
&lt;p&gt;Para fazer isso, é preciso rodar os mesmos comandos em todos os nós manualmente, entrando via &lt;strong&gt;ssh&lt;/strong&gt; em cada um deles, executando os comandos e passando para o próximo.&lt;/p&gt;
&lt;p&gt;Como estou tentando reduzir meu trabalho a longo prazo e deixar tudo o mais organizado possível, comecei a procurar maneiras de rodar comandos em todos os nós ao mesmo tempo.&lt;/p&gt;
&lt;h3 id=&quot;iteração-1-script-python-customizado&quot;&gt;Iteração 1: Script Python customizado&lt;/h3&gt;
&lt;p&gt;A primeira iteração foi criar um script Python customizado. Por um lado, era para aprender um pouco melhor Python; por outro, eu não tinha encontrado uma forma boa de rodar os comandos de um jeito mais nativo.&lt;/p&gt;
&lt;p&gt;Como era de se esperar (ei, ainda tenho pouca experiência com a linguagem 🙂 ), ele virou uma bagunça inchada muito rápido e quebrava com facilidade.&lt;/p&gt;
&lt;p&gt;Eu precisava achar outro jeito de fazer isso, sem ter que reaprender o que eu fiz 3 semanas atrás e o que quebrou da última vez.&lt;/p&gt;
&lt;h3 id=&quot;iteração-2-pssh&quot;&gt;Iteração 2: &lt;code&gt;pssh&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Pesquisando por aí, esbarrei no &lt;code&gt;[pssh](https://linux.die.net/man/1/pssh)&lt;/code&gt;, que consegue rodar coisas em paralelo via SSH.&lt;/p&gt;
&lt;p&gt;Considerando tudo, foi bem fácil colocá-lo para funcionar.&lt;/p&gt;
&lt;p&gt;O problema era que, para rodar algumas das coisas, eu precisava executá-las via &lt;code&gt;sudo&lt;/code&gt;. Ficar passando senhas por aí não era o ideal, então tive que pesquisar de novo para descobrir como enviar a senha do &lt;code&gt;sudo&lt;/code&gt; quando o servidor remoto a pedisse.&lt;/p&gt;
&lt;p&gt;Acontece que é bem fácil se você topar com o &lt;a href=&quot;https://unix.stackexchange.com/a/487558/134974&quot;&gt;comentário certo no StackOverflow&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;a-versão-resumida-tldr-é&quot;&gt;A versão resumida (TL;DR;) é:&lt;/h3&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;stty&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -echo&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;printf&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;Password: &quot;&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;read&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; PASS&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;stty&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; echo&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;echo&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;${&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;PASS&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;}&quot;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; \&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;pssh&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -h&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;HOSTFIL&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;E&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -o&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; /tmp/output&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -t&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 0&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -I&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;`&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;cat&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; ./commands.sh`&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;O &lt;code&gt;-I &quot;`cat ./commands.sh`&quot;&lt;/code&gt; precisa ser feito exatamente assim (entre aspas e crases desse jeito); caso contrário, ele não executa os comandos direito. A senha vai ser enviada como um comando separado, e não captada como entrada do &lt;strong&gt;sudo&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A outra pegadinha é que, por causa de como isso está montado, é preciso rodar o &lt;code&gt;sudo&lt;/code&gt; com o parâmetro &lt;code&gt;-S&lt;/code&gt;, para que ele leia a senha corretamente.&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Noite estrelada</title><link>https://bisko.be/pt/posts/blog/starry-night/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/starry-night/</guid><description>Recentemente fomos passar férias nas montanhas da Bulgária. Em uma das noites, o céu estava limpo o bastante para testar o novo modo noturno de fotos do iPhone 12. As primeiras tentativas ficaram um pouco ruidosas e não mostravam muitos detalhes. Por sorte, compartilhei esta foto com meu primo e ele comentou que</description><pubDate>Tue, 09 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recentemente fomos passar férias nas montanhas da Bulgária.&lt;/p&gt;
&lt;p&gt;Em uma das noites, o céu estava limpo o bastante para testar o novo modo noturno de fotos do iPhone 12.&lt;/p&gt;
&lt;p&gt;As primeiras tentativas ficaram um pouco ruidosas e não mostravam muitos detalhes.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Leve brilho verde de aurora sobre pinheiros e estrelas, visto de uma varanda sob o beiral de um telhado&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1381-10c608c2.DVecqBvr_Z1VJ5i5.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Por sorte, compartilhei esta foto com meu primo e ele comentou que eu podia tentar fotografar em RAW, já que esse formato deve manter mais informação que pode ser ajustada depois do clique.&lt;/p&gt;
&lt;p&gt;Foi o que fiz, ativando o salvamento das fotos em ProRAW. A foto resultante ficou parecida com a de cima, mas aí fui editá-la no app Fotos do iOS, sem usar nenhuma ferramenta externa.&lt;/p&gt;
&lt;p&gt;Depois de alguns ajustes, os detalhes começaram a aparecer muito bem contra o fundo escuro do céu.&lt;/p&gt;
&lt;p&gt;O resultado final ficou bem agradável!&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Céu estrelado escuro com uma névoa pálida e luminosa acima de pinheiros iluminados de verde, emoldurado pelo guarda-corpo de uma varanda&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1380-3c06f94f.9xJS155n_VMvSG.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;E uma curiosidade sobre a foto: o brilho forte no céu na verdade é fumaça da chaminé do hotel, que só vi enquanto tirava as fotos, não a olho nu. Estava tããão escuro.&lt;/p&gt;
&lt;p&gt;Com certeza vou continuar experimentando a fotografia no modo Noite no futuro, em céus mais limpos e escuros!&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>night-photos</category><category>travel</category></item><item><title>Weirdy, o Boneco de Neve</title><link>https://bisko.be/pt/posts/blog/weirdy-the-snowman/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/weirdy-the-snowman/</guid><description>Às vezes a neve está congelada demais para fazer uma bola decente para um boneco de neve. Nesses casos, por que não construí-lo tijolo por tijolo, ou camada por camada, como se fosse uma estrutura de Lego?</description><pubDate>Sun, 31 Jan 2021 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Boneco de neve com um chapéu de escorredor de metal, nariz de cenoura, olhos contornados de vermelho e boca vermelha, com braços de graveto turquesa, sobre uma mesa de madeira coberta de neve&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/image_af25d50e-4c23-444f-9224-f7c5c1bceca3.img_0953-83f032c2.C2lW_tiM_1jpdxL.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Às vezes a neve está congelada demais para fazer uma bola decente para um boneco de neve. Nesses casos, por que não construí-lo tijolo por tijolo, ou camada por camada, como se fosse uma estrutura de Lego?&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>Winter</category><category>ice</category><category>snowman</category></item><item><title>O Gafanhoto</title><link>https://bisko.be/pt/posts/blog/the-grasshopper/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/the-grasshopper/</guid><description>Encontrei esse carinha relaxando ao lado do meu carro numa manhã bem fria.</description><pubDate>Tue, 08 Dec 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Gafanhoto verde, parecido com um esperança, parado sobre asfalto cinza e áspero, com as longas antenas arrastando atrás e grama desfocada ao fundo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_0416-de3b3257.C7SwA0Oo_ZcuH8m.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Encontrei esse carinha relaxando ao lado do meu carro numa manhã bem fria.&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>Animals</category><category>cold</category><category>grasshopper</category><category>green</category><category>morning</category><category>Photography</category></item><item><title>O “Lápis”</title><link>https://bisko.be/pt/posts/blog/the-pencil/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/the-pencil/</guid><description>Fomos para as montanhas numa viagem recente. Era um lugar bonito e isolado. Só umas poucas casas e um restaurante. Ao lado de um lago/represa artificial abandonado. Os mosquitos e o calor foram nossos inimigos mortais, mas demos um jeito. Como não havia muito o que fazer por perto, tivemos que improvisar atividades.</description><pubDate>Sun, 08 Nov 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Graveto de madeira desgastada pelo tempo, com a ponta afiada e vários furinhos, deitado sobre um piso de tábuas de madeira escura&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_3189-041bec7e.ylsLA4bE_Zu4r9W.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Fomos para as montanhas numa viagem recente. Era um lugar bonito e isolado. Só umas poucas casas e um restaurante. Ao lado de um lago/represa artificial abandonado.&lt;/p&gt;
&lt;p&gt;Os mosquitos e o calor foram nossos inimigos mortais, mas demos um jeito.&lt;/p&gt;
&lt;p&gt;Como não havia muito o que fazer por perto, tivemos que improvisar atividades. Por sorte, meu filho tropeçou numa pedra grande e retangular e achou fascinante carregá-la por aí. Eu também achei fascinante.&lt;/p&gt;
&lt;p&gt;Cada lado tinha uma textura diferente, como lixas de granulações variadas.&lt;/p&gt;
&lt;p&gt;Também tínhamos um monte de galhos mais velhos, que tinham caído das árvores ao redor do lugar.&lt;/p&gt;
&lt;p&gt;Depois de uma ponderação cuidadosa de alguns segundos, começamos a explorar o maravilhoso mundo de deixar gravetos mais pontudos.&lt;/p&gt;
&lt;p&gt;Um dos gravetos ficou igualzinho a um lápis! Tinha um furo de tamanho perfeito para encaixar um pedacinho de grafite de um lápis de verdade, e funcionou!&lt;/p&gt;
&lt;p&gt;Desenhamos pelo chão com ele e foi incrível.&lt;/p&gt;</content:encoded><category>blog</category><category>Quick &amp;amp; Easy</category><category>travel</category><category>Adventures</category><category>forest</category><category>stone</category><category>woodwork</category></item><item><title>Campânulas-brancas</title><link>https://bisko.be/pt/posts/blog/snowdrops/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/snowdrops/</guid><description>Uma viagem de volta a 2007.</description><pubDate>Thu, 08 Oct 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Três flores de campânula-branca, com marcações verdes, inclinadas em hastes finas ao lado do tronco de uma árvore e de uma cerca de madeira&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1024&quot; height=&quot;768&quot; src=&quot;/_astro/c7a42ddf-26db-487f-8ca3-20b5ef6704dc_1_105_c-bd84ccbc.nK60jHnF_Z1KzMGp.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Uma viagem de volta a 2007.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flowers</category><category>snowdrops</category></item><item><title>Descobrindo a senha numérica de um arquivo zip usando apenas utilitários de linha de comando</title><link>https://bisko.be/pt/posts/dev/guessing-a-numeric-zip-file-password-only-with-command-line-utilities/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/guessing-a-numeric-zip-file-password-only-with-command-line-utilities/</guid><description>Hoje recebi minha fatura mensal do meu provedor de internet e algo me pareceu estranho. A fatura, contida no e-mail, estava em um arquivo ZIP com senha. Sem falar o quão estranho foi receber um anexo em formato ZIP nos dias de hoje (spam, malware, phishing, etc.), a</description><pubDate>Mon, 14 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hoje recebi minha fatura mensal do meu provedor de internet e algo me pareceu estranho.&lt;/p&gt;
&lt;p&gt;A fatura, contida no e-mail, estava em um arquivo ZIP com senha.&lt;/p&gt;
&lt;p&gt;Sem falar o quão estranho foi receber um anexo em formato ZIP nos dias de hoje (spam, malware, phishing, etc.), a senha que escolheram me pareceu muito fraca.&lt;/p&gt;
&lt;p&gt;É a data de nascimento do titular da conta no formato &lt;code&gt;YYMMDD&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Fiz um cálculo bem grosseiro de cabeça enquanto estava na academia e deu um número bem pequeno de combinações possíveis. Depois de usar uma ferramenta online para calcular quantos dias se passaram (já que nem todas as combinações resultariam em uma data válida) desde 1900-01-01, descobri que as combinações são apenas 44.075 (até 2020-09-14).&lt;/p&gt;
&lt;p&gt;Sabendo que ferramentas otimizadas que usam o poder da GPU para quebrar hashes conseguem fazer tentativas na casa dos milhões por segundo, eu quis ver quão rápido a senha poderia ser descoberta sem usá-las, usando apenas a CLI do Linux/macOS (já que só tinha acesso a uma VPS enquanto estava na academia).&lt;/p&gt;
&lt;p&gt;Cheguei ao seguinte código, que funciona no macOS:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;echo {1..44000} | xargs -P 16 -n 1 -I{} date -v &quot;-{}d&quot; +&quot;%y%m%d&quot; | xargs -P 16 -I{} sh -c &apos;unzip -qqoP &quot;{}&quot; 0417160508.zip &amp;#x26;&amp;#x26; echo &quot;{}&quot; &amp;#x26;&amp;#x26; exit 255&apos;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;O comando é bem simples em seu funcionamento, mesmo parecendo complicado.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;echo {1..44000}&lt;/code&gt; gera os números de 1 a 44.000 e os repassa para a próxima etapa.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;xargs -P 16 -n 1 -I{} date -v &quot;-{}d&quot; +&quot;%y%m%d&quot;&lt;/code&gt; – pega a entrada da primeira etapa e gera datas no formato &lt;code&gt;YYMMDD&lt;/code&gt;, aproveitando a funcionalidade do &lt;code&gt;date&lt;/code&gt; de “aumentar” uma data com uma quantidade específica. Nesse caso, seria subtrair X dias da data atual, onde X é o número gerado na primeira etapa. Dessa forma, conseguimos gerar datas de hoje até os anos 1900.&lt;/p&gt;
&lt;p&gt;A terceira etapa é a mais interessante, então vou dividi-la em duas partes:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;xargs -P 16 -I{} sh -c &apos;...&apos;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Isso pega as datas geradas na etapa 2 e executa um comando em cada uma dessas datas. &lt;code&gt;-P 16&lt;/code&gt; aqui significa que isso vai rodar em 16 processos paralelos, para tornar a varredura dos dados mais rápida. O mesmo truque é aplicado na etapa 2 para acelerar a geração das datas.&lt;/p&gt;
&lt;p&gt;A segunda parte é onde as tentativas acontecem:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;unzip -qqoP &quot;{}&quot; 0417160508.zip &amp;#x26;&amp;#x26; echo &quot;{}&quot; &amp;#x26;&amp;#x26; exit 255&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;O que isso faz é primeiro tentar descompactar o arquivo zip usando a senha gerada na etapa 2. Se for bem-sucedido, ele imprime (&lt;code&gt;echo&lt;/code&gt;) a senha descoberta e então &lt;code&gt;exit 255&lt;/code&gt; força o &lt;code&gt;xargs&lt;/code&gt; a parar de rodar. Não queremos continuar tentando senhas se a correta já foi encontrada.&lt;/p&gt;
&lt;p&gt;No fim das contas, foi uma decisão bem ruim escolher isso como senha do arquivo, porque rodar o comando acima leva apenas cerca de 10 segundos para descobrir a senha correta da minha fatura. Não muito mais para qualquer outra pessoa.&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Grafites pelo mundo: Burgas, Bulgária</title><link>https://bisko.be/pt/posts/blog/graffiti-around-the-world-burgas-bulgaria/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/graffiti-around-the-world-burgas-bulgaria/</guid><description>Recentemente me deparei com esta foto de um amigo meu. Combina totalmente com a série!</description><pubDate>Tue, 08 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Mural colorido de rua com um caracol laranja de concha amarela em espiral, coberta por cogumelos, criaturas de olhos arregalados, um OVNI e um alienígena verde&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1440&quot; height=&quot;1087&quot; src=&quot;/_astro/img_1545-6a461b59.DrLukEK8_ozvWH.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;O Caracol Psicodélico&lt;/p&gt;
&lt;p&gt;Recentemente me deparei com esta foto de um amigo meu. Combina totalmente com a série!&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category></item><item><title>A roda nova</title><link>https://bisko.be/pt/posts/blog/the-new-wheel/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/the-new-wheel/</guid><description>Numa viagem recente a uma vila nas montanhas, encontramos este caminhão sem uma das rodas traseiras. Nosso filho não gostou de ver o caminhão machucado, então decidimos improvisar uma roda para ele. Depois de achar uma tampinha de garrafa de água, usamos um pouco de mágica com a faca para remover parte da tampa para</description><pubDate>Sat, 08 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Caminhão betoneira de brinquedo amarelo com uma roda traseira azul feita à mão e diferente das outras, enquanto a roda dianteira é preta com o centro amarelo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1070-1bce5de4.PNKa8g3z_Z1B6f9F.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Numa viagem recente a uma vila nas montanhas, encontramos este caminhão sem uma das rodas traseiras.&lt;/p&gt;
&lt;p&gt;Nosso filho não gostou de ver o caminhão machucado, então decidimos improvisar uma roda para ele.&lt;/p&gt;
&lt;p&gt;Depois de achar uma tampinha de garrafa de água, usamos um pouco de mágica com a faca para remover parte da tampa e fazê-la caber no tamanho certo.&lt;/p&gt;
&lt;p&gt;Após uma rápida intervenção com o isqueiro para derreter o plástico, conseguimos soldá-la ao eixo da roda que faltava.&lt;/p&gt;
&lt;p&gt;E funciona de verdade!&lt;/p&gt;
&lt;p&gt;Olha só como ele anda!&lt;/p&gt;</content:encoded><category>blog</category><category>Quick &amp;amp; Easy</category><category>Second Chances</category><category>diy</category><category>fixing</category><category>toys</category></item><item><title>Lidando com código espaguete em PHP: usando funções anônimas para extrair pedaços de código de template</title><link>https://bisko.be/pt/posts/dev/dealing-with-spaghetti-code-in-php-using-anonymous-functions-to-extract-pieces-of-template-code/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/dealing-with-spaghetti-code-in-php-using-anonymous-functions-to-extract-pieces-of-template-code/</guid><description>Recentemente tenho ajudado um amigo a entender um código e a descobrir como modificá-lo para funcionar bem com chamadas assíncronas ao backend. Um bônus seria conseguir escrevê-lo de um jeito mais modular e reutilizável. O código é um plugin de WordPress que foi escrito</description><pubDate>Sat, 08 Aug 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recentemente tenho ajudado um amigo a entender um código e a descobrir como modificá-lo para funcionar bem com chamadas assíncronas ao backend. Um bônus seria conseguir escrevê-lo de um jeito mais modular e reutilizável.&lt;/p&gt;
&lt;p&gt;O código é um plugin de WordPress escrito com uma abordagem bem legada: lógica de negócio e de frontend misturadas num lugar só. Manipulação de dados feita no meio do código de template, e coisas do tipo.&lt;/p&gt;
&lt;p&gt;Basicamente, o que você via em sites PHP no começo dos anos 2000, antes de todas as incríveis adições de OOP à linguagem e de um monte de frameworks maduros.&lt;/p&gt;
&lt;p&gt;O caso em que eu estava trabalhando hoje era o seguinte: você tem uma tabela que mostra um monte de registros. Precisávamos adicionar vários filtros à tabela e fazê-la funcionar via AJAX, para atualizar a interface rapidamente, sem recarregar a página inteira do Admin do WordPress.&lt;/p&gt;
&lt;p&gt;Filtrar os dados foi fácil: um &lt;code&gt;array_filter&lt;/code&gt; inline rapidinho para filtrar os dados antes de passá-los ao código do template (para manter o mesmo estilo de código, isso também ficou no arquivo de template 😇).&lt;/p&gt;
&lt;p&gt;O problema apareceu quando começamos a trabalhar para tornar a tabela renderizável via AJAX.&lt;/p&gt;
&lt;p&gt;Ela está no meio de um monte de outros códigos de template e de negócio. Se quiséssemos limitar a saída via AJAX só à tabela, só tínhamos algumas maneiras de fazer isso.&lt;/p&gt;
&lt;p&gt;A primeira seria envolver o HTML antes e depois da tabela em &lt;code&gt;if&lt;/code&gt;s ENORMES para garantir que ele não fosse renderizado.&lt;/p&gt;
&lt;p&gt;Outra seria extrair o template para um arquivo separado e incluí-lo na ação de AJAX que definiríamos no código do plugin.&lt;/p&gt;
&lt;p&gt;Funções anônimas para o resgate!&lt;/p&gt;
&lt;p&gt;Pensando em como lidar com isso da maneira mais simples possível, tentei definir uma função PHP normal que conteria o código da tabela, mas havia um problema.&lt;/p&gt;
&lt;p&gt;O código roda dentro de um método de uma classe. Há referências a &lt;code&gt;$this&lt;/code&gt; no template da tabela. Se não queremos mudar muito o código, teríamos que passar &lt;code&gt;$this&lt;/code&gt; como argumento da função. Pois é, isso não funciona, já que você não pode passar &lt;code&gt;$this&lt;/code&gt; como parâmetro 🤷‍♂️.&lt;/p&gt;
&lt;p&gt;Fiquei meio decepcionado por termos que reescrever um monte de coisas no template, e havia bastantes referências com as quais precisávamos tomar cuidado para que tudo continuasse funcionando.&lt;/p&gt;
&lt;p&gt;Então lembrei que o site não roda em PHP 5.2, mas em PHP 7, e que funções anônimas seriam suportadas.&lt;/p&gt;
&lt;p&gt;E elas têm um recurso bem prático, em que você define quais variáveis do escopo de quem chama serão passadas para a função quando ela for chamada. Por exemplo:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;php&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;$table_function &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; function&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;() &lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; ( $pages, $current_page, $items ) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // ... Table render code&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Isso permite referenciar diretamente &lt;code&gt;$pages&lt;/code&gt; ou &lt;code&gt;$items&lt;/code&gt; no corpo da função.&lt;/p&gt;
&lt;p&gt;O recurso incrível aqui é que você também pode passar &lt;code&gt;$this&lt;/code&gt; como uma variável no escopo da função!&lt;/p&gt;
&lt;p&gt;Agora conseguimos extrair totalmente o código de renderização da tabela para uma função separada, que podemos chamar isoladamente durante a chamada AJAX!&lt;/p&gt;
&lt;p&gt;Claro que é preciso ter muito cuidado com as variáveis usadas dentro do corpo da função, pois elas precisam estar definidas, então atenção a onde a função de AJAX pode ser chamada.&lt;/p&gt;
&lt;p&gt;Para nós, isso significa que vamos adicionar uma pequena ação na classe principal que ainda vai dar &lt;code&gt;require&lt;/code&gt; no arquivo, mas teremos mais controle para desativar todas as outras saídas que aconteceriam.&lt;/p&gt;</content:encoded><category>dev</category><category>Snippets</category><category>lambda-functions</category><category>php</category><category>WordPress</category></item><item><title>Grafite pelo mundo: Cavalos</title><link>https://bisko.be/pt/posts/blog/graffiti-around-the-world-horses/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/graffiti-around-the-world-horses/</guid><description>Parquinho infantil em Sófia, Bulgária</description><pubDate>Wed, 08 Jul 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Mural de dez cabeças de cavalo estilizadas, em estilo cubista, nas cores amarelo, preto, roxo, cinza, laranja, azul, branco e marrom sobre um fundo azul e rosa&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;6435&quot; height=&quot;2755&quot; src=&quot;/_astro/img_1222-8152ca52.D5sLohsY_Z2jrb7b.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Parquinho infantil em Sófia, Bulgária&lt;/strong&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Graffiti</category><category>horses</category><category>Photography</category><category>travel</category></item><item><title>Timelapse: Pouso ao entardecer no aeroporto Toronto Pearson</title><link>https://bisko.be/pt/posts/blog/timelapse-evening-landing-at-toronto-pearaon-airport/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/timelapse-evening-landing-at-toronto-pearaon-airport/</guid><description>Pouso ao entardecer no aeroporto Toronto Pearson – 28 de setembro de 2018</description><pubDate>Mon, 08 Jun 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Pouso ao entardecer no aeroporto Toronto Pearson – 28 de setembro de 2018&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>travel</category><category>Airplane</category><category>Canada</category><category>Landing</category><category>Timelapse</category><category>Toronto</category></item><item><title>A Girafa</title><link>https://bisko.be/pt/posts/blog/the-giraffe/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/the-giraffe/</guid><description>Um padrão lindo surgiu enquanto eu brincava com Lego Duplo</description><pubDate>Fri, 08 May 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Parede de blocos de brinquedo retangulares e coloridos em roxo, amarelo, vermelho, azul e verde, com uma pequena peça de girafa para medir altura perto do topo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2734&quot; height=&quot;3645&quot; src=&quot;/_astro/img_0214-37c92416.DWchMgfS_ZILsQg.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Um padrão lindo surgiu enquanto eu brincava com Lego Duplo&lt;/p&gt;</content:encoded><category>blog</category><category>Animals</category><category>Photography</category><category>blocks</category><category>building</category><category>duplo</category><category>lego</category></item><item><title>Arduino/ESP32: Desabilitando o watchdog de tarefas</title><link>https://bisko.be/pt/posts/dev/arduino-esp32-disabling-the-task-watchdog/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/arduino-esp32-disabling-the-task-watchdog/</guid><description>Recentemente andei brincando com a funcionalidade multicore do ESP32 e com a fixação de tarefas em núcleos específicos. Eu estava usando o AutoConnect para dar suporte à conexão WiFi sem guardar credenciais no código e para oferecer atualizações OTA pela interface web. Era para um projeto que ia controlar alguns coolers de CPU de 4 pinos com PWM que ficam no meu armário de servidores, para resfriar o ar lá dentro.</description><pubDate>Wed, 29 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recentemente andei brincando com a funcionalidade multicore do ESP32 e com a fixação de tarefas em núcleos específicos.&lt;/p&gt;
&lt;p&gt;Eu estava usando o &lt;a href=&quot;https://github.com/Hieromon/AutoConnect&quot;&gt;AutoConnect&lt;/a&gt; para dar suporte à conexão WiFi sem guardar credenciais no código e para oferecer atualizações OTA pela interface web.&lt;/p&gt;
&lt;p&gt;Era para um projeto que ia controlar alguns coolers de CPU de 4 pinos com PWM que ficam no meu armário de servidores, para resfriar o ar lá dentro. Para isso, eu queria dividir a lógica em duas tarefas.&lt;/p&gt;
&lt;p&gt;Uma tarefa para cuidar das APIs, leitura de sensores, atualizações, WiFi etc., e outra para cuidar da interrupção e do controle PWM dos ventiladores.&lt;/p&gt;
&lt;p&gt;Tudo certo, as tarefas foram criadas, mas ao rodar o código, se eu colocava o ESP32 no modo em que você precisa se conectar a ele para dizer a qual rede WiFi ele deve se conectar, ele começava a ter um comportamento estranho: resetava o controlador a cada poucos segundos e eu não conseguia fazer a conexão funcionar.&lt;/p&gt;
&lt;p&gt;Foi um momento chato, ter que desmontar o controlador do lugar dele e ligar no USB para gravar um firmware novo.&lt;/p&gt;
&lt;p&gt;Depois de fazer isso, percebi que o erro vinha do watchdog:&lt;/p&gt;
&lt;p&gt;Task watchdog got triggered. The following tasks did not feed the watchdog in time:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;IDLE (CPU 1)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Tasks currently running:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;CPU 0: ManageTask&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;CPU 1: ControllerTask&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pesquisando, parece que isso é disparado pelo Task Watchdog do ESP32, que garante que as tarefas tenham a sua vez de executar na CPU.&lt;/p&gt;
&lt;p&gt;E também parecia que o AutoConnect não era muito flexível quando rodava dentro de uma tarefa, em comparação a rodar fora de uma, direto com todo o resto do código e das funcionalidades.&lt;/p&gt;
&lt;p&gt;Fuçando um pouco e tentando coisas diferentes, parece que a forma mais fácil de sair dessa situação é simplesmente desabilitar o watchdog e torcer para que as coisas sejam executadas a tempo 🙂 A tarefa não é crítica, então tudo bem esperar mais tempo para ela terminar o que está fazendo.&lt;/p&gt;
&lt;p&gt;Para desabilitar o watchdog, você precisa fazer duas coisas:&lt;/p&gt;
&lt;p&gt;Primeiro, incluir o header &lt;code&gt;esp_task_wdt.h&lt;/code&gt;. Para isso, adicione &lt;code&gt;#include &amp;#x3C;esp_task_wdt.h&gt;&lt;/code&gt; na sua seção de includes.&lt;/p&gt;
&lt;p&gt;Segundo, fazer o watchdog não resetar o controlador e esperar mais tempo. Para isso, você precisa adicionar &lt;code&gt;esp_task_wdt_init(30, false);&lt;/code&gt; no início do código da sua Task.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;cpp&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color:#B392F0&quot;&gt; manage_core_task&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; *&lt;/span&gt;&lt;span style=&quot;color:#FFAB70&quot;&gt;pv_parameters&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;    esp_task_wdt_init&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#6A737D&quot;&gt;    // .... rest of the code ...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Isso vai definir o timeout do watchdog para 30 &lt;strong&gt;SEGUNDOS&lt;/strong&gt; e desabilitar o reset do controlador caso ele seja disparado.&lt;/p&gt;
&lt;p&gt;Se você quiser que o controlador ainda seja resetado depois que o watchdog disparar, mude o segundo parâmetro da chamada da função de &lt;code&gt;false&lt;/code&gt; para &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category><category>arduino</category><category>code</category><category>esp32</category><category>espressif</category><category>multi-core</category><category>multi-threading</category></item><item><title>🌼 &amp; 🐝</title><link>https://bisko.be/pt/posts/blog/%F0%9F%8C%BC-%F0%9F%90%9D/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/%F0%9F%8C%BC-%F0%9F%90%9D/</guid><pubDate>Tue, 14 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Abelha em um crisântemo branco parecido com uma margarida, cercada por flores brancas, amarelas, rosas e laranja-avermelhadas em um canteiro de jardim&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1024&quot; height=&quot;768&quot; src=&quot;/_astro/image-1-c44a4a22.DM-UJBpr_ZsDCIE.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>bee</category><category>bees</category><category>flower</category><category>flowers</category></item><item><title>Quando a viagem precisa de uma pausa da viagem</title><link>https://bisko.be/pt/posts/blog/when-travel-needs-a-break-from-travel/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/when-travel-needs-a-break-from-travel/</guid><description>Quando uma criança sente que as malas de viagem precisam descansar.</description><pubDate>Sat, 14 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Barraca pop-up laranja dentro de casa, com um colchão e três malas dentro, em uma sala de estar ensolarada com sofá e um escorregador infantil&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1024&quot; height=&quot;768&quot; src=&quot;/_astro/image-ef37b29d.BszBkRqS_1jMq5e.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Quando uma criança sente que as malas de viagem precisam descansar.&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>fun</category><category>travel</category></item><item><title>Grafite pelo mundo: Dublin</title><link>https://bisko.be/pt/posts/blog/graffiti-around-the-world-dublin/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/graffiti-around-the-world-dublin/</guid><description>Alguns meses atrás fomos a Dublin em uma viagem e fiquei surpreso com a quantidade de grafiteiros bons que existem por lá. Aqui vão alguns.</description><pubDate>Fri, 14 Feb 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Alguns meses atrás fomos a Dublin em uma viagem e fiquei surpreso com a quantidade de grafiteiros bons que existem por lá.&lt;/p&gt;
&lt;p&gt;Aqui vão alguns.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Arte de rua em estilo estêncil de uma jovem com um passarinho no ombro, pintada em uma caixa de serviços ao lado de uma vitrine da Powers Irish Whiskey&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7482-63b60082.Bxx3TjUc_1oK5zc.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Caixa de serviços pintada mostrando duas figuras de peruca empoada em um camarote de teatro, uma com nariz comprido segurando uma rosa amarela, e um homem atrás&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7716-cf4a09eb.BXnFmORL_Zwb0W.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Mural em uma caixa de serviços, à noite, de duas mulheres tirando selfies com celulares, uma sentada no colo da outra, cercadas por estrelas douradas&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7465-a1ef02f7.dem_I3k3_1u9UWt.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Caixa de serviços pintada como uma fita cassete retrô com listras de arco-íris, com os dizeres Mixtape for Dublin e Stereo 120&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7670-a65a7a2d.6pMYI6Bw_Z15AP4O.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Mural em parede vermelha de um velho marinheiro barbudo fumando cachimbo ao lado de um cachorrinho, com as palavras Auld Dubliner em uma placa estilo vitral&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_7672-dbb3a83b.DFWmxWvS_ZOjwzR.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Caixa de serviços pintada com um maestro de cabelo cacheado de frente para um coro de cantores de cabelo laranja e boca aberta, vestindo sobrepelizes brancas&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_7362-681994c0.Cob4Td7H_2gJf3X.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>blog</category><category>Graffiti</category><category>Dublin</category><category>Ireland</category><category>Photography</category><category>travel</category></item><item><title>Configurando uma YubiKey para assinar commits do Git</title><link>https://bisko.be/pt/posts/dev/setting-up-a-yubikey-for-git-commit-signing/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/setting-up-a-yubikey-for-git-commit-signing/</guid><description>Eu venho usando uma YubiKey como chave de autenticação em 2 fatores e para assinar meus commits do Git. Até alguns dias atrás eu usava uma YubiKey 4. Como meu computador atual não tem nenhuma porta USB-A, eu andava com adaptadores de USB-A para USB-C na mochila e usar a chave virou um incômodo para o</description><pubDate>Wed, 08 Jan 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Eu venho usando uma YubiKey como chave de &lt;a href=&quot;https://en.wikipedia.org/wiki/Multi-factor_authentication&quot;&gt;autenticação em 2 fatores&lt;/a&gt; e para assinar meus commits do Git. Até alguns dias atrás eu usava uma YubiKey 4. Como meu computador atual não tem nenhuma porta USB-A, faz mais de um ano que eu ando com adaptadores de USB-A para USB-C na mochila, e usar a chave tem sido um incômodo. Por isso decidi que era hora de migrar para a minha YubiKey 5C “nova” e ficar livre de ter que carregar esses adaptadores.&lt;/p&gt;
&lt;p&gt;Na verdade, eu já tinha a chave há um tempo: comprei junto com uma YubiKey 4 de reposição, que precisei por causa do problema do &lt;a href=&quot;https://www.yubico.com/2017/10/infineon-rsa-key-generation-issue/&quot;&gt;TPM da Infineon&lt;/a&gt; identificado por eles. Mas só agora decidi que era hora de migrar para a chave nova.&lt;/p&gt;
&lt;p&gt;O outro motivo para fazer isso agora é que minhas chaves GPG antigas expiraram e eu precisei reemiti-las, então posso aproveitar para usar a chave para assinar meus commits do Git.&lt;/p&gt;
&lt;h3 id=&quot;a-loucura-do-gpg&quot;&gt;A loucura do GPG&lt;/h3&gt;
&lt;p&gt;Se você já lidou com chaves GPG no passado (ou lida atualmente), sabe que pode ser bem difícil colocá-las para funcionar de forma correta e segura se você nunca fez isso antes. Manter as chaves mestras offline, trocar chaves públicas de um lado para o outro, reemitir chaves depois que expiram, possivelmente assiná-las com chaves anteriores para verificá-las, revogar chaves… Não é fácil seguir as boas práticas nem na teoria. Na prática, as coisas ficam extremamente complicadas.&lt;/p&gt;
&lt;p&gt;A maioria dos tutoriais online manda usar a linha de comando para gerar as chaves, navegando por menus com um padrão de design nada comum, e é uma dor de cabeça geral para fazer tudo funcionar. A maioria deles diz para usar uma máquina offline, como um Raspberry PI, e/ou gerar as chaves mestras e subchaves offline e manter a chave mestra fora do seu computador.&lt;/p&gt;
&lt;p&gt;🤯&lt;/p&gt;
&lt;p&gt;Eu lido com isso todo começo de janeiro há quase 4 anos. Eu morro de medo do momento em que aparece o erro a seguir, avisando que minhas chaves de assinatura expiraram.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;error: gpg failed to sign the data&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;fatal: failed to write commit object&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este ano decidi que era hora de tentar deixar esse processo muito mais fácil, usando a geração de certificados embutida na própria chave e evitando todo o trabalho de gerar chaves GPG e afins.&lt;/p&gt;
&lt;h3 id=&quot;geração-de-chaves-direto-na-yubikey&quot;&gt;Geração de chaves direto na YubiKey&lt;/h3&gt;
&lt;p&gt;Ainda vamos ter que usar a interface de linha de comando, mas é um pouco mais óbvio, já que tem menos etapas.&lt;/p&gt;
&lt;p&gt;Primeiro precisamos configurar nosso cartão/dispositivo.&lt;/p&gt;
&lt;h3 id=&quot;configuração-do-cartãodispositivo&quot;&gt;Configuração do cartão/dispositivo&lt;/h3&gt;
&lt;p&gt;Execute &lt;code&gt;gpg --card-status&lt;/code&gt; no terminal e você deve ver algo assim:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Reader ………..: Yubico Yubikey 4 OTP U2F CCID&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Application ID …: &amp;#x3C;Serial number&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Version ……….: 2.1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Manufacturer …..: Yubico&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Serial number ….: &amp;#x3C;Device serial number&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Name of cardholder: unspecified&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Language prefs …: en&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Sex …………..: unspecified&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;URL of public key : \[not set\]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Login data …….: &amp;#x3C;e-mail or nothing&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Signature PIN ….: not forced&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Key attributes …: rsa4096 rsa4096 rsa4096&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Max. PIN lengths .: 127 127 127&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;PIN retry counter : 3 0 3&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Signature counter : 9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se você viu algo parecido e nenhum erro apareceu, pode continuar.&lt;/p&gt;
&lt;p&gt;Execute &lt;code&gt;gpg --card-edit&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Você vai cair em uma interface de linha de comando, mostrando as mesmas informações do início e, embaixo, um prompt de comando &lt;code&gt;gpg/card&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Digite &lt;code&gt;admin&lt;/code&gt; e aperte return/enter.&lt;/p&gt;
&lt;p&gt;Agora você pode digitar &lt;code&gt;help&lt;/code&gt; para descobrir como alterar as informações do dono e os PINs do cartão.&lt;/p&gt;
&lt;p&gt;Uma coisa que você &lt;strong&gt;&lt;em&gt;PRECISA&lt;/em&gt;&lt;/strong&gt; fazer é trocar os PINs padrão do cartão. São dois. O primeiro é o PIN que você usa para acessar as chaves no cartão. O segundo é o PIN de “Admin” ou PUK (Personal Unblocking Code, o código pessoal de desbloqueio).&lt;/p&gt;
&lt;p&gt;Para isso, digite &lt;code&gt;passwd&lt;/code&gt; e você verá um menu:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg/card&gt; passwd  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: OpenPGP card no. &amp;#x3C;Serial number&gt; detected&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;1 - change PIN  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;2 - unblock PIN  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;3 - change Admin PIN  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;4 - set the Reset Code  &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Q - quit&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Digite &lt;code&gt;1&lt;/code&gt; e siga as instruções para atualizar o seu PIN. O PIN padrão é &lt;code&gt;123456&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Depois de terminar, escolha &lt;code&gt;3&lt;/code&gt; para trocar o PIN de Admin. O padrão é &lt;code&gt;12345678&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Com os dois PINs trocados, volte ao menu principal para terminar de atualizar as informações da chave.&lt;/p&gt;
&lt;p&gt;Os comandos que você pode usar são:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;name&lt;/code&gt; – para alterar o nome do titular do cartão&lt;/li&gt;
&lt;li&gt;&lt;code&gt;login&lt;/code&gt; – para alterar o endereço de e-mail ou o login do titular do cartão&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Depois disso, podemos passar para a geração das chaves propriamente dita.&lt;/p&gt;
&lt;h3 id=&quot;geração-das-chaves&quot;&gt;Geração das chaves&lt;/h3&gt;
&lt;p&gt;Agora é hora de gerar as chaves de verdade.&lt;/p&gt;
&lt;p&gt;Para isso, digite &lt;code&gt;generate&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Vão te perguntar &lt;code&gt;Make off-card backup of encryption key? (Y/n)&lt;/code&gt;, mas, como diz a documentação da YubiKey, isso é só um backup de fachada e não cria um backup completo das chaves secretas, então tanto faz responder &lt;code&gt;Yes&lt;/code&gt; ou &lt;code&gt;No&lt;/code&gt;. Eu respondo &lt;code&gt;No(n)&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Se já houver chaves armazenadas no cartão, vão perguntar se você quer substituí-las:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: Note: keys are already stored on the card!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Replace existing keys? (y/N)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verifique se você não vai substituir algo importante do qual não tem backup e continue com &lt;code&gt;Y&lt;/code&gt;. Se houver algo importante, é melhor cancelar todo o processo com &lt;code&gt;Ctrl+C&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Vão pedir o PIN do cartão que você definiu antes.&lt;/p&gt;
&lt;p&gt;Depois você terá que escolher por quanto tempo as chaves serão válidas:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Please specify how long the key should be valid.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        0 = key does not expire&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      &amp;#x3C;n&gt; = key expires in n days&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &amp;#x3C;n&gt;w = key expires in n weeks&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &amp;#x3C;n&gt;m = key expires in n months&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &amp;#x3C;n&gt;y = key expires in n years&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; Key is valid for? (0)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Se você quer que as chaves sejam válidas por apenas 1 ano, digite &lt;code&gt;1y&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Vão pedir para você confirmar a data de expiração. Confira se está tudo certo e confirme.&lt;/p&gt;
&lt;p&gt;Depois vão pedir as informações do dono da chave:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Is this correct? (y/N) y&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;GnuPG needs to construct a user ID to identify your key.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Real name: &amp;#x3C;Your name&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Email address: &amp;#x3C;Your e-mail&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Comment: &amp;#x3C;Comment is optional&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; You selected this USER-ID:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;     &quot;&amp;#x3C;Your name&gt; &amp;#x3C;comment&gt; &amp;#x3C;your e-mail&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt; Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;Type `O` to confirm if everything seems correct.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Depois vão pedir o seu PIN de Admin ou PUK. Ele é necessário porque será feita uma operação de escrita no cartão.&lt;/p&gt;
&lt;p&gt;Então, se tudo estiver certo, a YubiKey vai começar a piscar e continuar assim por um tempo (para mim leva uns cinco minutos).&lt;/p&gt;
&lt;p&gt;Quando terminar, você verá a seguinte mensagem:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: key &amp;#x3C;Short ID&gt; marked as ultimately trusted&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;gpg: revocation certificate stored as &apos;/Users/bisko/.gnupg/openpgp-revocs.d/&amp;#x3C;LONG ID&gt;.rev&apos; public and secret key created and signed.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Anote o &lt;code&gt;&amp;#x3C;Short ID&gt;&lt;/code&gt;, pois vamos usá-lo mais adiante.&lt;/p&gt;
&lt;p&gt;Neste ponto você pode sair do prompt do GPG com &lt;code&gt;quit&lt;/code&gt; ou &lt;code&gt;Ctrl+C&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Agora é hora de salvar a chave pública, para que possamos reutilizar a chave em outro computador.&lt;/p&gt;
&lt;p&gt;Para isso, execute o seguinte comando:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --armor&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --export&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &gt;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;.asc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Isso vai exportar a chave pública para um arquivo chamado &lt;code&gt;&amp;#x3C;Short ID&gt;.asc&lt;/code&gt;. Ele será usado no futuro se você quiser usar a YubiKey em outro computador ou se perder a sua configuração do GPG.&lt;/p&gt;
&lt;p&gt;Para restaurar a chave pública no seu chaveiro, você precisa fazer:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --import&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;.asc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; key&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Short&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; public&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; key&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; &quot;Your Name &amp;#x3C;your@email&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; imported&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; Total&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; number&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; processed:&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;gpg:&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; imported:&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Uma observação muito importante.&lt;/em&gt;&lt;/strong&gt; Se for uma instalação nova do GPG ou outro computador, o GPG não vai reconhecer as chaves do cartão sozinho. Você precisa executar &lt;code&gt;gpg --card-status&lt;/code&gt; para que ele leia o cartão e identifique as chaves nele.&lt;/p&gt;
&lt;h3 id=&quot;configurando-o-git-para-assinar&quot;&gt;Configurando o Git para assinar&lt;/h3&gt;
&lt;p&gt;Para configurar o Git para assinar seus commits, você precisa adicionar o seguinte ao seu &lt;code&gt;~/.gitconfig&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Na seção &lt;code&gt;[user]&lt;/code&gt;, você precisa adicionar (ou atualizar) a seguinte linha:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;signingkey = 0x&amp;#x3C;Short ID&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Depois, se você quiser assinar todos os seus commits, adicione o seguinte no final do arquivo:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;ini&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;[gpg]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  program&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; = /usr/local/bin/gpg&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;[commit]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#F97583&quot;&gt;  gpgsign&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt; = true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Isso fará o Git assinar todos os seus commits.&lt;/p&gt;
&lt;p&gt;Para configurar o GitHub, você precisa adicionar sua chave pública ao seu perfil. Para isso, vá em &lt;code&gt;GitHub -&gt; Settings -&gt; SSH and GPG keys -&gt; New GPG key&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Você verá uma caixa de texto, onde precisa colar todo o conteúdo do arquivo &lt;code&gt;&amp;#x3C;Short ID&gt;.asc&lt;/code&gt; que geramos acima.&lt;/p&gt;
&lt;p&gt;Se quiser copiar o conteúdo do arquivo (no macOS), você pode fazer:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cat &amp;#x3C;Short ID&gt;.asc | pbcopy&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Isso copia o conteúdo do arquivo inteiro para a área de transferência.&lt;/p&gt;
&lt;p&gt;Cole na caixa de texto do GitHub e clique no botão &lt;code&gt;Add GPG key&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Depois disso, você pode tentar fazer um commit e um push para o GitHub e deve ver o lindo selo &lt;code&gt;Verified&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;depuração&quot;&gt;Depuração&lt;/h3&gt;
&lt;p&gt;Às vezes as coisas não funcionam de primeira. Para reunir mais informações, você pode tentar o seguinte:&lt;/p&gt;
&lt;h3 id=&quot;assinando-com-o-gpg&quot;&gt;Assinando com o GPG&lt;/h3&gt;
&lt;p&gt;Primeiro, tente assinar algo com a chave:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gpg -s &amp;#x3C;file&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Se isso falhar, tente descobrir por quê. Eu não sou especialista para ajudar nessa parte.&lt;/p&gt;
&lt;p&gt;Confira a saída do Git com GIT_TRACE=1 git commit -am “test”&lt;/p&gt;
&lt;p&gt;Isso mostra exatamente o que o Git faz enquanto tenta realizar o commit e assiná-lo. Vai te dar uma pista de por que a assinatura pode estar falhando.&lt;/p&gt;
&lt;p&gt;Dali você também pode ver que o Git executa o seguinte comando:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; style=&quot;background-color:#24292e;color:#e1e4e8; overflow-x: auto;&quot; tabindex=&quot;0&quot; data-language=&quot;sh&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;color:#B392F0&quot;&gt;/usr/local/bin/gpg&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; --status-fd=2&lt;/span&gt;&lt;span style=&quot;color:#79B8FF&quot;&gt; -bsau&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt; &amp;#x3C;&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt;Key&lt;/span&gt;&lt;span style=&quot;color:#9ECBFF&quot;&gt; I&lt;/span&gt;&lt;span style=&quot;color:#E1E4E8&quot;&gt;D&lt;/span&gt;&lt;span style=&quot;color:#F97583&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Você pode tentar executá-lo manualmente para ver se ele dá um erro mais útil.&lt;/p&gt;</content:encoded><category>dev</category><category>Snippets</category><category>Technology</category><category>git</category><category>github</category><category>gpg</category><category>key</category><category>public-key</category><category>secrets</category><category>sign</category><category>yubikey</category></item><item><title>e1000e  eth0: Detected Hardware Unit Hang</title><link>https://bisko.be/pt/posts/dev/e1000e-device-id-eth0-detected-hardware-unit-hang/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/e1000e-device-id-eth0-detected-hardware-unit-hang/</guid><description>Recentemente, meu servidor doméstico e host de VMs começou, do nada, a perder a conectividade de rede. Por fora parecia que ele ainda estava funcionando, mas eu não conseguia acessá-lo remotamente de nenhuma forma. O adaptador ethernet parecia ligado, segundo o switch, então o problema devia estar em algum lugar do software. Não seria</description><pubDate>Wed, 18 Dec 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Recentemente, meu servidor doméstico e host de VMs começou, do nada, a perder a conectividade de rede. Por fora parecia que ele ainda estava funcionando, mas eu não conseguia acessá-lo remotamente de nenhuma forma. O adaptador ethernet parecia ligado, segundo o switch, então o problema devia estar em algum lugar do software.&lt;/p&gt;
&lt;p&gt;Não seria a primeira vez que um driver causaria travamentos na conexão de rede. No passado, já me ferrei com drivers de WiFi bugados em computadores Linux e Windows.&lt;/p&gt;
&lt;p&gt;Depois de fuçar um pouco nos logs do sistema, me deparei com o seguinte:&lt;/p&gt;
&lt;p&gt;vmhost kernel: e1000e 0000:00:1f.6 eth0: Detected Hardware Unit Hang:&lt;br&gt;
vmhost kernel:   TDH                  &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel:   TDT                  &amp;#x3C;1&gt;&lt;br&gt;
vmhost kernel:   next_to_use          &amp;#x3C;1&gt;&lt;br&gt;
vmhost kernel:   next_to_clean        &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel: buffer_info[next_to_clean]:&lt;br&gt;
vmhost kernel:   time_stamp           &amp;#x3C;10fbc2f81&gt;&lt;br&gt;
vmhost kernel:   next_to_watch        &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel:   jiffies              &amp;#x3C;10fbc3871&gt;&lt;br&gt;
vmhost kernel:   next_to_watch.status &amp;#x3C;0&gt;&lt;br&gt;
vmhost kernel: MAC Status             &amp;#x3C;40080083&gt;&lt;br&gt;
vmhost kernel: PHY Status             &amp;#x3C;796d&gt;&lt;br&gt;
vmhost kernel: PHY 1000BASE-T Status  &amp;#x3C;7800&gt;&lt;br&gt;
vmhost kernel: PHY Extended Status    &amp;#x3C;3000&gt;&lt;br&gt;
vmhost kernel: PCI Status             &amp;#x3C;10&gt;&lt;br&gt;
vmhost kernel: e1000e 0000:00:1f.6 eth0: Reset adapter unexpectedly&lt;br&gt;
vmhost kernel: vmbr0: port 1(eth0) entered disabled state&lt;/p&gt;
&lt;p&gt;Aí ele resetava o adaptador de rede e, depois de um tempo, fazia tudo de novo, até a máquina ficar completamente offline.&lt;/p&gt;
&lt;p&gt;Procurando respostas na internet, encontrei &lt;a href=&quot;https://serverfault.com/questions/616485/e1000e-reset-adapter-unexpectedly-detected-hardware-unit-hang&quot;&gt;esta thread no ServerFault&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Causa&lt;/p&gt;
&lt;p&gt;Lendo várias fontes e listas de relatórios de bugs, parece que a melhor forma de reproduzir o problema é colocar o dispositivo numa situação de alta largura de banda, ou seja, transmitir grandes quantidades de dados que saturem a interface.&lt;/p&gt;
&lt;p&gt;No meu caso, isso costumava acontecer quando eu estava transmitindo mídia do servidor Plex local para algum dispositivo. Pela forma como a rede está montada, a VM Windows que roda a instância do Plex precisa buscar o arquivo de mídia em um compartilhamento de rede NFS em outro dispositivo, transcodificá-lo na VM e só então enviá-lo ao dispositivo de reprodução.&lt;/p&gt;
&lt;p&gt;Isso soma bastante tráfego de rede, geralmente ~40-100mbit/s, dependendo do dispositivo que reproduz o arquivo e da qualidade do arquivo de origem.&lt;/p&gt;
&lt;p&gt;O mesmo problema apareceu ao transmitir jogos via Steam Link para a nossa Apple TV. A conexão é cabeada, mas não é incomum a rede cair. Acho que está relacionado ao mesmo problema, mas vou ficar de olho para ver se acontece de novo depois da correção.&lt;/p&gt;
&lt;p&gt;Possível correção&lt;/p&gt;
&lt;p&gt;Parece que uma possível correção seria desabilitar &lt;strong&gt;GSO&lt;/strong&gt; &lt;em&gt;(Generic Segmentation Offload)&lt;/em&gt;, &lt;strong&gt;TSO&lt;/strong&gt; &lt;em&gt;(TCP Segmentation Offload)&lt;/em&gt; e &lt;strong&gt;GRO&lt;/strong&gt; &lt;em&gt;(Generic Receive Offload)&lt;/em&gt; na interface de rede*:&lt;/p&gt;
&lt;p&gt;ethtool -K eth0 gso off gro off tso off&lt;/p&gt;
&lt;p&gt;Apliquei isso na minha configuração e estou esperando para ver se realmente resolve o problema a longo prazo.&lt;/p&gt;
&lt;p&gt;Notas de rodapé&lt;/p&gt;
&lt;p&gt;* Essas opções têm a ver com delegar a segmentação de pacotes ao controlador da interface de rede para reduzir o uso de CPU da máquina. Mais detalhes podem ser encontrados &lt;a href=&quot;https://en.wikipedia.org/wiki/Large_send_offload&quot;&gt;neste artigo da Wikipédia&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>dev</category><category>Homelab</category><category>bandwidth</category><category>bug</category><category>network</category><category>nic</category><category>plex</category><category>proxmox</category><category>steam</category><category>streaming</category></item><item><title>A abóbora</title><link>https://bisko.be/pt/posts/blog/the-pumpkin/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/the-pumpkin/</guid><description>Foto tirada no Simple Food Punkt</description><pubDate>Sun, 03 Nov 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Uma abóbora esculpida numa panela? Não tenho certeza.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_8045-99331106.C4JicSzy_20be15.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Foto tirada no &lt;a href=&quot;https://www.facebook.com/Simple.Food.Punkt/&quot;&gt;Simple Food Punkt&lt;/a&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category><category>fun</category><category>Halloween</category><category>Orange</category><category>pumpkin</category></item><item><title>Snippets: Executando um registro de imagens Docker local/privado em um swarm</title><link>https://bisko.be/pt/posts/dev/snippets-running-a-local-private-swarm-docker-image-registry/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/snippets-running-a-local-private-swarm-docker-image-registry/</guid><description>Hoje eu estava tentando gerar uma imagem Docker a partir de um projeto Node.js e queria fazer o deploy no meu swarm local de testes. Infelizmente, se alguém constrói uma imagem Docker local, essa imagem fica armazenada e acessível apenas no nó em que foi criada, e os outros nós do swarm não conseguem acessá-la. O</description><pubDate>Fri, 11 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hoje eu estava tentando gerar uma imagem Docker a partir de um projeto Node.js e queria fazer o deploy no meu swarm local de testes.&lt;/p&gt;
&lt;p&gt;Infelizmente, se alguém constrói uma imagem Docker local, essa imagem fica armazenada e acessível apenas no nó em que foi criada, e os outros nós do swarm não conseguem acessá-la.&lt;/p&gt;
&lt;p&gt;A solução é enviar (push) a imagem para um registro Docker (registry), de onde ela pode ser baixada (pull) por todos os nós do swarm.&lt;/p&gt;
&lt;p&gt;Criando o registro&lt;/p&gt;
&lt;p&gt;Para instanciar um serviço de registro no swarm, execute:&lt;/p&gt;
&lt;p&gt;docker service create —name registry —publish 5000:5000 registry:latest&lt;/p&gt;
&lt;p&gt;Isso vai criar o serviço de registro e executá-lo no swarm, tornando-o acessível a todos os nós do swarm.&lt;/p&gt;
&lt;p&gt;Enviando uma imagem para o registro&lt;/p&gt;
&lt;p&gt;Para enviar uma imagem para o registro, você precisa fazer duas coisas – tagear e então fazer o push da imagem.&lt;/p&gt;
&lt;p&gt;Aqui vai um exemplo de como construir e tagear a imagem de uma vez só:&lt;/p&gt;
&lt;p&gt;docker build . -t localhost.localdomain:5000/&lt;image-name&gt;:latest&lt;/image-name&gt;&lt;/p&gt;
&lt;p&gt;E como enviá-la para o registro:&lt;/p&gt;
&lt;p&gt;docker push localhost.localdomain:5000/&lt;image-name&gt;:latestUsando a imagem em um serviço/container/etc&lt;/image-name&gt;&lt;/p&gt;
&lt;p&gt;Para usar a imagem em um serviço ou em um container, você especifica o caminho completo de cima, ou seja, &lt;code&gt;localhost.localdomain:5000/&amp;#x3C;image-name&gt;:latest&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Os nós do swarm vão ter acesso à imagem e conseguirão baixá-la e executá-la.&lt;/p&gt;
&lt;p&gt;Nota importante sobre o endereço do registro&lt;/p&gt;
&lt;p&gt;Na maioria dos tutoriais por aí, a URL do registro aparece como &lt;code&gt;localhost:5000&lt;/code&gt;. Infelizmente isso não funciona e normalmente dá timeout quando se tenta usá-la. Se trocarmos para &lt;code&gt;localhost.localdomain&lt;/code&gt;, funciona!&lt;/p&gt;
&lt;p&gt;Não sei por que isso acontece, já que tanto &lt;code&gt;localhost&lt;/code&gt; quanto &lt;code&gt;localhost.localdomain&lt;/code&gt; resolvem para &lt;code&gt;127.0.0.1&lt;/code&gt;.&lt;/p&gt;</content:encoded><category>dev</category><category>Homelab</category><category>Snippets</category><category>Technology</category><category>docker</category><category>docker-swarm</category><category>registry</category><category>swarm</category></item><item><title>Timelapse: taxiando e decolando do Aeroporto Internacional de Orlando</title><link>https://bisko.be/pt/posts/blog/timelapse-taxiing-and-takeoff-from-orlando-international-airport/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/timelapse-taxiing-and-takeoff-from-orlando-international-airport/</guid><description>Este foi o começo da viagem de volta para casa, depois que o nosso incrível Automattic Grand Meetup de 2019 chegou ao fim. Bons momentos com gente incrível! 🤩</description><pubDate>Tue, 01 Oct 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Gravado com um iPhone X pela janela do avião&lt;/p&gt;
&lt;p&gt;Este foi o começo da viagem de volta para casa, depois que o nosso incrível Automattic Grand Meetup de 2019 chegou ao fim. Bons momentos com gente incrível! 🤩&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>travel</category><category>Airplane</category><category>Flying</category><category>Orlando_FL</category><category>Timelapse</category></item><item><title>Timelapse: Pousando em Frankfurt sob neblina</title><link>https://bisko.be/pt/posts/blog/timelapse-landing-in-foggy-frankfurt/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/timelapse-landing-in-foggy-frankfurt/</guid><description>Frankfurt foi uma das paradas no caminho para o nosso Automattic Grand Meetup anual. Esse dia estava bem nublado, com muita neblina, e o pouso foi uma experiência bem interessante. Voando sobre um cobertor de nuvens de lã e, de repente, pronto: pousamos na pista! Aqui vai uma foto bônus do que dava para ver da cidade durante a</description><pubDate>Tue, 10 Sep 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Filmado com um iPhone X pela janela do avião&lt;/p&gt;
&lt;p&gt;Frankfurt foi uma das paradas no caminho para o nosso Automattic Grand Meetup anual. Esse dia estava bem nublado, com muita neblina, e o pouso foi uma experiência bem interessante. Voando sobre um cobertor de nuvens de lã e, de repente, pronto: pousamos na pista!&lt;/p&gt;
&lt;p&gt;Aqui vai uma foto bônus do que dava para ver da cidade durante a descida.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Vista aérea, de dentro de um avião, de um grosso cobertor de neblina e nuvens, com duas chaminés surgindo no meio e colinas escuras ao fundo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_6547-fa702d62.ByzaITRP_2k3iLQ.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>travel</category><category>Airplane</category><category>Frankfurt</category><category>Landing</category><category>Timelapse</category></item><item><title>O Abacateiro: Brotou!</title><link>https://bisko.be/pt/posts/blog/the-avocado-sprouting/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/the-avocado-sprouting/</guid><description>Esta é a nossa primeira tentativa bem-sucedida de fazer um abacate brotar!</description><pubDate>Sat, 03 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Caroço de abacate rachado ao meio em um vaso com terra, com um broto marrom fino e uma ponta verde enrolada saindo da rachadura&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5899-f2ad7864.YgnFMYgT_1cfcKJ.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Esta é a nossa primeira tentativa bem-sucedida de fazer um abacate brotar!&lt;/p&gt;</content:encoded><category>blog</category><category>The Avocado</category><category>Avocado</category><category>Gardening</category><category>Plant</category><category>Sprout</category></item><item><title>Snippets: Mapeie a tecla Section sign do teclado Apple para o acento grave ( § para ` )</title><link>https://bisko.be/pt/posts/dev/snippets-map-apple-keyboard-section-sign-key-to-back-quote-%C2%A7-to/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/snippets-map-apple-keyboard-section-sign-key-to-back-quote-%C2%A7-to/</guid><description>Já faz um tempo que uso os teclados da Apple, mas quando você mora na Europa não é fácil encontrar os com layout americano, que é o que estou acostumado a usar. No macOS existe um jeito &quot;fácil&quot; de remapear o teclado com apenas um comando no terminal: watch -n1 -x hidutil property -m ‘{“ProductID”:592, “VendorID”:1452}’ –set ‘{“UserKeyMapping”:[{“HIDKeyboardModifierMappingSrc”:0x700000035,”HIDKeyboardModifierMappingDst”:0x700000064}]}’ O que esse</description><pubDate>Wed, 31 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Já faz um tempo que uso os teclados da Apple, mas quando você mora na Europa não é fácil encontrar os com layout americano, que é o que estou acostumado a usar.&lt;/p&gt;
&lt;p&gt;No macOS existe um jeito “fácil” de remapear o teclado com apenas um comando no terminal:&lt;/p&gt;
&lt;p&gt;watch -n1 -x hidutil property -m ’{“ProductID”:592, “VendorID”:1452}’ —set ’{“UserKeyMapping”:[{“HIDKeyboardModifierMappingSrc”:0x700000035,“HIDKeyboardModifierMappingDst”:0x700000064}]}’&lt;/p&gt;
&lt;p&gt;O que esse trecho de código faz é mudar o mapeamento da tecla Section ( § ) para escrever a tecla de crase/til ( &lt;code&gt;`/ ~&lt;/code&gt; ).&lt;/p&gt;
&lt;p&gt;A parte &lt;code&gt;watch -n1 -x&lt;/code&gt; faz isso a cada segundo, porque às vezes o macOS gosta de perder a configuração, geralmente quando o computador entra em repouso ou quando o teclado é desconectado e conectado de novo.&lt;/p&gt;
&lt;p&gt;Note que, em algumas versões do macOS, o utilitário &lt;code&gt;watch&lt;/code&gt; não vem instalado e precisa ser obtido por meio de algo como &lt;a href=&quot;https://brew.sh/&quot;&gt;Homebrew&lt;/a&gt; ou &lt;a href=&quot;https://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;O código acima funciona com o teclado externo da Apple com USB e layout europeu com letras búlgaras. Pode ser necessário um pequeno ajuste nos valores hexadecimais das teclas para outros tipos de teclado.&lt;/p&gt;
&lt;p&gt;Uma variação do comando funciona bem para o mesmo tipo de teclado no próprio MacBook Pro. Basta trocar a posição dos valores &lt;code&gt;0x700000035&lt;/code&gt; e &lt;code&gt;0x700000064&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Andei pensando em escrever uma ferramenta para fazer isso automaticamente por mim, mas neste momento acho que vale mais a pena investir em um teclado novo com o layout certo 🙂&lt;/p&gt;</content:encoded><category>dev</category><category>Uncategorized</category></item><item><title>Flores Roxas</title><link>https://bisko.be/pt/posts/blog/purple-flowers/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/purple-flowers/</guid><description>Vistas em uma viagem a Borovets, situada na montanha de Rila.</description><pubDate>Fri, 28 Jun 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Flores roxas parecidas com áster e botões redondos em caules verdes e peludos, iluminadas por trás por um sol forte em um céu azul, com árvores perenes escuras ao fundo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5256-c4ebab4e.B9-0LH79_ZcCswB.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Vistas em uma viagem a &lt;a href=&quot;https://en.wikipedia.org/wiki/Borovets&quot;&gt;Borovets&lt;/a&gt;, situada na &lt;a href=&quot;https://en.wikipedia.org/wiki/Rila&quot;&gt;montanha de Rila&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>flower</category><category>flowers</category><category>purple</category><category>sun</category></item><item><title>Museu Retrô</title><link>https://bisko.be/pt/posts/blog/retro-museum/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/retro-museum/</guid><description>Durante nossas férias de verão no Mar Negro, fizemos um bate-volta até Varna, já que estávamos em um resort ali perto. Lá, demos de cara com um museu Retrô muito interessante. Fiquei muito agradavelmente surpreso ao encontrar quase todas as coisas diferentes que eu usava quando era jovem. Quantas boas lembranças</description><pubDate>Tue, 25 Jun 2019 00:00:00 GMT</pubDate><content:encoded>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Vitrine de brinquedos e quebra-cabeças búlgaros antigos: cubos mágicos, quebra-cabeças de cobra e jogos de tabuleiro como Ne se sardi e Idvat tankove&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5095-fff7354b.B87XGoKK_spbqC.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Prateleiras de despertadores da era soviética, incluindo relógios Slava amarelos em formato de pintinho, modelos redondos de metal e modelos retangulares de mesa&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5094-03b89044.PJIIKBDz_ZrumKn.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Vitrine de vidro cheia de cédulas antigas de leva búlgaro em maços e em leque, com moedas espalhadas e cintas de banco&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5092-fe5af8eb.D8cpVmlj_Z2gS5rt.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Armário com itens retrô de cuidados com o cabelo: secadores amarelos e laranjas, modeladores, bobes e massageadores vibratórios na caixa&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5091-0793f161.ByQJsy2P_Z1u1ItY.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Dois aspiradores de pó antigos azul-petróleo, com pontas cor creme e mangueiras, dentro de uma vitrine de vidro&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5090-2e051edf.CX0aDctc_Zqdst9.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Conjunto de compasso de desenho técnico sobre veludo azul, ao lado de lápis de cor, canetas esferográficas e emblemas bordados de esportes escolares&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5089-f1b68d98.DkuBHl-h_Zx4MsX.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Máquinas de lavar antigas com centrífuga e caixas de detergente no piso do museu, com carros antigos estacionados ao fundo&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3024&quot; height=&quot;4032&quot; src=&quot;/_astro/img_5088-53896321.yYoU5Fok_Z15PUQh.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Coleção de instrumentos musicais de brinquedo: melódicas, flautas doces e gaitas, ao lado de uma caixa de jogos e baralhos&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5086-09a7e3df.D4AuUo7d_Z16eSYx.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;img alt=&quot;Jogo de pebolim de mesa verde com figuras vermelhas e brancas, cercado por matrioscas, um cubo mágico e jogos eletrônicos portáteis&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_5085-b5ba1d92.CTJokrFJ_Z8Erqh.webp&quot; &gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As fotos foram tiradas no &lt;a href=&quot;https://www.tripadvisor.com/Attraction_Review-g295392-d8441907-Reviews-The_Retro_Museum_In_Varna-Varna_Varna_Province.html&quot;&gt;Museu Retrô, localizado em Varna, na Bulgária&lt;/a&gt; (link do TripAdvisor, pois o site do museu parece estar fora do ar).&lt;/p&gt;
&lt;p&gt;Durante nossas férias de verão no &lt;a href=&quot;https://en.wikipedia.org/wiki/Black_Sea&quot;&gt;Mar Negro&lt;/a&gt;, fizemos um bate-volta até &lt;a href=&quot;https://en.wikipedia.org/wiki/Varna&quot;&gt;Varna&lt;/a&gt;, já que estávamos em um resort ali perto. Lá, demos de cara com um museu Retrô muito interessante.&lt;/p&gt;
&lt;p&gt;Fiquei muito agradavelmente surpreso ao encontrar quase todas as coisas diferentes que eu usava quando era jovem. Muitas boas lembranças da minha infância vieram à tona durante a visita.&lt;/p&gt;
&lt;p&gt;Com certeza é um ótimo lugar para visitar quando estiver em Varna!&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>memories</category><category>museum</category><category>retro</category><category>Varna</category></item><item><title>Mar de Margaridas</title><link>https://bisko.be/pt/posts/blog/sea-of-daisies/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/sea-of-daisies/</guid><description>Foto tirada perto de Chorul.</description><pubDate>Fri, 31 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Prado denso de margaridas brancas com centros amarelos em hastes verdes e altas, com algumas flores rosadas de trevo entre a grama&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_4633-ced55558.CA2pVc_h_cVSP7.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Foto tirada perto de &lt;a href=&quot;https://en.wikipedia.org/wiki/Chorul&quot;&gt;Chorul&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Photography</category><category>daisy</category><category>flower</category><category>flowers</category></item><item><title>Timelapse(s): Viagem a Montserrat</title><link>https://bisko.be/pt/posts/blog/timelapses-trip-to-montserrat/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/timelapses-trip-to-montserrat/</guid><description>No nosso último encontro de equipe, que rolou em Barcelona, fizemos uma viagem à montanha de Montserrat. Escolhemos um dia bem nublado, mas mesmo assim as nuvens estavam altas o suficiente para conseguirmos ver o vale, antes de começar a chover. Aqui estão dois timelapses dessa viagem:</description><pubDate>Wed, 08 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;No nosso último encontro de equipe, que rolou em Barcelona, fizemos uma viagem à &lt;a href=&quot;https://en.wikipedia.org/wiki/Montserrat_(mountain)&quot;&gt;montanha de Montserrat&lt;/a&gt;. Escolhemos um dia bem nublado, mas mesmo assim as nuvens estavam altas o suficiente para conseguirmos ver o vale, antes de começar a chover.&lt;/p&gt;
&lt;p&gt;Aqui estão dois timelapses dessa viagem:&lt;/p&gt;
&lt;p&gt;Mágica das nuvens!&lt;/p&gt;
&lt;p&gt;A descida com o &lt;a href=&quot;https://en.wikipedia.org/wiki/Aeri_de_Montserrat&quot;&gt;Aeri de Montserrat&lt;/a&gt;.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>travel</category><category>Barcelona</category><category>Montseratt</category><category>Spain</category><category>Timelapse</category></item><item><title>Timelapse: Pousando no aeroporto de Barcelona</title><link>https://bisko.be/pt/posts/blog/timelapse-landing-at-barcelona-airport/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/timelapse-landing-at-barcelona-airport/</guid><pubDate>Sat, 04 May 2019 00:00:00 GMT</pubDate><content:encoded/><category>blog</category><category>Adventures</category><category>travel</category><category>Airplane</category><category>Barcelona</category><category>Landing</category><category>Spain</category><category>Timelapse</category></item><item><title>O Gato Cinzento</title><link>https://bisko.be/pt/posts/blog/the-grey-cat/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/the-grey-cat/</guid><description>Encontramos esse carinha em algum lugar perto de casa! Lindinho e adora petiscos!</description><pubDate>Thu, 21 Mar 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;Gato cinza de olhos amarelos ao lado de um tronco de árvore, em uma encosta gramada coberta de folhas, perto de uma pedra grande e de um muro de concreto&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_1995-f9f8058b.DJx6IsPU_1JdhCg.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Encontramos esse carinha em algum lugar perto de casa! Lindinho e adora petiscos!&lt;/p&gt;</content:encoded><category>blog</category><category>Animals</category><category>Photography</category><category>cat</category><category>grey</category></item><item><title>Resetando/Reiniciando o controle remoto da Apple TV</title><link>https://bisko.be/pt/posts/dev/resetting-restarting-apple-tv-remote/</link><guid isPermaLink="true">https://bisko.be/pt/posts/dev/resetting-restarting-apple-tv-remote/</guid><description>Ontem à noite, durante a visita de uns convidados, consegui mergulhar o controle remoto da nossa Apple TV na água. Falta de sono e copos instáveis resultam em acidentes. O controle estava funcionando bem ontem à noite, mas hoje parou de funcionar. Não responde a nenhuma ação. Tentei bater na palma da mão, sacudir para tirar a água. Não ajudou em nada.</description><pubDate>Sun, 17 Feb 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ontem à noite, durante a visita de uns convidados, consegui mergulhar o controle remoto da nossa Apple TV na água. Falta de sono e copos instáveis resultam em acidentes.&lt;/p&gt;
&lt;p&gt;O controle estava funcionando bem ontem à noite, mas hoje parou de funcionar. Não responde a nenhuma ação. Tentei bater na palma da mão, sacudir para tirar a água. Não ajudou em nada.&lt;/p&gt;
&lt;p&gt;Achamos que ele tinha ido embora dessa para uma melhor e começamos a procurar o pote de arroz nos armários.&lt;/p&gt;
&lt;p&gt;Fui pesquisar na internet, mais como uma piada, para ver se dava para tentar “reiniciá-lo”.&lt;/p&gt;
&lt;p&gt;Um guia prestativo me orientou a pressionar e segurar os botões Aumentar Volume e Menu por 2-3 segundos para resetar o controle e colocá-lo em modo de pareamento.&lt;/p&gt;
&lt;p&gt;Fiquei muito surpreso quando &lt;strong&gt;realmente&lt;/strong&gt; &lt;strong&gt;funcionou&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Então, se algo parecer estranho, tente resetar o controle primeiro. Se não funcionar, aí sim você pode partir para o arroz e a intervenção no hardware.&lt;/p&gt;
&lt;p&gt;TL;DR;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Segure Menu + Aumentar Volume por 2-3 segundos&lt;/li&gt;
&lt;li&gt;Espere alguns segundos&lt;/li&gt;
&lt;li&gt;Tente interagir com a Apple TV&lt;/li&gt;
&lt;/ul&gt;</content:encoded><category>dev</category><category>Apple</category><category>Technology</category><category>AppleTV</category><category>Have you tried turning it off and on again?</category><category>remote</category><category>reset</category><category>restart</category></item><item><title>O bonde antigo</title><link>https://bisko.be/pt/posts/blog/the-old-tram/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/the-old-tram/</guid><description>Ver esta publicação no Instagram Uma publicação compartilhada por Biser Perchinkov (@biskobe) Nos últimos dias de 2018 fomos a uma festa secreta com alguns amigos. A grande surpresa foi o lugar onde ela aconteceu! Foi em um dos dois bondes mais antigos ainda em funcionamento na Bulgária! Ele foi construído há quase um século e</description><pubDate>Fri, 04 Jan 2019 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;[&lt;/p&gt;
&lt;p&gt;Ver esta publicação no Instagram&lt;/p&gt;
&lt;p&gt;](&lt;a href=&quot;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&quot;&gt;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.instagram.com/p/Br8XYN5j0z9/?utm_source=ig_embed&amp;#x26;utm_campaign=loading&quot;&gt;Uma publicação compartilhada por Biser Perchinkov (@biskobe)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nos últimos dias de 2018 fomos a uma festa secreta com alguns amigos.&lt;/p&gt;
&lt;p&gt;A grande surpresa foi o lugar onde ela aconteceu! Foi em um dos dois bondes mais antigos ainda em funcionamento na Bulgária!&lt;/p&gt;
&lt;p&gt;Ele foi construído há quase um século e definitivamente leva você de volta àquela época, embora tenha sido modernizado um pouquinho, com luzes, aquecimento e algum som/mídia para que os guias possam falar sobre os pontos turísticos pelo caminho.&lt;/p&gt;
&lt;p&gt;Eu curti bastante, porque um dos organizadores trabalha no depósito de bondes e nós tínhamos ingresso de primeira fila para ver como o condutor opera o bonde. Ganhamos um curso intensivo sobre o que cada alavanca faz e ainda pudemos tocar o sino! E o Toma também teve a chance de tentar colocar o bonde em movimento, mas descobriu-se que é preciso bastante força para operá-lo! Quem sabe daqui a alguns anos 😝&lt;/p&gt;
&lt;p&gt;Os passantes também estavam curtindo a cena, já que bondes retrô não são algo que se vê todo dia por aqui.&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Winter</category><category>joy</category><category>machinery</category><category>party</category><category>tram</category><category>travel</category></item><item><title>Trilhas sonoras incríveis de jogos – Stellaris</title><link>https://bisko.be/pt/posts/blog/amazing-game-soundtracks-stellaris/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/amazing-game-soundtracks-stellaris/</guid><description>Há um tempo comprei Stellaris e rapidinho perdi algumas horas nele. Aqui eu não vou falar do jogo em si. Ele já foi bastante coberto em reviews, let’s plays e por aí vai. Como não consigo explicar em palavras o quanto ele é incrível, vou só dizer – ouça</description><pubDate>Mon, 02 Apr 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Há um tempo comprei &lt;a href=&quot;https://en.wikipedia.org/wiki/Stellaris_(video_game)&quot;&gt;Stellaris&lt;/a&gt; e rapidinho perdi algumas horas nele. Aqui eu não vou falar do jogo em si. Ele já foi bastante coberto em reviews, let’s plays e por aí vai.&lt;/p&gt;
&lt;p&gt;Como não consigo explicar em palavras o quanto ele é incrível, vou só dizer – ouça. Feche os olhos, imagine-se numa aventura no espaço profundo ou em algum lugar para onde sua mente te levar e aproveite.&lt;/p&gt;
&lt;p&gt;( ou, se você não tem Spotify, experimente os &lt;a href=&quot;https://www.youtube.com/results?search_query=stellaris+soundtrack&quot;&gt;resultados de busca do YouTube&lt;/a&gt; )&lt;/p&gt;</content:encoded><category>blog</category><category>Music</category><category>games</category><category>ost</category><category>soundtrack</category><category>stellaris</category></item><item><title>Mergulhando de volta nas memórias: de rosas e abelhas</title><link>https://bisko.be/pt/posts/blog/diving-back-in-memories-of-roses-and-bees/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/diving-back-in-memories-of-roses-and-bees/</guid><description>Alguns dias atrás eu estava vasculhando minha coleção de fotos e acabei topando com uma das minhas fotos favoritas. A história de como essa foto surgiu é interessante. Meu pai tinha comprado uma câmera digital nova, uma Canon PowerShot A610, poucos dias antes. Eu estava ansioso para testá-la, mas ele não me deu chance de tirar nem uma fotinho, porque estava explorando e aprendendo tudo sobre ela</description><pubDate>Sun, 10 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Alguns dias atrás eu estava vasculhando minha coleção de fotos e acabei topando com uma das minhas fotos favoritas.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Uma abelha explorando a rosa&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2592&quot; height=&quot;1944&quot; src=&quot;/_astro/img_0350-258314a7.DVI6yd6N_6PkwW.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;A história de como essa foto surgiu é interessante.&lt;/p&gt;
&lt;p&gt;Meu pai tinha comprado uma câmera digital nova, uma Canon PowerShot A610, poucos dias antes. Eu estava ansioso para testá-la, mas ele não me deu chance de tirar nem uma fotinho, porque estava explorando e aprendendo tudo sobre ela de cabo a rabo. Afinal, era a nossa primeira câmera digital “avançada”.&lt;/p&gt;
&lt;p&gt;No dia da foto, meu pai e eu saímos para ir à loja e ele levou a câmera. Pedi que ele me desse a câmera para eu carregar e ver se conseguia fotografar alguma coisa. Enquanto discutíamos se eu era capaz de carregar a câmera sem quebrá-la, já tínhamos andado uns 5 ou 6 minutos e estávamos passando por um arbusto de rosas, quando vi algumas abelhas voando ao redor dele.&lt;/p&gt;
&lt;p&gt;Nessa hora eu já sabia que queria tirar uma foto daquela linda rosa em flor que você vê acima. Tirei a câmera de dentro da bolsa, liguei, esperei uma abelha pousar na flor e tirei a foto.&lt;/p&gt;
&lt;p&gt;E pronto. Minha primeiríssima foto com aquela câmera.&lt;/p&gt;
&lt;p&gt;Até hoje, essa foto continua sendo uma das minhas favoritas.&lt;/p&gt;</content:encoded><category>blog</category><category>Photography</category><category>bee</category><category>bees</category><category>flower</category><category>nature</category><category>outside</category><category>rose</category></item><item><title>Coisas de pai: Amor, você não pode pausar um jogo online!</title><link>https://bisko.be/pt/posts/blog/dad-things-baby-you-cant-pause-an-online-game/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/dad-things-baby-you-cant-pause-an-online-game/</guid><description>Então… o ciclo se completou. Hoje, aproveitando os últimos dias da licença-paternidade que a incrível Automattic me permitiu tirar, resolvi mergulhar de cabeça na terra da nostalgia e jogar um bom e velho StarCraft. Parece bem normal, né? Pois é, é mesmo! Tirando o fato de ter o bebê no escritório comigo</description><pubDate>Tue, 05 Dec 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Então… o ciclo se completou.&lt;/p&gt;
&lt;p&gt;Hoje, aproveitando os últimos dias da licença-paternidade que a incrível &lt;a href=&quot;https://automattic.com&quot;&gt;Automattic&lt;/a&gt; me permitiu tirar, resolvi mergulhar de cabeça na terra da nostalgia e jogar um bom e velho StarCraft.&lt;/p&gt;
&lt;p&gt;Parece bem normal, né? Pois é, é mesmo! Tirando o fato de ter o bebê no escritório comigo, para que eu possa cuidar dele enquanto a mãe está fazendo outras coisas.&lt;/p&gt;
&lt;p&gt;Tudo ia muito bem, o bebê estava dormindo, encontrei um jogo divertido, comecei e, no meio da partida, o bebê acordou. Tudo bem. Acalmei ele um pouquinho, mas ele estava manhoso, então saí do jogo e me concentrei nele. Não tinha como prestar atenção no jogo e no bebê ao mesmo tempo.&lt;/p&gt;
&lt;p&gt;Então, enquanto ninava o bebê nos braços, falava coisas doces e tentava acalmá-lo, dei uma olhada no monitor e vi várias mensagens do criador da partida dizendo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Por que entrar num jogo se vai sair?”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Enviadas várias e várias vezes.&lt;/p&gt;
&lt;p&gt;No começo, comecei a responder que eu tinha um bebê nos braços e precisava cuidar dele, mas aí me bateram flashbacks da minha infância, de quando eu levantava a voz, aflito, para dizer à minha mãe que não dá para pausar um jogo online.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Meu Deus, mãe, não dá pra pausar um jogo online!!!!1!1!1!!1!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Naquele momento, percebi que vou ter que abrir mão dos jogos online por um tempo.&lt;/p&gt;
&lt;p&gt;Fazer o quê… ¯\_(ツ)_/¯&lt;/p&gt;
&lt;p&gt;Pelo menos agora posso me concentrar em colocar em dia o backlog cada vez maior de jogos single player. The Witcher 3 não vai se zerar sozinho!&lt;/p&gt;</content:encoded><category>blog</category><category>Gaming</category><category>Parenting</category><category>baby</category></item><item><title>Grafites pelo mundo – Montréal</title><link>https://bisko.be/pt/posts/blog/graffiti-around-the-world-montreal/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/graffiti-around-the-world-montreal/</guid><description>Algumas semanas atrás, eu estava num encontro do time em Montréal e, caminhando pelas ruas, curti demais a cultura de grafite de lá. Adorei como eles são coloridos e/ou divertidos em comparação com outros lugares onde já estive. Alguns dos meus favoritos:</description><pubDate>Tue, 06 Jun 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Algumas semanas atrás, eu estava num encontro do time em Montréal e, caminhando pelas ruas, curti demais a cultura de grafite de lá. Adorei como eles são coloridos e/ou divertidos em comparação com outros lugares onde já estive.&lt;/p&gt;
&lt;p&gt;Alguns dos meus favoritos:&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Hydralisk!&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2694&quot; height=&quot;3495&quot; src=&quot;/_astro/img_7084-8397910a.ZIxhC7qM_1z6wBb.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Não sei se estou certo, mas de tanto jogar StarCraft no passado, essas criaturas sempre me fazem pensar em hydralisks&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Mural gigante de uma senhora idosa de óculos e coque grisalho, ladeada por pombas e prédios roxos da cidade, na esquina de uma rua&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2101&quot; height=&quot;2115&quot; src=&quot;/_astro/img_7096-cd130da6.CQOvGu0o_ZRu3Go.webp&quot; &gt;&lt;img alt=&quot;Vista noturna de um mural da Mary Poppins com guarda-chuvas, o Big Ben e tinta azul escorrendo em um prédio branco, com pichação por cima&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2387&quot; height=&quot;2357&quot; src=&quot;/_astro/img_7083-a1cb125f.CBVRLzF4_Z1ImeId.webp&quot; &gt;&lt;img alt=&quot;Mural colorido de monstrinhos de uma bola de sorvete de um olho só em um prédio rosa e roxo acima de um restaurante Dirty Dogs, com uma bicicleta na frente&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;4032&quot; height=&quot;3024&quot; src=&quot;/_astro/img_7098-99273db4.Bqxpgo6f_y2ISn.webp&quot; &gt;&lt;img alt=&quot;Mural em estêncil de homens com guarda-chuvas amarelos em uma parede azul, desbotando para um marrom enferrujado embaixo, ao lado de uma escada de metal&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;3384&quot; height=&quot;2901&quot; src=&quot;/_astro/img_7344-7ed4ce8e.CovT3-V7_hGgJI.webp&quot; &gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Graffiti</category><category>montreal</category><category>Photography</category><category>travel</category></item><item><title>Medo de cachorros</title><link>https://bisko.be/pt/posts/blog/fear-of-dogs/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/fear-of-dogs/</guid><description>Quando eu era criança, provavelmente com uns 5 ou 6 anos, o cachorro de um vizinho me mordeu enquanto eu brincava com ele. Não foi nada muito sério, só um arranhão, mas para a minha mente de criança foi uma experiência horrível. Depois do incidente, desenvolvi um medo enorme de cachorros. Eu fugia deles e me escondia em casa ou no quintal de um vizinho.</description><pubDate>Fri, 31 Mar 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Quando eu era criança, provavelmente com uns 5 ou 6 anos, o cachorro de um vizinho me mordeu enquanto eu brincava com ele. Não foi nada muito sério, só um arranhão, mas para a minha mente de criança foi uma experiência horrível.&lt;/p&gt;
&lt;p&gt;Depois do incidente, desenvolvi um medo enorme de cachorros. Eu fugia deles e me escondia em casa ou no quintal de um vizinho. Se fosse o cachorro de um amigo, eu ficava em alerta e corria para outro cômodo, ou para qualquer lugar onde o cachorro não pudesse me alcançar, se ele se mexesse o mínimo que fosse.&lt;/p&gt;
&lt;p&gt;Enquanto crescia, continuei me mantendo longe dos cachorros, mas com o tempo fui me acostumando com eles. O primeiro cachorro de quem eu não fugi gritando foi o dos meus primos – uma &lt;a href=&quot;https://en.wikipedia.org/wiki/Rough_Collie&quot;&gt;Rough Collie&lt;/a&gt; chamada Clara.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;clara&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1505&quot; height=&quot;1027&quot; src=&quot;/_astro/clara-de4f7f1b.CfG1RsCF_Z112bUQ.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Clara em toda a sua glória 🙂&lt;/p&gt;
&lt;p&gt;Ela era simplesmente a melhor cachorra. Os donos a treinaram muito bem e ela era muito calma, isto é, se você não contar as tempestades. Ela tinha pavor de trovões e precisava ser segurada firme, e as portas tinham que ficar fechadas, senão ela fugia e tentava se esconder em algum lugar bem longe da tempestade.&lt;/p&gt;
&lt;p&gt;Passar os verões na minha aldeia e ter a Clara por perto de vez em quando me ajudou muito a diminuir o medo de cachorros e a ansiedade em geral perto deles.&lt;/p&gt;
&lt;p&gt;Aqui na Bulgária ainda há muitos cães de rua soltos por aí, e eles podem representar uma ameaça de vez em quando, já que os bandos facilmente chegam a 5-10 cachorros ou mais. Isso sempre me assustou e me deixava ansioso ao andar no escuro quando eu ouvia um latido ocasional atrás de mim.&lt;/p&gt;
&lt;p&gt;Com o tempo, aprendi que cachorros não são tão assustadores e consegui distinguir os agressivos dos amigáveis que só querem brincar.&lt;/p&gt;
&lt;p&gt;No fim de semana passado eu me deixei orgulhoso.&lt;/p&gt;
&lt;p&gt;Nos últimos meses, notamos um cachorro de rua andando ao redor da casa de veraneio. No começo fiquei com bastante medo de ter um cachorro desconhecido rondando por perto. Depois de algumas visitas, percebi que ele não era tão assustador 🙂 Ele chegava, olhava para a gente e depois ia embora.&lt;/p&gt;
&lt;p&gt;Precisei de um pouco de coragem, mas no fim juntei toda ela, comprei comida enlatada e fiquei do lado de fora com a comida num pote de plástico, chamando o cachorro para vir e fazer uma boa refeição.&lt;/p&gt;
&lt;p&gt;É engraçado que o cachorro parecia ter mais medo de mim do que eu dele. Depois de algumas chamadas, e comigo dando um passo para trás, ele veio até o pote improvisado e começou a comer.&lt;/p&gt;
&lt;p&gt;Vitória! 🙂&lt;/p&gt;
&lt;p&gt;Também foi divertido vê-lo pelos espelhos do carro correndo atrás de nós enquanto saíamos da casa.&lt;/p&gt;
&lt;p&gt;A mãe da Radi chegou a dar a ele o nome de Bear.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Bear roubando o pote.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;2076&quot; height=&quot;1594&quot; src=&quot;/_astro/img_5556-54e1db0f.Dxlc4oQQ_1RmVVu.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;– O pote agora é meu!&lt;/p&gt;</content:encoded><category>blog</category><category>Uncategorized</category></item><item><title>Patinação no gelo</title><link>https://bisko.be/pt/posts/blog/ice-skating/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/ice-skating/</guid><description>Já faz quase um mês desde o evento, mas eu nunca vou esquecer 🙂 No último dia do ano passado, meu primo sugeriu que fôssemos a uma pista de patinação no gelo. Eu nunca tinha ido a uma e morria de medo de quebrar todas as minhas extremidades. Felizmente eu tinha alguma experiência com patins quando</description><pubDate>Mon, 30 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Já faz quase um mês desde o evento, mas eu nunca vou esquecer 🙂&lt;/p&gt;
&lt;p&gt;No último dia do ano passado, meu primo sugeriu que fôssemos a uma pista de patinação no gelo. Eu nunca tinha ido a uma e morria de medo de quebrar todas as minhas extremidades.&lt;/p&gt;
&lt;p&gt;Felizmente eu tinha alguma experiência com patins de rodinhas de quando era criança, e isso ajudou bastante a minha autoestima. Eu sabia que seria algo parecido. Claro que eu não estava muito preparado para o que aconteceu quando calcei os patins e pisei no gelo – Era muito escorregadio!&lt;/p&gt;
&lt;p&gt;Meu medo sumiu rápido e consegui patinar sem precisar me segurar na grade. Toda a minha velha experiência com patins voltou e consegui ficar de pé livremente no gelo.&lt;/p&gt;
&lt;p&gt;Foi uma experiência imensamente divertida e eu com certeza voltaria à pista de patinação! 🙂&lt;/p&gt;
&lt;p&gt;De bônus, consegui registrar uma visão em “primeira pessoa” do meu primo caindo no gelo:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.instagram.com/p/BOrgVw6j8O3/?taken-by=biskobe&quot;&gt;https://www.instagram.com/p/BOrgVw6j8O3/?taken-by=biskobe&lt;/a&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>Adventures</category><category>Winter</category><category>fun</category><category>ice</category><category>skating</category></item><item><title>Como tirar um número EORI permanente por via eletrônica, ou por que o papel nunca vai morrer.</title><link>https://bisko.be/pt/posts/blog/%D0%BA%D0%B0%D0%BA-%D0%B4%D0%B0-%D1%81%D0%B8-%D0%B8%D0%B7%D0%B2%D0%B0%D0%B4%D0%B8%D0%BC-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B5%D0%BD-eori-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE-%D0%B5/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/%D0%BA%D0%B0%D0%BA-%D0%B4%D0%B0-%D1%81%D0%B8-%D0%B8%D0%B7%D0%B2%D0%B0%D0%B4%D0%B8%D0%BC-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B5%D0%BD-eori-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE-%D0%B5/</guid><description>Um esclarecimento importante – o artigo está atualizado até 2017 🙂 Nos comentários há várias atualizações do processo, dê uma olhada nelas também. Atualização do comentário 1 Também recebi um e-mail de outra pessoa que passou há pouco por esse processo (setembro de 2020), mas ainda estou esperando a informação dela sobre como o processo funciona hoje. Se mesmo assim você quiser</description><pubDate>Fri, 06 Jan 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Um esclarecimento importante – o artigo está atualizado até 2017 🙂 Nos comentários há várias atualizações do processo, dê uma olhada nelas também.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bisko.be/2017/01/%d0%ba%d0%b0%d0%ba-%d0%b4%d0%b0-%d1%81%d0%b8-%d0%b8%d0%b7%d0%b2%d0%b0%d0%b4%d0%b8%d0%bc-%d0%bf%d0%be%d1%81%d1%82%d0%be%d1%8f%d0%bd%d0%b5%d0%bd-eori-%d0%bd%d0%be%d0%bc%d0%b5%d1%80-%d0%bf%d0%be-%d0%b5/#comment-16503&quot;&gt;Atualização do comentário 1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Também recebi um e-mail de outra pessoa que passou há pouco por esse processo (setembro de 2020), mas ainda estou esperando a informação dela sobre como o processo funciona hoje.&lt;/p&gt;
&lt;p&gt;Se mesmo assim você quiser saber como era o processo em 2017, pode ler o artigo inteiro.&lt;/p&gt;
&lt;p&gt;Se não – &lt;a href=&quot;https://bisko.be/2017/01/%D0%BA%D0%B0%D0%BA-%D0%B4%D0%B0-%D1%81%D0%B8-%D0%B8%D0%B7%D0%B2%D0%B0%D0%B4%D0%B8%D0%BC-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B5%D0%BD-eori-%D0%BD%D0%BE%D0%BC%D0%B5%D1%80-%D0%BF%D0%BE-%D0%B5/#comments&quot;&gt;pule direto para os comentários&lt;/a&gt; para ver o que mudou e que novas dores de cabeça as pessoas estão enfrentando.&lt;/p&gt;
&lt;h4 id=&quot;artigo-original-de-2017&quot;&gt;&lt;em&gt;&lt;strong&gt;Artigo original de 2017&lt;/strong&gt;&lt;/em&gt;&lt;/h4&gt;
&lt;p&gt;TL;DR; e os passos concretos estão no fim do post 🙂&lt;/p&gt;
&lt;p&gt;Perto do Natal topei com uma promoção muito boa – um SSD Transcend de 480 GB por 86$ – score! Problema: era da Amazon.com, o que significa que ele ia ser barrado na alfândega.&lt;/p&gt;
&lt;p&gt;O preço e a ganância venceram, e eu pedi no dia 28 de dezembro; no dia 3 de janeiro ele já estava em Sófia. Entrega pela DHL, tudo ótimo. Os funcionários da DHL me explicaram que precisavam de uma procuração, de uma descrição da mercadoria em búlgaro e do tão sonhado número EORI.&lt;/p&gt;
&lt;p&gt;As duas primeiras coisas são triviais. Uma ida ao cartório e uma linha de texto livre.&lt;/p&gt;
&lt;p&gt;Já o número EORI era outra história.&lt;/p&gt;
&lt;p&gt;Como todo mundo que já teve de lidar com a alfândega sabe, o número EORI é de dois tipos – permanente e temporário. O temporário sai na hora e vale para uma remessa específica. Se for preciso para remessas futuras, é necessário tirar um novo a cada vez.&lt;/p&gt;
&lt;p&gt;Por conhecidos, eu sabia que o EORI permanente se tira de graça pelo sistema online da alfândega. A DHL, por sua vez, queria uma certa quantia para tirar um. Eu tenho fé nos sistemas eletrônicos (como sou ingênuo) e resolvi economizar um dinheirinho.&lt;/p&gt;
&lt;p&gt;Na tarde do dia 3, sentei e comecei a me perguntar como funcionava a coisa e como exatamente eu “registrava” um número EORI.&lt;/p&gt;
&lt;p&gt;O portal eletrônico da alfândega (ecustoms.bg) é inútil se você acessa direto. Por quê? Porque exige que você já esteja registrado nele. Repito – para acessar, você precisa já estar registrado. Como se registrar nele sem estar registrado continua sendo um mistério para mim. Outro drama, menor, é que ele exige assinatura eletrônica para ser acessado.&lt;/p&gt;
&lt;p&gt;Até aqui, tudo bem (não). Abri o Google e comecei a lançar feitiços para descobrir como dar entrada no tão sonhado requerimento. Algumas buscas depois, cheguei à seguinte página: &lt;em&gt;&lt;a href=&quot;http://ecustoms.bg/eportal/public/Controler?control=UpdateForm&amp;#x26;doc%5C_def%5C_id=24&amp;#x26;row%5C_id=1&amp;#x26;param%5C_selector=4&quot;&gt;http://ecustoms.bg/eportal/public/Controler?control=UpdateForm&amp;#x26;doc\_def\_id=24&amp;#x26;row\_id=1&amp;#x26;param\_selector=4&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Screen Shot 2017-01-06 at 11.13.28.png&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; fetchpriority=&quot;auto&quot; width=&quot;1287&quot; height=&quot;860&quot; src=&quot;/_astro/Screen-Shot-2017-01-06-at-11.13.28-f052b73c.B7w6nr_s_1fJCpg.webp&quot; &gt;&lt;/p&gt;
&lt;p&gt;Até aqui, ótimo; leio o texto, mal consigo enxergar o link escondido no “aqui”, clico e… nada. O link me leva a um sistema que não funciona – &lt;em&gt;&lt;a href=&quot;https://ecustoms.bg:18443/eportal/servlet/Controler?control=ReaderForm&amp;#x26;doc%5C_def%5C_id=3&amp;#x26;row%5C_id=5&quot;&gt;https://ecustoms.bg:18443/eportal/servlet/Controler?control=ReaderForm&amp;#x26;doc\_def\_id=3&amp;#x26;row\_id=5&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Fiquei um tempo murmurando feitiços e torcendo para que não fosse um daqueles sistemas online que só funcionam das 9 às 5 em dias úteis, mas não desisti e segui em frente.&lt;/p&gt;
&lt;p&gt;De novo feitiços no Google e, depois de algumas tentativas fracassadas, por pura coincidência enorme, cheguei a: &lt;a href=&quot;https://eori.customs.bg:8443/&quot;&gt;https://eori.customs.bg:8443/&lt;/a&gt;. Segue-se surpresa, espanto, festa etc.&lt;/p&gt;
&lt;p&gt;Rapidinho coloquei a assinatura eletrônica e comecei, febril, a estudar a interface, que consiste em 4 botões ao todo, dois deles &lt;strong&gt;Sair&lt;/strong&gt; e um &lt;strong&gt;Atualizar&lt;/strong&gt;. O último botão era algo do tipo “Registro”, mas como ele some depois que você faz o registro, não consigo dizer exatamente o que estava escrito nele.&lt;/p&gt;
&lt;p&gt;Clique, aparece um formulário para preencher com vários tipos de campos e uns códigos neles. Preenchi aqueles cujo significado eu conhecia, mas os outros eram terra incognita. Alguns estavam em negrito, outros não, mas não ficava claro quais eram obrigatórios ou não.&lt;/p&gt;
&lt;p&gt;De volta ao Google. Feitiços – nada. No fim resolvi procurar por frases específicas dos campos e, por pura sorte, caí em &lt;a href=&quot;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&quot;&gt;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&lt;/a&gt;, que se revelou ser o regulamento de criação do registro EORI-BG. Que beleza. Em vez de uns pop-ups com uma descrição curta do campo, a pessoa precisa fuçar em regulamentos e leis para preencher um formulário. C’est la vie, ou, abrasileirando – aqui é assim.&lt;/p&gt;
&lt;p&gt;Um regulamento não vai me parar. Li na diagonal e cheguei ao fim, onde vi alguns exemplos de formulários usados na versão em papel do requerimento. Terminei de preencher o meu, salvei, assinei com a assinatura eletrônica e comecei a torcer.&lt;/p&gt;
&lt;p&gt;Início do processo por volta das 18h, fim às 21h43. Para um requerimento online.&lt;/p&gt;
&lt;p&gt;Teria sido mais rápido se eu tivesse ido a uma das alfândegas de Sófia e feito isso lá mesmo, só que esse número EORI é emitido de acordo com o endereço permanente, e eu ainda estou registrado em Montana. Só que não existe alfândega em Montana. A mais próxima fica em Lom, a cerca de 40 km de Montana. Eu estou em Sófia. Se o requerimento fosse feito em papel, eu teria de ir até lá duas vezes, o que não me agradava nem um pouco. Lá fora tem neve, só dá para fazer em dia útil e todas as outras belezas da administração pública.&lt;/p&gt;
&lt;p&gt;Até aqui, eu ainda acreditava nos sistemas eletrônicos e estava feliz por não precisar ir até o outro extremo da Bulgária por algo tão pequeno (e economizar um dinheirinho, afinal foi daí que tudo começou).&lt;/p&gt;
&lt;p&gt;Passam-se dois dias, já é quinta-feira, e nenhum movimento no requerimento. Já começo a desconfiar um pouco. Liguei para o respectivo Service Desk da alfândega, onde a atendente muito educadamente me disse que o prazo é de até 5 dias úteis e que, se depois disso não tivesse saído, eu ligasse de novo. Beleza, vou esperar.&lt;/p&gt;
&lt;p&gt;Durante o dia fui lendo sobre esses tão sonhados requerimentos online de EORI e a experiência que as pessoas compartilharam, e em todos é a mesma coisa – se tiver sorte, tem; se não, espera. Alguém comentou que perguntou na alfândega regional e disseram que não tinham recebido esse requerimento. Aqui a fé no sistema eletrônico começa a balançar perigosamente.&lt;/p&gt;
&lt;p&gt;Hoje, sexta-feira, resolvi que seria bom verificar se por acaso eu também não era uma das vítimas do sistema eletrônico. Liguei para a alfândega de Lom. Uma funcionária gentil me disse para ligar para o setor responsável por isso. Ela me passou um número local de Lom sem o código de área e, depois de algumas perguntas bobas sobre que número era aquele que ela estava ditando, consegui entender que na verdade era outro telefone para o qual eu devia ligar. Rimos um com o outro ao telefone por causa da situação e liguei para o número que ela me deu.&lt;/p&gt;
&lt;p&gt;Lá, um senhor, de novo educado, atendeu e, depois que fiz a minha pergunta, disse que eles processam os requerimentos quando chegam, que nada tinha chegado até eles e que ia verificar o que estava acontecendo e por que não tinha sido recebido. Pediu que eu ligasse de novo em uns 10 minutinhos. Fico feliz que pelo menos o tratamento de todos na cadeia foi humano, sem aquele jeito grosseiro e arrogante dos tempos do socialismo. Comecei a esperar e, em menos de 5 minutos, chega a notificação de um e-mail novo com o assunto: “&lt;strong&gt;Informação sobre o seu registro EORI!&lt;/strong&gt;” OBA! Consegui!&lt;/p&gt;
&lt;p&gt;Mandei para a DHL e agora só falta a remessa ser liberada e eu recebê-la. Oba! (de novo)&lt;/p&gt;
&lt;p&gt;Para encerrar (ou TL;DR;), um guia mais sintetizado de como tirar um número EORI permanente online:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Tire uma assinatura eletrônica, se você não tiver uma.&lt;/li&gt;
&lt;li&gt;Vá para: &lt;a href=&quot;https://eori.customs.bg:8443/&quot;&gt;https://eori.customs.bg:8443/&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Baixe &lt;a href=&quot;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&quot;&gt;http://ecustoms.bg/eportal/public/DocumentViewer?row_id=265&lt;/a&gt; para ver como preencher os campos. A informação de que você precisa está nas últimas páginas.&lt;/li&gt;
&lt;li&gt;Envie o requerimento e assine-o obrigatoriamente. Você deve ver uma linha com o seguinte valor na coluna Ação: &lt;strong&gt;EORI-REG-SIGN&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Espere um dia ou, se estiver se sentindo sortudo, ligue para a unidade regional da alfândega à qual você enviou o requerimento e pergunte com tato se eles o receberam, porque o sistema eletrônico estaria dando alguns erros. Não mencione que você está com pressa.&lt;/li&gt;
&lt;li&gt;Depois de um tempinho você receberá o tão sonhado número EORI.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Algumas observações:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;A assinatura eletrônica precisa estar no seu nome, já que vários dados (nomes, ЕГН, e-mail) são extraídos da assinatura ao preencher o formulário. Ou seja, não dá para fazer com a assinatura de um amigo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;O sistema é bem estranho de usar e às vezes é bem teimoso.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Envie e assine o formulário depois de conferir com atenção todos os campos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Funcionou com sucesso no Chrome no Mac com uma assinatura da Infonotary.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Observação adicionada a partir do comentário da &lt;a href=&quot;http://bisko.be/2017/01/%d0%ba%d0%b0%d0%ba-%d0%b4%d0%b0-%d1%81%d0%b8-%d0%b8%d0%b7%d0%b2%d0%b0%d0%b4%d0%b8%d0%bc-%d0%bf%d0%be%d1%81%d1%82%d0%be%d1%8f%d0%bd%d0%b5%d0%bd-eori-%d0%bd%d0%be%d0%bc%d0%b5%d1%80-%d0%bf%d0%be-%d0%b5/#comment-16471&quot;&gt;Petya&lt;/a&gt; mais abaixo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Quando tento assinar com a assinatura eletrônica, começa o download de um arquivo (stampitls). Depois de dois dias de luta com o HelpDesk da Alfândega, eles &lt;a href=&quot;http://bisko.be/wp-content/uploads/2018/05/stampit-sign-esig.pdf&quot;&gt;me enviaram uma instrução&lt;/a&gt;, com a qual consegui assinar.&lt;br&gt;
E mais uma coisa – se o seu endereço é em Sófia e você decidir obter o número EORI com assinatura eletrônica, ao escolher a unidade aduaneira escolha &lt;strong&gt;ТМУ Столична&lt;/strong&gt; – leva cerca de uma hora, e se escolher Летище София (Aeroporto de Sófia) – pode levar até 5 dias úteis&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Митница</category><category>eori</category><category>еори</category><category>митница</category></item><item><title>A Lei do Comércio Eletrônico (ЗЕТ) e as mensagens comerciais (… as não solicitadas…)</title><link>https://bisko.be/pt/posts/blog/%D0%B7%D0%B5%D1%82-%D0%B8-%D1%82%D1%8A%D1%80%D0%B3%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%82%D0%B5-%D1%81%D1%8A%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BD%D0%B5%D0%BF%D0%BE%D0%B8%D1%81%D0%BA/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/%D0%B7%D0%B5%D1%82-%D0%B8-%D1%82%D1%8A%D1%80%D0%B3%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D1%82%D0%B5-%D1%81%D1%8A%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BD%D0%B5%D0%BF%D0%BE%D0%B8%D1%81%D0%BA/</guid><description>Hoje, mais uma vez, me fartei de ver “Segundo a ЗЕТ, art. 6 (1), esta mensagem comercial pode ser não solicitada” e, logo depois, 5 páginas de vômito cheio de groselhas, sem nenhuma formatação, sem seções claramente separadas etc. Como cansei de ler essas porcarias, fui fuçar na ЗЕТ para ver o que diz esse famoso</description><pubDate>Tue, 24 Aug 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hoje, mais uma vez, me fartei de ver “Segundo a ЗЕТ, art. 6 (1), esta mensagem comercial pode ser não solicitada” e, logo depois, 5 páginas de vômito cheio de groselhas, sem nenhuma formatação, sem seções claramente separadas etc.&lt;/p&gt;
&lt;p&gt;Como cansei de ler essas porcarias, fui fuçar na ЗЕТ para ver o que diz esse famoso artigo 6 e leio:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Art. 6.&lt;/strong&gt; (1) O prestador de serviços que envia mensagens comerciais não solicitadas por correio eletrônico, sem o consentimento prévio do destinatário, é obrigado a assegurar que a mensagem comercial seja identificada de forma clara e inequívoca como não solicitada, desde o momento em que chega ao destinatário.&lt;/p&gt;
&lt;p&gt;(2) (Alterado – DV, n.º 105 de 2006, em vigor desde 24.12.2006) A Comissão de Proteção do Consumidor mantém um registro eletrônico dos endereços eletrônicos de pessoas jurídicas que não desejam receber mensagens comerciais não solicitadas, conforme procedimento definido por regulamento do Conselho de Ministros.&lt;/p&gt;
&lt;p&gt;(3) É proibido o envio de mensagens comerciais não solicitadas para endereços eletrônicos inscritos no registro previsto no § 2.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Até aqui tudo bem, tudo claro, concordo. Não adianta ficar discutindo as disposições legais, vou aturar ou bloquear, blá-blá-blá, e sigo lendo o parágrafo 4 e o que vejo:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;(4) &lt;strong&gt;É proibido&lt;/strong&gt; o envio de mensagens comerciais não solicitadas a consumidores &lt;strong&gt;sem o consentimento prévio deles.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Eeee… Hã? Pelo visto, eles deveriam primeiro me mandar um e-mailzinho perguntando se eu concordo em receber todo esse vômito ou não, mas não fazem isso. Simplesmente declaram que, segundo o art. 6 (1), essa mensagem comercial pode não ter sido solicitada por mim e depois despejam todo o vômito no mesmo e-mail. Em lugar nenhum perguntam se eu concordo ou não – já chegam chutando a porta.&lt;/p&gt;
&lt;p&gt;Fico me perguntando o quanto essa prática é legal – mandar spam sem o meu consentimento expresso?&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Random rants</category><category>закони</category><category>спам</category></item><item><title>Fonética e xorg</title><link>https://bisko.be/pt/posts/blog/phonetics-and-xorg/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/phonetics-and-xorg/</guid><description>Em alguma das últimas versões do xorg, que apareceram por volta de janeiro-fevereiro deste ano, entraram na disposição fonética mudanças feitas por alguém que não pensou nem um pouco no usuário comum e quis transformar a fonética em BDS. As mudanças consistem na introdução dos sinais de aspas superiores e inferiores, em vez de</description><pubDate>Sat, 15 May 2010 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Em alguma das últimas versões do xorg, que apareceram por volta de janeiro-fevereiro deste ano, entraram na disposição fonética mudanças feitas por alguém que não pensou nem um pouco no usuário comum e quis transformar a fonética em BDS. As mudanças consistem na introdução dos sinais de aspas superiores e inferiores, em vez de &amp;#x3C;&gt;, do sinal de parágrafo em vez de &amp;#x26;, e do sinal de euro em vez de ^.&lt;/p&gt;
&lt;p&gt;Para corrigir essas atrocidades, adicionam-se as seguintes linhas ao &lt;strong&gt;~/.bashrc&lt;/strong&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;xmodmap -e “keycode 16 = 7 ampersand 7 ampersand”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 12 = 3 numbersign 3 numbersign”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 15 = 6 asciicircum 6 asciicircum”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 20 = minus underscore minus underscore”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 59 = comma less comma less”&lt;/p&gt;
&lt;p&gt;xmodmap -e “keycode 60 = period greater period greater”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Depois, faça logout e entre de novo (log-in) no sistema, e a essa altura você já deve ter de volta a velha disposição dos símbolos.&lt;/p&gt;
&lt;p&gt;P.S. Há ainda outra mudança: no lugar do «ь» maiúsculo (ер малък, o x latino minúsculo) foi colocado o «ѝ» (i com acento), o que considero útil, e por isso não o incluí nas correções acima.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Funny</category><category>Random rants</category><category>Tech</category></item><item><title>Removendo o bloqueio de senha do iPhone</title><link>https://bisko.be/pt/posts/blog/removing-iphone-passcode-lock/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/removing-iphone-passcode-lock/</guid><description>Ontem tomei alguns drinques e decidi colocar uma senha no meu iPhone, só para o caso de alguém tentar fuçar nele (paranoia boba)… Então fui lá e coloquei a senha, digitei duas vezes nos ajustes, defini o que eu acreditava ser o número que estava digitando e então</description><pubDate>Sat, 14 Nov 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ontem tomei alguns drinques e decidi colocar uma senha no meu iPhone, só para o caso de alguém tentar fuçar nele (paranoia boba)… Então fui lá e coloquei a senha, digitei duas vezes nos ajustes, defini o que eu acreditava ser o número que estava digitando e então bloqueei o telefone (botão power/sleep). Depois tentei desbloqueá-lo e, pelo visto, consegui digitar duas vezes um número que não era o que eu queria. Então passei o resto da noite tentando descobrir qual era o número, mas sem sorte.&lt;/p&gt;
&lt;p&gt;Agora, com a cabeça mais sóbria, encontrei um jeito de remover o bloqueio de senha (junto com todas as outras senhas do telefone, porém).&lt;/p&gt;
&lt;p&gt;Então os passos são os seguintes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Acesse o sistema de arquivos do telefone (no linux é fácil – confira &lt;a href=&quot;http://marcansoft.com/blog/2009/10/iphone-syncing-on-linux-part-2/&quot; title=&quot;Marcansoft&quot;&gt;http://marcansoft.com/blog/2009/10/iphone-syncing-on-linux-part-2/&lt;/a&gt; sobre como acessar o sistema de arquivos do iPod – o mesmo vale para o iPhone e o iPod touch).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Depois vá até &lt;strong&gt;/private/var/Keychains&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mova o arquivo chamado &lt;strong&gt;keychain-2.db&lt;/strong&gt; para outro local, por exemplo /&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Depois vá até &lt;strong&gt;/var/mobile/Library/Preferences/&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mova o arquivo chamado &lt;strong&gt;com.apple.springboard.plist&lt;/strong&gt; para outro local, por exemplo /&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Então você tem que matar o springboard ( &lt;strong&gt;killall SpringBoard&lt;/strong&gt; se você estiver conectado via SSH) &lt;strong&gt;ou simplesmente reiniciar&lt;/strong&gt; o telefOops, parece que a resposta foi cortada. Deixe-me reescrever o parágrafo final e fechar corretamente:&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Então você tem que matar o springboard ( &lt;strong&gt;killall SpringBoard&lt;/strong&gt; se estiver conectado via SSH) &lt;strong&gt;ou simplesmente reiniciar&lt;/strong&gt; o telefone.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pronto, é só isso.&lt;/p&gt;
&lt;p&gt;O efeito colateral desse exercício é que você vai perder todas as suas senhas de contas de e-mail, contas exchange e a ordem dos ícones na springboard, mas pelo menos você não vai precisar reflashear o telefone 🙂&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Random rants</category><category>Tech</category><category>drinkingisbad</category><category>Funny</category><category>iphone</category><category>ipod</category><category>ipod touch</category><category>lock</category><category>lockdown</category><category>passcode</category></item><item><title>As últimas gotas de bateria…</title><link>https://bisko.be/pt/posts/blog/last-drops-of-battery/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/last-drops-of-battery/</guid><description>Hoje, à noite, tive um pequeno apagão no meu bairro e decidi que era hora de colocar à prova a bateria do meu Acer 5935g. Tirei o cabo de energia da tomada e continuei minha noite de filmes com Dexter S02. Então aqui está o resultado final do meu pequeno teste de bateria: 1:30 hora – filmes 35 minutos</description><pubDate>Tue, 08 Sep 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hoje, à noite, tive um pequeno apagão no meu bairro e decidi que era hora de colocar à prova a bateria do meu Acer 5935g. Tirei o cabo de energia da tomada e continuei minha noite de filmes com Dexter S02.&lt;/p&gt;
&lt;p&gt;Então aqui está o resultado final do meu pequeno teste de bateria:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1:30 hora – filmes&lt;/li&gt;
&lt;li&gt;35 minutos navegando&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Isso soma um total de 2:05 horas de bateria garantidas (no mínimo), e ainda sobra quase meia hora de reserva para terminar uns textos em que estou trabalhando.&lt;/p&gt;
&lt;p&gt;Na verdade, essa é a primeira vez que chego tão perto do tempo de bateria definido nas especificações fornecidas pelo fabricante.  Fico feliz por ter escolhido a Acer 🙂&lt;/p&gt;
&lt;p&gt;O sistema em que testei a bateria é:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Acer 5935g (bateria original)&lt;/li&gt;
&lt;li&gt;Windows Vista SP2 64bit&lt;/li&gt;
&lt;li&gt;GeForce 130M ativa (não a Intel 4500 onboard)&lt;/li&gt;
&lt;li&gt;Mouse Razer Copperhead&lt;/li&gt;
&lt;li&gt;60% de brilho o tempo todo&lt;/li&gt;
&lt;li&gt;Skype rodando em segundo plano&lt;/li&gt;
&lt;li&gt;WiFi ligado, conectado à rede&lt;/li&gt;
&lt;li&gt;KMplayer tocando DivX (com muitos avanços e retrocessos (não consigo assistir a um filme do começo ao fim sem ficar pulando 🙂 )&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Em breve vem um teste no Linux com as mesmas atividades. Mas primeiro preciso instalá-lo e configurá-lo, o que vai ficar para quando eu tiver um tempinho livre.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Tech</category><category>acer</category><category>battery</category><category>cool</category><category>regards</category><category>video</category></item><item><title>Erro E16 em câmera Canon</title><link>https://bisko.be/pt/posts/blog/error-e16-canon-camera/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/error-e16-canon-camera/</guid><description>A história começou ontem, quando meu pai me escreveu dizendo que a câmera tinha pifado (Canon A610) e que a única coisa que ela fazia ao ligar (no modo de fotografar) era estender a lente, recolher de novo e mostrar num fundo preto Error E16. Fuçei a internet e a maioria das informações dizia que o problema era desconhecido e não era raro</description><pubDate>Wed, 02 Sep 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;A história começou ontem, quando meu pai me escreveu dizendo que a câmera tinha pifado (&lt;strong&gt;Canon A610&lt;/strong&gt;) e que a única coisa que ela fazia ao ligar (no modo de fotografar) era estender a lente, recolher de novo e mostrar num fundo preto&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Error E16&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Fucei a internet e a maioria das informações dizia que &lt;strong&gt;o problema é desconhecido&lt;/strong&gt; e que não é nada raro, que era para mandar a câmera para a Canon e eles trocariam.&lt;/p&gt;
&lt;p&gt;Até aí, tudo bem, só que a garantia da câmera venceu há mais de um ano (&lt;strong&gt;fora da garantia&lt;/strong&gt;, resumindo, porque ela foi comprada em maio de 2006).&lt;/p&gt;
&lt;p&gt;Ou seja, eu estava sem solução, até que meu pai se tocou e tentou o &lt;strong&gt;clássico&lt;/strong&gt; da tecnologia “amarela”: &lt;strong&gt;PORRADA&lt;/strong&gt;! 🙂&lt;/p&gt;
&lt;p&gt;Pelo visto, com um &lt;strong&gt;chacoalhão forte ou um tapa&lt;/strong&gt; na câmera, há uma boa chance de &lt;strong&gt;o erro sumir e ela voltar a funcionar&lt;/strong&gt; normalmente.&lt;/p&gt;
&lt;p&gt;Mas isso tem seus &lt;strong&gt;riscos&lt;/strong&gt;: se o erro apareceu uma vez, é provável que &lt;strong&gt;apareça de novo&lt;/strong&gt;, é tudo uma &lt;strong&gt;questão de tempo&lt;/strong&gt;. Então é melhor ir pensando em uma &lt;strong&gt;câmera nova&lt;/strong&gt;, enquanto você consegue ir levando com a velha.&lt;/p&gt;
&lt;p&gt;Para completar, tem ainda um “ótimo” efeito colateral: o vídeo funciona “pela metade”, como você pode ver no link a seguir: E16 error on Canon A610&lt;/p&gt;
&lt;p&gt;--- ## External Downloads Saved Locally - [&lt;a href=&quot;http://www.youtube.com/watch?v=fQGdaOgQt9M%5C&quot;&gt;http://www.youtube.com/watch?v=fQGdaOgQt9M\&lt;/a&gt;](media/грешка-e16-при-фотоапарат-canon-Canon A610 E16 error video.mkv)&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>camera</category><category>canon</category><category>chinatech</category><category>e16</category><category>error</category><category>fix</category></item><item><title>iPhone 3.0</title><link>https://bisko.be/pt/posts/blog/iphone-30/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/iphone-30/</guid><description>Uhuuuuu…. tô feliz como criança 😉 Já atualizei para a última versão do iPhone OS, a tão esperada versão 3.0. À primeira vista é uma grande brincadeira, até a gente aprender as novidades (as úteis, claro) do novo firmware. Aqui estão algumas que eu, pessoalmente, acho úteis: Spotlight (primeira tela (zero, se considerarmos a Home como a primeira) – muito</description><pubDate>Fri, 19 Jun 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Uhuuuuu…. tô feliz como criança 😉&lt;/p&gt;
&lt;p&gt;Já atualizei para a última versão do iPhone OS, a tão esperada versão 3.0.&lt;br&gt;
À primeira vista é uma grande brincadeira, até a gente aprender as novidades (as úteis, claro) do novo firmware. Aqui estão algumas que eu, pessoalmente, acho úteis:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spotlight&lt;/strong&gt; (primeira tela (zero, se considerarmos a Home como a primeira) – dá muita alegria. Você digita 3 letras e já ligou para quem precisava ou colocou a música que queria. Dá para configurar nas opções para ele abrir com 2 toques no botão Home.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Landscape&lt;/strong&gt; (a tela com as perninhas para os lados) – simplesmente não tem graça igual 🙂 . SMS, e-mail, notas – tudo em landscape… AAAAAAAAAA (gritos de alegria)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Copy&amp;#x26;Paste&amp;#x26;Undo&amp;#x26;…&lt;/strong&gt; (aquilo que não existia até agora) – a funcionalidade de copiar e colar foi pensada de um jeito muito esperto (dá para ver nos reviews). Até agora achei 2 bugs. Na primeira vez que se copia imagem + texto, só a imagem é copiada. O outro bug é se você marcou algo para copiar no Safari, fecha e abre de novo logo em seguida: primeiro você vê a área marcada e só então carrega qualquer outra coisa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Call Log&lt;/strong&gt; (o registro de chamadas) mais detalhado – agora o Phone.app mostra informações mais detalhadas sobre as ligações feitas com um determinado número, por exemplo a duração da chamada, quando foi feita e qual foi o status da ligação.&lt;/li&gt;
&lt;li&gt;Possibilidade de desativar o SMS Reminder nas opções -&gt; Settings -&gt; General -&gt; Messages -&gt; Repeat Alert – a salvação contra as vibrações e sons assustadores do telefone quando você esquece de abrir aquele SMS que já leu na tela inicial.&lt;/li&gt;
&lt;li&gt;Melhorias no &lt;strong&gt;iPod&lt;/strong&gt; – &lt;strong&gt;Shake to Shuffle&lt;/strong&gt; (você balança o telefone para o lado e ele troca por uma música aleatória) – prático, mas é preciso sacudir com bastante força. (nota para mim mesmo: testar na lotação e no ônibus urbano); Nos podcasts há um botão TÃO grande para &lt;strong&gt;voltar 30 segundos&lt;/strong&gt; no podcast que está tocando. Ao lado dele fica o &lt;strong&gt;botão 1x (2x, 1/2x)&lt;/strong&gt;, se você quiser acelerar ou desacelerar a velocidade do podcast. (soa muito engraçado, principalmente se você ouvir algo bem rápido); Também dá para navegar pelos podcasts online e depois baixá-los para o telefone.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VELOCIDADE&lt;/strong&gt; – levei um susto… o telefone funciona pelo menos uns 60% mais rápido do que com a 2.2.1. Os aplicativos abrem na velocidade da luz. E fecham também. Agora o som nem trava mais enquanto abro ou fecho outro aplicativo ou o próprio iPod.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Não me lembro de outras agora, mas prometo completar a lista quando descobrir mais coisas úteis no novo firmware.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>cool</category><category>iphone</category><category>update</category></item><item><title>IE daily</title><link>https://bisko.be/pt/posts/blog/ie-daily/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/ie-daily/</guid><description>Se de vez em quando, sem saber de onde, as bordas de algum elemento ficarem ‘quebradas’ no IE6,7, experimente colocar um background no elemento, que há uma grande chance de o truque funcionar.</description><pubDate>Sat, 30 May 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Se de vez em quando, sem saber de onde, as bordas de algum elemento ficarem ‘quebradas’ no IE6,7, experimente colocar um background no elemento, que há uma grande chance de o truque funcionar.&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>bug</category><category>ie</category></item><item><title>Will it Lens?</title><link>https://bisko.be/pt/posts/blog/will-it-lens/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/will-it-lens/</guid><description>Os caras do Google são totalmente pirados 🙂 http://googleblog.blogspot.com/2009/04/will-it-lens.html</description><pubDate>Sat, 11 Apr 2009 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Os caras do Google são totalmente pirados 🙂&lt;br&gt;
&lt;a href=&quot;http://googleblog.blogspot.com/2009/04/will-it-lens.html&quot;&gt;http://googleblog.blogspot.com/2009/04/will-it-lens.html&lt;/a&gt;&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>google</category><category>lens</category></item><item><title>Tia Vatsa … ou com velhinhos a caminho</title><link>https://bisko.be/pt/posts/blog/lelq-vaca/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/lelq-vaca/</guid><description>Sexta-feira, 13h30 … últimos minutos de trabalho. Assino a papelada de saída, últimas palavras e sigo para a Estação Central. Subo no bonde e começo a calcular o tempo com cuidado e a lutar contra o meu eu guloso, na questão de passar ou não no McDonalds para pegar alguma coisa… Consigo vencê-lo,</description><pubDate>Sun, 09 Nov 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Sexta-feira, 13h30 … últimos minutos de trabalho. Assino a papelada de saída, últimas palavras e sigo para a Estação Central. Subo no bonde e começo a calcular o tempo com cuidado e a lutar contra o meu eu guloso, na questão de passar ou não no McDonalds para pegar alguma coisa… Consigo vencê-lo, porque, pelas minhas contas por alto, talvez eu nem conseguisse chegar à estação até as 15h15, quando tinha encontro marcado com o Irji.&lt;/p&gt;
&lt;p&gt;Claro que as minhas contas por alto não estavam nada certas … cheguei quase 40 minutos mais cedo … Nesse momento o meu eu guloso (que daqui em diante, para abreviar, vou chamar de Porquinho) começou a me encher: “Podia ter passado e pegado alguma coisa pra comer, né!”. Depois de uns xingamentos dirigidos ao Porquinho, entrei na estação e fiquei de queixo caído… “Caramba! Nunca vi tanta gente nessa estação!!!”. Estava mais cheio que … sei lá o quê… era um formigueiro de gente 🙂 . Vi que não tinha lugar nos bancos, saí e sentei nas escadas embaixo do relógio. Mandei um SMS para o Ivan dizendo que era um hospício, e recebi como resposta a instrução de comprar os bilhetes imediatamente :).&lt;/p&gt;
&lt;p&gt;Voltei lá para dentro e fui direto para os guichês pequenos… passei super rápido. Claro, né, porque só tinha umas 2-3 pessoas na minha frente, enquanto nos outros guichês era uma loucura. Comprei os bilhetes, com assento marcado, claro, e voltei a esperar lá fora. O Ivan chegou por volta das 15h40, porque o transporte público, por sua vez, é gente má, junto com os táxis 🙂 e ficamos esperando no painel anunciarem onde seria montado o nosso trem. Ficamos lá, esperando, ficamos lá, esperando … já são 15h50… e ainda nenhuma informação.. nesse momento estamos na situação “puta que pariu”, junto com o resto da estação inteira.&lt;/p&gt;
&lt;p&gt;De repente começam a anunciar pelo sistema de som (ou como quer que se chame isso) qual trem está em qual plataforma, e vemos a estação inteira disparando em direção às plataformas…&lt;/p&gt;
&lt;p&gt;Depois de muito empurra-empurra, cotovelada e pisão, coisa que até os jogadores de futebol americano estalariam a língua de admiração, chegamos à plataforma e começamos a procurar os nossos lugares. Aqui o vagão 12, ali o vagão 12…. pronto, atravessamos o trem inteiro e chegamos ao vagão. Entramos correndo, já que eram 15h58 e a qualquer momento o trem ia partir, e lá dentro…. ah, lá dentro… Lá dentro você precisava ser um micróbio para se esgueirar ou algum super-homem para empurrar as pessoas que se agitavam freneticamente pelos corredores. Ainda bem que os nossos lugares eram na 2ª cabine, e não no meio do vagão, porque havia uma chance real de acabar numa cena de “Kickboxer X” (Sangue e Esporte).&lt;/p&gt;
&lt;p&gt;Enfim, nos acomodamos e ficamos esperando o trem partir. Depois de uns 2 minutinhos aparecem uns velhinhos com reserva na nossa cabine e rapidamente expulsam os “invasores” (embora a gente conhecesse eles, mas … destino). Infelizmente as 2 velhinhas chatas de Berkovitsa ficaram … todo mundo se acomodou e começamos a esperar o trem sair.&lt;/p&gt;
&lt;p&gt;Claro que nesse meio tempo reconheço um dos velhinhos, que até alguns anos atrás morava perto de nós. Ele, por sua vez, não me reconheceu… pelo visto a demência está dando o ar da graça 😀&lt;/p&gt;
&lt;p&gt;Vou pular a maior parte dos detalhes, porque são tantos que é difícil lembrar, mas vou contar um que me fez morrer de rir:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;…&lt;br&gt;
– Olha, ele toma café toda manhã na tia Vatsa!&lt;br&gt;
– Tia Vatsa?&lt;br&gt;
– É, nas xícaras está escrito tia Vatsa, e vai ver que na verdade era lavAzza&lt;br&gt;
…&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;E assim por diante, 4 horas inteiras de humor de velhinho, que em certos momentos “te rasga o diafragma e você desce na estação Septemvri para te colocarem um novo”.&lt;/p&gt;
&lt;p&gt;No fim chegamos a Montana com cerca de uma hora de atraso, mas foi uma hora que passou rápido 🙂 Por isso, um conselho: se você for viajar numa cabine cheia de idosos e tiver pelo menos 2 vovôs, não se lamente, a festa está garantida 😀&lt;/p&gt;</content:encoded><category>blog</category><category>bisko.be</category><category>Funny</category><category>Travel</category></item><item><title>Aqui?</title><link>https://bisko.be/pt/posts/blog/post-2008-11-01/</link><guid isPermaLink="true">https://bisko.be/pt/posts/blog/post-2008-11-01/</guid><description>A história de um dia estranho e da compra de uma hospedagem na DreamHost.</description><pubDate>Sat, 01 Nov 2008 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Ontem foi um dia estranho…&lt;/p&gt;
&lt;p&gt;De manhã, mesmo saindo um pouco tarde, cheguei ao trabalho a tempo. Pelo visto o engarrafamento estava a meu favor. O dia, por sua vez, seguiu normal até por volta de 1 da tarde, quando o Tsvetan me mandou o link de uma promoção da DreamHost pelo aniversário de 11 anos deles.&lt;br&gt;
Abri e comecei a ler… a cada linha da tabela de características da hospedagem, meus olhos ficavam maiores e mais gulosos (até baba escorreu :D ).&lt;br&gt;
Rapidamente ficou claro que era isso e que ia ser comprado, MAS surgiu um problema: como pagar. Eu tenho um cartão com pagamentos online ativados, mas sem dinheiro nele, e o Tsvetan tem dinheiro, mas não tem pagamentos online. Batemos numa pedra… ou melhor, num granito mesmo.&lt;/p&gt;
&lt;p&gt;Próximo passo: ele me manda dinheiro pelo ePay.bg e eu pago.  Tudo certo, até o momento em que descubro que lá eu tenho status de otário qualquer e meu limite diário é… 50 leva para recebimento. Começo a procurar rapidinho como virar usuário “conhecido” e fico chocado com a informação:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Como passar para um nível mais alto&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para passar ao nível “2” - “cliente conhecido”, é necessário ter um cartão bancário registrado no seu perfil de usuário, com o qual você pague pelo menos 5 contas de serviços, como luz, água, telefone, aquecimento etc., através do sistema (o pagamento de um serviço pré-pago não conta como pagamento de conta de serviço).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ah, fala sério! Pelo menos 5 contas de serviços… que besteira é essa. Como se eu tivesse uma casa própria pra pagar essas contas. Bobagem total. Se tivessem pedido uma foto do documento de identidade ou algo assim, tudo bem… mas isso é demais, principalmente se você precisa transferir uma quantia agora, na hora.&lt;/p&gt;
&lt;p&gt;Já sinto a promoção escorregando das nossas mãos como um copo ensaboado. Nesse cenário, recorremos à opção mais extrema: ele vai depositar dinheiro em Varna direto na minha conta do Banco Postal e a gente torce para dar certo. Passo o IBAN, ele sai para depositar. Me liga depois de 25-30-40 minutos: “depositei, disseram que até as 2 horas as alterações aparecem no internet banking”. Claro que, com a informação das 2 horas, fiquei chocado de ver como tudo estava ‘por um fio’, e espero 15 looongos minutos, entro no e-postbank e, já com olhos ASSIM e o queixo caído, vejo que o valor chegou.&lt;/p&gt;
&lt;p&gt;Abro freneticamente o link que o Tsvetan tinha me mandado um pouco antes para o carrinho no Google Checkout, preencho meus dados, clico em Check out e pronto… Naquele momento milhões de pontos de interrogação invadiram minha cabeça: como assim não tem nenhuma confirmação de conta, como no Moneybookers ou no PayPal, não pedem nenhuma retirada de valores nem essas bobagens, é só preencher as informações, clicar em pagar e pronto…&lt;/p&gt;
&lt;p&gt;Depois mandei um SMS dizendo que tinha pago, peguei minhas coisas e fui para a Estação Central, para ir a Montana. Lá encontrei alguns ‘companheiros de viagem’, pegamos bilhetes e subimos no trem. Partimos, mas eu não podia esperar mais 3 horas para saber se o pagamento realmente tinha passado e liguei para o Tsvetan, que confirmou que estava tudo normal. Isso tirou um peso do meu coração e eu respirei aliviado.&lt;/p&gt;
&lt;p&gt;Desse dia ficam 4 coisas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;O ePay é uma miséria, junto com o PayPal e o Moneybookers.&lt;/li&gt;
&lt;li&gt;O Banco Postal continua reforçando minha opinião de que é a escolha certa.&lt;/li&gt;
&lt;li&gt;O Google, como sempre, dá um show com seus procedimentos simples.&lt;/li&gt;
&lt;li&gt;A Dreamhost me conquistou! (só o upload pra lá está uma lentidão danada, mas sobre isso falo mais adiante)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;P.S. Droga, já devo 90 pratas ao Tsvetan :-D&lt;/p&gt;</content:encoded><category>blog</category><category>travel</category><category>random</category></item></channel></rss>