Ir para o conteúdo
ou

Software livre Brasil

Tela cheia
 Feed RSS

Helio Loureiro

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

Pandemia escandinava (artigo de junho de 2020)

19 de Fevereiro de 2021, 18:34, por Home - helio.loureiro.eng.br - 0sem comentários ainda

Esse é um artigo meio que requentado.  Eu o preparei no ano passado pra uma edição da Revista do Espírito Livre sobre a pandemia que no fim nunca foi lançada.  O que descrevo é um retrato de como estava a situação da Suécia na época.   Estamos em 2021 e muita coisa mudou.  E pra pior.  Mas isso eu deixo pra comentar mais pra frente em outro artigo.

---

 

Não acompanho muito de perto como está a pandemia no Brasil.  Mas vejo pelas notícias que chegam por aqui que está uma bagunça geral e que em certos pontos citam a Suécia como referência.  E não só no Brasil: nos EUA também vejo muitas pessoas citando a Suécia como exemplo, no início como bom, e ultimamente como mau.

 

Eu já vivo no coração da escandinávia, em Estocolmo na Suécia, mais de 5 anos e vou descrever um pouco de como foi e está sendo enfrentada a pandemia por aqui, como as coisas mudaram, como tudo foi afetado.  Vou aproveitar o parágrafo pra pedir desculpas pelos ângulos das fotos.  Todas foram tiradas de uma câmera gopro que uso em meu capacete quando estou andando de bicicleta.  E como é um bicicleta road, o ângulo sai um pouco pra baixo.

 

A Suécia não decide sua política pública de saúde por meio de ministros ou governo.  Existe uma autoridade de saúde que publica os fundamentos das políticas a serem adotadas e todos seguem.  O governo poderia ir contra o que é recomendado mas essa autoridade é composta por epidemiologistas especialistas.  A cara do órgão é Anders Tegnell, epidemiologista reputadíssimo que chefiou inclusive equipes na luta contra ebola.  É ele quem geralmente aparece no relatório diário que é feito sobre a evolução da epidemia.   Não somente ele, mas a equipe que trabalha lá decide quais são as medidas adotadas por aqui.

 

Foto de Frankie Fouganthin retirada da wikipedia sobre Anders Tegnell. Foto de Frankie Fouganthin retirada da wikipedia sobre Anders Tegnell.

 

 

Mas nem tudo são flores.  Muitos outros cientistas, também renomados, são contra as medidas adotadas aqui.  E chegaram mesmo a fazer uma carta pública contra Tegnell.  Mas aparentemente aqui a ciência fala mais alto e ele continua sendo o chefe por lá.

 

Entre as decisões tomadas pra conter o avanço da doença, foram decretadas as seguintes medidas: distanciamento social, creches e escolas primárias abertas, restaurantes e bares só atendem clientes sentados em mesas e existem espaçamentos de 1 mesa entre cada mesa, que trabalhem de casa os que puderem, completo isolamento de asilos, e permitidos agrupamentos com menos de 50 pessoas.

 

Essas medidas parecem simples e fogem do padrão de lockdown que muitos outros fizeram como solução, como foram os casos da Espanha e da Itália.  O argumento aqui foi que não existe nenhum estudo comprovando a eficácia do isolamento, que uma vez tendo as pessoas novamente em circulação, o vírus espalhará como faria normalmente e que as pessoas não são estúpidas.  Todos entendem que há uma pandemia lá fora.

 

Isso resultou em ruas vazias.  Muitos pequenos negócios estão falindo, inclusive restaurantes e bares que podem ficar abertos.  As ruas costumam ficar desertas.  O empreendedor que dirigia táxi ou uber está praticamente sem trabalho.  Serviços como cabeleireiros estão vazios.  Lojas estão às moscas.  Não declarar lockdown não foi o que salvou o comércio aqui.  Pra amenizar os efeitos econômicos da pandemia, o governo editou uma série de pacotes de ajuda, como pagar 40% do salário de quem teve o número de horas trabalhadas reduzidas, sendo a empresa arcando com 50% e os 10% restantes seriam por conta do trabalhador.  E até mesmo o pagamento de financiamento de casa pode ser suspenso por mais de 1 ano.



