12 agosto 2024

Links interessantes #1

Vou iniciar uma nova série de artigos aqui neste blog. Uma coletania de links que achei durante minhas "navegadas" na internet e que para mim são interessantes. Sem qualquer compromisso com algum tema em especial, a ideia é manter um registro de bons conteúdos em um espaço único. E essa é uma coluna com forte inspiração no Manual do Usuário.

  • Elvis Chidera é um jovem nigeriano que começou a programar desenvolvendo J2ME com um J2ME (Nokia 2690) e hoje trabalha como programador em uma startup do MIT; entrepreneurship.mit.edu

  • Brasiliana Museus é uma plataforma que conecta todos (ou os que aderem ao programa) os museus do Brasil e suas informações, permitindo que o usuário cruze informações de peças de diferentes Museus em um único lugar; Brasiliana Museus

  • 7 hábitos para um edição de texto efetiva (Vim: Seven habits of effective text editing), por Bram Mooler, publicado em 2000 mas continua tão válido e útil até os dias de hoje; www.moolenaar.net/habits.html

  • Engenharia de software é Engenharia? Texto escrito por Hillel Wayne em seu blog

  • Produção científica no Brasil vem caindo desde 2022; Nexo Jornal

  • Go (Lang) é meu martelo e tudo é um prego; Um breve relato do programador Markus, sobre sua escolha singular de ferramentas de trabalho, vale a leitura do texto

08 agosto 2024

Lançador (launcher) de TUI para GNU Screen

 Se tem uma coisa que eu gosto é conforto. Determinadas tarefas repetitivas, costumo pensar como de alguma forma posso automatiza-las. E uma dessas tarefas para mim tem sido abrir programas TUI no GNU Screen. O CTRL-A + c seguido do comando ou CTRL-A + : seguido de screen <camando> uma hora cansa, então com o fzf fiz um pequeno atalho de tecla (CTRL-A+ Espaço) e ele abre um lançador similar ao rofi, mas de binários.

No .screenrc adicionei:

bind ' ' screen 'compgen -c | grep -iP "^[a-z].*" | grep -v fzf | fzf

12 julho 2024

Resolvendo problema de timezone com Python (ZoneInfoNotFoundError) no Termux

Tenho experimentado usar o Termux para escrever e executar alguns pequenos programas no meu Android. Algumas provas de conceito, ideias ou teste rápidos. Porém recentemente após instalar e tentar rodar um projeto que implementa o i18n recebi a seguinte mensagem de erro no traceback do Python:

File "/data/data/com.termux/files/usr/lib/python3.11/zoneinfo/_common.py", line 24, in load_tzdata raise ZoneInfoNotFoundError(f"No time zone found with key {key}") zoneinfo._common.ZoneInfoNotFoundError: 'No time zone found with key America/Sao_Paulo'
 

A falha ocorreu pelo fato de não existir esse timezone America/São Paulo no sistema. Para resolver isso de forma pontual, encontrei um pacote Python tzdata que serve justamente como fallback para sistemas que não contém os dados dos timezones.

pip install tzdata

09 julho 2024

Homelab com um ARM

Recentemente tenho me aventurado em manter ativo um servidor local em casa. Minha ideia principal é manter alguns softwares de backup que sincronize principalmente meus documentos e fotos. Além de servir como um pequeno servidor de serviços locais como Git, Backup e Mídia, por exemplo.

Essa ideia surgiu pela necessidade de automatizar com mais autonomia algumas tarefas de backup, mas além disso, também pelo fato de eu ter um pequeno dispositivo ARM disponivel em casa e que provavelmente não teria mais utilidade. Muito conhecido como TV Box, esses mini computadores em sua grande maioria são equipados com processador ARM, geralmente da Amlogic ou da Rockchip com alguma versão do Android instalado. O meu é da Rockchip, sendo mais especifico é um RK3318 e nele veio o Android 9 que posteriormente foi substituido pelo GNU/Linux Debian (Armbian).


Configuração da máquina

Tenho em mãos um ARM Rockchip RK3318 Quad-Core (1,8GHz) com 4GB de RAM e 64GB de memória interna (flash) e um HD adicional de 1TB. O sistema é um Debian 12 para processadores ARM (ou para ser mais exato, o Armbian).


Esses computadores são conhecidos por serem simples e sucintos em recursos de hardware. Todos os componentes são soldados na placa, impedindo a troca ou expansão, como por exemplo a memória interna ou a memória RAM. Mas nada que seja um impedimento para esse primeiro experimento com servidores caseiros.

Primeiro serviço

A principal função atualmente do meu servidor é manter meus backups em funcionamento.

Gosto de manter meus documentos e fotos sempre disponível e seguro, afim de evitar alguma catastrofe¹ nas nuvens.

Eu costumava armazenar meus documentos em alguns HD’s e fazia todo o processo de baixar e organizar de forma manual. Porém comecei a experimentar uma ferramenta mais eficiente que minha força de vontade de fazer manualmente, talvez o RCLONE seja um baixador melhor.

Atualmente tenho um script shell similar a isso:

rclone sync --interactive /mnt/homecloud/photos remote:album/newAlbum

Que executo (por enquanto) manualmente dentro de uma sessão do GNU Screen.

Considerações finais

Meu plano é fazer melhorias pequenas e continuas no meu servidor. Inicialmente minha principal necessidade era manter meus backups seguros e locais, porém existem outras possibilidades de uso além disso.

Algumas ideias que achei intessantes para meu dia a dia, seriam ter um servidor de mídia (DLNA) e um servidor de arquivos disponível na REDE com Samba, além de um DNS local nomeando os endereços de IP para nomes humanamente memorisaveis (homelab.local?).

Hoje todo o processo é bem manual e sem qualquer ferramenta de monitoração, apenas o bom e velho SSH e o HTOP.