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/






quinta-feira, abril 06, 2017

Iniciando com NLTK


Para instalar:


pip3 install nltk


Para instalar os pacotes adicionais, o NLTK tem uma lógica expecial, é preciso usar o prompt do python:

python3

import nltk
nltk.download()

Se tem espaço bastante, simplemente configure o diretório padrão para /usr/share/nltk (ou o seu venv) e download 'all'

Páginas interessantes:

https://www.ibm.com/developerworks/br/library/os-pythonnltk/
NLTK Book

 



sexta-feira, março 31, 2017

Melhores Sites de ciclismo



 Internacionais
  1.  http://www.steephill.tv/ - A melhor cobertura da elite do ciclismo mundial
  2. http://www.cycling.tv/ - Pena que só nos EUA (snif, snif) - videos de corrida ao vivo e on demand
  3. http://www.cyclingnews.com/  - Site com boas matérias sobre ciclismo
  4. http://www.cyclingweekly.com/ - Site inglês
  5. http://tiz-cycling.racing/live-stream/  transmissão ao vivo
Nacionais

  1.  www.bikemagazine.com.br
  2. www.pedal.com.br
  3. www.fmc.org.br - Federação Mineira

Se discordar ou tiver uma contribuição, deixe seu comentário abaixo!

quinta-feira, março 30, 2017

Vivaldi - Navegador


o Vivaldi (vivaldi.com) é um navegador desenvolvido por uma equipe dissidente do Ópera.
O que acho legal nele é mostrar número e o tamanho dos arquivos da página que está baixando.
Sempre fico surpreso com o tamanho das páginas!

Como imprimir uma página direto do browser


No Firefox você pode fazer algumas modificações que permitem imprimir um documento sem o prompt de confirmação da seguinte forma:
  • Digite about:config para entrar na aba de configurações (clique em "serei cuidadoso, prometo") e prossiga.
  • Crie uma nova preferência do tipo booleano. Dê o nome de print.always_print_silent e marque-a como true.
Ao reiniciar o navegador, qualquer chamada via Javascript com código window.print() iniciará a impressão automaticamente. Assim, até mesmo um link como o abaixo funcionará:
<a href='javascript:window.print()'>Imprimir essa página</a>
Mas como pode ver de qualquer maneira é necessária a permissão por parte do usuário.

ps: Caso tenha feito o teste acima, não esqueça de entrar novamente na aba de preferências do Firefox e alterar a chave print.always_print_silent para false (ou então clicar em "restaurar o padrão"). 

Referência:

http://pt.stackoverflow.com/questions/54858/como-imprimir-uma-p%C3%A1gina-diretamente-sem-caixa-de-di%C3%A1logo-do-navegador-usando
 

Web2py ERROR', 'relation "auth_user" already exists

É comum ocorrerem errors de migração no DAL do web2py. Seja porque foi feito um restore diretamente via banco de dados, alguma alteração direta no banco, ou outro motivo.


Se a instalação é nova, e o banco foi criado/restaurado a partir de um backup, normalmente basta alterar as linhas no arquivo db.py de :

    db = DAL(myconf.get('db.uri'),
             pool_size=myconf.get('db.pool_size'),
              migrate=True,
             check_reserved=['all'])


para:

    db = DAL(myconf.get('db.uri'),
             pool_size=myconf.get('db.pool_size'),
              fake_migrate_all=True,
              #migrate=True,
             check_reserved=['all'])


Faça essa alteração, rode uma vez, e volte para o padrão.

Ao deixar o fake_migrate ativado,  ao se criar um novo campo ou tabela no web2py, ela não é criada no banco, levando o banco de dados informar o erro que o campo ou tabela não existe.

Nesse caso, é preciso fazer a alteração diretamente no banco de dados. O arquivo databases/sql.log pode ajudar com o sql que 'deveria' ter sido aplicado no banco, mas foi 'fake'.  Em alguns casos mais complexos, os erros tem que ser corrigidos à mão.

Portanto, via de regra, não deixe o fake_migrate_all ativo por padrão.


Como alterar a senha de um usuario no Postgresql

Quando se instala o Postgresql, normalmente é necessário alterar a senha do usuário no banco por segurança.


Para isso, siga 3 passos:


1. Assuma o usuário root

su

2.  Assuma o usuário postgres

su postgres

3. Entre no psql e digite o comando a seguir:

psql

ALTER USER postgres WITH PASSWORD '';

Como instalar o desktop MATE no Ubuntu



Para instalar/atualizar o desktop MATE no Ubuntu 16.04:


sudo apt-add-repository ppa:ubuntu-mate-dev/xenial-mate
sudo apt-get update
sudo apt-get install mate 

Usando ssh key para autenticar em seu servidor

Esse post mostra como criar uma chave no seu computador (linux) e exportá-la para seu servidor para para autenticar sem usar senha

1. Crie a chave. Aceite os padrões ou altere, se preferir


ssh-keygen

2. Exporte a chave. Será preciso entrar com a senha do usuário do servidor desta vez:


ssh-copy-id username@remote_host
 
 


3. Se precisar colar a chave em algum site (Digital Ocean, Bitbucket, e outros) , use o comando abaixo para exibir a chave. Copie o resultado e cole no campo apropriado:

cat ~/.ssh/id_rsa.pub
 
ou 
 
cat ~/.ssh/id_rsa.pub | xclip -sel clip
 