Foto de uma sexta-feira às 6 horas da tarde no centro de Estocolmo. Foto de uma sexta-feira às 6 horas da tarde no centro de Estocolmo.

 

 

Mesma rua, um pouco à frente da foto anterior.  Algumas pessoas nas mesas de fora, o que dá a sensação de estar cheio, mas são apenas essas pessoas.  Dentro o bar estava vazio.



Como não estamos em lockdown o governo recomenda que todos saiam de casa pra fazer exercícios e aproveitar o sol, que é uma coisa rara na Suécia e costuma sumir por longos 4 meses de pesado inverno.   O ponto que levam em questão é que para saúde mental é importante as pessoas manterem hábitos saudáveis como andar pelos parques, andar de bicicleta ou correr.  E muita gente segue essa recomendação por aqui, inclusive eu.

 

Keepers of the cog rule #6:  Free your mind and your legs will follow. Keepers of the cog rule #6: Free your mind and your legs will follow.

 



E quem olhar bem atentamente pras fotos vai perceber que não há quase ninguém usando máscaras.  Esse é outro ponto controverso, mas a autoridade de saúde diz que não há comprovação da eficácia do uso de máscaras contra o COVID-19.  Por favor não enviem mails ou mensagens me xingando ou links pra artigos que dizem o contrário.  Eu não sou a autoridade sueca, que conta com médicos especialistas em doenças infecciosas.  Mas em geral é o que acontece quando comento esse item.

 

Qual o resultado pra essa política?  Até agora o número de mortos é muito acima dos outros países nórdicos, mas todos implementaram lockdown.  Esse é o grande drama do modelo sueco: as pessoas não estão enclausuradas em casa, mas isso fez com que o número de mortos fosse grande.  Um dos maiores do mundo (estamos chegando ao número de 5 mil mortos com o número de mortos por dia caindo).  O argumento é que não faltaram leitos em UTI pra essas pessoas, o que é verdade.  Houve preparo com até hospital de campanha sendo criado em 2 semanas, e que foi desmontado recentemente por falta de uso.  No pico da contaminação da doença o número de leitos utilizados foi por volta de 500 dos 1500 disponíveis.  Atualmente esse número é abaixo de 400.  A taxa de mortalidade do vírus é muito alta em idosos, que foi onde a Suécia admite que errou: deveria ter bloqueado acesso aos idosos desde o início.  E treinado melhor os funcionários de asilos, pois há relatos de que muitos foram trabalhar sem equipamentos de proteção adequados e mesmo alguns com sintomas de gripe. 

 

Outro ponto que as estatísticas mostraram foi que os mais afetados em sua maioria eram idosos de famílias de imigrantes.  A teoria é de que ao contrário dos suecos, existem pessoas de diferentes idades vivendo na mesma residência e isso permitiu o espalhamento da doença mais facilmente entre esses avôs e avós que viviam com os netos na mesma residência.   Nesse ponto traçam um certo paralelo com o que aconteceu na Itália, onde dizem ser algo parecido em termos de moradia.

 

Ao contrário dessas famílias, o povo nórdico gosta de viver sozinho.  O índice de pessoas que vivem só é algo em torno de 56% da população.  Bom… não posso nem reclamar pois sou praticamente parte dessa estatística.

 

Praia sueca.  Não lotada mas com pessoas.  E todas mantendo distância.  E sem máscaras. Praia sueca. Não lotada mas com pessoas. E todas mantendo distância. E sem máscaras.

 



