sexta-feira, 1 de novembro de 2013

Desenhando e estudando sobre gráficos em Java

Bom dia galera,

este é um post técnico.

O post de hoje é sobre um estudo sobre um tipo estrutura chamada fractal. Nesse link tem uma explicação legal sobre fractais : link .

Hoje vou postar um código que cria um fractal que fez parte da minha infância. Quer dizer , anos de estudo de programação + matemática para criar o glorioso símbolo da... Triforce! Ohhhhhh (8)



Percebam o padrão que acontece nessa estrutura, é um triângulo grande com um triângulo invertido dentro. Se aplicarmos esse padrão várias vezes, podemos criar infinitas triforces o que gera o nosso fractal.

Eu encontrei uma api MUITO interessante para desenho , usada nos cursos de ciências da computação de Princeton chamado StdDraw. Ele oferece uma api muito interessante para se desenhar no Java, sem precisar aprender sobre Swing , GUI etc. O único conhecimento necessário é um conhecimento básico de matemática e basicamente qualquer coisa pode ser feita. Eu resolvi fazer esse padrão de fractal com a linguagem de programação Java. O link para a API é: link da API de desenho . Para usar essa api é só copiar a classe para uma classe dentro do seu projeto e começar a utilizar.

O código a seguir gera a lendária Triforce de maneira recursiva. Teoricamente podemos gerar infinitas triforces dentro de triforces:

   public static class TrianglePoint
    {
        double x1;
        double y1;
        double x2;
        double y2;
        String type;

        public TrianglePoint(double x1, double y1, double x2, double y2, String type)
        {
            this.x1 = x1;
            this.x2 = x2;
            this.y1 = y1;
            this.y2 = y2;
            this.type = type;        }

        public double getX1()
        {            return x1;        }

        public void setX1(double x1)
        {            this.x1 = x1;        }

        public double getY1()
        {            return y1;        }

        public void setY1(double y1)
        {            this.y1 = y1;        }

        public double getX2()
        {            return x2;        }

        public void setX2(double x2)
        {            this.x2 = x2;        }

        public double getY2()
        {            return y2;        }

        public void setY2(double y2)
        {            this.y2 = y2;        }

        public String getType()
        {            return type;        }

        public void setType(String type)
        {
            this.type = type;
        }
     
        public double midPointX(){
             return ((x1+x2)/2);        }

        public double midPointY(){
            return ((y1+y2)/2);        }
     
    }

    static void recursionMethod(Map<String,TrianglePoint> trianglePointsList, int times){
     
        List<String> listTypes = new ArrayList<String>();
       
        listTypes.add("transversal");
        listTypes.add("horizontal");
        listTypes.add("vertical");
     
        if(times == 0){
            return;
        }
     
        for(String type : listTypes){
         
            StdDraw.line(trianglePointsList.get(type).getX1(), trianglePointsList.get(type).getY1(), trianglePointsList.get(type).getX2(),
                    trianglePointsList.get(type).getY2());
            try{
            Thread.sleep(500);
            } catch (Exception e){              }
            }
     
            TrianglePoint horizontal = trianglePointsList.get("horizontal");
            TrianglePoint transversal = trianglePointsList.get("transversal");
            TrianglePoint vertical = trianglePointsList.get("vertical");
     
            TrianglePoint transversalOld = new TrianglePoint(trianglePointsList.get("transversal").getX1(),
                                                          trianglePointsList.get("transversal").getY1(),
                                                          trianglePointsList.get("transversal").getX2(),
                                                          trianglePointsList.get("transversal").getY2(),
                                                          trianglePointsList.get("transversal").getType());
         
            TrianglePoint horizontalOld = new TrianglePoint(trianglePointsList.get("horizontal").getX1(),
                    trianglePointsList.get("horizontal").getY1(),
                    trianglePointsList.get("horizontal").getX2(),
                    trianglePointsList.get("horizontal").getY2(),
                    trianglePointsList.get("horizontal").getType());
         
            TrianglePoint verticalOld = new TrianglePoint(trianglePointsList.get("vertical").getX1(),
                    trianglePointsList.get("vertical").getY1(),
                    trianglePointsList.get("vertical").getX2(),
                    trianglePointsList.get("vertical").getY2(),
                    trianglePointsList.get("vertical").getType());
         

            horizontal.setX1(transversalOld.midPointX());
            horizontal.setY1(transversalOld.midPointY());
            horizontal.setX2(verticalOld.midPointX());
            horizontal.setY2(verticalOld.midPointY());

            vertical.setX1(horizontalOld.midPointX());
            vertical.setY1(horizontalOld.midPointY());
            vertical.setX2(transversalOld.midPointX());
            vertical.setY2(transversalOld.midPointY());
         
            transversal.setX1(verticalOld.midPointX());
            transversal.setY1(verticalOld.midPointY());
            transversal.setX2(horizontalOld.midPointX());
            transversal.setY2(horizontalOld.midPointY());
     
        recursionMethod(trianglePointsList, times-1);
     
    }

    public static void main(String[] args)
    {

        Map<String,TrianglePoint> mapTriangle  = new HashMap<String,TrianglePoint>();
        mapTriangle.put("transversal", new TrianglePoint(0.0, 0.0, 0.5, 1.0,"transversal"));
        mapTriangle.put("horizontal", new TrianglePoint(0.0, 0.0, 1.0, 0.0,"horizontal"));
        mapTriangle.put("vertical", new TrianglePoint(1.0, 0.0, 0.5, 1.0,"vertical"));
     
        recursionMethod(mapTriangle, 2);

        System.out.println("triforce complete ");
    }

Esse código gera a seguinte saída:



Agora modificando a chamada principal do método recursivo para chamar 7 vezes:


        recursionMethod(mapTriangle, 8);

A seguinte imagem é gerada:


Bom, espero que tenham se divertido um pouco com esse estudo de fractais e API de Princeton. O desafio agora é fazer formas mais complexas de fractais como por exemplo esse link : link .

Abraços até a próxima.




quinta-feira, 3 de outubro de 2013

CipherInputStream o retorno

Bom dia a todos,

atenção isso é um post técnico


Se vocês usam a classe CipherInputStream para fazer criptografia de dados nunca devem ter percebido uma coisa engraçada. O caso é: eu precisava limitar o tamanho de um stream que poderia ser usado em um serviço Rest e para tal eu criei um wrapper da classe InputStream e quando ele fosse ler o InputStream , sempre contasse os dados e se chegasse em tal limite , lança uma exceção. O problema é que quando eu passava esse wrapper com 1 milhão de bytes dentro do InputStream e com limite de 1 milhão de bytes para a CipherInputStream , as vezes ele passava e as vezes ele lançava exceção.

Fui descobrir que essa bendita classe ( CipherInputStream) do java não é consistente em relação ao retorno do dado criptografado o que eu acredito ser totalmente aceitável, mas isso não está documentado em lugar nenhum.

A lição é : tamanho do retorno do CipherInputStream não tem relação de 1 para 1 com o tamanho do InputStream que você coloca no construtor dele.

