Páginas

sexta-feira, 21 de setembro de 2018

CNBB de novo!

De novo, decepção com CNBB! De que adianta um debate com bispos fazendo perguntas se as perguntas feitas são as mesmas que a Globo faz? Minha Igreja é Santa, mas está cheia de líderes que não se preocupam tanto assim com a santidade! Perdi tempo ontem a noite!

Para discutir os temas que foram objeto do debate, já temos fórum suficiente na sociedade. O que não temos e que precisava de vir de nossos líderes da Igreja seriam questionamentos relevantes como: há propostas concretas dos senhores candidatos para reforma da previdência: nos últimos dois anos falou-se muito em uma previdência única, igual para todos os brasileiros, incluindo militares e funcionários públicos; justamente, nós da Igreja nos preocupamos com cortes previdenciários na parcela mais pobre da população, mesmo que isto viesse com o conceito de igualdade proposto. Assim, como pensam os senhores em promover justiça social mantendo a previdência com seu caráter social para os mais necessitados e cortando das parcelas da população que são hoje favorecidas? Vocês estabelecerão teto previdenciário para funcionários públicos, militares, juízes, promotores, legisladores? Terão que contribuir com o mesmo tempo de serviço e terão que respeitar a idade mínima? O teto será igual ao da iniciativa privada, hoje um pouco acima de R$ 5 mil?

Será que é demais esperar que a Igreja pense em real justiça social, numa sociedade mais santa?

É verdade que a salvação não virá deste mundo. Mas, pelo que me recordo, profetizar faz parte da nossa missão de cristãos. E eu espero sim bispos profetas neste nosso Brasil! Não bispos que só profetizam quando determinado partido sai do governo, por conveniência.

Paulo Cesar Starke Junior

quinta-feira, 26 de abril de 2018

Roteamento por Processo no Linux

Uma abordagem simples para a seleção de tabela de roteamento por processo ou grupo de processo pode ser alcançada através do uso do iptables, cgroups e políticas de roteamento.

Para esse mesmo fim, pode-se, alternativamente, criar um network namespace para utilizar uma outra pilha de rede, com suas tabelas de roteamento, regras de firewall e dispositivos de rede, mas é um processo mais complexo que exige a utilização de veth pairs e bridges.

No CentOS 7.4 é possível realizar o roteamento por processo sem a necessidade de instalação de pacotes adicionais.

Primeiramente é necessário criar uma nova tabela de roteamento, adicionar a rota default nessa tabela e criar uma política de utilização dessa regra. Nesse caso, a política aplicada será que todos os pacotes marcados pelo iptables utilizarão a nova rota.

echo 11 new_route >> /etc/iproute2/rt_tables
ip rule add fwmark 11 table new_route
ip route add default via 192.168.10.1 table new_route


Posteriormente cria-se uma regra no iptables para marcar todos os pacotes de um determinado grupo de processos.

iptables -t mangle -A OUTPUT -m cgroup --cgroup 0x00110011 -j MARK --set-mark 11
iptables -t nat -A POSTROUTING -m cgroup --cgroup 0x00110011 -o eth0 -j MASQUERADE


Cria-se um grupo de controle para o controlador net_cls.

mkdir /sys/fs/cgroup/net_cls/new_route
cd /sys/fs/cgroup/net_cls/new_route
echo 0x00110011 > net_cls.classid

E finalmente desabilitamos o reverse path filtering:

sysctl net.ipv4.conf.all.rp_filter=0
sysctl net.ipv4.conf.eth0.rp_filter=0
sysctl net.ipv4.conf.eth1.rp_filter=0


Ao lançar um processo, você pode incluí-lo no grupo de controle new_route simplesmente adicionando o seu PID no arquivo /sys/fs/cgroup/net_cls/new_route/tasks

cd /sys/fs/cgroup/net_cls/new_route 
echo $PID > tasks