Escrevi bastante sobre o corona vírus e como a sociedade nórdica tem enfrentado o mesmo, mas não escrevi nada sobre software livre.  Dos eventos que eu em geral participava, todos viraram online ou serão online.  Das atividades que teríamos, como hackathons, todas ou foram online ou foram canceladas.  Eu sou do board de organização da PyCon Sweden e esse ano já definimos que será online, e copiado como foi feita com a bela experiência da conferência Pyjamas, criado no Brasil.   Mesmo que por milagre a doença amenize, ninguém acredita que as todos se sentirão seguros em estar em um aglomerado com 200 a 500 pessoas juntas.  Não esse ano.  E talvez nunca mais.

 

Como nossa organização sempre foi online, pouca coisa mudou.  Mantemos nossas reuniões bi-semanais por conferência via browser e salvamos as minutas no github.  Usamos o telegram pra conversas rápidas e mesmo manter os interessados na conferência a par do que está sendo feito.

 

E seguimos em frente.

 

Então acho que era isso que eu tinha pra descrever sobre como estamos enfrentando a pandemia aqui na Suécia.    A receita parece simples, mas por aqui as coisas são levadas à sério.   Então se quiserem seguir o exemplo sueco minha dicas são: fiquem em casa o máximo que puderem, ao sair de casa mantenham a distância de 2 metros ou mais uns dos outros, caso isso seja difícil usem máscaras, e lavem bem as mãos e com bastante frequência.

 

Hélio Loureiro

 



Uma análise dos acessos ao site durante 2020

12 de Fevereiro de 2021, 19:28, por Home - helio.loureiro.eng.br - 0sem comentários ainda

No Brasil muita gente já está preparando pra pular carnaval, mesmo com pandemia, e eu aqui aparecendo só agora com uma análise de 2020.  Era pra ter feito lá pro fim ou começo do ano?  Com certeza.  Mas quem sou eu pra conseguir manter um ritmo desses?

Então vamos ver os dados.

Esse foi o tráfego anual.  Nada de muita novidade.  Média de 10 pessoas acessando por dia.  Algum repique em maio (o que fiz em maio?) mas nada assombroso.  Quase 3/4 do tráfego vindo de... busca orgânica?  Quase 20% de links diretos (imagino que posts no twitter e no telegram).  É... não foi um ano muito bom em tráfego mas a culpa é toda minha.  Fui bem negligente quanto ao conteúdo.  Acho que postei 4 ou 5 artigos só durante 2020.

Dos países que acessaram, Brasil ganha de longe.  Ainda bem pois o conteúdo é em geral na língua tupiniquim.  Mas interessante ver outros países com China e França na métrica, mesmo que tenham sido só uns 20 acessos cada.

Esses são os links mais acessados.  A página orgânica é a frente do site.  Interessante ver o interesse no artigo sobre o final da Linux Mall, que deixou muitas saudades.  E... telnet via script?  não achei que isso tivesse tanto interesse.

Maioria dos acessos vindo de desktops, com uma pequena parcela vindo de telefone.  E alguns bem perdidos com tablet.  Então toda a gritaria de avisos que o google manda sobre site não adaptado pra dispositivos móveis eu posso solenemente ignorar.  Longa vida aos desktops!

E na guerra dos navegadores, Chrome nadando de braçadas.  Firefox atrás mas muito atrás.  Ao menos não vejo mais as estatísticas com vários acessos de Internet Explorer, se bem que ainda apareceram 19.

Em termos de sistemas operacionais... é... algumas coisas não mudam.  Maioria dos acessos por Windows.  Triste estatística.  Interessante que tive 1 acesso de 1 Tizen.

E a linguagem do navegador?  Maioria de brasileiros.  Interessante notar Tchéccia (nem sei como escreve em português, mas é a antiga República Tcheca).

E é isso.  Não um posto longo, mas apenas pra guardar de lembrança e comparar com o próximo em 2022.



Usando curl pra monitorar um site

5 de Fevereiro de 2021, 19:37, por Home - helio.loureiro.eng.br - 0sem comentários ainda

Por muitos anos o meu comando preferido pra baixar páginas e até fazer mirrors foi o comando wget.  Até eu descobrir o curl.

