Archive

Archive for abril \23\UTC 2017

Os Níveis do Ser Humano

Achei um texto que imprimi em um passado remoto. Não sei de onde veio aquele texto e nem qual era o autor. O texto é curioso e nos faz refletir sobre a natureza humana, onde estamos e o que queremos ser. Como o texto é meio longo e eu não queria digitá-lo, segue uma versão que encontrei aqui.

Os Níveis do Ser Humano

Há alguns anos, um buscador aproximou-se de um Mestre da Arte Real (um verdadeiro Místico) e perguntou-lhe:

– Mestre, gostaria muito de saber por que razão os seres humanos guerreiam-se e por que não conseguem entender-se, por mais que apregoem estar buscando a paz e o entendimento; por mais que apregoem o amor e por mais que afirmem abominar o ódio.

– Essa é uma pergunta muito séria. Gerações e gerações a têm feito e não conseguiram uma resposta satisfatória, por não se darem conta de que tudo é uma questão de nível evolutivo. A grande maioria da Humanidade do Planeta Terra está vivendo atualmente no nível 1. Muitos outros, no nível 2 e alguns outros no nível 3. Essa é a grande maioria. Alguns poucos já conseguiram atingir o nível 4, pouquíssimos o nível 5, raríssimos o nível 6 e somente de mil em mil anos aparece algum que atingiu o nível 7.

– Mas, Mestre, que níveis são esses?

– Não adiantaria nada explicá-los, pois além de não entender, também, logo em seguida, você os esqueceria e esqueceria também a explicação.

Assim, prefiro levá-lo numa viagem mental, para realizar uma série de experimentos e aí, então, tenho certeza, você vivenciará e saberá exatamente o que são esses níveis, cada um deles, nos seus mínimos detalhes.

Colocou, então, as pontas de dois dedos na testa do consulente e, imediatamente, ambos estavam em um outro local, em outra dimensão do Espaço e do Tempo.

Nível 1

O local era uma espécie de bosque, e um homem se aproximava deles. Ao chegar mais perto, disse-lhe o Mestre:

– Dê-lhe um tapa no rosto.

– Mas por quê? Ele não me fez nada…

– Faz parte do experimento. Dê-lhe um tapa, não muito forte, mas dê-lhe um tapa!

E o homem aproximou-se mais do Mestre e do consulente. Este, então, chegou até o homem, pediu-lhe que parasse e, sem nenhum aviso, deu-lhe um tapa que estalou. Imediatamente, como se fosse feito de mola, o desconhecido revidou com uma saraivada de socos e o consulente foi ao chão, por causa do inesperado do ataque. Instantaneamente, como num passe de mágica, o Mestre e o consulente já estavam em outro lugar, muito semelhante ao primeiro e outro homem se aproximava. O Mestre, então comentou:

– Agora, você já sabe como reage um homem do nível 1. Não pensa. Age mecanicamente. Revida sem pensar. Aprendeu a agir dessa maneira e esse aprendizado é tudo para ele, é o que norteia sua vida, é sua “muleta”. Agora, você testará da mesma maneira, o nosso companheiro que vem aí, do nível 2.

Nível 2

Quando o homem se aproximou, o consulente pediu que parasse e lhe deu um tapa. O homem ficou assustado, olhou para o consulente, mediu-o de cima a baixo e, sem dizer nada, revidou com um tapa, um pouco mais forte. Instantaneamente, já estavam em outro lugar muito semelhante ao primeiro.

– Agora, você já sabe como reage um homem do nível 2. Pensa um pouco, analisa superficialmente a situação, verifica se está à altura do adversário e aí, então, revida. Se se julgar mais fraco, não revidará imediatamente, pois irá revidar à traição. Ainda é carregado pelo mesmo tipo de “muleta” usada pelo homem do nível 1. Só que analisa um pouco mais as coisas e fatos da vida. Entendeu? Repita o mesmo com esse aí que vem chegando.

Nível 3

A cena repetiu-se. Ao receber o tapa, o homem parou, olhou para o consulente e assim falou:

– O que é isso, moço?… Mereço uma explicação, não acha? Se não me explicar direitinho por que razão me bateu, vai levar uma surra!
Estou falando sério!

– Eu e o Mestre estamos realizando uma série de experimentos e este experimento consta exatamente em fazer o que fiz, ou seja, bater nas pessoas para ver como reagem.

– E querem ver como reajo?

– Sim. Exatamente isso…

– Já reparou que não tem sentido?

– Como não? Já aprendemos ótimas lições com as reações das outras pessoas. Queremos saber qual a lição que você irá nos ensinar…

– Ainda não perceberam que isso não faz sentido? Por que agredir as pessoas assim, gratuitamente?

– Queremos verificar – interferiu o Mestre – as reações mais imediatas e primitivas das pessoas. Você tem alguma sugestão ou consegue atinar com alguma alternativa?

– De momento, não me ocorre nenhuma. De uma coisa, porém, estou certo: – Esse teste é muito bárbaro, pois agride os outros. Estou, realmente, muito assustado e chocado com essa ação de vocês, que parecem pessoas inteligentes e sensatas. Certamente, deverá haver algo menos agressivo e mais inteligente. Não acham?

– Enfim – perguntou o buscador – como você vai reagir? Vai revidar? Ou vai nos ensinar uma outra maneira de conseguir aprender o que desejamos?

– Já nem sei se continuo discutindo com vocês, pois acho que estou perdendo meu tempo. São dois malucos e tenho coisas mais importantes para fazer do que ficar conversando com dois malucos. Afinal, meu tempo é precioso demais e não vou desperdiçá-lo com vocês. Quando encontrarem alguém que não seja tão sensato e paciente como eu, vão aprender o que é agredir gratuitamente as pessoas. Que outro, em algum outro lugar, revide por mim. Não vou nem perder meu tempo com vocês, pois não merecem meu esforço… São uns perfeitos idiotas… Imagine só, dar tapas nos outros… Besteira… Idiotice… Falta do que fazer… E ainda querem me convencer de que estão buscando conhecimento… Picaretas! Isso é o que vocês são! Uns picaretas! Uns charlatães!

