segunda-feira, outubro 16, 2023

A cultura da zoação como reflexo da imaturidade

 A cultura brasileira valoriza muito a 'zoeira', definida como rir dos erros dos colegas. 

Na minha percepção, rir do erro de alguém é reconhecer que ele falhou ou vai falhar em algo que também falhamos.

Então, se há um objetivo, e alguém que conhecemos falhou nele, e nós também falhamos, tendemos a rir dele, como dizendo internamente: tudo bem ele ter falhado, eu também falhei, então está 'tranquilo'. 

Mas uma coisa interessante e diferente acontece quando somos a pessoa que conseguiu atingir e superar aquele objetivo: nossa resposta interna não é mais rir da pessoa, mas lembrar dos passsos que demos e do esforço que fizemos para alcançar e passar aquele objetivo.  E de repente percebemos que não estamos rindo da pessoa, mas respeitamos o esforço dela, porque também nos esforçamos para alcançar aquele objetivo, e estamos mais propensos a orientar e apoiar do que simplemente rir. 

Zoar o fracaso alheio é o atestado de que também fracassamos naquele objetivo. 


Proponho o teorema de que, dado um objetivo e exposto o caso de alguém que fracassou em alcançar o objetivo, os que falharam em alcançar esse objetivo zoarão o fracassado, e aqueles que alcançaram ou ultrapassaram o objetivo estarão mais propensos a respeitar o esforço do fracassado, estando mais propensos a orientar o fracassado do que zoar ele. 


Portanto, dada uma situação de fracasso, perdedores irão zoar ou desqualificar o fracassado, e vencedores tenderão a apresentar sugestões pontuais, como ele devia ter feito isso ou aquilo, que poderiam ter conduzido o fracassado ao sucesso. 


Esse aspecto cultural brasileiro revela nossa imaturidade. Para avançar como sociedade, precisamos valorizar o esforço do outro em busca de um objetivo, e respeitar o fracasso dele, pois aparentemente só 'fracassa' quem tenta. Aquele que está tentando, enquanto não desistir, não fracassou. E há maior honra em ter feito seu melhor esforço e ter fracassado do que não ter feito nada. É uma derrota digna. "Fiz o meu melhor mas não consegui".  Nossa imaturidade não nos deixa perceber que o maior fracassado é aquele que nem tenta. Que devemos respeitar aqueles que estão lutando para conseguir alcançar seus objetivos. 





quinta-feira, janeiro 28, 2021