Não que eu já não conhecesse o curl.  Com tantos anos de estrada com Unix, principalmente Linux e FreeBSD, curl era um conhecido que eu evitava usar.  O motivo?  Zona de conforto.  wget era um comando conhecido e que eu sempre usava, desde que ando comecei a aprender Unix, em 1997.  curl por outro lado era talvez tão antigo quanto, mas cheio de opções cabulosas que eu sentia um certo receio de usar.

Atualmente eu trabalho bastante com backend web e curl virou meu braço direito.  E conforme fui aprendendo a usar mais, fui adorando.  Hoje em dia não faço um container que seja sem o curl dentro.  E acabei até deixando pra lá o wget mas... hoje é dia de falar de curl.

Durante essa semana no trabalho tivemos um problema de servidor web down.  Ao tentar conectar ele ficava um tempo tentando dar a resposta e depois enviava um erro 500 (acho que era 503, mas isso não importa).  Então como eu queria acessar o serviço assim qeu estivesse disponível e não queria ficar dando reload na aba do navegador, fiz um script com curl.   Ele usa uma das opções do curl de retorna um valor do header de resposta, que no caso era os status code.

status_code=0
while [ $status_code -ne 200 ]
    do
    sleep 10
    status_code=$(curl -s -o /dev/null -w "%{http_code}" https://helio.loureiro.eng.br/)
    echo "status_code=$status_code"
done

O script fica monitorando o site e retorna o valor do status code em loop. 

status_code=500
status_code=500
status_code=500
status_code=500
status_code=500
status_code=200

Assim que receber uma resposta 200, que é ok, para.  Deixei isso rodando num shell no canto do desktop (uso duas telas então não bloqueou minha visão de nada).  Assim que parou, voltei ao browser e acessei o serviço.

Coisa linda, não?



pip tango down

4 de Fevereiro de 2021, 9:28, por Home - helio.loureiro.eng.br - 0sem comentários ainda

Se você tentou usar o pip, o gerenciador de módulos do python, nos últimos tempos então deve ter dado de cara com o seguinte erro:

/tmp > pip search conda
ERROR: Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/pip/_internal/cli/base_command.py", line 224, in _main
    status = self.run(options, args)
  File "/usr/local/lib/python3.6/dist-packages/pip/_internal/commands/search.py", line 62, in run
    pypi_hits = self.search(query, options)
  File "/usr/local/lib/python3.6/dist-packages/pip/_internal/commands/search.py", line 82, in search
    hits = pypi.search({'name': query, 'summary': query}, 'or')
  File "/usr/lib/python3.6/xmlrpc/client.py", line 1112, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python3.6/xmlrpc/client.py", line 1452, in __request
    verbose=self.__verbose
  File "/usr/local/lib/python3.6/dist-packages/pip/_internal/network/xmlrpc.py", line 46, in request
    return self.parse_response(response.raw)
  File "/usr/lib/python3.6/xmlrpc/client.py", line 1342, in parse_response
    return u.close()
  File "/usr/lib/python3.6/xmlrpc/client.py", line 656, in close
    raise Fault(**self._stack[0])
xmlrpc.client.Fault: <Fault -32500: "RuntimeError: PyPI's XMLRPC API has been temporarily disabled due to unmanageable load and will be deprecated in the near future. See https://status.python.org/ for more information.">

Olhando no link apontado pelo erro, temos uma bela mensagem de erro.

As mensagens no site são as seguintes:

Update - The XMLRPC Search endpoint remains disabled due to ongoing request volume. As of this update, there has been no reduction in inbound traffic to the endpoint from abusive IPs and we are unable to re-enable the endpoint, as it would immediately cause PyPI service to degrade again.
Jan 12, 16:04 UTC
Update - We are continuing to monitor for any further issues.
Dec 28, 13:51 UTC
Update - The XMLRPC Search endpoint remains disabled due to ongoing request volume. As of this update, there has been no reduction in inbound traffic to the endpoint from abusive IPs and we are unable to re-enable the endpoint, as it would immediately cause PyPI service to degrade again.
Dec 28, 13:50 UTC
Update - The XMLRPC Search endpoint is still disabled due to ongoing request volume. As of this update, there has been no reduction in inbound traffic to the endpoint from abusive IPs and we are unable to re-enable the endpoint, as it would immediately cause PyPI service to degrade again. We are working with the abuse contact at the owner of the IPs and trying to make contact with the maintainers of whatever tool is flooding us via other channels.
Dec 23, 14:54 UTC
Update - The XMLRPC Search endpoint is still disabled due to ongoing request volume. As of this update, there has been no reduction in inbound traffic to the endpoint from abusive IPs and we are unable to re-enable the endpoint, as it would immediately cause PyPI service to degrade again. We are working with the abuse contact at the owner of the IPs and trying to make contact with the maintainers of whatever tool is flooding us via other channels.
Dec 15, 20:59 UTC
Monitoring - With the temporary disabling of XMLRPC we are hoping that the mass consumer that is causing us trouble will make contact. Due to the huge swath of IPs we were unable to make a more targeted block without risking more severe disruption, and were not able to receive a response from their abuse contact or direct outreach in an actionable time frame.
Dec 14, 17:46 UTC
Update - Due to the overwhelming surges of inbound XMLRPC search requests (and growing) we will be temporarily disabling the XMLRPC search endpoint until further notice.
Dec 14, 17:30 UTC
Identified - We've identified that the issue is with excess volume to our XLMRPC search endpoint that powers `pip search` among other tools. We are working to try to identify patterns and prohibit abusive clients to retain service health.
Dec 14, 15:09 UTC
Investigating - PyPI's search backends are experiencing an outage causing the backends to timeout and fail, leading to degradation of service for the web app. Uploads and installs are currently unaffected but logged in actions and search via the web app and API access via XMLRPC are currently experiencing partial outages.
Dec 14, 09:41 UTC

Traduzindo em miúdos: o site não está aguentando o tráfego.  Simples assim.

Não vou entrar no mérito de como o site foi feito, se com flash, django, ou o que quer que seja que esse não é o ponto.  O ponto é que fizeram uma péssima arquitetura.  Um único ponto de controle que não sustenta o tráfego.

Quantos anos existe o projeto GNU?  Mais de 35 já.  E o Debian?  Mais de 25.  O projeto GNU não lida tanto com tráfego quanto o Debian, e o Debian criou uma solução pra isso já faz mais de  uma década: repositórios com mirrors



Reconhecimento de palavras em arquivos PDF com OCR

27 de Janeiro de 2021, 19:16, por Home - helio.loureiro.eng.br - 0sem comentários ainda

Não sei já descrevi isso aqui ao longo desses 20 anos de blog/site, mas a maioria das coisas que publico são pra mim mesmo.  Como tenho certeza que não vou lembrar o que fiz daqui algum tempo (provavelmente dias), eu deixo aqui registrado como bloco de notas pra referência.  E, claro, espero que isso também ajude mais pessoas além de mim.

Como moro fora do Brasil já faz algum tempo, e ainda não domino a língua (na verdade só apanho dela), eu preciso de tempos em tempos pegar documentos e ler.  A forma que encontrei é passar o documento em um scanner, se for papel, mas ter a certeza de ter o documento digitalizado em formato PDF no final.  Esse foi o formato que mais facilitou o uso de outro software pra OCR (Optical Character Recognition), ou reconhecimento ótico de caracter.

Também percebi que o melhor é ter o documento separado em vários PDFs se possível, um pra cada página.  Isso facilita pro software de OCR de reconhecer cada página corretamente.

Pra usar como exemplo aqui vou adotar um documento sobre o imposto de renda sueco.  Ele está disponível na página do que seria equivalente à receita federa: https://www.skatteverket.se

O documento será esse aqui: https://www.skatteverket.se/download/18.7eada0316ed67d7282aedd/1582550479006/dags-att-deklarera-skv325-utgava41.pdf

Pra começar, apenas baixar o documento usando o curl:

curl -o report.pdf https://www.skatteverket.se/download/18.7eada0316ed67d7282aedd/1582550479006/dags-att-deklarera-skv325-utgava41.pdf

Em seguida serão necessários os seguintes pacotes de software (assumindo um sistema ubuntu ou debian): curl, ghostscript, imagemagick, tesseract-ocr e tesseract-<língua>.  Como no caso eu pego os documentos em sueco, uso então tesseract-swe.

sudo apt install curl ghostscript imagemagic tesseract-ocr tesseract-swe

O arquivo então será baixado e salvo como "report.pdf".  Ao abrir o documento eu vejo quantas páginas são, o que poderia ser feito de alguma outra forma mais automática, mas a visualização assim é fácil até pra detectar logo se tem alguma página pra pular com imagens.  Esse documento tem 8 páginas.

Então pra separar o arquivo em PDF baixado em páginas separadas, que depois vai facilitar o trabalho de tradução, eu uso o seguinte comando:

for i in $(seq 1 8)
    do
    gs -sDEVICE=pdfwrite -q -dNOPAUSE -dBATCH -sOutputFile=report-$i.pdf -dFirstPage=$i -dLastPage=$i report.pdf
done

Com as páginas criadas separadamente em formato PDF e com os nomes como report-1.pdf, report-2.pdf, report-3.pdf, etc e o próximo passo é converter cada uma no formato TIFF, que é o formato onde o reconhecimento de caracteres funciona melhor.  O programa "convert" que faz isso é parte do pacote imagemagick

for i in $(seq 1 8)
    do
    convert report-$i.pdf report-$i.tiff
done

Isso gera então as sequências report-1.tiff, report-2.tiff, etc.

Agora finalmente o passo final pra ter os textos em plain text.

for i in (seq 1 8)
do tesseract report-$i.tiff report-$i -l swe done

E isso cria os documentos com extensão "txt".  Esse documento que escolhi não foi muito feliz na detecção de caracteres.  O arquivo que mais foi reproduzido de forma satisfatória foi a página 7:

helio@xps13ubuntu:exemplo$ cat report-7.txt
Har du skatt att betala på din
preliminära skatteuträkning?

    

Tabellen på sidan 6 visar när skatten senast ska vara
betald. Fram till dess kan du göra delbetalningar.
Du kan när som helst betala in pengar till ditt
skattekonto. Du kan betala antingen med Swish
BIS

Om duvill betala med Swish loggar du in på Mina
sidor och följer instruktionerna där, Du kan också
enkelt betala din kvarskatt med Swish i samband
med att du deklarerar med edegitimation i
tjänsten. Du kan betala skatt med maximalt
15.000 kronor per dygn med Swish.

Om du betalar genom att göra en inbetalning till
BARR Sr ehe
angeditt OCR-nummer som du hittar i din preli-
PST RR NAS TT NT
www.skatteverketse/ocr.

Läs mer på wwwskotteverket.se/betalokvarskatt.

O passo seguinte é copiar essas páginas e colocar no google translator.  Eu não automatizo esse passo e uso o simple copy&paste no browser.

E esse seria o resultado do trecho acima:

Você tem imposto a pagar sobre o seu
cálculo preliminar do imposto?

    

A tabela na página 6 mostra quando o imposto deve durar
pago. Até então, você pode parcelar.
Você pode depositar dinheiro no seu a qualquer momento
conta fiscal. Você pode pagar com Swish
BIS

Se você quiser pagar com Swish, faça login no Mina
páginas e siga as instruções lá, você também pode
pague facilmente seu imposto residual com o Swish em conjunto
com isso você declara com edegitimação em
o serviço. Você pode pagar impostos com um máximo
SEK 15.000 por dia com Swish.

Se você pagar fazendo outro pagamento
BARR Sr ehe
número OCR especificado que você encontra na sua
PST RR NAS TT NT
www.skatteverketse / ocr.

Leia mais em wwwskotteverket.se/betalokvarskatt. 


Tags deste artigo: #debian #debianbr #debianse #softwarelivre #freesoftware #linux #python