Imediatamente, aquela cena apagou-se e já se encontravam em outro luar, muito semelhante a todos os outros. Então, o Mestre comentou:

– Agora, você já sabe como age o homem do nível 3. Gosta de analisar a situação, discutir os pormenores, criticar tudo, mas não apresenta nenhuma solução ou alternativa, pois ainda usa as mesmas “muletas” que os outros dois anteriores também usavam. Prefere deixar tudo “pra lá”, pois “não tem tempo” para se aborrecer com a ação, que prefere deixar para os “outros”. É um erudito e teórico que fala muito, mas que age muito pouco e não apresenta nenhuma solução para nenhum problema, a não ser a mais óbvia e assim mesmo, olhe lá… É um medíocre enfatuado, cheio de erudição, que se julga o “Dono da Verdade”, que se acha muito “entendido” e que reclama de tudo e só sabe criticar. É o mais perigoso de todos, pois costuma deter cargos de comando, por ser, geralmente, portador de algum diploma universitário em nível de bacharel (mais uma outra “muleta”) e se pavoneia por isso. Possui instrução e muita erudição. Já consegue ter um pouquinho mais de percepção das coisas, mas é somente isso. Ainda precisa das “muletas” para continuar vivendo, mas começa a perceber que talvez seja melhor andar sem elas. No entanto, por “preguiça vital” e simples falta de força de vontade, prefere continuar a utilizá-las. De resto, não passa de um medíocre enfatuado que sabe apenas argumentar e tudo criticar. Vamos, agora, saber como reage um homem do nível 4. Faça o mesmo com esse que aí vem.

Nível 4

E a cena repetiu-se.

O caminhante olhou para o buscador e perguntou:

– Por que você fez isso? Eu fiz alguma coisa errada? Ofendi você de alguma maneira? Enfim, gostaria de saber por que motivo você me bateu. Posso saber?

– Não é nada pessoal. Eu e o Mestre estamos realizando um experimento para aprender qual será a reação das pessoas diante de uma agressão imotivada.

– Pelo visto, já realizaram este experimento com outras pessoas. Já devem ter aprendido muito a respeito de como reagem os seres humanos, não é mesmo?

– É… Estamos aprendendo um bocado. Qual será sua reação? O que pensa de nosso experimento? Tem alguma sugestão melhor?

– Hoje, vocês me ensinaram uma nova lição e estou muito satisfeito com isso e só tenho a agradecer por me haverem escolhido para participar deste seu experimento. Apenas acho que vocês estão correndo o risco de encontrar alguém que não consiga entender o que estão fazendo e revidar à agressão. Até chego a arriscar-me a afirmar que vocês já encontraram esse tipo de pessoa, não é mesmo? Mas também se não corrermos algum risco na vida, nada, jamais, poderá ser conseguido, em termos de evolução. Sob esse ponto de vista, a metodologia experimental que vocês imaginaram é tão boa como outra qualquer. Já encontraram alguém que não entendesse o que estão a fazer e igualmente reações hostis, não é mesmo? Por outro lado, como se trata de um aprendizado, gostaria muito de acompanhá-los para partilhar desse aprendizado. Aceitar-me-iam como companheiro de jornada? Gostaria muito de adquirir novos conhecimentos. Posso ir com vocês?

– E se tudo o que dissemos for mentira? E se estivermos mal-intencionados? – perguntou o Mestre – Como reagiria a isso?

– Somente os loucos fazem coisas sem uma razão plausível. Sei, muito bem, distinguir um louco de um são e, definitivamente, tenho a mais cristalina das certezas de que vocês não são loucos. Logo, alguma razão vocês deverão ter para estarem agredindo gratuitamente as pessoas. Essa razão que me deram é tão boa e plausível como qualquer outra. Seja ela qual for, gostaria de seguir com vocês para ver se minhas conjecturas estão certas, ou seja, de que falaram a verdade e, se assim o for, compartilhar da experiência de vocês. Enfim, desejo aprender cada vez mais, e esta é uma boa ocasião para isso. Não acham?

Instantaneamente, tudo se desfez e logo estavam em outro ambiente, muito semelhante aos anteriores. O Mestre assim comentou:

– O homem do nível 4 já está bem distanciado e se desligando gradativamente dos afazeres mundanos. Já sabe que existem outros níveis mais baixos e outros mais elevados e está buscando apenas aprender mais e mais para evoluir, para tornar-se um sábio. Não é, em absoluto um erudito (embora até mesmo possa possuir algum diploma universitário) e já compreende bem a natureza humana para fazer julgamentos sensatos e lógicos. Por outro lado, possui uma curiosidade muito grande e uma insaciável sede de conhecimentos. E isso acontece porque abandonou suas “muletas” há muito pouco tempo, talvez há um mês ou dois. Ainda sente falta delas, mas já compreendeu que o melhor mesmo é viver sem elas. Dentro de muito pouco tempo, só mais um pouco de tempo, talvez mais um ano ou dois, assim que se acostumar, de fato, a sequer pensar nas muletas, estará realmente começando a trilhar o caminho certo para os próximos níveis. Mas vamos continuar com o nosso aprendizado. Repita o mesmo com este homem que aí vem, e vamos ver como reage um homem do nível 5. O tapa estalou.

Nível 5

– Filho meu… Eu bem o mereci por não haver logo percebido que estavas necessitando de ajuda. Em que te posso ser útil?

– Não entendi… Afinal, dei-lhe um tapa. Não vai reagir?

