umgeher's changelog

doc

Messenger systems - quick overview

msqo

markdown

Markdown super resumido…

# Header 1

## Header 2

### Header 3

Paragrafos sao separados por linhas em branco. Duplos asteriscos fazem
o texto ficar **Bold**. _Italico_ e' underscore.

Lista:

- cada linha e' um item
- toda linha tem de comecar com -

Se quiser fazer uma lista ordenada:

1. voce deve colocar o inteiro 1 seguido de . 
1. os proximos items da lista tambem vao ter o 1. no inicio da linha
1. o render vai processar e cuidar dos numeros para voce

Isso [aqui](https://umgeher.org) e' um link.

![e isso uma imagem](/i/openbsd/logo-small.png)

find

Find e’ um otimo aliado, mas vejo que muita gente ao meu lado nao usa ele com todo o potencial dele.

… keep it simple stupid, work smart not hard.

– some Unix guy…

find

historia

O find apareceu na versao 1 do AT&T UNIX e foi removido na versao 3 do proprio. Um novo programa do mesmo nome foi escrito para o “Programmer’s Workbench (PWB)” e foi lancado na versao 5 do AT&T UNIX. E novamente foi rescrito para o 4.3BSD-Reno.

versoes

Eu uso OpenBSD, e meus exemplos sao todos usando a versado do find que vem com ele. Caso voce use algum GNU/Linux e’ bem provavel que alguns exemplos vao ter alguma mudanca nos argumentos, as vezes para pior, as vezes para melhor. Por exemplo, no GNU Find Utilities, voce pode usar o argumento size passando por exemplo G para gigabyte. Recomendo sempre olhar o manual da sua versao.

name

Vamos comecar com o basico, vamos buscar todos os arquivos “.jpg” no diretorio atual e seus filhos.

~> find . -name "*.jpg" 
./krig/changelog/static/i/2016/NC6ZuZu.jpg
./krig/changelog/static/i/fun/ps2-vs-usb.jpg
./krig/changelog/static/i/cv/cv_00k.jpg
./krig/changelog/static/i/cv/cv_qt.jpg
./krig/changelog/static/i/cv/cv_uol.jpg
./krig/changelog/static/i/cv/cv_vb.jpg
./krig/changelog/static/i/cv/cv_vt.jpg
./krig/changelog/public/i/2016/NC6ZuZu.jpg
./krig/changelog/public/i/fun/ps2-vs-usb.jpg

type

Por default, o find vai sempre filtrar o name por arquivos, mas e' sempre ideal manter claro que queremos filtrar por arquivos, para isso adicionamos o type no comando.

~> find . -name "*.jpg" -type f
./krig/changelog/static/i/2016/NC6ZuZu.jpg
./krig/changelog/static/i/fun/ps2-vs-usb.jpg
./krig/changelog/static/i/cv/cv_00k.jpg
./krig/changelog/static/i/cv/cv_qt.jpg
./krig/changelog/static/i/cv/cv_uol.jpg

O type as seguintes opcoes…

  • b -> block
  • c -> character
  • d -> diretorio
  • f -> arquivos
  • l -> link simbolicos
  • p -> FIFO
  • s -> socket

Usando qualquer uma dessas opcoes, o find ira’ retornar apenas o type escolhido.

size

Agora vamos dizer que queremos todos os arquivos com um certo tamanho… O find pode nos ajudar nisso tambem.

~/om> find . -type f -size +1024c -size -2048c
./C/Captain Beyond - Captain Beyond (1972; 1997) [FLAC]/info.txt
./C/Captain Beyond - Captain Beyond (1972; 1997) [FLAC]/Captain Beyond - Captain Beyond.cue

Nesse exemplo1 estou buscando por todos os arquivos que tenham entre 1024bytes e 2048bytes.

*time

Ok, ja’ conseguimos pegar arquivos pelo nome, tamanho e tipo… Que tal pela data de acesso (atime), modificacao (mtime) e mudanca (ctime) dele?

  • atime -> ultima vez que o arquivo foi aberto/lido
  • ctime -> ultima mudanca de metadados do arquivo, como por exemplo o path e permissao
  • mtime -> ultima modificacao no conteudo do aqruivo

Funciona do mesmo modo que o size… Exemplo:

find . -type f -atime +10 -atime -15

Ou arquivos que nao foram abertos a mais de um ano…

find . -type f -atime +365

user / group

Arquivos que pertencem a um user? O find consegue trazer para nos tambem…

find . -user umgeher

O mesmo funciona para group.

man

O find tem N opcoes para uso. Leia o manual dele. Vai facilitar a sua vida na hora de manipular uma grande quantidade de arquivos.


  1. Captain Beyond e’ uma banda sensacional. O disco com o proprio nome da banda para mim e’ o melhor de todos. E’ literalmente um post-deep-purple bem raiz. Viagem do inicio ao fim. Otima trilha para uma noite de soft coding. ↩︎

newsboat

Todos sabem que eu odeio o que a web se tornou. Pelo menos se voce ja' foi beber comigo e alguem tocou no assunto web, voce ja’ deve ter ouvido eu reclamando sobre essa droga. Paginas maiores que o original Doom1, propaganda para todos os lados, conteudo lixo, mais imagens menos texto. Fora os browsers que parecem competir qual deles usa mais recurso da maquina. Porem uma coisa a “web” deixou de legado para nos que e’ sensacional. O RSS e o Atom, ambos protocolos usamos para distribuir conteudo/conhecimento pela a internet.

“The CEO’s role in raising a company’s corporate IQ is to establish an atmosphere that promotes knowledge sharing and collaboration.”

– Bill Gates

Tanto o RSS como o Atom sao documentos XML que podem ser usados em varios softwares. Eu uso um chamado newsboat.

Newsboat e’ simples, roda no console, lembra muito o mutt… Nao tem como nao gostar dele.

Config

Minha configuracao e’ minima… (~/.newsboat/config)

article-sort-order date-asc
browser "firefox --new-tab %u"
max-items 0
podcast-auto-enqueue yes
reload-threads 100
save-path ~/news
ssl-verifyhost no
ssl-verifypeer no

# binds
bind-key a mark-all-above-as-read
macro i set browser "curl %u > ~/tmp/rss.png ; sxiv ~/tmp/rss.png" ; open-in-browser ; set browser "firefox --new-tab %u"
macro m set browser "mpv %u"; open-in-browser ; set browser "firefox --new-tab %u"

# colors

color info black cyan
color listfocus black cyan
color listfocus_unread black cyan

URLs

E minha lista de URLs de feeds e’ bem curta…

"query:Unread Articles:unread = \"yes\""
https://drewdevault.com/blog/index.xml
https://lucasemmoreira.xyz/rss.xml
https://dataswamp.org/~solene/rss.xml
https://christine.website/blog.rss
https://videos.lukesmith.xyz/feeds/videos.xml?sort=-publishedAt&filter=local "video"
https://lukesmith.xyz/rss.xml "blog"
https://www.reddit.com/r/retrobattlestations/.rss "reddit" 
https://www.reddit.com/r/vintageunix/.rss "reddit"
https://www.reddit.com/r/unixporn/.rss "reddit"
https://www.reddit.com/r/selfhosted/.rss "reddit"
https://www.reddit.com/r/emacs/.rss "reddit"
https://www.reddit.com/r/programming/.rss "reddit"
https://www.reddit.com/r/vintagecomputing/.rss "reddit"
https://www.reddit.com/r/erlang/.rss "reddit"
https://www.reddit.com/r/golang/.rss "reddit"

Unica coisa a mais que tenho no urls e’ a primeira linha…

"query:Unread Articles:unread = \"yes\""

Isso cria um feed apenas com os feeds que nao li ainda.

Documentacao

Leia a documentacao e teste algo diferente, se achar algo legal, mande para mim.

E se quiser colocar meu RSS na sua configuracao…

https://umgeher.org/index.xml

  1. O jogo original era distribuido em 4 floppy drives (os classicos disquetes dos anos 90), cada um contendo no maximo 1.44MB. Hoje eu fiz um teste na pagina do UOL, talvez o portal de noticia que leve mais a serio a questao “web”, com os meus blocks de propaganda e scripts de tracking, a pagina tem 7.20MB. Ou seja, mais de 25% de um jogo que tinha musica, graficos 3D (ok 2.5D) e dias de diversao, contra uma pagina com monte de chamadas para outras paginas. ↩︎

Machine: lite & Instalacao OpenBSD

Ganhei um novo laptop para trabalhar. Um Lenovo Thinkpad T14.

Nao e’ segredo que sou maniaco de Thinkpads. E’ literalmente o unico laptop que recomendo.

Hardware

Esse T14 esta’ com uma configuracao sensacional, pelo menos para mim.

AMD Ryzen Pro 5
16GB DDR4
NVMe Samsung MZALQ256
14.0" FHD (1920x1080)

De longe e’ a maquina com maior recurso que tenho em casa. Sim, nao sou aquelas pessoas que ficam comprando maquinas bizarras, tenho ate' um preconceito com quem tem essas maquinas. Normalmente e’ a pessoa que fica mais tempo no youtube sem fazer nada.

Ele e’ super leve, talvez o mesmo peso do meu antigo e morto X1 Carbon. Alias, acredito que sejam iguais. Em termos de tamanho e peso. O que me deixou muito feliz, ja’ tenho varios “utils” para esse bodyframe.

Keyboard / Trackpoint

Unica coisa que fico triste e’ do teclado nao ser padrao US. (Fica a dica ai, quem quiser me doar um teclado americano para esse laptop, nao se faca de dificil.)

E sim, nao e’ mais o padrao antigo dos Thinkpads quando a IBM fabricava, acredito que nunca mais vamos ter keyboards de laptops que nem aqueles antigos. Uma pena.

Mas o icone continua la’. O trackpoint vermelho. Nao e’ a antiga “borracha de lapis”, mas esta’ la’. Eu achei mais preciso do que do meu antigo X1 Carbon, mas nada ultra melhor. Talvez seja porque ainda e’ pouco usado.

Logo abaixo do trackpoint temos os 3 botoes de “mouse” (esquerda, scroll e direita) fisicos! Nada daquela porcaria de botao virtual.

O touchpad eu nao vou comentar, ja’ que nao uso e desligo ele na BIOS. Mas o tamanho e’ adequado.

RJ45

Temos entrada de RJ45! Um ponto positivo em cima do antigo X1 Carbon. Isso me fazia falta o tempo todo. Mesmo que seja um laptop, sempre que possivel eu prefiro ficar no cabo.

Software

Vamos instalar o OpenBSD nele e deixar quase pronto para o meu uso do dia dia.

Download

Nessa pagina voce pode vai encontrar todas as opcoes de imagens disponiveis.

  • installXX.img - imagem completa para gravar em um memstick, inclui todos os file sets. Ou seja, voce pode instalar o sistema completo sem a necessidade de rede/internet.
  • minirootXX.img - imagem de instalacao apenas, nao inclui os file sets. Voce vai precisar de rede/internet para terminar a instalacao.
  • installXX.iso - imagem completa para gravar em CD/DVD.

Lembrando que o XX e’ um placeholder para o numero da versao. No dia que escrevo esse post a versao atual e’ 7.0.

Escolha a imagem que deseja utilizar, no meu caso e’ o “miniroot70.img”.

curl -sL "https://cdn.openbsd.org/pub/OpenBSD/7.0/amd64/miniroot70.img" > i

Depois de feito o download, precisamos gravar ele em uma midia para continuar com a instalacao. Eu tenho um memstick da Sony de 64GB de longa data que sempre utilizo para instalacao do OpenBSD. Mas voce pode utilizar qualquer um que tenha espaco suficiente para gravar a imagem. O legal e’ voce sempre ter esse memstick disponivel. Nunca se sabe quando um amigo vai pedir para voce instalar o OpenBSD na maquina dele.

Coloque o seu memstick na porta USB e veja no dmesg qual endereco ele ganhou. Caso fique em duvida, use o seguinte comando:

dmesg | grep "^[sw]d"

Ele vai apresentar a lista dos enderecos de storage. Exemplo:

~> dmesg  | grep "^[sw]d" 
sd0 at scsibus1 targ 0 lun 0: <ATA, WDC WD5000AAKX-0, 15.0> naa.50014ee25e2ecf04
sd0: 476940MB, 512 bytes/sector, 976773168 sectors
sd1 at scsibus4 targ 1 lun 0: <Sony, Storage Media, 0100> removable serial.054c06b1610302980156
sd1: 61552MB, 512 bytes/sector, 126058496 sectors
~>

No meu caso, tenho o meu HDD no endereco sd0 e o memstick da Sony, como comentei, esta’ no sd1. Agora vamos gravar a imagem no memstick.

ATENCAO: tenha certeza do local onde voce vai gravar a imagem. Esse procedimento nao tem volta. Caso coloque o endereco do seu HDD, voce vai perder tudo o que tem nele.

dd if=i of=/dev/sd1c bs=1M

Esse processo pode demorar caso seu disco e/ou memstick seja meio lento.

Depois de terminar, estamos com tudo pronto para continuar a instalacao. Nao e’ mesmo Olga?

Instalacao

O processo de instalacao do OpenBSD e’ muito simples e rapido. E mesmo “complicando” as coisas, ainda continua muito simples.

Depois de dar boot pelo memstick. Voce vai ver a seguinte informacao.

Welcome to the OpenBSD/amd64 7.0 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?

Agora voce pode escolher em Instalar, fazer Upgrade, Autoinstalacao ou S.

Caso voce deseja escrever no disco com cryptografia (o que eu recomendo em caso de laptop), sigua normalmente aqui o texto, caso nao, pule para o header Copia.

Crypto!

Vamos formatar o disco e deixar ele configurado para gravar tudo com cryptografia.

Digite S e de ENTER.

Agora voce tem acesso ao shell da instalacao do OpenBSD. Normalmente seu disco de instalacao vai ser o primeiro, principalmente de um laptop. Mas de toda forma se quiser verificar, voce pode digitar dmesg | grep "^[sw]d" para exibir os discos disponiveis.

No meu caso o disco que vou usar para instalar o sistema e’ o sd0.

Primeiro passo e’ voce ativar o device sd0, para isso entre em /dev e execute o MAKEDEV.

cd /dev
sh MAKEDEV sd0

Agora que o sistema criou os enderecos para o sd0 vamos escrever a particao GPT. Digite:

fdisk -iy -g -b 960 sd0

Podemos criar a nossa particao. Execute o programa disklabel da seguinte forma:

disklabel -E sd0

Dentro do disklabel voce pode ter acesso ao help digitando ?. Neste momento devemos criar nossa particao. Digite:

a a 

Ele vai perguntar o offset, size e FS type. Ambos offset e size voce pode informar o que ele sugerir. No caso do FS type informe RAID.

Agora voce deve escrever as particoes, digite w e q para sair do disklabel.

Com a particao criada, vamos ativar a cryptografia utilizando o bioctl.

bioctl -c C -l sd0a softraid0

O bioctl vai perguntar por uma senha, digite a que quiser. Lembre dela para sempre… Caso contrario, voce vai perder tudo que esta’ no seu disco.

O retorno do bioctl e’ a particao que de fato vamos usar para instalar o sistema. Lembre dela. No meu caso e’ a sd2.

Agora execute o comando exit para sair do shell e voltar para o primeiro passo da instalacao.

Setup

Podemos iniciar o setup da instalacao. Digite I para iniciar a instalacao.

Primeira pergunta e’ sobre o seu layout de teclado. Eu so’ uso o default que e’ o padrao americano.

Depois voce pode escolher o hostname da sua maquina, no meu caso vou colocar lite.

Esse hardware me apresentou duas interfaces de rede, a re0 e re1. A interface wifi nao foi apresentada. Agora sei que o firmware das interfaces de rede sao RealTek. Depois eu vejo o que faco com wifi, nao uso muito ele mesmo e quando uso de fato gosto de usar um dongle1. Escolhi a interface re1 por experiencia passada. A re0 nao vai responder2.

Deixo autoconf para ele auto configurar a interface de rede. Ele mostra que conseguiu configurar e digito done para passar para proxima pergunta.

Agora a senha do root e’ fornecida e confirmada.

Proximo passo e’ informar se voce deseja que o sshd inicie no boot do sistema. Como essa maquina e’ um laptop, eu coloco no.

Agora pergunta se desejamos que inicie o xenodm (ambiente grafico) no boot. Como e’ um laptop, eu digo que yes.

O momento de criar o seu usuario chegou, coloque o nome do seu user como quiser. No meu caso e’ umgeher. As proximas perguntas vao ser nome completo do user (caso queira), senha e confirmacao da senha.

Depois de criar o seu usuario, ele vai perguntar sobre o timezone onde voce se encontra, eu uso UTC ate’ em relogio de pulso… Logo coloco UTC.

Agora vem a parte de voce escolher o destino da instalacao. No meu caso o disco e’ o sd2, que foi criado a partir do sd0 com crypto. Caso voce nao tenha feito o processo de cryptografia do disco, o endereco deve ser sd0.

Logo depois de escolher o disco para instalacao, ele vai apresentar a tabela de particao deste diso. No meu caso, tenho duas, uma do EFI Sys e outra com o OpenBSD. Eu seleciono GPT com o char g. Agora ele vai apresentar como ele vai dividir esse espaco alocado, recomendo usar o auto layout mesmo, com o char a.

Depois que ele teminar de escrever os dados na tabela, digite done para seguir o processo.

OK, agora e’ a hora de apontar onde estao os file sets, no meu caso, como usei o miniroot, vou usar o mirror que esta’ no Brasil. Informo http.

Nao uso proxy. O mirror que vou usar e’ o openbsd.c3sl.ufpr.br*, e o diretorio que esta’ os arquivos e’ pub/OpenBSD/7.0/amd64.

Escolha os sets que queira instalar, na duvida, deixe tudo mesmo. O sistema ja’ e’ muito minimalista, nao vai fazer diferenca instalar tudo.

Depois do processo de copia, verificacao e instalacao do sets. Apenas de um enter.

Parabens, voce acabou de instalar o OpenBSD.

Apenas de um enter e o sistema vai dar um reboot, lembre de tirar o memstick da sua maquina.

Bem vindo ao OpenBSD.

Proximos passos…

Agora e’ a hora de deixar com minha cara essa maquina. Vou escrever como faco e ir postando aqui no changelog. Quando eu fizer o post vou atualizar esse com o link da continuacao.


  1. No meu campo de trabalho, nunca e’ bom voce divulgar o seu MAC Address, por motivos obvios. Sempre uso um dongle USB para trabalhar. Assim voce cria um proxy de MAC Address. ↩︎

  2. Depois eu verifico isso, talvez responda e estou comendo bola por um problema antigo que tive. ↩︎