Por algum motivo bizarro meu mouse passou a não funcionar quando ligo meu PC. A propósito, para fazer minha parte quanto à crise energética na europa, eu passei a deixar meu PC desligado. Só o ligo quando vou usar, e depois desligo novamente. Algo que não fazia há algumas décadas.
Mas voltando ao assunto mouse, por algum motivo bizarro o mouse parou de funcionar. Ao desconectar e reconectar na USB, ele passava a funcionar.
Então resolvi fazer isso por software, num script que botei no /etc/rc.local
, uma vez que rodo o rc-local
no systemd
.
MOUSE_PRODUCT="G203 Prodigy Gaming Mouse" cd /sys/bus/usb/devices || \ die "It seems /sys interface isn't available." echo "Detecting mouse:" mouse_id="" for d in * do if [ ! -f "$d/product" ]; then continue fi echo -n " * $d: " product=$(cat $d/product) if [ "$product" = "$MOUSE_PRODUCT" ]; then echo "$product (DEVICE FOUND)" mouse_id="$d" else echo $product fi done if [ -z "$mouse_id" ]; then die "device not foud" fi echo "Restarting $mouse_id ($MOUSE_PRODUCT)" echo " * unbinding" echo "$mouse_id" > /sys/bus/usb/drivers/usb/unbind sleep 3 echo " * binding" echo "$mouse_id" > /sys/bus/usb/drivers/usb/bind
Esse foi o código inicial que usei, mas descobri logo que dar um reset no mouse não era o suficiente. O mais efetivo era dar um reset no hub USB em que está conectado. Assim alterei pra usar "USB2.0 Hub".
O resultado:
helio@goosfraba ~> sudo homemadescripts/restart_mouse.sh Detecting mouse: * 1-4: CSR8510 A10 * 2-5: Lexmark MC3224dwe * 5-1: PLAYSTATION(R)3Conteroller * 8-1: USB2.0 Hub * 8-1.1: HyperX Quadcast * 8-1.2: HD Pro Webcam C920 * 8-1.3: G432 Gaming Headset * 8-1.4: USB2.0 Hub * 8-1.4.1: Keychron C1 * 8-1.4.4: G203 Prodigy Gaming Mouse (DEVICE FOUND) * 9-1: USB3.0 Hub * 9-1.4: USB3.0 Hub * usb1: OHCI PCI host controller * usb2: EHCI Host Controller * usb3: EHCI Host Controller * usb4: EHCI Host Controller * usb5: OHCI PCI host controller * usb6: OHCI PCI host controller * usb7: OHCI PCI host controller * usb8: xHCI Host Controller * usb9: xHCI Host Controller Restarting 8-1.4 (USB2.0 Hub) * unbinding * binding
e temos um mouse funcionando :)
O código está no github: https://github.com/helioloureiro/homemadescripts/blob/master/restart_mouse.sh
Participei de um bate papo legal com Fernando Ike e Bruno Rocha, amigos de muitos FISLs, sob a direção de Carlos Nogueira. O assunto foi automação e devops, com um pouco de contos de "causos", como sempre :)
Pelo número de acessos ao artigo Fim da LinuxMall? mostra que ela deixou muitas saudades.
O Rodrigo Caetano iniciou uma série de vídeos, que ainda está no primeiro, contando a história da LinuxMall.
Não explica ainda o motivo do fim, mas imagino que isso deva vir com o tempo.
A série é chamada "o desbravador do e-commerce" e conta bastante do início não somente da LinuxMall mas de todo e-commerce no Brasil.
No último fim de semana aconteceu o FOSDEM, a conferência anual sobre software livre da europa. Não a única, mas uma das mais antigas e importantes. E um ponto de encontro pro brazucas, já convertidos ou não pra cidadãos do velho continente.
O ponto de partida é na sexta-feira onde a festa é no Delirium Café, já velho conhecido dos participantes. E tudo regado à cerveja belga que custa 1/3 do preço na Suécia.
Eu particularmente não tenho nenhuma palestra pra recomendar assistir. Todas estão disponíveis no site https://fosdem.org. As que eu vi, achei bem... não algo que valha compartilhar. Não por serem ruins, mas porque talvez eu mesmo não tivesse o nível técnico pra entender o que descreviam ali. E pode acreditar que teve muita coisa que não entendi patavinas do que falavam. Mas eu fiquei transitando ali pelos lados de containers, kernel e palestras no anfiteatro maior do evento, Jansen. Então perdi muita coisa, porque é uma maratona insana de palestras ao mesmo tempo e às vezes as salas não eram próximas pra uma troca rápida. De acordo com meu fitib, passei de 25k passos no sábado.
Mas dentro do evento o que vale mesmo são os encontros com as pessoas. Elas dão dicas de palestras que foram ótimas e você pode assistir depois online.
E o que não dizer da comida nos arredores do evento? Comi praticamente uma perna de brontossauro no almoço.
No primeiro dia as palestras não estavam tão cheia no começo, mas conforme o dia foi passando, as pessoas acordaram da ressaca e foram pro local do evento na Université Libre de Bruxeles. As salas lá são impressionantes de grandes.
E os encontros com velhos amigos também foi uma parte boa. E com ótima comida (que era algo espanhol de acordo com o cardápio).
E claro a menção honrosa à decoração dos mictórios nos banheiros do bar.
Eu aproveitei para dar uma olhadinha no saudoso perl. Muitos livros da versão 6 ainda. Melhor esperar pela versão 7.
Logo que passei a usar o archlinux, que descrevi em A era do Arch Linux, descobri rapidamente que existe um repositório chamado AUR, ArchLinux User Repository.
O AUR é basicamente um respositório de repositórios com código fonte pra criar pacotes pro archlinux criado pros usuários. Não é preciso criar muito vínculo com o projeto e basta puxar seu pacote lá.
Em um desses dias, durante um upgrade com pacman, apareceu pra mim que um pacote python estava desatualizado, marcado como órfão. Então decidi arregaçar as mangas pra enviar um patch de atualização pro pacote.
Li a documentação de como gerar os pacotes no archlinux, que é muito, mas muito, muito fácil. O sistema é fácil pra descomplicar a vida. É praticamente um Makefile que você configura e bota pra rodar. E tudo é controlado com git.
Então meio que adotei o pacote e o tenho mantido atualizado desde então: https://aur.archlinux.org/packages/python-pytelegrambotapi
A desburocracia é imensa. Foi só clonar o repositório, alterar, testar e mandar um push com o update.
O lado ruim da coisa é que qualquer coisa pode ser enviada pra um desses repositórios. Não há verificação. Na verdade parte da ideia do AUR é essa mesmo: pouca burocracia, mas você é responsável pelo que usa. Então é por sua conta e risco pegar pacotes de lá e assume-se que deu uma boa olhada no PKGBUILD, que é a instrução de como o pacote é gerado. Pra esse pacote do pytelegrambotapi por exemplo o arquivo é esse aqui: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=python-pytelegrambotapi
Só de olhar esse arquivo dá pra perceber o porquê adotei o pacote AUR: é muito fácil manter. Muito.
Mais um ponto positivo pro archlinux.
E você? Ainda não migrou pra ele?
Hoje estava olhando pro gráficos anuais de performance da VM quando vi a imagem acima. Parece ataque. Tem cara de ataque mas... não achei nada que tivesse relacionado.
Tem algo na parte de firewall:
Mas é só isso.
Não tem tráfego no Apache:
O pico no final do ano fui em fazendo upgrade. Mas só. Os outros gráficos de CPU, load average, etc não mostram nada.
Não sei se isso me deixa feliz ou triste. Por um lado estou feliz de estar de pé sem precisar mexer em nada por outro lado... o que será que foi atacado?
No momento sigo chorrindo.
Nota: as configurações que seguram o site e tudo mais em pé são as descritas em O dia em que sofri um ataque de DDoS.
E como foi o tráfego por aqui em 2022?
Sem muitas surpresas eu diria. Um tráfego baixo e mais ou menos constante com o passar do tempo.
Qual sistema operacional?
Windows continua sendo a maioria isolada. Mas os demais somados já são mais da metade. Então existe alguma esperança pra humanidade. Ainda que pouca.
E navegadores? Acho que essa vai sem grandes surpresas.
Chrome com larga marge à frente. Firefox e safari empatados. Edge mostrando que por enquanto continua longe de ser usado de verdade.
E vamos pro mobile.
Mesmo Android sendo uns 85% do mercado mobile, teve bastante gente em iOS acessando o site. Interessante.
E sem surpresas pra origem dos acessos. Brazil é líder isolado. Seria estranho não ser uma vez que só escreve em português por aqui.
Das páginas mais lidas, a surpresa foram Fim da LinuxMall? e Brasil: a terra em que malandro é malandro, mané é mané. Provavelmente essa última foi por conta da mesma empresa estar novamente aplicando golpes.
E quem fez referências ao site?
A maioria foi de busca direto pelo Google. Alguns via twiiter (o t.co) e alguns poucos de facebook e duckduckgo. Menção honrosa ao Bing.
E o que buscaram por aqui?
Alguns devem ter sido pela divulgação de links que fiz no Twitter, que agora abandonei pelo Mastodon.
As redes sociais que apontaram pra mim tiveram Twitter como grande campeão, mas era onde eu fazia mais anúncios dos posts. Esse lugar deve ser tomado pelo Mastodon em 2023 uma vez que Twitter virou abandonware pra mim.
Isso irá impactar no acesso ao site? Acho que não. Muita gente vem por busca orgânica.
E mesmo com mudança de template, upgrade de joomla, eu consegui dessa vez não perder tráfego. Isso foi bom.
E que comece 2023!
Hoje, tentando baixar um substituto pro Disqus no Linux-BR, descobri que meus e-mails pra @hl.eng.br não estavam mais funcionando.
Então fui fuçar nos logs do postfix pra ver a razão.
Jan 3 13:22:02 truta postfix/smtp[1984]: B300F11F304: to=, orig_to=<***** AT hl.eng.br>, relay=aspmx.l.google.com[2607:f8b0:4001:c58::1b]:25, delay=13, delays=12/0.01/0.64/0.57, dsn=5.7.1, status=bounced (host aspmx.l.google.com[2607:f8b0:4001:c58::1b] said: 550-5.7.1 [2605:2700:0:17:a800:ff:fe3e:bc97] Our system has detected that this 550-5.7.1 message does not meet IPv6 sending guidelines regarding PTR records 550-5.7.1 and authentication. Please review 550-5.7.1 https://support.google.com/mail/?p=IPv6AuthError for more information 550 5.7.1 . z23-20020a056638001700b00358317a21c3si22106554jao.145 - gsmtp (in reply to end of DATA command))
tl;dr: Google passou a exigir configuração de SPF desde novembro de 2022. Então já desde essa época que nada funciona.
O motivo, claro, é que recebo tudo no servidor onde está o blog e envio pra minha conta loureiro.eng.br que fica no Google.
Nada como começar o ano olhando alguns logs.
E fui fazer o upgrade do linux-br.org pra joomla4 e... deu ruim.
Ainda estou tentando descobrir como corrigir antes de apelar pra reverter o backup.
Renovando meus votos pra 2023.
E finalmente tomei coragem pra passar o dia fazendo o upgrade do site pro Joomla 4. As coisas ainda não estão 100% redondas, mas estou corrigindo aos poucos.
O importante é que sai do joomla3, que está em pra parar de receber updates já no ano que vem.
Agora é caçar ou um tema escuro pra site ou modificar esse aqui mesmo pra ficar marotamente escuro. Dark mode rules!
Update: missão cumprida! Site atualizado com a extensão DarkMagic: https://github.com/nikosdion/DarkMagic/releases/tag/2.1.0
Tive de trabalhar nessa semana com um caso que me exigiu usar o pycurl no Python. O problema foi que escrevi um script que rodava baixando artefatos de build no Jenkins usando o módulo requests, e o mesmo não funcionava mais no Gitlab.
Depois de gastar um pouco de tempo no request
, e usando o curl
do exemplo do site do Gitlab, eu acabei desistindo e indo pra usar o pycurl
no script. De cara descobri que não tinha pycurl
instalado. E no MacOS não foi tão simples como poderia ter sido. A receita de bolo pra instalar o pycurl foi a seguinte sequência:
helio@MacOS> arch -arm64 brew install openssl curl helio@MacOS> export PATH=/opt/homebrew/opt/curl/bin:$PATH helio@MacOS> export LDFLAGS="-L/opt/homebrew/opt/curl/lib":$LDFLAGS helio@MacOS> export CPPFLAGS="-I/opt/homebrew/opt/curl/include":$CPPFLAGS helio@MacOS> arch -arm64 pip install --no-cache-dir --compile --ignore-installed --install-option="--with-openssl" --install-option="--openssl-dir=/opt/homebrew/Cellar/openssl@3/3.0.7" pycurl
Quando algo funciona em curl
é fácil escrever o código em python. Basta rodar com o parâmetro --libcurl foo.c
que ele joga o código em funcionou dentro do arquivo.c no formato pra linguagem C, mas é bem próximo do uso em python.
hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L); curl_easy_setopt(hnd, CURLOPT_URL, "https://gitlab.[redacted]/api/v4/projects/[redacted]/jobs/[redacted]/artifacts"); curl_easy_setopt(hnd, CURLOPT_NOPROGRESS, 1L); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, slist1); curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.86.0"); curl_easy_setopt(hnd, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L); curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, (long)CURL_HTTP_VERSION_2TLS); curl_easy_setopt(hnd, CURLOPT_FTP_SKIP_PASV_IP, 1L); curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
Em python:
url = "https://gitlab.[redacted]/api/v4/projects/[redacted]/jobs/[redacted]/artifacts" buffer = BytesIO() c = pycurl.Curl() c.setopt(c.URL, url) c.setopt(c.BUFFERSIZE, 102400) c.setopt(c.NOPROGRESS, 1) if GITLAB_PRIVATE_TOKEN: c.setopt(c.HTTPHEADER, [ "PRIVATE-TOKEN:" + GITLAB_PRIVATE_TOKEN ]) else: c.setopt(c.HTTPHEADER, [ USERNAME + ":" + PASSWORD]) c.setopt(c.USERAGENT, "curl/7.84.0") c.setopt(c.FOLLOWLOCATION, 1) c.setopt(c.HTTP_VERSION, c.CURL_HTTP_VERSION_2TLS) c.setopt(c.TCP_KEEPALIVE, 1) c.setopt(c.WRITEDATA, buffer) c.perform() c.close()
E assim o código saiu funcionando.
Depois de mais de um ano recebendo avisos de que o PHP7.4 do Debian stable estava desatualizado e seu suporte iria terminar, eu finalmente segui uma receita de bolo pra atualizar pro PHP8.1.
https://computingforgeeks.com/how-to-install-php-on-debian-linux-2/
Eu achei que seria bem mais complicado.
Ele recomenda um repositório aleatório de um site https://packages.sury.org que achei um tanto... suspeito.
Mas dando uma olhada no site, é do próprio mantenedor dos pacotes PHP no Debian. E foi realmente um mamão com açúcar. Depois do apt update
ele já reconheceu que haviam pacotes para atualizar e um apt dist-upgrade -y -m
fez o resto. E saiu funcionando.
O restante foi selecionar o módulo no apache com a2enmod php8.1
e desabilitar o antigo com a2dismod php7.4
e finalmente reiniciar o próprio apache com systemctl restart apache2
e pronto.
Update 2022-12-09 (alguns minutos após postar esse artigo): cantei vitória cedo demais. O PHP8.1 derrubour primeiro o encurtador hl.eng.br. Tive de atualizar o yourls.org pra botar no ar novamente.
Em seguida...
Sim, o site inteiro caiu. Como o linux-br ficou em pé eu desconfiei que era algum plugin. Fui desabilitando um por um e nada. Até que troquei o tema. E era isso. Por isso a página está com essa cara pálida. Estou mexendo pra tentar colocar um tema mais escuro.
(e sim, sou daqueles que faz troubleshooting em produção)
Page 5 of 34