– Na verdade, cada agressão é um pedido de ajuda. Em que te posso ajudar, filho meu?

– Estamos dando tapas nas pessoas que passam, para conhecermos suas reações. Não é nada pessoal…

– Então, é nisso que te posso ajudar? Ajudar-te-ei com muita satisfação pedindo-te perdão por não haver logo percebido que desejas aprender. É meritória tua ação, pois o saber é a coisa mais importante que um ser humano pode adquirir. Somente por meio do saber é que o homem se eleva. E se estás querendo aprender, só tenho elogios a te oferecer. Logo aprenderás a lição mais importante que é a de ajudar desinteressadamente as pessoas, assim como estou a fazer com vocês, neste momento. Ainda terás um longo caminho pela frente, mas se desejares, posso ser o teu guia nos passos iniciais e te poupar de muitos transtornos e dissabores. Sinto-me perfeitamente capaz de guiar-te nos primeiros passos e fazer-te chegar até onde me encontro. Daí para diante, faremos o restante do aprendizado juntos. O que achas da proposta? Aceitas-me como teu guia?

Instantaneamente, a cena se desfez e logo se viram em outro caminho, um pouco mais agradável do que os demais, e o Mestre assim se expressou:

– Quando um homem atinge o nível 5, começa a entender que a Humanidade, em geral, digamos, o homem comum, é como uma espécie de adolescente que ainda não conseguiu sequer se encontrar e, por esse motivo, como todo e qualquer bom adolescente, é muito inseguro e, devido a essa insegurança, não sabe como pedir ajuda e agride a todos para chamar atenção sobre si mesmo e pedir, então, de maneira velada e indireta, a ajuda de que necessita. O homem do nível 5 possui a sincera vontade de ajudar e de auxiliar a todos desinteressadamente, sem visar vantagens pessoais. É como se fosse uma Irmã Dulce, um Chico Xavier ou uma Madre Teresa de Calcutá da vida. Sabe ser humilde e reconhece que ainda tem muito a aprender para atingir níveis evolutivos mais elevados. E deseja partilhar gratuitamente seus conhecimentos com todos os seres humanos. Compreende que a imensa maioria dos seres humanos usa “muletas” diversas e procura ajudá-los, dando-lhes exatamente aquilo que lhe é pedido, de acordo com a “muleta” que estão usando ou com o que lhes é mais acessível no nível em que se encontram. A partir do nível 5, o ser humano adquire a faculdade de perceber em qual nível o seu interlocutor se encontra. Agora, dê um tapa nesse homem que aí vem. Vamos ver como reage o homem do nível 6.

Nível 6

E o buscador iniciou o ritual. Pediu ao homem que parasse e lançou a mão ao seu rosto. Jamais entenderá como o outro, com um movimento quase instantâneo, desviou-se e a sua mão atingiu apenas o vazio.

– Meu filho querido! Por que você queria ferir-se a si mesmo? Ainda não aprendeu que agredindo os outros você estará agredindo a si mesmo? Você ainda não conseguiu entender que a Humanidade é um organismo único e que cada um de nós é apenas uma pequena célula desse imenso organismo? Seria você capaz de provocar, deliberadamente, em seu corpo, um ferimento que vai doer muito e cuja cicatrização orgânica e psíquica vai demorar e causará muito sofrimento inútil?

– Mas estamos realizando um experimento para descobrir qual será a reação das pessoas a uma agressão gratuita.

– Por que você não aprende primeiro a amar? Por que, em vez de dar um tapa, não dá um beijo nas pessoas? Assim, em lugar de causar-lhes sofrimento, estará demonstrando Amor. E o Amor é a Energia mais poderosa e sublime do Universo. Se você aprender a lição do Amor, logo poderá ensinar Amor para todas as outras células da Humanidade, e tenho a mais concreta certeza de que, em muito pouco tempo, toda a Humanidade será um imenso organismo amoroso que distribuirá Amor por todo o planeta e daí, por extensão, emitirá vibrações de Amor para todo o Universo. Eu amo a todos como amo a mim mesmo. No instante em que você compreender isso, passará a amar a si mesmo e a todos os demais seres humanos da mesma maneira e terá aprendido a Regra de Ouro do Universo: – Tudo é Amor! A vida é Amor! Nós somos centelhas de Amor! E por tanto amar você, jamais poderia permitir que você se ferisse, agredindo a mim. Se você ama uma criança, jamais permitirá que ela se machuque ou se fira, porque ela ainda não entende que se agir de determinada maneira perigosa irá ferir-se e irá sofrer. Você a amparará, não é mesmo? Você deverá aprender, em primeiro lugar, a Lição do Amor, a viver o Amor em toda sua plenitude, pois o Amor é tudo e, se você está vivo, deve sua vida a um Ato de Amor. Pense nisso, medite muito sobre isso. Dê Amor gratuitamente. Ensine Amor com muito Amor e logo verá como tudo a seu redor vai ficar mais sublime, mais diáfano, pois você estará flutuando sob os influxos da Energia mais poderosa do Universo, que é o Amor. E sua vida será sublime…

Instantaneamente, tudo se desfez e se viram em outro ambiente, ainda mais lindo e repousante do que este último em que estiveram. Então o Mestre falou:

– Este é um dos níveis mais elevados a que pode chegar o Ser Humano em sua senda evolutiva, ainda na Matéria, no Planeta Terra. Um homem que conseguiu entender o que é o Amor, já é um Homem Sublime, Inefável e quase Inatingível pelas infelicidades humanas, pois já descobriu o Começo da Verdade, mas ainda não a conhece em toda sua Plenitude, o que só acontecerá quando atingir o nível 7. Logo você descobrirá isso. Dê um tapa nesse homem que aí vem chegando.

Nível 7