CrateDB - Uma alternativa escalável para o Postgresql

 CrateDB (https://crate.io/products/cratedb/) é um banco de dados que oferece a sintaxe do Postgresql mas é mais escalável e mais rápido

 

 

Para instalar:


    $ bash -c "$(curl -L try.crate.io)"
 
e ele já executará
 
alternativamente,  faça o download  (https://crate.io/download/)  e extraia:
 
    tar -xzf crate-*.tar.gz
    cd crate-* 
 
 execute com 
 
    ./bin/crate    
 
Use a admin UI
 
    http://localhost:4200/ 
 
instale o driver python
 
    pip install crate
 
 
 Conecte à ao nó:
 
    connection = client.connect("localhost:4200")
 
 Databases
O CrateDB não permite a criação de databases, então usa schemas 
 
isslocation.py: (de https://crate.io/docs/crate/tutorials/en/latest/generate-time-series/python.html)
 
 
 
import time

import requests
from crate import client


def position():
    response = requests.get("http://api.open-notify.org/iss-now.json")
    position = response.json()["iss_position"]
    return f'POINT ({position["longitude"]} {position["latitude"]})'


def insert():
    # New connection each time
    try:
        connection = client.connect("localhost:4200")
        print("CONNECT OK")
    except Exception as err:
        print("CONNECT ERROR: %s" % err)
        return
        
    try:
        cursor.execute(
            "INSERT INTO iss (position) VALUES (?)", [position()],
        )
        print("INSERT OK")
    except Exception as err:
        print("INSERT ERROR: %s" % err)
        return


# Loop indefinitely
while True:
    insert()
    print("Sleeping for 10 seconds...")
    time.sleep(10) 
 
    cursor = connection.cursor() 


listar databases:

    select datname from pg_database;

ou 

    show schemas;

crie um novo schema (database) criando uma nova tabela

   

create table my_schema.my_table (
   pk int primary key,
   label text,
   position geo_point
);

Para excluir uma 'database' ou schema exclua as tabelas. ao excluir a última tabela o schema será removido


    drop table my_schema.my_table;


outro exemplo, apenas para criar uma database (schema)

create table my_new_db.empty (
   id int primary key
);
 
    drop table my_new_db.empty;
 
 Não é possível usar com o PyDAL porque o cratedb não tem suporte ao tipo Serial e não tem autoincrement 

domingo, maio 03, 2020

Covid 19 e as possíveis mudanças em nossas vidas

Com a chegada do Covid-19, muitas coisas estão mudadas em nossas vidas.
Até que seja encontrada uma vacina, muitas coisas poderão mudar para sempre.

O ponto central dessa mudança é o fato que que ainda não foi comprovado que quem já teve a doença desenvolve imunidade. Se não há imunidade, todos os ambientes em que há aglomeração de pessoas serão evitados. Amplos ambientes com ar condicionado e multidões dentro ficarão abandonados, ou terão que sofrer reformas para adequar não somente o uso, como a engenharia de circulação de ar.

Nossa vida será cada vez mais virtual, e com menos oportunidade de encontros pessoais. As máscaras podem se tornar um novo normal. Festas terão que ser reinventadas: são pequenos encontros.


sábado, agosto 05, 2017

A pergunta do dia

Quem será o vice de Lula e quais partidos farão parte da coligação de esquerda em 2018?

quarta-feira, julho 12, 2017

Quem sou eu?

Quem sou eu?

Eu sou em essência, um sobrevivente nômade.
Sobrevivente em primeiro lugar, 
porque se for preciso eu fico, 
se eu puder eu vou, 
se eu gostar e tiver tempo e oportunidade, 
provavelmente eu volto.

Nasci em um lugar chamado Belo Horizonte, e após 44 anos, ainda estou por aqui.
Mas já morei em Ji-Paraná por alguns anos, e Guarapari, por alguns meses.
Apesar disso e  da humanidade já ter explorado o planeta,
Me considero um explorador.
Existe o mapa que a humanidade conhece,
E existe o que eu conheço pessoalmente,
E o que minha mente conhece.
Minha mente é mais livre que o meu corpo,
Portanto, pelos livros e filmes e pela minha imaginação,
Não só explorei e exploro uma boa parte do mundo,
Quanto uma fatia do universo,
Pelo passado, presente e futuro.

Não é o que faço que me define.
Já fiz muitas atividades,
que a burocracia definiria como profissões.
De catador de rua a agricultor,
de vaqueiro a vendedor,
de balconista a policial,
de estudante a funcionário público,
de técnico a diretor,
de superintendente a coordenador,
em paralelo programador e empreendedor.
Mas minha história mal começou.
Por quê deixar o que faço agora
definir o que sou?

Sou filho, já fui neto, bisneto.
Sou pai, já fui marido,
Quero ser de novo.
Quero chegar a ser avô,
bisavô, e por aí vai.

Já vou avisando
que tenho péssimos hábitos:
Não julgo as pessoas pelas roupas,
e nem pelo que possuem.
Julgo como a mim mesmo,
Pelas suas paixões,
Iguais a mim em todos os direitos e possibilidades
Não enxergo classes sociais
porque já fui pobre, estou remediado e talvez um dia seja rico
desde que não tenha que fazer alguém minguar por isso.
Meu compromisso com os outros é ser leal,
Para que possa ser fiel a mim mesmo.

A vida para mim é muito curta,
minha meta no final da adolescência
já era viver 140 anos.
Se eu puder, viverei mais,
O limite é a eternidade,
Mas nada é garantido,
Talvez nem o próprio universo seja eterno,
Nos cabe aproveitar o que puder.

Um outro defeito,
é que planejo,
mas não alcanço metas
a qualquer custo.
Às vezes é preciso dar tempo,
outras reduzir escopo,
e como último recurso,
pode ser necessário abandonar a meta,
pois é preciso saber priorizar.
A saúde vem em primeiro lugar,
Conhecimento vem a seguir,
É preciso trabalhar,
Para se adaptar e não enferrujar.
Dinheiro só é importante,
para manter a vida girando,
e não para virar bytes
no computador de um banco.


O que eu espero para o futuro?
Conhecer mais pessoas e lugares,
E se possível fazer vidas melhores.
Quero prolongar a vida,
Explorar o universo,
Ignorar o tempo,
E especialmente,
Saborear a vida.

quarta-feira, junho 07, 2017

Plano de Governo Brasil 2019-2022

Este post é um exercício. Está sujeito a ajustes no período.

a) Contexto

O Brasil tem mais de 200 milhões de habitantes, IDH 0,754 (79 no ranking), R$ 6,266 trilhões em 2016, PIB per capita ficou em R$ 30.407 – uma redução de 4,4%. O indice de Gini — chegou a 0,5229 no ano passado, alta de 1,6% em relação ao ano anterior. A taxa de desemprego chegou a 13,7% no primeiro trimestre de 2017. 

b) Propostas 

Ajuste das finanças públicas: 
1) Eliminação da remuneração do depósito compulsório que os bancos fazem ao Banco Central
ver http://www.valor.com.br/financas/2525808/remuneracao-sobre-compulsorio-de-deposito-prazo-caira-mais-devagar
A eliminação dessa remuneração deve destravar mais de 300 bilhões de reais anuais ao orçamento público federal, a serem alocadas nas prioridades abaixo:

