Rodando programas do KDE no Macos
25 de Outubro de 2022, 13:00 - sem comentários aindaDescobri através daqueles links obscuros que aparecem na segunda página de buscas do duckduck.go uma referência a um servidor Jenkins do KDE.
E pra minha surpresa, ou melhor, para meu deleite tem okular, dolphin e outras coisas práticas e excelentes pra rodar no Macos.
Depois de baixar e montar o arquivo dmg, usando como exemplo o Dolphin, você precisa copiar o arquivo pra suas aplicações e dar as permissões pra ele rodar:
$ xattr -d com.apple.quarantine /Applications/dolphin.app $ codesign --sign - --force --deep /Applications/dolphin.app
E basta iniciar o programa:
$ open -a /Applications/dolphin.app
Ookular funcionou sem problemas.
O Dolphin está com algum problema de tema que não aparecem os nomes de diretórios. Também senti falta do "single click" pra abrir os diretórios, mas já é infinitamente melhor que o "finder" do Mac.
Talvez o konsole algum dia também apareça nessa lista.
Enquanto isso não acontece, esse aqui é o link do Jenkins:
Containers e trabalhando com Linux x86_64 no Mac
14 de Outubro de 2022, 17:15 - sem comentários aindaEu já passei do tempo de comentar sobre esse assunto aqui, então hoje vou aproveitar que perguntaram sobre esse tema e escrever o que tenho feito.
Primeiro eu preciso explicar mais sobre meu dia à dia no trabalho. O que faço é compilar código em Go, criar e configurar helm charts e gerar containers. Pra isso temos um containers base de desenvolvimento que criamos baseado em Ubuntu 20.04 (e que precisamos atualizar pro 22.04 algum dia). Com o brew eu instalei todas as ferramentas que preciso e uso como o próprio compilador Go, fish shell, Python, git, kubectl, helm, etc. A única coisa foi que precisei alterar o meu PATH pra ler do brew ao invés do PATH normal. Então eu tenho algo como:
if [ "$OperatingSystem" = "Darwin" ]
set -gx PATH /opt/homebrew/bin /opt/homebrew/sbin $PATH $HOME/bin $HOME/.local/bin $HOME/go/bin
end
nas minhas configurações do fish.
Um dos motivos de forçar isso é que o bash que vem no Apple é uma versão muito velha. Então é melhor rodar a versão mais recente através do brew. E descobri que alguns scripts dava problemas com... getopts. Sim, o programa que usamos pra ler opções de scripts. Até isso precisei usar o que vem do brew. Aparentemente o Apple tem um getopt que é BSD e não funciona com as configurações da GNU. Mas seu script não sabe disso. Então tive de forçar a precedência dos binários do brew.
$ which -a bash
/opt/homebrew/bin/bash
/opt/homebrew/bin/bash
/bin/bash
$ /opt/homebrew/bin/bash --version
GNU bash, version 5.2.2(1)-release (aarch64-apple-darwin21.6.0)
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin21)
Copyright (C) 2007 Free Software Foundation, Inc.
$ which -a getopt
/opt/homebrew/bin/getopt
/opt/homebrew/bin/getopt
/usr/bin/getopt
$ /opt/homebrew/bin/getopt --version
getopt from util-linux 2.38.1
$ /usr/bin/getopt --version
--
Além disso precisei mudar quase todos os shebangs dos shell scripts pra #! /usr/bin/env bash pra evitar rodar com o bash do sistema.
E como bom usuário de Linux eu não uso nada que tenha de pagar. Nem na loja da Apple eu registrei. Aliás criei um login e entrei pra baixar o skitch pra usar de screensaver como usava o flameshot, já que o que vem com o sistema é miserável o uso. Mas o restante eu instalo tudo via brew. E assim instalei o UTM, que na loja da Apple é pago mas via brew é só instalar e usar.
Por baixo do UTM roda tudo em qemu. Mas ele tem uma interface bacana de gerenciamento.
Eu instalei um Ubuntu 20.04 x86_64, chamado de amd64 (e guarde esse nome), e armv8, chamado de aarch64 ou arm64. Eu uso mais a versão pra ARM porque essa roda via VM usando a CPU nativa e é bem rápida, enquanto o x86_64 é via emulação e é bastante lento, além de ter problemas na emulação de tempos em tempos.
Nesse Linux eu instalei um pacote recente do qemu estático pra poder rodar o Docker multiplataforma.
# Latest qemu for docker/bob
RUN curl -OL http://ports.ubuntu.com/ubuntu-ports/pool/universe/q/qemu/qemu-user-static_6.2+dfsg-2ubuntu6.4_arm64.deb \
&& dpkg -i qemu-user-static_6.2+dfsg-2ubuntu6.4_arm64.deb \
&& rm qemu-user-static_6.2+dfsg-2ubuntu6.4_arm64.deb
Como são binários estáticos, você pode pegar qualquer pacote, inclusive do Debian mesmo, e instalar. A versão que vem com o Ubuntu dá um crash no kernel do Apple e reboot o laptop, então pegue essa última versão e tenha certeza de ter aplicado os últimos patches de seguranças do Macos.
Agora começa o balaio de gato de plataformas. O pacote, como pode ser visto acima, é chamado "arm64". Mas se eu entro no meu terminal no Apple, o que tenho é isso:
$ uname -m
x86_64
$ uname -a
Darwin EMB-QG9ND6H2 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug 22 20:19:52 PDT 2022; root:xnu-8020.140.49~2/RELEASE_ARM64_T6000 x86_64
e dentro da VM rodando Linux/arm64:
$ uname -m
aarch64
$ uname -a
Linux ubuntu-2004 5.4.0-128-generic #144-Ubuntu SMP Tue Sep 20 11:03:09 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
então já começa o balaio de gato aí. O Apple acha que ele é um x86_64, o que não é verdade. Linux diz que é aarch64, mas os pacotes referem-se à arm64.
E pra fazer containers x86_64?
Pra fazer isso você entra na configuração do Docker e adiciona a seguinte linha:
"experimental": "enabled"
isso habilite o build em múltiplas plataformas. Ou chamar o container de outras plataformas.
Então pra fazer um build x86_64 você usa algo como:
$ docker build --platform=linux/amd64 .
e um exemplo baixando um container baseado em alpine e usando:
$ docker pull --platform=linux/amd64 quay.io/aptible/alpine
Using default tag: latest
latest: Pulling from aptible/alpine
207e252fc310: Pull complete
8a9527e58fed: Pull complete
cdb7f38bc74b: Pull complete
3eb2d0c301f8: Pull complete
Digest: sha256:9790231800450f0e5fb93c03aecd22de0d5d43ae9898aa713350bdbeb9bd1e70
Status: Downloaded newer image for quay.io/aptible/alpine:latest
quay.io/aptible/alpine:latest
$ docker run --rm --platform=linux/amd64 quay.io/aptible/alpine uname -a
Linux 249590268d5c 5.4.0-128-generic #144-Ubuntu SMP Tue Sep 20 11:03:09 UTC 2022 x86_64 Linux
E pronto. Lembram que escrevi acima sobre a bagunça de nomenclaturas e que o amd64 era usado em algum momento? Pois olha ele aí.
Mas nem tudo são flores. Descobri alguns problemas quando parte do nosso build usa ferramentas feitas em... Java! Ou o container trava (e por sua vez a instância do qemu rodando) ou gera um core dump.
O erro é o mesmo descrito aqui:
https://github.com/adoptium/temurin-build/issues/893
mas eu acho que o bug não do openjdk ou do jdk, porque testei também com o jdk da própria Oracle, mas da emulação do qemu.
One container to rule them all
Isso foi no começo da minha aventura. Depois de um tempo eu vi um vídeo sobre o Rancher Desktop e resolvi testar. Primeiro que tive de configurar pra usar Docker nativo.
Pra rodar o rancher corretamente eu precisei solicitar acesso root à máquina via sudo, que não é dado por padrão e é preciso solicitar. Mas após isso, roda a partir do próprio macos sem precisar da VM.
$ docker pull --platform=linux/amd64 quay.io/aptible/alpine
Using default tag: latest
latest: Pulling from aptible/alpine
207e252fc310: Pull complete
8a9527e58fed: Pull complete
cdb7f38bc74b: Pull complete
3eb2d0c301f8: Pull complete
Digest: sha256:9790231800450f0e5fb93c03aecd22de0d5d43ae9898aa713350bdbeb9bd1e70
Status: Downloaded newer image for quay.io/aptible/alpine:latest
quay.io/aptible/alpine:latest
$ docker run --rm --platform=linux/amd64 quay.io/aptible/alpine uname -a
Linux 1a7f8e55ce09 5.15.57-0-virt #1-Alpine SMP Fri, 29 Jul 2022 07:15:20 +0000 x86_64 Linux
mas sofre do mesmo problema que o UTM em relação ao Java. No momento eu tenho usado mais a VM no UTM por ser um pouco mais rápida que o container no Rancher Desktop/Docker. E o que faço é trabalhar no Macos, geralmente usando VSCode da Microsoft mesmo, e mandando um git push pro meu repo na VM. E lá rodando testes.
Não é um workflow muito prático, mas pra mim tem funcionado bem.
Previsão do tempo no shell com curl e wttr.in
7 de Outubro de 2022, 10:39 - sem comentários aindaHoje mandaram essa dica legal na firma. Você pode puxar a previsão do tempo no shell usando curl e apontando pra wttr.in/<cidade>.
Bem legal a ideia e prática.
E o código fonte está no github: https://github.com/chubin/wttr.in
Qual é o seu IP?
25 de Setembro de 2022, 11:17 - sem comentários aindaExistem vários sites na Internet que fornecem a informação de qual IP você está usando. Eu uso bastante pra verificar se minha conexão via TOR está funcionando corretamente.
Infelizmente os sites que fornecem essa informação passaram a pedir alguma forma de autenticação ou aprovação de cookies, o que é muito chato uma vez que só quero a informação do IP.
Então pra resolver o problema eu fiz eu mesmo um CGI pra dizer qual IP acessou o site. É simples, mas funcional. Divirtam-se!
Países considerados os mais felizes do mundo escondem problemas graves - o sistema de saúde
25 de Setembro de 2022, 11:08 - sem comentários aindaSe chegou aqui e ainda não leu os outros artigos, então pare e leia agora:
- Minha experiência de quase COVID na Suécia
- Países considerados os mais felizes do mundo escondem problemas graves
- Países considerados os mais felizes do mundo escondem problemas graves - as crianças
- Países considerados os mais felizes do mundo escondem problemas graves - a identidade
- Países considerados os mais felizes do mundo escondem problemas graves - o inverno
- Países considerados os mais felizes do mundo escondem problemas graves - um pouco mais sobre inverno
- Países considerados os mais felizes do mundo escondem problemas graves - imposto de renda
- Países considerados os mais felizes do mundo escondem problemas graves - o verão sem noite
Como o verão foi realmente muito, muito, mas muito bom, eu acabei escrevendo pouco. Então vamos retomar aqui a série falando da Suécia e descrevendo o sistema de saúde daqui.
O sistema funciona com um médico do bairro. O posto de saúde é chamado vårdcentralen (vórdicentralen) e você ou vai até ele e faz um cadastro lá, ou faz online através do 1177, que explico melhor mais pra baixo. Nesse médico do bairro você geralmente é designado pra um médico e esse médico vai cuidar de tudo de você. Então não é um médico especialista, mas um generalista que olha o que você tem e termina o atendimento em 10 ou 15 minutos. Então se tem dor no lado esquerdo do peito e acha que é coração, não vai pra uma cardiologista, mas vai pra esse médico que vai iniciar o tratamento. Talvez receite remédios, mas pode outras vezes receitar somente exercícios. No caso de ser algo mais complexo ou mesmo o tratamento não der o resultado esperado, esse médico vai te passar pra um especialista. Pode ser na mesma clínica do bairro ou num lugar especializado, dependendo do caso. Esse médico especialista aí sim já é um cardiologista, ou o que for referente ao tratamento que precisa.
O sistema de saúde então funciona de forma a desafogar os especialistas de atenderem casos que podem ser tratados com remédios mais simples ou que nem mesmo são para eles. Segundo que barateia o acesso à saúde. E quanto é esse acesso? É gratuito? Não. Para crianças e jovens até 21 anos o médico é gratuito (ou pago pelos nossos impostos como todo liberal gosta de apontar). Depois dos 21 anos você paga uma quantia por consulta. Atualmente está 250 coroas suecas cada consulta. E existe um teto, que deve ser por volta de 2500 coroas suecas (não tenho certeza dos valores atualizados). Acima desse teto o governo cobre o tratamento. Então você tem literalmente que pagar 10 idas ao médico por ano e acima disso (um tratamento crônico) sai de graça (liberal já se doendo de mim). Nem todas as clínicas são 250 coroas. Algumas são mais caras. Eu fui numa especializada em olhos quando arranhei meu olho na máquina fotográfica (longa estória que é melhor contar com cerveja junto numa mesa de bar) e cobraram na época 400 coroas. Mas o teto mantêm-se. E nos tratamentos possíveis inclui-se psicólogos por exemplo. Então fazer terapia aqui custa no máximo 2500 coroas por ano.
Existe também uma ajuda governamental em relação aos remédios. Se você faz uso do medicamento extensivamente, vai ficando barato até atingir também esse teto anual, mas é um outro valor e não tenho ideia de quanto é. Mas existe (e eu felizmente nunca cheguei lá). Então se está aqui com alguma doença como alergia, saiba que comprar remédios sem receita na farmácia podem custar muito mais que comprar com receita.
E como compramos com receita? Aqui tudo é digitalizado. Então você só mostra sua identidade na farmácia e pelo seu "personal number" eles olham o que pode pegar de remédio. E cada remédio recebe uma etiqueta com seu nome, nome do médico responsável, e farmácia onde comprou. Então pode ser traçado pra origem no caso de viagem pela Europa com o remédio. E não existe a menor possibilidade de comprar um remédio que alguém precise no Brasil porque aqui é mais barato.
Passando de médico do bairro pra emergências, existem os hospitais. Mas ir direto pra emergência, akutmottagningen, pode não ser uma boa solução. A emergência aqui é para somente... emergências mesmo. Estar realmente morrendo. Chegar lá com um corte ou tosse pode fazer com que aguarde de 4 a 8 horas por um atendimento. Até então eu não tinha outra ideia sobre emergências aqui até uma das crias sofreu um acidente na escola e tive de ir lá pra pegar e levar pra emergência. E na escola informaram que eu deveria não ir pra emergência, mas pra um "pronto socorro" que é o näravårdcentralen. E realmente o atendimento foi rápido: coisa de 15 minutos. E como era pra criança, não houve cobrança (chora liberal, chora).
Mas esse é o sistema de bairro. E existe o sistema nacional, que mencionei no começo: o 1177. Como o nome parece, 1177 é o número de telefone pra ligar e falar com o sistema de saúde. É possível ligar pra tirar dúvidas ou perguntar o que fazer em caso de emergência. Ficam disponíveis 24x7. E existe o site, o https://1177.se que pode ser acessado pra tirar as mesmas dúvidas ou acerta seu cadastro. É onde você cadastra em qual posto de saúde quer ser tratado. Pode ser qualquer um, desde o mais próximo de sua residência, até o mais próximo do trabalho caso ache mais conveniente ir ao médico durante o período de trabalho. A vantagem do telefonema ao 1177 ao invés do site é que você consegue um atendente que fale inglês enquanto que o site é somente em sueco.
E como são os atendimentos aqui? Você tem direito a um tradutor no seu idioma. E é gratuito (chora liberal, chora). Ele vai lá e fica falando com o profissional de saúde e traduzindo tudo. No começo eu cheguei a usar até ficar confortável com somente inglês. Mas mesmo assim é sempre bom perguntar antes se o médico sabe inglês. Houve casos em que precisei pedir tradutor (geralmente com médicos que vieram de outro país e falam só sua língua e sueco). Eu não sei como funciona atualmente via vídeo conferência, mas acho que o tradutor também entra na conversa. E falando nesse assunto, aqui já é bem comum ter os tratamentos via vídeo conferência. Você conversa com o médico, que se precisar de exames apenas diz onde deve ir pra fazer a coleta. E claro que o médico deixa a opção de encontrar em pessoa com você, mas eu já não vou a um consultório faz uns 3 anos.
Antes da pandemia já existiam alguns apps dedicados pra esse tipo de serviço como Kry e Doktor. Mas com a pandemia as vídeo chamadas com o médico virou o lugar comum. E pra pedir mais medicamento não é preciso nada disso: você pode entrar pelo 1177.se e escrever que precisa de mais receita pra um remédio que faz uso. E o médico olha online e adiciona pra você. Sem custo.
E vou contar um caso do médico aqui que passei logo que cheguei na Suécia. Nessa época eu estava em um apartamento alugado com móveis, e a cama não era das melhores pra mim. Aqui é comum o colchão ser extremamente mole, de afundar dentro dele. E isso causa uma dor terrível nas minhas costas. Então marquei o médico, fiz o primeiro atendimento que passou pro especialista. Daí disseram que por ser especialista, iria demorar mais pra marcar. Quanto tempo? 2 semanas. Eu tive de me segurar pra não rir. Mas chegado o dia do atendimento com o especialista em ortopedia (o médico não era do posto de saúde, mas foi até lá só pra ver meu caso), eu fui esperando o médico pedir um raio-x, tomografia, etc e ele somente disse pra eu trocar o colchão e pedir na empresa uma visita do especialista em ergonomia, que é algo obrigatório em empresas grandes aqui pelo que entendi. E passou alguns remédios caso eu sentisse dores novamente e era pra remarcar dali 1 mês se as dores continuassem. Eu sai da consulta em completa descrença da coisa toda. Mas eu sabia do problema do colchão no apartamento em que estava. E marquei a visita da pessoa de ergonomia da empresa. Essa visita foi a mais interessante. Depois de uma análise de como eu trabalhava sentado e em pé (as mesas aqui têm regulagem de altura, inclusive essa que tenho em casa), a pessoa disse que eu tinha um problema de postura ao sentar. Eu sentava meio inclinado e de um jeito que minhas costas faziam um "C" na cadeira. Daí ela me explicou como regular minha cadeira, que parece feita pela NASA de tantos botões e alavancas, e mostrou que o correto é trabalhar com as costas completamente retas, pra lombar sustentar o peso. E... não preciso de muito spoiler mas esse era o problema (e por isso que recomendo cadeiras gamers em que as costas ficam retas).
Tem quem diga aqui que o sistema médico é muito lento por passar por tantas etapas pra chegar num especialista, mas é um sistema que funciona. Tem lá seus problemas, como o fato dos médicos todos desaparecerem durante o verão e coisas mais complexas como cirurgias levarem quase 1 ano pra serem feitas, mas é um sistema acessível e que funciona. Existe também o problema de que fora dos grandes centros, o acesso a um médico especialista é quase impossível. E foi um dos grandes temas durante as últimas eleições, então acredito que mudanças virão pra melhorar. Eu, de minha parte, gosto do sistema e tem me servido bem.