E o buscador pediu ao homem que parasse. Quando seus olhares se cruzaram, uma espécie de choque elétrico percorreu-lhe todo o corpo e uma sensação mesclada de amor, compaixão, amizade desinteressada, compreensão, de profundo conhecimento de tudo que se relaciona à vida e um enorme sentimento de extrema segurança encheram-lhe todo o seu ser.

– Bata nele! – ordenou o Mestre.

– Não posso, Mestre, não posso…

– Bata nele! Faça um grande esforço, mas terá que bater nele! Nosso aprendizado só estará completo se você bater nele! Faça um grande esforço e bata! Vamos! Agora!

– Não, Mestre. Sua simples presença já é suficiente para que eu consiga compreender a futilidade de lhe dar um tapa. Prefiro dar um tapa em mim mesmo. Nele, porém, jamais!

– Bate-me – disse o Homem com muita firmeza e suavidade – pois só assim aprenderás tua lição e saberás finalmente, porque ainda existem guerras na Humanidade.

– Não posso… Não posso… Não tem o menor sentido fazer isso…

– Então – tornou o Homem – já aprendeste tua lição. Quem, dentre todos em quem bateste, a ensinou para ti? Reflete um pouco e me responde.

– Acho que foram os três primeiros, do nível 1 ao nível 3. Os outros apenas a ilustraram e a complementaram. Agora, compreendo o quão atrasados eles estão e o quanto ainda terão que caminhar na senda evolutiva para entender esse fato. Sinto por eles uma compaixão muito profunda. Estão de “muletas” e não sabem disso. E o pior de tudo é que não conseguem perceber que é até muito simples e muito fácil abandoná-las e que, no preciso instante em que a s abandonarem, começarão a progredir. Era essa a lição que eu deveria aprender?

– Sim, filho meu. Essa é apenas uma das muitas facetas do Verdadeiro Aprendizado. Ainda terás muito que aprender, mas já aprendeste a primeira e a maior de todas as lições. Existe a Ignorância! – volveu o Homem com suavidade e convicção – Mas ainda existem outras coisas mais que deves ter aprendido. O que foi?

– Aprendi, também, que é meu dever ensiná-los para que entendam que a vida está muito além daquilo que eles julgam ser muito importante – as suas “muletas” – e também sua busca inútil e desenfreada por sexo, status social, riquezas e poder. Nos outros níveis, comecei a entender que para se ensinar alguma coisa para alguém é preciso que tenhamos aprendido aquilo que vamos ensinar. Mas isso é um processo demorado demais, pois todo mundo quer tudo às pressas, imediatamente…

– A Humanidade ainda é uma criança , mal acabou de nascer, mal acabou de aprender que pode caminhar por conta própria, sem engatinhar, sem precisar usar “muletas”. O grande erro é que nós queremos fazer tudo às pressas e medir tudo pela duração de nossas vidas individuais. O importante é que compreendamos que o tempo deve ser contado em termos cósmicos, universais. Se assim o fizermos, começaremos, então, a entender que o Universo é um organismo imenso, ainda relativamente novo e que também está fazendo seu aprendizado por intermédio de nós – seres vivos conscientes e inteligentes que habitamos planetas disseminados por todo o Espaço Cósmico. Nossa vida individual só terá importância, mesmo, se conseguirmos entender e vivenciar, este conhecimento, esta grande Verdade: – Somos todos uma imensa equipe energética atuando nos mais diversos níveis energéticos daquilo que é conhecido como Vida e Universo, que, no final das contas, é tudo a mesma coisa.

– Mas sendo assim, para eu aprender tudo de que necessito para poder ensinar aos meus irmãos, precisarei de muito mais que uma vida. Ser-me-ão concedidas mais outras vidas, além desta que agora estou vivendo?

– Mas ainda não conseguiste vislumbrar que só existe uma única Vida e tu já a estás vivendo há milhões e milhões de anos e ainda a viverás por mais outros tantos milhões, nos mais diversos níveis? Tu já foste energia pura, átomo, molécula, vírus, bactéria, enfim, todos os seres que já apareceram na escala biológica. E tu ainda és tudo isso. Compreende, filho meu, nada se cria, nada se perde, tudo se transforma.

– Mas mesmo assim, então, não terei tempo, neste momento atual de minha manifestação no Universo, de aprender tudo o que é necessário ensinar aos meus irmãos que ainda se encontram nos níveis 1, 2 e 3.

– E quem o terá jamais, algum dia? Mas isso não tem a menor importância, pois tu já estás a ensinar o que aprendeste, nesta breve jornada mental. Já aprendeste que existem 7 níveis evolutivos possíveis aos seres humanos, aqui, agora, neste Planeta Terra. O Autor deste conto conseguiu transmiti-lo, há alguns milênios, através da Tradição Oral, durante muitas e muitas gerações. O Autor deste trabalho, ao ler esse conto, há muitos anos atrás, também aprendeu a mesma lição e agora a está transmitindo para todos aqueles que vierem a lê-lo e, no final, alguns desses leitores, um dia, ensinarão essa mesma lição a outros irmãos humanos. Compreendes, agora, que não será necessário mais do que uma única vida como um ser humano, neste Planeta Terra, para que aprendas tudo e que possas transmitir esse conhecimento a todos os seres humanos, nos próximos milênios vindouros? É só uma questão de tempo, não concordas, filho meu?

Conclusão

Agora, se quem deste aprendizado tomar conhecimento e, assim mesmo, não desejar progredir, não quiser deixar de lado as “muletas” que está usando ou não quiser aceitar essa verdade tão cristalina, o problema e a responsabilidade já não serão mais teus. Tu e todos os demais que estão transmitindo esse conhecimento já cumpriram as suas partes. Que os outros, os que dele estão tomando conhecimento, cumpram as suas. Para isso são livres e possuem o discernimento e o livre-arbítrio suficientes para fazer suas escolhas e nada tens com isso. Entendeste, filho meu?