(se tiver o xclip instalado)
 
 

Instalar desktop Pantheon no Ubuntu 16.04

O Pantheon é o Desktop do ElementaryOS.

Para instalá-lo no Ubuntu, use os seguintes comandos:


sudo add-apt-repository ppa:elementary-os/stable
sudo apt-get update
sudo apt-get install elementary-desktop
 
Experimentei um pouco e confesso que não gostei, ainda prefiro o MATE
 
 
 
 

quarta-feira, abril 01, 2015

domingo, setembro 14, 2014

Dicas para sua vida profissional

1-Pense em algo que é importante para as pessoas e que você se veria capaz de fazer.
2-Procure saber um pouco mais das tarefas da profissão e imagine se você gostaria de realizá-las.
3-Procure saber se a remuneração média dessa profissão atende a qualidade de vida que você pretende ter.
4-Entenda que a escolha de uma profissão não é definitiva e que você pode mudar ao longo da vida.
5-Como dica de carreira, sempre procure deixar uma boa impressão em seus empregos, pois eles poderão servir de referência para novas oportunidades.
6-Procure fazer seu trabalho pensando como se você fosse o dono do negócio, isso lhe abrirá muitas portas para o crescimento profissional.
7-Você deve estar sempre se atualizando sobre sua profissão.
8-Pense sempre que você tem que conciliar a sua dedicação ao trabalho com seu lazer; sua família e amigos.

quinta-feira, setembro 26, 2013

a teoria do criacionismo ou a tradução da palavra nada

Até data recente, havia em mim a dúvida se Deus existe ou não. Em outros termos, um agnóstico.

Colocando na balança que mesmo a melhor teoria científica chega a conclusão de que houve um momento que toda a matéria esteve concentrada em um ponto e 'explodiu', a partir daí, e que este ponto deveria ter toda a matéria existente, e que numa fração de segundo anterior este ponto sequer existisse, só pode-se chegar a conclusão de que o nada criou o primeiro ponto e a partir daí houve um crescimento do universo.

Humberto Gessinger, em uma das suas músicas, afirma que 'nada é uma palavra esperando tradução'.

Pois para mim, 'nada = Deus".

Quando ninguém pode ajudar, do nada pode surgir ajuda, se sua fé e força de vontade forem fortes o bastante.

Pois o nada criou o ponto, e a partir daí, foi possível criar todas as outras coisas.


terça-feira, maio 21, 2013

cursos de programação gratuitos (em inglês)


Procurando no udemy, que tem muitos cursos gratuitos e pagos, encontrei um curso de c gratuito, que parece de boa qualidade..


No curso, descobri que o professor mantinha um site com vários cursos gratuitos:

http://itube.igneustech.com/list-courses.igneustech/9

terça-feira, março 19, 2013

IS_CEP validator para web2py

Inclua o código abaixo em um model, no início do arquivo db.py em um arquivo que em ordem alfabética seja anterior a db.py. Eu uso 0_validators.py

Para usar, use como um validator comum, na definição da tabela

...
Field('cep', requires=IS_CEP()),
...

ou após a definição:

db.mytable.cep.requires = IS_CEP()


class IS_CEP(object):

    def __init__(self, format=True, error_message='Digite apenas os números!'):
        self.format = format
        self.error_message = error_message
    def __call__(self, value):
        try:
            #return (value, 'cpf incorreto'+str(value)) 
            #return (value, 'cpf incorreto'+str(cl))
            c = []
            for d in value:
                if d.isdigit():
                    c.append(d)
            cl = str(''.join(c))
            #return (value, 'cpf incorreto'+str(cl))
            if  len(cl) == 8:
                cep = cl
                return(str(cep),None)
            else:
                return (value, 'Número de dígitos incorreto para CEP')

        except:
            return (value, 'algum erro'+str(value))
    def formatter(self, value):
        formatado = value[0:2]+'.'+value[2:5]+'-'+value[5:8]
        return formatado

Melhor IDE ou Editor para Python

Essa é uma pergunta que a maior parte dos programadores python não gosta de responder.

Dizem que você deve experimentar e escolher o que é melhor para você.

Eu fiz isso.

Dos pagos, gostei do WingIDE (versão trial). Rápido, confiável, multiplataforma.

O Komodo ficaria em segundo lugar, porque é mais lento. 

Dos gratuitos, a maioria são instáveis ou lentos, ou tem usabilidade ruim. Tão ruim que às vezes preferia um editor de texto como o Notepad++ no windows ou o Gedit no linux.

Mas existe uma luz no fim do túnel. O Aptana 3 apresenta muitas qualidades sem o defeito de ser pago.

Portanto, minha resposta para a pergunta acima é: Aptana Studio 3.
Ele é baseado no pydev, só que é fácil de instalar.

Para baixá-lo, vá a http://www.aptana.com/products/studio3


Atualização em março de 2017:

Hoje, fico longe dos editores acima. A melhor IDE seria a PyCharm, mesmo a Comunity Edition já tem muitas qualidades. Mas por ser em java, é pesada.

Na prática, adotei o Sublime Text 3. É leve e supre todas necessidades de um programador. Não tem todas as funcionalidades de uma IDE, mas se vocẽ conhece bem as bibliotecas/frameworks que trabalha e o seu código, é mais que suficiente. Se não, talvez seja melhor gastar um tempo estudando a documentação do framework ou biblioteca do que contar com a ajuda da IDE.