2)  Desenvolvimento local

A fim de reduzir o desemprego e a desigualdade, devem ser identificados os 'bolsões de miséria', bairros e regiões com alto desemprego e baixa renda, e fornecidos empréstimos e serviços públicos para que em um raio de 2 km cada cidadão tenha escola, posto de saúde, comércio, lazer, serviços e trabalho. 




quarta-feira, maio 17, 2017

Reconhecendo texto em um pdf scaneado com python e tesseract


Como converter um arquivo pdf scaneado em um arquivo pdf que permita a busca pelo texto?

As orientações são para o ubuntu 16.04

1) Instale o pypdfocr

sudo pip install pypdfocr

2) instale o tesseract e o language pack

sudo apt install tesseract-ocr tesseract-por

3) para converter um arquivo

pypdfocr -l por scaneado.pdf

irá gerar um arquivo scaneado_ocr.pdf.


Para mais opções, consulte a documentação em

http://virantha.github.io/pypdfocr/html/ 

---------------------------------------------------------------------------------------
Para instalação no Centos 7, siga as orientações de

http://www.keienberg.com/install-tesseract-3-04-centos-7/

Se reclamar 'leptonic not found' no passo 3, use:

$ setenv LIBLEPT_HEADERSDIR /usr/local/include/leptonica ; setenv LDFLAGS -L/usr/lib ; ./configure --prefix=/usr

make install e ldconfig devem ser executados como

sudo make install
sudo ldconfig

no passo 5, faça

export TESSDATA_PREFIX=/usr/share/tessdata

----------------------------------------------------------------------------------

Versão corrigida

Tesseract installation is supported beautifully with Ubuntu, but with Centos it requires effort to build. Below is a description of how to install Tesseract on CentOs.
Used versions:
Tesseract: 3.04.01 tesseract-3.04.01.tar.gz
Leptonica: 1.73 leptonica-1.73.tar.gz
Tesseract-ocr 3.02 tesseract-ocr-3.02.deu.tar.gz, tesseract-ocr-3.02.eng.tar.gz, tesseract-ocr-3.02.nld.tar.gz, tesseract-ocr-3.02.por.tar.gz
GhostScript: Install Tesseract 3.04 on CentOs 7

I executed all commands as root, but if you prefer, you can use another account and ‘sudo‘ the commands

1) First update your system:
yum update
Because Tesseract-ocr is not available using yum, we need to download source and build both Tesseract-ocr and leptonica.
This requires development tools to be installed.
yum groupinstall “Development Tools”

Se der erro use:.

yum groupinstall "Ferramentas de desenvolvimento"

yum -y install automake autoconf libtool zlib-devel libjpeg-devel giflib libtiff-devel libwebp libwebp-devel libicu-devel openjpeg-devel cairo-devel

2) Now download and install Leptonica :
wget http://www.leptonica.com/source/leptonica-1.73.tar.gz
tar xzvf leptonica-1.73.tar.gz
cd leptonica-1.73
./configure
make 
make install 

3) Download and install Tesseract:
wget https://github.com/tesseract-ocr/tesseract/archive/3.04.01.tar.gz
mv 3.04.01.tar.gz tesseract-3.04.01.tar.gz
tar xzvf tesseract-3.04.01.tar.gz
cd tesseract-3.04.01/
./autogen.sh
setenv LIBLEPT_HEADERSDIR /usr/local/include/leptonica ; setenv LDFLAGS -L/usr/lib ; ./configure --prefix=/usr
./configure
make
make install
ldconfig

make training
make training-install
 


4) Download and install Tesseract trainer files:
wget https://sourceforge.net/projects/tesseract-ocr-alt/files/tesseract-ocr-3.02.eng.tar.gz
wget https://sourceforge.net/projects/tesseract-ocr-alt/files/tesseract-ocr-3.02.nld.tar.gz
wget https://sourceforge.net/projects/tesseract-ocr-alt/files/tesseract-ocr-3.02.deu.tar.gz
wget https://sourceforge.net/projects/tesseract-ocr-alt/files/tesseract-ocr-3.02.por.tar.gz
tar xzvf tesseract-ocr-3.02.eng.tar.gz
tar xzvf tesseract-ocr-3.02.nld.tar.gz
tar xzvf tesseract-ocr-3.02.deu.tar.gz
tar xzvf tesseract-ocr-3.02.por.tar.gz

cp -r tesseract-ocr/tessdata/ /usr/share/
 

 
5) Export TESSDATA_PREFIX:
export TESSDATA_PREFIX=/usr/share/tessdata
6) Last, install Ghostscript for processing png:

wget https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs920/ghostscript-9.20.tar.gz

tar xzvf ghostscript-9.20.tar.gz

cd ghostscript-9.20/
./autogen.sh
./configure
make
make install

if tesseract complains about not find liblept.so.5 , do:

 ln -s /usr/local/lib/liblept.so.5 /usr/lib64/