Categorias:Atitude

O Centenário de Roberto Campos

Roberto Campos, Bobby Fields para os comunistas e para os socialistas carnívoros, foi um economista, diplomata e político brasileiro que ocupou os cargos de deputado federal, senador e ministro do Planejamento no governo de Castello Branco. Com frequência, vejo referências a ele quase como uma lanterna a iluminar debates sobre economia quando a centralização estatal dos progressistas autoritários é confrontada pelo liberalismo econômico. Para homenagear o centenário de um dos mais brilhantes pensadores brasileiros, o jornalista Augusto Nunes listou 20 frases de Roberto Campos que nos ajudam a ter uma ideia de como ele pensava. Como disse Churchill, “frases nos fazem pensar”.

Figura 1 – Roberto Campos

Todos sabemos que a ajuda externa não pode substituir em nenhum país o esforço próprio da economia, do qual depende fundamentalmente o desenvolvimento econômico.

Contemplando nossa paisagem, onde sobram vestígios de persistente irracionalidade no trato de certos problemas, como o desenvolvimento petrolífero ou o controle populacional, assaltam-me frequentemente cruéis dúvidas sobre os instintos democráticos do Criador, na distribuição de talento.

Para Karl Marx a ditadura do proletariado seria apenas um estágio na evolução dialética. Abolidas as classes e a propriedade privada, assistiríamos ao ‘fenecimento do Estado’ e a floração da liberdade. Infelizmente Marx era bom filósofo, medíocre profeta e mau político.

O desafio brasileiro é dual: elevar o nível de renda por habitante e diminuir a brecha que nos separa dos países mais industrializados. O primeiro objetivo visa a evitar a mutilação da pessoa humana pelo espectro da pobreza. O segundo é um requisito de poder nacional e um antídoto para o ressentimento e frustração oriundos da inferioridade econômica.

Há um sério desafio à diplomacia latino-americana. Sobram construtores de muros. Precisa-se urgentemente de construtores de pontes.

A psicologia de berçário, que herdamos do hino nacional (‘gigante … deitado eternamente em berço esplêndido…’) e o ufanismo das riquezas naturais (as quais são apenas recursos à espera de investimentos), que mamamos nos livros escolares, têm agido como narcotizantes da vontade nacional de desenvolvimento, transformando-nos no país do futuro, enquanto afanosamente conquistam o presente. Infelizmente, como já disse alhures, a chupeta do otimismo é mau substituto para a bigorna do realismo.

O importante para nós é maximizar a velocidade do crescimento da renda, da criação de empregos, da absorção de tecnologia. O resto é sentimentalismo.

São cinco as potências que dispõem de armas nucleares, multiplicando a tentação da imprudência e o risco de acidentes. Há demasiadas mãos no gatilho neste pobre planeta.

Persistem em nossa cultura e em nosso caráter elementos antagonísticos ao desenvolvimento. O primeiro desses elementos é o baixo nível de racionalidade de nosso comportamento, associado talvez ao tipo de educação beletrista e memorativa. A capacidade de exteriorizar emoções é mais prezada que a capacidade de resolver problemas.

No socialismo as intenções são melhores que os resultados, e no capitalismo os resultados melhores que as intenções.

No primeiro quarto deste século, vingou a utopia socialista. O segundo quarto assistiu ao nascimento, paixão e morte do nazifascismo. No terceiro quarto, capitalismo e comunismo se digladiaram na guerra fria. Neste último quarto de século, os velhos ‘ismos’ cada vez mais cedem lugar ao liberalismo.

A diplomacia é como um filme pornográfico: é melhor participar do que assistir.

A Revolução Francesa declarou os direitos do homem, mas certamente não os praticou. Só quase um século depois é que a França descobriria a democracia. Agora, que foi um bom artigo de exportação, isso foi… Várias revoluções do mundo nela buscaram inspiração, inclusive as revoluções latino-americanas, que nunca se celebrizaram pela tenacidade democrática ou sua afeição aos direitos humanos. O diabo das revoluções é que têm um ‘r’ demais.

Marx foi o pior dos profetas: vaticinou a explosão do capitalismo e o que ocorreu foi a implosão do socialismo. Aliás, o iracundo profeta que denunciou a espoliação burguesa era um espoliador nato. Vivia às custas de Engels e, em vez de botar salário no bolso de sua pobre empregada em Londres, botou-lhe um filho no ventre.

A vantagem do capitalismo é que, por ter exemplos de sucesso, admite fracassos e tem mecanismos de correção. Para os socialistas, ao invés, o fracasso é apenas um sucesso mal explicado.

Os comunistas brasileiros têm razão ao dizer que não é verdade que comam criancinhas. No ‘socialismo real’ a preferência histórica é por matar adultos.

No Brasil quase todos os presidenciáveis falam no capitalismo, conquanto não se saiba bem se querem a cabeça ou gostam do bolso dos capitalistas.

Se me perguntassem sobre o nível do debate econômico do país, eu diria que é uma razoável aproximação do Q.I. das ameba.

O Brasil é a grande amante de todos nós. Continuaremos amando-a, ainda que corneados.

É uma ilusão dos nossos esquerdistas imaginarem, idilicamente, que em 1964 havia uma opção entre uma democracia liberal e uma democracia social. A opção era entre dois autoritarismos, o da esquerda, ideológico, feroz, capaz de levar pessoas para o paredón, que levaria anos e anos para se autodestruir, e o da direita, envergonhado, encabulado, que toda hora falava em democracia, que procurava pelo menos manter o ritual de eleições, procurava manter o Congresso aberto. Essa era a real opção.

Categorias:Geral Tags:

Como Integrar o Apache Shiro a uma Aplicação JSF