Para removê-lo do grupo, escreva seu PID em /sys/fs/cgroup/net_cls/tasks.
Lembre-se que os processos filhos de um processo em um grupo de controle também pertencem ao mesmo grupo de controle.

Você pode ainda lançar um processo já nesse grupo utilizando o comando cgexec. Para deletar o grupo, utilize o comando cgdelete.

Para remover as regras de firewall criadas, substitua o -A por -D. E para limpar a nova tabela de roteamento e remover sua política, utilize os comandos:

ip route flush table new_route
ip rule delete fwmark 11 table new_route

E isso é tudo, pessoal!

Referências:
https://www.evolware.org/?p=369
https://superuser.com/a/1048913

quarta-feira, 24 de janeiro de 2018

Sobre a Digitalização de Livros

Uma atividade comum entre os pais educadores é a digitalização de livros ou atividades para seus estudantes. Algumas vezes desejamos preservar um livro consumível para uso posterior com outro estudante ou talvez recuperar um livro antigo em mau estado de conservação.

Para aqueles que possuem problemas respiratórios então, livros antigos são propícios a desencadear ataques de espirros ou asma. E falo por experiência própria. Não é possível entrar em um sebo sem uma boa dose de anti-histamínico.

Para tentar diminuir esse tormento, decidimos recuperar alguns livros em formato digital. Chegamos até a imprimir cópias de livros que achamos relevantes. No começo utilizávamos o scanner de uma impressora multifuncional. Possuímos uma antiga impressora com ADF (Automatic Document Feeder - Alimentador Automático de Documentos) que facilita muito o trabalho de alimentação das páginas a serem digitalizadas. É uma funcionalidade muito boa, mas necessita que as folhas estejam soltas, pois cada folha é puxada individualmente para o scanner. E essa multifuncional não possui um scanner duplex, ou seja, cada folha precisa passar duas vezes pelo processo de digitalização para obtermos a cópia de ambos os lados.

O primeiro passo, então, é cortar o livro. Como guilhotinas para grandes quantidades de páginas são muito caras, resolvi desmontar os livros separando em livretos. É fácil perceber onde separar ao olhar as bordas das páginas perto da lombada do livro. Corto o livro com um bom estilete. Após isso, corto a borda dos livretos com o próprio estilete utilizando uma régua, separando as folhas. É bom ter cuidado para manter as páginas de todos os livretos no mesmo tamanho.




Separadas todas as folhas, passo para o processo de digitalização. No Linux, utilizo o programa XSane. Prefiro realizar a cópia na melhor qualidade possível, pois é mais fácil realizar os ajustes por software depois se a cópia estiver boa. A saída do XSane são imagens PNM (portable anymap format) que facilmente converto para JPEG (Joint Photographic Experts Group) utilizando a seguinte linha de comando: "for img in *.pnm; do convert $img $img.jpg; done".

Então passo ao pós processamento das imagens para pequenas correções, como divisões das colunas, orientação e alinhamento. Para isso utilizo o software Scantailor. A saída do Scantailor são imagens do tipo TIFF (Tagged Image File Format). Para transformar as imagens em PDF (Portable Document Format), utilizo um script de conversão de imagens para PDF que permite redimensionar as imagens para o tamanho A4, o que facilita a impressão. O script está disponível aqui.

Após isso, utilizo um programa para reconhecimento do texto a fim de possibilitar a busca textual dentro do pdf. Para tanto, uso o programa pdfsandwich. O comando exato é esse: "pdfsandwich -nopreproc -rgb -lang por arquivo.pdf". É necessário que o programa tesseract esteja instalado, pois é ele que fará o Reconhecimento Ótico de Caracteres ou OCR (Optical Character Recognition).
   
E com isso o trabalho de recuperação do livro está completo. Coloco aqui um exemplo do resultado deste trabalho, apesar do conteúdo do livro ser deplorável, pois há erros ortográficos em demasia.