Até mais.

quinta-feira, 29 de agosto de 2013

Problemas com SVN

Bom dia esse é um post técnico.

Se você está com problemas com autorização do SVN depois de uma mudança de senha do seu login no windows e estiver usando eclipse com o plugin do Subclipse é só ir em:

Preferences->Team -> SVN -> SVN Interface

E mudar de JavaHL para SVNKit.

Tente usar de novo e ele pedirá a senha.

Fim.

quinta-feira, 8 de agosto de 2013

Perl - Debugando erros de DB

Bom dia pessoal,

Este é um post técnico.

Esse é mais um post sobre perl, dessa vez para quem precisa debugar erros no banco de dados. Usando o DBI , uma api bastante utilizada para fazer chamadas em bancos mysql, oracle etc, vocês podem precisar fazer processos em batch. Quer dizer, fazer várias chamadas no bd fazendo um commit só. O problema é que se der um erro no meio dessas chamadas, o erro padrão que é lançado é bem preciso sobre "como errou" e não sobre "o que errou". Para o programador poder verificar isso mais facilmente é bem simples. Só basta usar o método TRACE da API. Exemplo abaixo:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
use DBI;
 
### Remove any old trace files
unlink 'dbitrace.log' if -e 'dbitrace.log';
 
### Connect to a database
my $dbh = DBI->connect( "dbi:Oracle:archaeo", "username", "password" );
 
### Set the tracing level to 1 and prepare()
DBI->trace( 1 );
doPrepare();
 
### Set trace output to a file at level 2 and prepare()
DBI->trace( 2, 'dbitrace.log' );
doPrepare();
 
### Set the trace output back to STDERR at level 2 and prepare()
DBI->trace( 2, undef );
doPrepare();
 
exit;
 