O Shiro é um framework de segurança da Apache escrito em Java que permite a criação de soluções para autenticação, autorização, criptografia, gerenciamento de sessão e ainda fornece várias implementações de cache. Ele é simples de configurar e tem vários pontos de extensão que nos permitem intervir sobre seu funcionamento – são características de um framework bem projetado -, mas as configurações padrão já são suficientes para uma aplicação de pequeno porte.

Figura 1 – Arquitetura do Shiro

Nesse artigo, vou mostrar um exemplo de como integrar o Shiro a uma aplicação JSF. Nosso modelo será composto por uma enum chamada Permissao, uma enum Perfil para agrupar as permissões, e a entidade Usuario, que possui um Perfil:

public enum Permissao {
   CRIAR_PEDIDO, 
   LISTAR_PEDIDOS;
}

public enum Perfil {
   ADMINISTRADOR(Permissao.CRIAR_PEDIDO, Permissao.LISTAR_PEDIDOS);
   private List<Permissao> permissoes;
   private Perfil(Permissao... permissoes) {
      this.permissoes = Arrays.stream(permissoes).
         collect(Collectors.toList());
   }
}

@Entity
@Table(name = "TBL_USUARIO")
@TypeDefs(value = {@TypeDef(name = "TIPO_PERFIL" ...)})
public class Usuario {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "PK_USUARIO")
   private Long id;
   @Column(name = "NM_USUARIO")
   private String nome;
   @Column(name = "COD_PERFIL")
   @Type(type = "TIPO_PERFIL")
   private Perfil perfil;
}

Há várias formas de configurar o Shiro. Vou mostrar como configurá-lo à partir do arquivo de configuração shiro.ini. Precisamos incluir duas dependências no arquivo pom.xml – isso é o básico para o Shiro ser integrado a uma aplicação web:

<dependency>
   <groupId>org.apache.shiro</groupId>
   <artifactId>shiro-core</artifactId>
   <version>1.3.2</version>
</dependency>
<dependency>
   <groupId>org.apache.shiro</groupId>
   <artifactId>shiro-web</artifactId>
   <version>1.3.2</version>
</dependency>

Em seguida, vamos configurar o arquivo shiro.ini, que deve ficar no classpath – eu costumo colocar em /src/main/resources. As seções desse arquivo agrupam propriedades que determinam o comportamento do Shiro. Basicamente, informamos qual é o Realm utilizado (será explicado mais adiante), qual é a página de autenticação para a qual o Shiro redirecionará o usuário não autenticado, para onde o usuário será redirecionado após o logout e também permite que informemos que há páginas privadas que só podem ser acessadas por usuários que tenham determinadas permissões. No nosso exemplo, a página “criarpedido.xhtml” só pode ser acessada por usuários que contenham a permissão “CRIAR_PEDIDO”.

[main]
apprealm = br.com.app.autorizacao.AppRealm
securityManager.realms = $apprealm
authc.loginUrl = /publico/index.xhtml
logout.redirectUrl = /publico/index.xhtml

[users]

[roles]
ADMINISTRADOR = *

[urls]
/privado/criarpedido.xhtml =  authc, perms["CRIAR_PEDIDO"]

No arquivo web.xml, configuraremos os filtros e listeners do Shiro e também informaremos quais são as páginas que responderão pelos códigos de erro HTTP.

<filter>
   <filter-name>ShiroFilter</filter-name>
   <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
</filter>

<filter-mapping>
   <filter-name>ShiroFilter</filter-name>
   <url-pattern>/*</url-pattern>
   <dispatcher>REQUEST</dispatcher>
   <dispatcher>FORWARD</dispatcher>
   <dispatcher>INCLUDE</dispatcher>
   <dispatcher>ERROR</dispatcher>
</filter-mapping>

<listener>
   <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener
</listener-class>
</listener>
	
<error-page>
   <error-code>401</error-code>
   <location>/publico/acessonegado.xhtml</location>
</error-page>

<error-page>
   <error-code>403</error-code>
   <location>/publico/acessonegado.xhtml</location>
</error-page>

<error-page>
   <error-code>404</error-code>
   <location>/publico/paginanaoencontrada.xhtml</location>
</error-page>

<error-page>
   <error-code>500</error-code>
   <location>/publico/erro.xhtml</location>
</error-page>

Essa é toda a configuração básica que qualquer aplicação web precisa para ser integrada ao Shiro. De agora em diante, começaremos a implementação do nosso mecanismo de autenticação e autorização. Só então você verá como é simples trabalhar com o Shiro. Uma peça importante do mecanismo de autenticação é o AuthenticationToken, que é a classe que mantém as credenciais do usuário. Você pode escolher uma das implementações dessa interface disponíveis, mas vamos criar uma implementação dela que recebe o ID do usuário:

public class IdAuthenticationToken implements AuthenticationToken {
   private Integer userId;

   public IdAuthenticationToken(Integer userId) {
      this.userId= userId;
   }

   @Override
   public Object getPrincipal() {
      return this.id;
   }

   @Override
   public Object getCredentials() {
      return this.id;
   }
}

Você precisará informar ao Shiro que um usuário está se autenticando. Você pode fazer isso à partir de um servlet, campos de input em um formulário de uma tela que é tratada por um ManagedBean, etc. Eu fiz através de um servlet porque antes que o usuário se autenticasse na minha aplicação era feita client authentication contra um Apache Server para validar o certificado digital. Modifiquei um pouco o código para indicar que as credenciais do usuário estão vindo pela request, que no meu caso era um post realizado pela aplicação que rodava em um JBoss debaixo daquele Apache. A credencial é apenas o atributo “userId”, que foi fornecido pela aplicação que validou o certificado digital.

@WebServlet(displayName = "AutenticacaoServlet", 
   name = "AutenticacaoServlet", urlPatterns = "/autenticar")
public class AutenticacaoServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, 
      HttpServletResponse response)
     throws ServletException, IOException {
   Integer userId = (Integer) request.getAttribute("userId");
   Subject subject = SecurityUtils.getSubject();
   subject.login(new IdAuthenticationToken(token, userId));
   subject.checkPermission("CRIAR_PEDIDO");

   response.sendRedirect(request.getContextPath() + 
      "/private/criarpedido.xhtml?faces-redirect=true";

O Realm é um componente que interpreta os artefatos de segurança da aplicação – como usuários, regras e permissões – para o Shiro. Sendo o Realm a fonte de dados para autorização, podemos dizer, grosso modo, que ele é o DAO, ou melhor, um repository, que serve um modelo de autorização e autenticação.

Figura 2 – Sequência Simples de Autenticação

public class AppRealm extends SimpleAccountRealm {

   @Override
   protected AuthenticationInfo doGetAuthenticationInfo(
       AuthenticationToken token) throws AuthenticationException {
      IdAuthenticationToken authToken = (IdAuthenticationToken) token;
      Optional<Usuario> usuario = usuarioDao.buscar(token.getUserId());
      return new SimpleAuthenticationInfo(
         usuario.get(), usuario.get().getId(), getName());
   }

   @Override
   protected AuthorizationInfo doGetAuthorizationInfo(
        PrincipalCollection principals) {
      Set<String> roles = new HashSet<>();
      Set<String> permissions = new HashSet<>();

      Usuario usuario = (Usuario) SecurityUtils.getSubject().getPrincipal();
      Perfil perfil = usuario.getPerfil();

      roles.add(perfil.name());

      perfil.getPermissoes().forEach(a -> {
         permissions.add(a.nome());
      });

      SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(roles);
      info.setRoles(roles);
      info.setStringPermissions(permissions);
      return info;
   }

   @Override
   public String getName() {
      return getClass().getName();
   }

   @Override
   public boolean supports(AuthenticationToken token) {
      return IdAuthenticationToken.class.equals(token.getClass());
   }
}

Utilizamos a implementação SimpleAccountRealm, que é suficiente para o que nos propusemos a fazer. Se você quiser que o Shiro fique automaticamente consultando o banco de dados para carregar as permissões, basta utilizar um JdbcRealm e adicionar a consulta que o Shiro deve utilizar no arquivo shiro.ini.

Nesse momento, já temos um mecanismo que gerencia as credenciais do usuário e autoriza o acesso às páginas informadas na configuração inicial. Se você precisar fazer checagens de permissão ou verificar se o usuário está autenticado programaticamente, você deve acessar o Subject através do SecurityUtils ou utilizar as anotações do Shiro nos métodos das suas classes que devem ser autorizados.

Recomendações para Migração de Aplicações JSF “Puras”

Se você tem uma implementação de PhaseListener que de alguma forma toma decisões com base na URL acessada em sua aplicação JSF, remova-o. Na verdade, você deveria remover filtros, servlets e quaisquer outras implementações interessadas em autorização. Quem cuidará disso é o Shiro – mais especificamente a sua implementação de Realm.

É comum que aplicações JSF tenham uma ExceptionHandlerFactory para interceptar e tratar exceções nas páginas. Isso também não será necessário, pois o Shiro contém a ShiroException e suas variantes. Você também pode definir páginas específicas para tratar os códigos de erro HTTP mapeadas no seu arquivo web.xml.

Referências

1. [http://shiro.apache.org/reference.html]
2. [https://shiro.apache.org/java-authorization-guide.html]
3. [https://shiro.apache.org/authorization.html]
4. [https://shiro.apache.org/architecture.html]
5. [https://shiro.apache.org/configuration.html]
6. [http://galluzzo.com.br/?p=698]
7. [https://dzone.com/articles/java-security-framework-apache]
8. [http://czetsuya-tech.blogspot.com/2012/10/how-to-integrate-apache-shiro-with.html]
9. [http://www.javastutorial.com/2016/03/how-to-use-apache-shiroauthentication.html]

Quando Dois é igual à Zero

No artigo Quando Dois é Igual à Um, te induzi a concluir que dois é igual à um sem que você percebesse que havia um erro na condição inicial do problema. Nesse artigo, provarei que dois é igual à zero baseado em um vídeo interessante que assisti no canal MindYourDecisions. Partiremos da verdade que “2 = 2” e trabalharemos o lado direito da equação com simples mereologia algébrica:

2 = 2
2 = 1 + 1
2 = 1 + √1
2 = 1 + √[(-1)(-1)]
2 = 1 + √-1√-1
2 = 1 + (i)(i)
2 = 1 + i2
2 = 1 + -1
2 = 0

Encontrou o erro? A substituição de √-1 pelo número imaginário (i) está correta. O erro está um passo antes dessa substituição. Uma das regras que a função raiz quadrada deve respeitar é essa:

∀ a,b ∈ R ∃ a,b ≥ 0, √ab = √a√b

Sendo assim, embora os passos da resolução pareçam corretos, não podemos afirmar que:

√[(-1)(-1)] = √-1√-1

Pois a premissa de que (a,b ≥ 0) não seria respeitada.

Categorias:Matemática

Como Gerar o Checksum de um Arquivo

Como expliquei no artigo Criptografia de Senha em Java, uma função de hash gera uma cadeia de caracteres de tamanho fixo a partir de uma sequência de qualquer tamanho; é uma equação matemática que a partir de um texto cria um código chamado message digest (resumo de mensagem), que é o resultado retornado por uma função de hash. Este pode ser comparado a uma impressão digital, pois cada documento possui um valor único de resumo e até mesmo uma pequena alteração no documento, como a inserção de um espaço em branco, resulta em um resumo completamente diferente.

Naquele artigo, mostrei como criptografar um texto utilizando o SHA-256, que é a variante mais utilizada do SHA-2. O código abaixo utiliza outros algoritmos (ou funções hash) para gerar o message digest do conteúdo de um arquivo qualquer. Quando esse resultado é utilizado para checar se um arquivo é genuíno e isento de erros, ele passa a ser chamado de hash sum ou mais popularmente de checksum:

public static void main(String[] args) throws Exception {
   byte[] fileBytes = Files.readAllBytes(Paths.get("/path/my_file.war"));
   Arrays.asList("MD5", "SHA-1", "SHA-256", "SHA-512").forEach((alg) -> {
      try {
         MessageDigest algoritmo = MessageDigest.getInstance(alg);
         byte digestMessage[] = algoritmo.digest(fileBytes);
         System.out.println(alg);
         System.out.println(new HexBinaryAdapter().marshal(digestMessage));
      } catch (NoSuchAlgorithmException e) {
         e.printStackTrace();
      }
   });
}

Utilizei o HexBinaryAdapter do Java, mas você poderia utilizar o Hex.encodeHexString(…) do Apache Commons ou ainda poderia converter os bytes para a versão hexadecimal manualmente byte-a-byte, assim:

(...)
StringBuilder hexPassword = new StringBuilder();
for (byte aByte : digestMessage) {
   hexPassword.append(String.format("%02X", 0xFF & aByte));
}
System.out.println(hexPassword.toString());

Alternativas

Se você só precisa do checksum e estiver utilizando Windows, você poderia baixar o FCIV da Microsoft, que pelo menos é um utilitário de linha de comando, ou o Hash Calculator, que mostra os checksums de forma gráfica. O FCIV é bem simples de utilizar:

C:\>fciv -SHA1 {ARQUIVO}

Referências

1. [http://howtodoinjava.com/core-java/io/how-to-read-file-content-into-byte-array-in-java/]
2. [http://www.adam-bien.com/roller/abien/entry/java_8_reading_a_file]
3. [http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#MessageDigest]
4. [http://www.devmedia.com.br/como-funciona-a-criptografia-hash-em-java/31139]
5. [https://www.lifewire.com/what-does-checksum-mean-2625825]

Injeção de Dependência no Java EE

O CDI (Contexts and Dependency Injection) é um recurso muito útil do Java EE embora a idéia seja bem mais antiga que o framework. Nesse artigo, trataremos do uso da anotação @Inject para permitir que possamos escolher qual das instâncias da interface PessoaService será injetada em um managed bean.

public interface PessoaService {}

Para esse exemplo, a interface PessoaService terá apenas duas implementações:

public class PessoaFisicaService implements PessoaService {}

public class PessoaJuridicaService implements PessoaService {}

Em princípio, vamos deixar o próprio container, que no caso é o JBoss, escolher a implementação que será injetada tomando por base a interface do atributo pessoaService no managed bean abaixo:

@ViewScoped
public class ManagedBean {
   @Inject
   private PessoaService pessoaService;
}

O código acima vai lançar uma exceção, pois ao delegarmos para o container a escolha de uma implementação que atenda à interface, ele não terá como decidir entre as duas implementações disponíveis. Você poderia injetar diretamente a implementação que você necessita, mas uma boa prática de design orientado à objetos e que considero importante quando se trabalha com linguagens fortemente tipadas como o Java é desenvolver “contra” a interface para que seja estabelecido um contrato que várias implementações terão que atender, o que permite que troquemos a implementação utilizada uma vez que a composição foi desacoplada – a classe onde a instância é injetada depende da interface (contrato) e não de uma implementação. Sendo assim, em princípio, vamos apenas qualificar nossas implementações com @Named:

@Named("PessoaFisica")
public class PessoaFisicaService implements PessoaService {}

@Named("PessoaJuridica")
public class PessoaJuridicaService implements PessoaService {}

Em seguida, basta informar o nome ou qualificação da implementação que queremos que o container injete. No caso, garantimos que a implementação injetada é PessoaFisicaService, que é qualificada ou nomeada como PessoaFisica:

@ViewScoped
public class ManagedBean {
   @Inject
   @Named("PessoaFisica")
   private PessoaService pessoaService;
}

O problema dessa estratégia é que ela não é “refactor friendly“, pois se você renomear uma implementação, terá que adequar esse nome em todos os lugares em que ela é utilizada. Não podemos depender de nossa memória, que em geral é bem estragada nos desenvolvedores de software. Também temos que pensar nos pobres coitados que darão manutenção naquele código no futuro. Uma forma elegante de resolver esse problema é criar uma anotação específica para cada implementação e anotá-las com @Qualifier. O @Qualifier indica ao container que ele deverá procurar uma implementação anotada com a anotação definida:

@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface PessoaFisica{}

@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface PessoaJuridica{}

Vamos aplicar essas anotações em nossas implememntações:

@PessoaFisica
public class PessoaFisicaService implements PessoaService {}

@PessoaJuridica
public class PessoaJuridicaService implements PessoaService {}

Em seguida, vamos indicar que a implementação do contrato que deve ser utilizada é @PessoaFisica:

@ViewScoped
public class ManagedBean {
   @Inject
   @PessoaFisica
   private PessoaService pessoaService;
}

O código parece bem limpo e você pode refatorá-lo pela sua IDE favorita sem que precise lembrar de alterar os lugares em que as implementações são utilizadas. Não é necessário incluir muitos comentários para que um desenvolvedor entenda a intenção de quem codificou e o que está acontecendo ali. O único problema é que para cada implementação você deve criar uma anotação, mas essa é uma decisão de projeto que você terá que tomar. Sempre converse com seus colegas antes de tomar esse tipo de decisão. Às vezes eles podem ter uma ideia melhor que a sua.

Referências

1. [http://sysout.be/2011/06/16/java-ee6-cdi-named-components-and-qualifiers/]

Categorias:Programação