### prepare a statement (invalid to demonstrate tracing)
sub doPrepare {
    print "Preparing and executing statement\n";
    my $sth = $dbh->prepare( "
        SELECT * FROM megalith
    " );
    $sth->execute();
    return;
}~

### font : http://oreilly.com/catalog/perldbi/chapter/ch04.html
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

O trace só será invocado para cada método que for realizado e acontecer algo de anormal, AKA erros. Legal é que você pode enviar para uma saída esse trace com o segundo argumento do método. Melhor do que do que isso, para cada erro você pode manipula-lo com um :

$statement->trace_msg ( " SUA STRING AQUI"); 

Quer dizer que para cada erro, você pode personalizar o que você estava mandando, e isso resolve o problema da falta de verbosidade do nosso amigo "erro padrão do database". ( link )

FIM.

segunda-feira, 29 de julho de 2013

"Hot reload" de atributos de arquivo com Java EE usando Apache Common Configuration

Boa tarde pessoal,

ESTE É UM POST TÉCNICO

O assunto de hoje é sobre a necessidade de se carregar de forma dinâmica atributos em uma aplicação (geralmente web) sem precisar fazer restart do server. Fazendo restart do server muitos leitores poderão falar sobre o ServletContext, que se você deixar o código preparado pode receber mudanças e no restart ele vai ler as mudanças e aplica-las. Estamos falando aqui de aplicações que não podem parar e não podem ter o "tempo do restart" de folga. Umas solução bastante simples é usar a lib Apache Common Configuration ( link ). Com essa biblioteca você pode setar vários tipos de "estratégias de reload" de configurações. Vou falar das 3 principais: FileChangedReloadingStrategy, InvariantReloadingStrategy, ManagedReloadingStrategy. A FileChangedReloadingStrategy é a mais utilizada. Toda vez que você ler um arquivo de properties, ele verificar se essa nova leitura bate com a última leitura, se não bater, ele recarrega os atributos. A InvariantReloadingStrategy é uma estratégia para NUNCA recarregar os atributos, quer dizer, uma vez em memória não serão recarregados até o próximos restart da aplicação. E por último o ManagedReloadingStrategy em que você pode "manualmente" fazer o reaload dos properties em seu código. Vamos ao exemplo:

PropertiesConfiguration config = new PropertiesConfiguration("minhasPropiedades.properties");
config.setReloadingStrategy(new FileChangedReloadingStrategy()); // se desejar usar essa estratégia.

E... só. Fácil não? Agora você tem na sua aplicação a possibilidade de recarregar atributos de um arquivo de properties sem precisar fazer restart da mesma.

Fim.

ps: estou pensando em alguns temas não técnicos para escrever mas não estou com ideias maduras. Até lá vai ser coisas técnicas mesmo. Adiós!

sexta-feira, 26 de julho de 2013

Criptografia AES de 256 bits de chaves simétricas com Perl

Bom dia a todos!

Hoje vou demonstrar como é possível decodificar uma informação codificada com algoritmo AES de 256 bis a partir de uma chave já gerada e de um iv já gerado e encodados com base 64. Lembrando que a forma mais segura de trafegar os dados por uma rede é encoda-los em alguma base, a base mais comum é a 64 mas existem outras, com um pouco de pesquisa vão descobrir outros métodos que possam servi-los melhor, por fim acredito que Base 64 deva servir para quase todos os propósitos mais comuns de criptografia. É importante testar seus algoritmos de criptografia e descriptografia em mais de uma linguagem para provar que o seu código não está ligado a apenas uma linguagem, por exemplo, criptografar e encodar em java e depois decodificar em Perl como o exemplo abaixo faz. O algoritmo AES está muito bem explicado aqui ( link ) . Vamos ao código em perl, lembrando que é preciso ter os pacotes "Crypt::CBC" e "MIME::Base64" . Para baixa-los, no processo padrão, é só usar cpanm + "nome do pacote" , se o cpanm estiver instalado em seu ambiente de desenvolvimento. Eu estou desenvolvendo com windows atualmente e isso não funcionou comigo, tive que digitar "cpan" no "cmd" e lá dentro e digitar "install "nomedo::Pacote"". Vamos ao código:

------------------------------------------------------------------------------------------------
#!/usr/bin/perl
use Crypt::CBC;
use MIME::Base64;

# /*Requisicao:     texto=vivaobrasil
# Resposta:       status=0, texto-criptografado=t7rvuxbe6dBRfhDjlFPjtw==,
# IV=ABESpFdKYLTkiqkOdA+F+A==, key-id=2929
# symmetric key   :"bncM9yhZfwxF5NomWErbIrvbaZmE3AwPcMxgSneROiU="
# */

my  $dataPlain = "Sole Deo Gloria";
my  $keyundecoded  ="bncM9yhZfwxF5No3WErbIrvbaZmEfAwPcMxgSneROi4=";
my  $key    = decode_base64($keyundecoded);
my  $ivundecoded = "1234567890123456789012=="; # precisa ter 16 bytes decoded
my  $iv     = decode_base64($ivundecoded);
my  $encriptedData = "t7rvuxbe6dBRfhDjlFPjtw==";
my  $encriptedDecodedData = decode_base64($encriptedData);


my $cipher = Crypt::CBC->new({
    key         => $key,
    cipher      => "Crypt::Rijndael",
    iv          => $iv,
    literal_key => 1,
    header      => "none",
    keysize     => 32
});

my $encryptedData = $cipher->encrypt($dataPlain);

print "\n Encrypted is : +$encriptedData";
my  $plaintext  = $cipher->decrypt($encryptedData);
print "\n Decrypted is : $plaintext" ;

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

Fim.

quinta-feira, 25 de julho de 2013

Nome de variáveis em programação

Bom dia pessoal!

ESTE É UM POST TÉCNICO.

Hoje vou falar sobre um tópico muito, mas MUITO importante na área de programação. Antes de começar vou dar os devidos créditos dessa sabedoria aos que merecem, Jonas Abreu e Michel Forster, dois programadores que me ensinaram o valor do nome de uma variável. Vocês devem estar se perguntando "Mas um post inteiro sobre o nome de uma variável? Mas isso é algo tão trivial para mim..." , é ai que você se engana Jovem Gafanhoto, o nome que você da as variáveis é tão importante para o código quanto por exemplo o título dos capítulos de um livro ( ou se eles terão um título). Como todo post técnico será feito devagar e com bastante calma, para que todo mundo possa entender, mesmo os que não tem proficiência em alguma linguagem de programação. Acredito que essa seja um dos "Pontos Fundamentais da Programação", quero dizer, uma das condições sine qua non para um excelente/mito/lendário programador. A despeito da linguagem que você programa todos os programadores vão ter que declarar variáveis um dia. Vou escrever em Java que a linguagem que eu mais tenho contato atualmente mas o que eu vou demonstrar pode ser aplicado em basicamente qualquer linguagem. Esse processo de aprender a declarar variáveis é simples e é uma das primeiras coisas que você aprende na área. Alguns exemplos de declaração de variável são :

1 - String x ;
2 - byte[] x2;
3 - int x3;

etc
etc.

Nesse exemplo estamos somente declarando primeiro o tipo "String, array de byte, e int" e depois o bendito nome da variável. A pergunta que eu vos faço é simples, lendo o nome da primeira variável você sabe o que ela guarda? O que guarda a String x? Por que ela é uma string e não um array de chars? E será que o Goku vai conseguir matar o freeza antes de eu me casar? Brincadeiras a parte, é sobre esse assunto que o texto é dedicado. Como dar um bom nome para uma variável. O caso é que vários e vááááááarios artigos já falam extensivamente sobre isso, pessoas com um gabarito bem maior que o meu já falaram em palestras etc. Mas vou abordar o conceito de maneira introdutória para que isso possa aguçar a curiosidade dos meus leitores técnicos. Voltando as variáveis, vamos pensar que elas estão em um contexto de um POJO ( link ) que representa o pedido dos clientes. Sem poder ler o resto do código o que essas variáveis representam do pedido? Não temos a mínima ideia. Agora se mudarmos para algo assim:

1- String nome;
2- byte[] produtos;
3- int numero;

Agora mudou de figura. Agora sabemos que o número 1 representa um nome, o número 2 representa os produtos do pedido e o número 3 representa um número. Os nomes melhoraram? Com certeza. Eles estão bons? Com certeza não. Vamos focar no número 1. Agora lendo o nome da String podemos rapidamente identificar que é o nome de algo, mas do que? É o nome da atendente que registrou o pedido ou o nome do solicitante? É um nome fictício do sistema ou o nome real do banco de dados? É um nome completo ou só o sobrenome? Depois de muita investigação no código você descobre que é o primeiro nome de cadastro do cliente no banco de dados. Então vamos mudar o nome da variável para:

1- String primeiroNomeDoClienteNoBancoDeDadosString;

Agora sim. Temos um nome de variável que, sem precisar saber a lógica do programa , sabemos exatamente o que ela guarda. Mas ela está boa? Ainda não. Ela tem dois erros básicos ao se atribuir nome as variáveis. O primeiro é usar "Do"/"No"/"De" isso não faz sentido. Sem esses "conectivos" poderíamos entender muito bem e ficaria:

1- String primeiroNomeClienteBancoDadosString;

Agora falando especificamente de java, é muito tentador dar o nome do tipo as coisas que fazemos. Por exemplo uma interface chamada "CacheDistribuedInterface". Mas de novo, isso não faz sentido nenhum em Java, pois java é uma linguagem fortemente tipada. ( link ) Sendo fortemente tipada, você programador, não precisa escrever o tipo do nome da variável por que ela simplesmente não vai mudar na execução do programa. ( Se você tem uma variável que é uma interface e o que pode mudar é o tipo de implementação que ela está guardando, mas o tipo dela não mudará). Arrumando essa pequena "falha" :



1- String primeiroNomeClienteBancoDados;

Agora melhorou. Mas não está boa ainda. Esse nome de variável está muito grande. E ele fica difícil de guardar na memória enquanto você lê o código e debuga na sua mente. Imagina um programa só com variáveis gigantes... seria um "out of memory error" ( link ) na sua cabeça. Fiz uma brincadeira, mas o assunto é sério, não devemos dar nomes gigantes a variáveis pois eles são difíceis de guardar enquanto se lê o código. Agora estão se perguntando: "Mas então, se não podemos ser curtos demais, nem longos demais, como saberemos que o nome da variável é um nome perfeito?" . Esse é o ponto, nunca poderemos afirmar que o nome da variável está perfeito por que isso é uma opção pessoal. O que podemos indicar são nomes ruins, isso é fácil. Mas um excelente... é muito difícil. O ideal é você conseguir fazer que um nome de variável seja tanto descritiva quanto concisa, e a intersecção dessas duas qualidades faz a qualidade do nome de suas variáveis subir. Aqui vão algumas sugestões para a resolução do nosso pequeno exercício:

1- String nomeClienteBD;
2- String nameClientDB;
3- String solicitanteNome;
4 - String clientNameDb;
etc
etc
etc

Fim.

quarta-feira, 24 de julho de 2013

Janelas, varandas, horizontes enfim....

Bom dia pessoal,

Hoje percebi um fenômeno interessante. Por que as pessoas são tão fixadas em janelas e varandas? Vou explicar o caso. Primeiro vou relatar vários exemplos relacionados ao tema. Aqui no meu trabalho a janela do banheiro a bem ampla e muitas pessoas quando escovam os dentes ficam olhando pela janela para ver o que acontece na rua. No meu trabalho também, na copa tem uma janela gigante, em que várias pessoas ficam olhando pela janela e tomando café enquanto estão no descanso. Outro exemplo é quando vem amigos no meu apartamento, quase em todas as vezes eles querem ir na varanda olhar. Não me excluo desse fenômeno pois quando eu escovo os dentes lá no trabalho também fico olhando pela grande janela. Mas o que estamos procurando? Será que esse reflexo involuntário de ficar observando a paisagem seja algo primitivo de nossa existência? Talvez, olhamos involuntariamente para essas "janelas" na esperança de encontrar algo que foi perdido a muito tempo, algo que tínhamos quando nossa raça era nômade. Quando éramos nômades não existiam janelas, pois o mundo todo podia ser nossa casa. Paisagens eram todas nossas, e podíamos nos deslocar para qualquer lugar. Será essa natureza? Será que por mais que tenhamos desenvolvido uma civilização sedentária, o nosso instinto continue nômade? Não sei a resposta para nenhuma dessas perguntas, mas acredito que seria uma pesquisa interessante saber a razão dessa fixação das pessoas por janelas/varandas.

Fim.

quinta-feira, 18 de julho de 2013

A questão dos médicos "cubanos/chilenos/anlgo-saxões/paruanos/marcianos" no Brasil

Boa tarde pessoal!

O post de hoje é sobre essa questão levantada pela presidente(a) Dilma no programa "Mais Médicos". Antes de qualquer discussão a cerca do tema, vamos pensar sobre o que nos levou a esse tema virar... um tema. O que levou a presidente a pensar em uma medida dessas é o simples fato da nossa amada pátria ter uma relação de 1,95 ( em algumas literaturas 1,8) médicos por 1000 habitantes no nosso país em média. Esse dado não seria de todo ruim se e somente se não fosse uma média, se a distribuição da população médica fosse perfeita, não estaríamos ruim, haja vista que na primeira potencia mundial os EUA tem uma média de 2,4 médicos por habitantes. O problema é quando os médicos se concentram em alguns lugares do nosso país como, principalmente, as capitais. Por exemplo, a cidade de são paulo tem o quarto melhor índice de médico por 1000 habitantes do planeta ( antes de prosseguir com esse texto, meu conselho é ler esses links inteiros link  e link). Ao decorrer desse texto vou tentar de todas as maneiras escapar de comparações numéricas, mesmo porque os dois links que eu passei esse trabalho foi feito de maneira bastante clara, e de qualquer maneira os dados podem ser interpretados de tantas maneiras que não acho que eu tenho competência o suficiente para conseguir fazer um texto levando em consideração tantas variáveis, vou me colocar no papel de observador que estudou um pouco sobre o programa e sobre alguns números para poder formar uma introdução ao tema. Ok, contando que o o leitor leu esses links vamos começar de fato a discussão sobre os médicos, ou seria uma discussão sobre a falta de médicos? O programa "Mais médicos", primeiro, prevê contratação de médicos para áreas com absurda falta de médico ( áreas conhecidas como como "interior do Brasil"). O processo de seleção será o seguinte: abre-se o edital, faz-se a seleção de todos os médicos que passaram, desses médicos que passaram no edital de contratação serão filtrador por: primeiro os médicos formados no Brasil, seguido por médicos brasileiros formados no exterior e por ÚLTIMO médicos estrangeiros. Acredito que tenho leitores atentos que logo vão levantar a seguinte questão: mas se o não tem médicos agora nessas regiões, quer dizer, se todos os médicos brasileiros já não estão nessas regiões necessitadas, o que adianta essa ordem de contratação sendo que no final das contas serão contratados médicos estrangeiros de qualquer forma? O caso é que o governo está investindo em criar novas vagas para médicos no Brasil e para formar um médico demora em média 10 anos. Quer dizer, que qualquer medida tomada hoje em relação a formação de novos médicos, se uma medida pudesse num passe de mágica criar 1 milhão de vagas em universidades de medicina pelo país , somente daqui a uma década teríamos médicos o suficiente para suprir a necessidade nacional da saúde. Esse pensamento também não é necessariamente correto, pois se pensarmos que os médicos formados tendem a ir para as capitais, essa falta de médicos somente seria amenizado daqui a 10 anos e não sanado. Então quer dizer que o que está sendo feito, esse programa "Mais Médicos", terá efeito de verdade? Não exatamente. Temos que ver essa questão de outros ângulos também. Pensemos, por exemplo, por que existe essa evasão dos médicos do interior do país? Será que é por causa do salário? Será que é por que nessas cidades as condições para exercer a profissão são muito precárias? Será que não há atratividade do ponto de vista econômico para médicos no interior? Eu não posso julgar os médicos que vão para as capitais "ganhar a vida" pois na minha área que é a de TI no Brasil existem poucos lugares realmente atrativos para se trabalhar e viver dignamente. Uma possível resposta seria um plano de carreira bem estruturado na área da saúde, onde os médicos pudessem ter boas vantagens tomando a decisão de ir para uma carreira pública. Essa polêmica também levantou o argumento de que muitos médicos cubanos seriam de má qualidade e que eles não conseguem passar em uma prova chamada "revalida", essa prova é para médicos estrangeiros que querem praticar medicina no país. Esse pensamento é ainda mais raso e os contra argumentos que tenho visto pela interwebs são piores que o próprio argumento patife. Argumentar que a maioria dos índices da saúde de cuba são melhores que os nossos, não significa que os médicos cubanos são melhores OU piores que os nosso. Esses índices melhores indicam de forma contundente que o SISTEMA de saúde cubano, como um todo, é muito superior ao que temos no Brasil, ponto. Outro argumento sobre a má qualidade de médicos cubanos é que a maioria eles não conseguem passar no Revalida, isso também é um argumento falacioso ( link ) pois em uma prova absurdamente mais fácil que a Revalida somente 50% dos médicos de São Paulo passaram, isso indica que o nível dos médicos pode ser bastante equivalente no que se refere ao nível de educação acadêmica. Outras medidas sendo tomadas pelo governo é que os alunos de medicina das escolas públicas sejam obrigados a ficar dois anos a mais no seu respectivo curso para cuidar de paciente do pronto socorro SUS. O meu comentário sobre essa proposta consiste em pensar sobre os pontos positivos que isso traria para o para ambas as partes, os médicos e os pacientes nesse período. Aparentemente, esses médicos farão esse período de trabalho antes de fazer sua residência de especialização, logo as pessoas que estarão no pronto atendimento do sus, serão as primeiras pessoas atendidas de verdade por esses médicos. Não podemos aqui fazer juízo de valor sobre com que qualidade será esse atendimento, pois imagino que se não for um bom atendimento médico, o problema da saúde em vez de melhorar, piore. Aliás, esse é outro fator "trágico" da saúde, os problemas tendem a ser bolas de neve. Se não há um primeiro atendimento decente, os próximos atendimentos tendem a ser muito mais custosos (cirurgias, medicamentos, especialistas etc) pois as doenças vão prosperando até, em último caso, matar o hospedeiro. Indo um pouco fundo nesse pensamento, tenho a tendência a apoiar atitudes que ajudam os mais desfavorecidos na nossa sociedade, penso que as medidas do governo na estão acertadas em todos os prazos : a curto prazo fazer um plano de carreira para médicos e contratar de qualquer fonte médicos capacitados para suprir os buracos do sistema atual, e a longo prazo oferecer mais vagas em cursos de medicina. Outro fator interessante sobre esse programa do governo é que os médicos só poderão ser contratados aqui no Brasil se o país de origem deles obter uma taxa maior que 1,8 médicos por 1000 habitantes e esses médicos estrangeiros devem falar português fluentemente. E que essas breves considerações iniciais sobre o tema permitam uma abertura para uma discussão muito mais ampla do que ficar com os argumentos esquizofrênicos do estilo: "O governo vai acabar com a saúde" ou "estão importando médicos cubanos para fazer uma ditadura demo-socialista". As mudanças dessas medidas serão observadas somente a longo prazo, torço para que seja um programa de sucesso e que os médicos possam optar por uma carreira pública com condição de vida digna, em qualquer região do país como podem os que fazem o curso de direito ( por sinal MUITO DIGNA a vida de alguém na área de direito, digna em demasia em alguns casos). Estou ciente também de que esse tema é muito grande mas eu gostaria de deixar essa pequena contribuição virtual com algumas questões e argumentos levantados, acredito que toda fonte de informação seja interessante de certo ponto de vista. As vezes tenho a impressão de que os blogs progressistas e a mídia direitista se assemelham muito no que tange a "exaltação de certos temas" , mas isso é tema para outro texto. 

Fim.

terça-feira, 16 de julho de 2013

Criptografia de dados com Java algoritmo RCA de chaves assimétricas

Bom dia pessoal!

Hoje o assunto é criptografia de dados com Java. O algoritmo criptográfico que vamos utilizar é o RCA ( link ) e é um algoritmo de chaves assimétricas ( link ). Não vou explicar sobre o que é chaves assimétricas ou o algoritmo RCA porque nos links está muito bem desenvolvido. Vou demonstrar como fazer de forma absurdamente simples a implementação desse algoritmo em Java usando a JCA, que é uma API de criptografia de dados embutida no Java SE. Vamos ao código:

Imports necessários:

import java.security.*; 
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher; 
import javax.crypto.IllegalBlockSizeException; 
import javax.crypto.NoSuchPaddingException;

... código:
                //só para fins de estudo
System.out.println("~~~~ TESTES RSA CRYPTOGRAPH ~~~~~~~~~~~");
 
       KeyPairGenerator keyPairGenerator= KeyPairGenerator.getInstance("RSA");
        keyPairGenerator.initialize(1024); // gera a "complexidade" do par de chaves auto geradas
       KeyPair kp = keyPairGenerator.genKeyPair(); instancia o par de chaves

       PublicKey puKey = kp.getPublic();
       PrivateKey priKey = kp.getPrivate();
       String text = "mensagem a ser criptografada"; 
       Cipher cipher1 = Cipher.getInstance("RSA"); // instância do objeto que faz a criptografia.
       cipher1.init(Cipher.ENCRYPT_MODE, puKey  ; // inicializa esse objeto no modo desejado (nesse caso no modo de encriptação de dados)
       byte[] resultadoCriptografico = cipher1.doFinal(text.getBytes()); // doFinal() é o método que de fato faz a criptografia e devolve um array de bytes criptografados com a chave pública que você enviou como parâmetro no init()

       cipher1.init(Cipher.DECRYPT_MODE, priKey  ; // nesse tipo de algoritmo você sempre criptografa com a chave pública e descriptografa com a chave primária.
       byte[] resultadoDescriptografico = cipher1.doFinal(x);

... fim do código

Como vocês podem observar o input dos dados é em array de bytes e o output de dados também é em array de bytes. Para transformar em string é só fazer :

   System.out.println(new String(resultadoCriptografico));
 
   System.out.println(new String(resultadoDescriptografico));

Esse é um começo de estudo sobre criptografia de dados. Espero ter ajudado no começo dessa jornada.

Fim.





quinta-feira, 11 de julho de 2013

Por água abaixo a "bondade gera bondade"


Saudações gregos e troianos!

A algum tempo atrás eu escrevi um texto em que eu dizia sobre os seres humanos aprenderem com o exemplo e como isso sempre foi útil para a humanidade tanto no sentido de sobrevivência da espécie como no sentido de evolução da mesma.Logo depois que eu escrevi aquele texto me veio na cabeça um argumento que desmonta toda a "minha" teoria sobre bondade gera bondade. Eu esqueci de mencionar naquele texto um tipo especial de tendência de personalidade. Esqueci de mencionar a tendência a ingratidão de algumas pessoas. Primeiro vamos a palavra "ingrato", essa palavra tem como significado entre outros : que não é agradecido, não é aprazível e a definição mais interessante foi "Individuo, que se esqueceu de benefícios recebidos ou que ofende quem o beneficiou.". As vezes um ato que fazemos pode ser mal interpretado, vamos ao exemplo. Eu dou carona para todos os meus amigos, não interessa onde morem. E eu não faço isso para obter algum tipo de benefício pois eu acho que se você tem condições, por uma obrigação quase divina, você DEVE ajudar os outros (isso faz parte da minha bússola moral, depois escrevo mais sobre isso). Quer dizer, que se eu ajudei alguém de alguma forma, eu não espero que essa pessoa retribua. E eu não espero isso por alguns motivos: primeiro não faço as coisas esperando algo em troca, segundo eu não faço por me sentir obrigado, não sou obrigado a fazer nada na vida, terceiro não acho que por que eu fiz algo de "bom" a pessoa fica em dívida comigo, quarto muitas ajudo pessoas que eu nem conheço direito não seria nada esperto esperar alguma dessas pessoas etc etc etc. O resumo da ópera é o seguinte, eu acredito de fato que as pessoas deveriam fazer coisas boas umas pelas outras independente de quem fosse o interlocutor. Tipo aquele papo de "fazer o bem, sem olhar a quem" ou também tipo "Amar o próximo como a ti mesmo", nesse esqueminha. Mas contudo, o mundo não é cheio de flores. Talvez o problema que eu não considerei era que para a "bondade gerar bondade" funcionasse de fato, o locutor e o interlocutor tinham que ter uma bússola moral voltada para esse tipo de ação. A minha teoria falha nesse ponto, no que cerne a capacidade do outro compreender o a sua ação. Eu sempre dava carona para um amigo meu, eu não considero que ele more longe mas enfim depois de anos sabe o que ele fala para a minha pessoa: "Eu só te dou carona porque você me deu". What? A pessoa não conseguiu entender a ideia do ensinamento. A ideia era sempre poder ajudar se você tivesse condições e não ter "créditos de carona futuro". No final das contas, a "bondade gera bondade" esbarra no mais primitivo dos sentimentos humanos, o egoísmo.E talvez essa capacidade de conseguir se ver através do outro é o que falte para a humanidade conseguir caminhar mais tranquilamente. A parte boa de escrever textos relativamente grandes, é que poucas pessoas lerão, dessa maneira estou seguro em contar os causos da vida nesse recanto virtual da escrita.

Fim.

O duplo

Bom dia galera,

Hoje comecei a ler o livro "O duplo" de Fiódor Dostoiévski. Eu comprei esse livro pois ouvi uma crítica no rádio falando muito bem dele. O tema me pareceu interessante e vou relatar o que eu lembro de ter ouvido no rádio. A obra trata sobre a loucura de uma personagem que é confrontado com ele mesmo. A personagem é ,em determinado ponto da obra, colocada em confronto com alguém que é exatamente igual a ela. E é nesse momento que começa a confusão toda. É basicamente isso que eu lembro. Eu comprei a minha versão na bienal do livro, é da Editora 34 e é uma edição muito bonita. As páginas do livro são amarelas, COMO TODAS DE TODOS OS LIVROS deveriam ser, por serem muito mais agradáveis de ler. E nessa edição ainda tem os desenho da época do lançamento do livro do artista expressionista Alfred Kubin. As ilustrações são marcadas com um pesar melancólico russo presente em quase todo o livro, o que ajuda na atmosfera criada pelo autor. No fim do texto adicionarei uma imagem desse artista. Como todo bom romance russo do século 19, ele se passa em uma atmosfera quase infernal , onde os costumes tradicionais se mesclam com a falta de recursos generalizado. A tradução até está muito vem feita. Estou me sentindo um pouco mal pois eu não entendi muitas palavras escritas, tenho que procurar no oráculo o significado, palavras como : meneios, figadal, esguelha, rapapés. Claro que o significado dessas palavras pode ser inferido pelo contexto, mas de qualquer forma não tinha algo definido na minha cabeça sobre elas. O livro também não é muito grande, o que o torna perfeito para pessoas que tem que ler em pé nos lugares públicos como trem, metrô etc. Posso dizer que até agora que estou gostando do livro e uma surpresa boa logo nas primeiras páginas... um parágrafo de três páginas com uma ideia muito bem trabalhada sobre o acordar em uma manhã de um conselheiro titular russo. Pelos parâmetros da Rah, esse escritor não é decente pois a maioria dos parágrafos são grandes. Gosto também do discurso indireto que o texto possui, diria quase reflexivo em todo o tempo da narrativa. Também ainda não percebi no livro a dualidade comentada pelo crítico de literatura que ouvi no rádio a bastante tempo atrás, deve ser porque li apenas aproximadamente 10% do livro. Até agora pela edição, apresentação, ilustrações daria nota 10, mas talvez minha opinião mude através da leitura dos próximos capítulos. Se alguém quiser fazer alguma crítica ou sugestão de tema para um próximo texto fiquem a vontade, esse espaço é para uma discussão livre e saudável de basicamente qualquer tema. Claro, que antes de eu me meter a escrever sobre algo, vou fazer uma pesquisa e ver vários pontos de vista sobre o assunto. Sempre vou tentar trazer algo novo para os leitores ( pfff, que leitores cara pálida? Tem meia dúzia (literalmente) de visitas por dia e já acha que está abalando com o blog) . A ilustração a seguir é um exemplo das que tem no livro:

Fim.

quarta-feira, 10 de julho de 2013

Abraço mortal político

Bom dia pessoal,

               Eu tinha um professor na faculdade que era MUITO mas MUUUUUUUUUUUUUUUITO ruim. Ele não dava aula. Ele mal falava português direito. E o pior de tudo... Ele deixava você de DP se não seguisse exatamente as ordens dele. O típico caso de rei na barriga. O cara tem um poder mínimo e já se acha O TODO PODEROSO. Enfim, entre muitas pérolas que ele falou, uma que ficou marcada foi o "Abraço mortal". Mas o que é o Abraço Mortal? É o nosso conhecido DeadLock ( http://pt.wikipedia.org/wiki/Deadlock). DeadLock em poucas palavras é quando você tem por exemplo 3 processos em uma máquina, o processo A,B,C. O processo A começa a rodar e ele precisa do processo B. O processo B começa a rodar e precisa de algo do C. O processo C começa a rodar e precisa do A... Entendeu o problema? É quando para acontecer algo, precisa de outra coisa que também precisa de você, ficando assim preso no Abraço Mortal. Hoje de manhã estava vendo as notícias sobre política pois a TV da sala estava ligada, quando a seguinte notícia apareceu: "Senado não aprova redução do número de suplentes"... Eu pensei, mais um caso de Abraço Mortal na política. Vocês percebem o problema da "reforma política"? O problema é esse Abraço Mortal. Para haver reforma política, os políticos precisam aprovar coisas que no fundo vão tirar benefícios deles. Mas quem NÃO está interessado em reforma... Justamente os políticos. Então, as únicas pessoas que tem o poder de mudar alguma coisa nesse país são os únicos que não querem que nada mude, pois para quem está vivendo em berço esplêndido a última coisa que querem que aconteça é algo que perturbe esse berço. E qual é a alternativa? Não sei. Talvez uma alternativa seja o povo poder votar as reformas desejadas. Por exemplo, se alguém conseguisse organizar um meio de juntar 50%+1 dos votantes para votar em alguma reforma constitucional ela seria automaticamente aprovada. O problema dessa solução é que o povo pode ser manipulado de várias formas, como vimos no caso da "cura gay" e "PEC da corrupção", só para citar os mais recentes.O que podemos fazer é esperar o melhor de quem está na política, pois por enquanto, não vejo boas saídas para o povo brasileiro.

Fim.

terça-feira, 9 de julho de 2013

Essa imagem...



Essa imagem dude, essa imagem...

Gosto por parágrafos grandes

Boa tarde pessoal.

              Eu sei que eu tenho um gosto meio incomum de leitura. Eu gosto de parágrafos grandes. Vocês vão perceber com os meus próximos textos que eu não tenho o costume de separar muito os parágrafos. Se o pensamento faz parte da mesma ideia, eu continuo no mesmo parágrafo sem problema. A rah ( the red panda) veio falar comigo que isso era péssimo para quem lê, e torna os textos muito difíceis de serem lidos. Não concordo e vou explicar o porquê. Eu não concordo com parágrafos pequenos pois eu tenho a impressão de estar lendo algo escrito em tópicos. Vários livros que eu li, me cansava a pessoa escrever de forma tão "quebrada" com tantos parágrafos que parecia que as ideias do cara estavam todas escritas em tópicos, quero dizer, pareciam que estavam não finalizadas. Parece aquele aquelas pessoas que para não esquecer,  só escrevem um trecho do texto para depois complementarem... mas nunca complementam. Essa discussão ficou acalorada e ela falou que nenhum escrito decente escreve parágrafos grandes. Foi ai que eu peguei um texto do livro "Reflexões sobre o Brasil" de Sergio Alvez de Oliveira, no qual havia muitos parágrafos grandes. Bom, ela falou que nenhum autor "decente" faria algo assim. Então peguei o texto integral de Fédon e Fedro de Platão para mostrar que ele também tinha parágrafos bastante extensos, alguns com mais de três páginas. Ela começou a retrucar falando que a tradução era porca e não era assim no original.... ok a tradução não é das melhores, mas isso já estava começando a parecer melindre da parte dela. E para finalizar eu mostrei algumas páginas da novela magistral "Guerra e Paz" de Leon Tolstói traduzida pelo lendário Rubens Figueiredo também possuía parágrafos grandes. Não acredito que esse tipo de escrita, em parágrafos pequenos ou grandes, façam algum tipo de diferença no final das contas se o livro é bom ou não. Já li livros ótimos com parágrafos pequenos e como também péssimos com parágrafos grandes, a questão aqui é outra. A questão é estilo de escrita. Talvez isso esteja relacionada com o estilo de música que você está acostumado a ouvir. Será que podemos fazer uma relação assim? Por exemplo: se a pessoa gosta de música com frases musicais longas e bem trabalhadas será que esse pessoa vai ter a tendencia de gostar de textos com parágrafos longos e bem trabalhados? Não sei. O caso é que depois que eu mostrei esse último livro para ela não quis mais discutir isso, desanimei. Acabo pensando que é tudo uma questão de gosto mesmo. Não tenho recordação de alguma redação que eu já fiz, seja para a escola,faculdade, ou só em blogs mesmo, que tenha parágrafos pequenos. 

Mas talvez para escrever pensamentos parágrafos pequenos façam mais sentido. Não sei.

Fim.

ps: como eu escrevia mal antigamente hein? Li uns textos meus antigos e PELOAMORDEDEUS.

Isso diz tudo sobre plataformas de jogos


domingo, 7 de julho de 2013

Rage online

Bom dia galera!

Eu já joguei alguns jogos online. Mas nunca vi rage tão grande como no league of legeds.

Comunidade muito chorona.

Fim.

sexta-feira, 5 de julho de 2013

Problemas com dispositivo de vídeo intel 3570k

Bom dia a todos,

Este é um post técnico.

Eu estava com problemas do windows identificar o driver do vídeo do meu processador Intel 3570k . No gerenciador de dispositivos ele só identificava o dispositivo de vídeo da placa de vídeo Radeon. Depois de baixar alguns drivers e não conseguir instalar eu fui procurar na internet. Algum tempo depois descobri o motivo, por default minha Mobo Sabertooth z77 vem com a bios configurada para não habilitar mais do que um dispositivo de vídeo mesmo que ele exista.

Resolução do problema:

1 - entrar na bios ( Para entrar na bios é só ficar apertando f2 enquanto o pc liga).
2 - entrar em advanced settings.
3 - vai nas opções ( segundo item q aparece no topo).
4 - entrar em gpu setting ( ou algo parecido, não lembro).
5 - na última opção dessa sessão está iGPU multi monitor" (ou algo assim). Coloque como enable. Salve e reset o pc.

Quando voltar é só conferir no "gerenciador de dispositivos" na parte de dispositivos de vídeo se o windows está reconhecendo agora dois dispositivos. A da cpu e da gpu.

Fim.

quarta-feira, 3 de julho de 2013

É muito ruim quando...

Boa noite galera,

Esse post é estilo classe média sofre, mas é muito ruim ter uma ideia muito legal para escrever em um lugar que você não tem como anotar (trem), e depois esquecer.

Sim, classe média sofre.

Fim.

terça-feira, 2 de julho de 2013

Reflexão (in)política

Outro dia estava almoçando tranquilamente quando uma moça na outra mesa estava efusivamente clamando:

 "O problema do país é que ninguém sabe votar, se não votassem em corruptos, não haveriam corruptos no poder."

Essa lógica é brilhante. É o tipico paralogismo ( http://pt.wikipedia.org/wiki/Paralogismo ) , você cita uma causa aparentemente plausível para todo o problema político brasileiro, e todo mundo acaba concordando. Eu fiquei pensando e discuti com algumas pessoas sobre esse assunto. Será mesmo que o povo não sabe votar? O que é "saber votar"? Como se chega nesse nível de "saber votar"? A primeira resposta que veio na minha cabeça é que o problema é cultural. Quer dizer, não temos uma cultura muito profunda de discussões políticas, ao contrário do futebol que discutimos no estilo "argumentum ad nauseam" ( http://pt.wikipedia.org/wiki/Argumentum_ad_nauseam ) , fala-se tanto mas tanto de futebol que não entendo pessoas que assistem vários programas de futebol por dia... Mas enfim, gosto é gosto. Voltando ao tópico, a motivação do "saber votar" talvez seja algo que pouco fazemos em relação a quase todos os assuntos. Eu pensei em algumas etapas que poderiam fazer parte do "saber votar". Primeiro, saber votar exige muita pesquisa. Sim, pesquisa. E não qualquer pesquisa, pesquisa do estilo TCC, do tipo que você vai pegar várias referências sérias sobre determinado assunto e aprofundar seus estudos e conclusões sobre aquilo. Uma pesquisa sobre quais são os candidatos, qual o passado de cada um, qual bandeira eles defendem, de onde veio essa bandeira, qual as aspirações políticas desse candidato ( haja vista que um candidato pode sair do cargo para almejar cargo superiores... (já vimos isso acontecer)), quais são as correntes dominantes atualmente na política brasileira, qual são as correntes dominantes em cada esfera de poder (municipal, estadual e federal), quais seriam os problemas de termos um prefeito de esquerda e um governador de direita e um presidente de centro por exemplo, quais são as correntes ideológicas que geraram essa configuração política atual, quais são os projetos dos candidatos e se eles são plausíveis etc etc etc. Percebam que é uma pesquisa absurdamente longa. Isso porque eu não me debrucei de verdade para saber quais são todas as perguntas a serem respondidas nessa primeira enquete. Pois no segundo passo, depois de todas as questões teóricas respondidas, na minha concepção de "saber votar" haveria aquele momento raro e precioso de reflexão, no qual cada um de nós pararia para fazer um balanço de toda a pesquisa feita no primeiro passo. Imagina quanto tempo isso levaria para ser feito? Quero dizer... é um baita de um trabalho. Quando se reduz todos os problemas do Brasil a somente "saber votar" caímos no erro de "Reductio ad absurdum" mal estruturado . ( http://pt.wikipedia.org/wiki/Reductio_ad_absurdum ). A discussão é muito mais profunda que isso galera. Não podemos tomar a política brasileira como se fosse arroz e feijão. Porque até no arroz e feijão existe complexidade. Uma discussão política séria demanda muita reflexão e PRINCIPALMENTE muito estudo. Se quer trazer algum assunto sobre política a baila, saiba de algumas coisas: se você tiver uma visão sem emabasamento teórico qualquer um que tenha estudado um pouco já vai começar a pensar que você não sabe do que está falando ( Por exemplo, pessoas contra a pec 37 e que não sabem as atribuições constitucionais do MP), o assunto que você trouxe a baila sobre política se a pessoa não estudou e tem a opinião da VEja/Globo/Mídia/etc vai agregar NADA ao conhecimento do grupo. O crítico é quando a pessoa só lê fontes "confiáveis" e vem querer discutir e cita essas fontes... Por favor cara, por favor. Mesma coisa de discutir games e o cara vem e cita o BAIXAKI Jogos... Porém, no meio dos meus pensamentos eu refutei essa tese de que é um problema cultural, que o nosso povo não tem uma cultura política desenvolvida por isso não "sabe votar. Eu refutei baseado em outros povos, com uma cultura não só política como social bastante desenvolvida mas que também fazem e fizeram escolhas pobres na política. Itália com Berlusconi , EUA com Bush , Inglaterra com a Thatcher etc etc.
Você está dizendo que "saber votar" também não é o problema? Então qual é? Jovem gafanhoto, esse texto é exatamente sobre esse tipo de pergunta... Não existe O PROBLEMA do Brasil, como não existe O problema dos EUA/Itália/Europa etc. A situação está uma porcaria por uma séééééérie de fatores, entendeu? Ou prefere um desenho? Uma pessoa que fez faculdade ( no sentido clássico da ideia ) não deve cair nesse erro, mesmo porque uma parte importante de toda obra prima (hoje em dia chamado de TCC), é a parte em que se levanta quais são os próximos passos que a sua pesquisa abre, e percebam toda pesquisa abre muito mais perguntas do que respostas.

Um pouco de ironia para terminar o texto:

Todo mundo que vai votar pensa : " Poxa esse cara é corrupto vou votar nele". Talvez fosse interessante todo mundo que fosse votar só pensasse um pouco.

Fim.

domingo, 30 de junho de 2013

Monarquia no Brasil

Boa noite folks,

Relembrar é viver, não é? Vamos lembrar que quando houve o plebiscito para saber qual sistema seria nosso governo, não foi somente sobre parlamentarismo contra presidencialismo. Também havia a possibilidade de escolher entre república e monarquia. Sabe o qual foi a porcentagem de votos para monarquia... 10% caras. 10 fucking porcento... O que isso nos diz sobre os 60 milhões votantes naquela ocasião?

Fim.

Ignorância seletiva

Bom dia galera,

Acredito que isso seja um fenômeno bem comum nos dias de hoje. Ignorância seletiva é quando uma pessoa pesquisa e busca entender determinados assuntos mas outros continua absolutamente ignorante. Não haveria problema SE essa mesma pessoa não quisesse opinar nos dois assuntos, o que ela sabe e o que ela não sabe. 

Vejo o caso clássico acontecendo no Facebook ( grande seleiro de experiências sociais), uma pessoa começa a postar coisas "contra a PEC 37" mesmo sem saber o que é ministério público e quais as suas atribuições constitucionais. E essa mesma posta textos que se aprofundam muito no assunto da "Cura gay" (PDC 234)

Estava pensando, o que leva essa pessoa a não se aprofundar sobre o assunto da PEC 37 mas sim se aprofundar no assunto da cura gay. Tenho a tendência de acreditar que seja por causa do orgulho. Uma das causas "fere" o orgulho, quer dizer, no caso do pastor que fez a PDC ele está sendo atacado e é como se fossem todos os crentes do Brasil atacado. Isso da uma sensação que a classe que você pertence estar sendo desmoralizada, logo a pessoa busca o máximo de informação para rebater todos os argumentos contrários evitando assim a desmoralização. Não que a pessoa não busque informação, porque ela o faz com assuntos selecionados.

O caso é que talvez ignorância seletiva não seja um bom termo. Pois temos assuntos que temos maior conhecimento e outros que temos nenhum, ou zero conhecimento. O caso é simplesmente entender até onde vai nossa ignorância e tentar NÃO opinar no em algo que não temos pesquisa em cima.

Fim.

sábado, 29 de junho de 2013

Bondade gera bondade

O caso é o seguinte, somos seres que aprendem pelo exemplo. Quantas vezes não repetimos o que outras pessoas estão fazendo? (Sou contra a PEC 37, mas não sei nem o que é MP, "ok man").

Isso daria outro post sobre, o que é pior, ser enganado pela globo ou por usuários do facebook? Talvez eu escreva sobre isso mais tarde.

O caso é que as pessoas aprendem pela experiência. Somos seres experimentais, quer dizer, a maioria de nós é guiado pelo que os outros fazem. Um exemplo claro que sempre acontecia comigo, era quando eu saía do trabalho no centro de são paulo. Lá na hora de pico tem MUITA GENTE tentando passar as catracas do metrô. E não sei se vocês já perceberam mas todas as catracas que estão disponíveis para a passagem tem uma seta verde indicando que ela está livre. E quase todos os dias 5 filas gigantes se formavam mas... sempre tinha uma catraca que ninguém passava, obviamente eu passava por ela com o sentimento de FUCK YEAH. Quero mostrar aqui que não é porque eu sou diferente dos outros que eu passava pela catraca vazia, e sim porque eu sempre tive dificuldade de aprender com os outros. E isso é uma grande burrice. A forma de viver mais tranquilamente é aprendendo com o erro dos outros, tem um ditado que diz assim : Uma pessoa inteligente aprende com os seus erros, uma pessoa sábia aprende com os erros dos outros.O problema de não aprender com os outros é que você acaba fazendo os mesmos erros de todo mundo no processo de aprendizagem em vez de você conseguir pular essas etapas. E isso explica porque a cultura é milhões de vezes mais difícil de se conseguir do que a educação. Por que educação pode ser resolvida com dinheiro, cultura não. Cultura exige uma vontade quase infinita do outro aprender, educação não. Cultura é algo que leva séculos para se formar, educação não. Essa é a diferença moçada. Mas estou desviando do tópico de novo.
Voltando ao assunto, outro exemplo de bondade gerando bondade aconteceu outro dia no meu trabalho atual, eu as vezes compro um pacote de balas para deixar na minha mesa para a galera pegar, ai um colega do meu trabalho comprou um pacote de bis também. Essas atitudes foram inesperadas e geraram comentários do tipo, "Como o pessoal está generoso hein?" . Da vontade de falar, isso não é generosidade, estamos simplesmente tentando tornar o mundo melhor.
Pense se cada fizer um pouco, essa porcaria muda muito.

Fim.


quinta-feira, 27 de junho de 2013

Títulos do blog

Boa tarde Folks,

Vou explicar agora os dois "títulos" do blog. Primeiro, o surususu é uma ave muito rara encontrada apenas nas montanhas Balbi da Papua-Nova Guiné. E dizem que essa ave traz muita sorte. Logo... é uma ótima URL para meu blog.

Cyber Oligopsônio é uma brincadeira da minha faculdade. Senta que la vem a história: A muito tempo atrás quando eu ainda fazia faculdade, eu tinha aula com uma professora que adorava termos não comuns, estilo oligopsônio. Como todo bom universitário eu e minha "turma" não entendíamos que aquilo significava, aliás entendíamos metade das coisas que aquela mulher falava. Então criamos o termo Cyber Oligopsônio para falar sobre basicamente qualquer coisa. Ex: "você viu a notícia cyber oligopsônio de ontem?"

Essas são as duas explicações que eu tinha que dar antes de morrer.

Fim.

Início

Enfim, esse blog veio com o simples motivo de eu escrever meus pensamentos na web.

Vamos ver se eu consigo continuar com esse projeto. Os outros não foram bem sucedidos.

Os temas serão : vida, universo e .... tudo mais. Logo, vou postar o que eu quiser.

Fim.