Rodrigo Fortes

"Só duas coisas são infinitas, o universo e a estupidez humana, mas não estou seguro sobre o primeiro"
Você já ouviu falar no Facebook ADS ou no Pixel Code?

Para conseguir aumentar a geração de Leads e oportunidades de negocio, muitas  empresas recorrem a mídia paga, entre elas o Facebook ADS.

No entanto é comum encontrar pessoas que não atingiram os resultados esperados o que acarreta muitas vezes na desistencia de um novo investimento.

Antes de mais nada conheça a ferramenta Power Editor, disponibilizada pelo proprio facebook, segue o link aqui.

O Power Editor é uma ferramenta de gestão de anúncios no Facebook que permite realizar diversas ações de forma mais rápida, tais como criar, editar e duplicar campanhas e realizar alterações em massa.  

O Pixel do Facebook, voce já ouviu algo a respeito? Esse pixel, nada mais é do que um pequeno trecho de código que você insere no seu site. Mas para que serve esse código?

Com ele é possivel Contabilizar o número de conversões realizadas a partir de campanhas do Facebook Ads.

• Criar uma lista de retargeting, ou seja, toda vez que uma pessoa estiver “logada” no Facebook e passar pelo seu site (isto é, muita gente), o Facebook saberá essa informação e permitirá que você exiba anúncios para todas essas pessoas dentro da rede; 

• Criar uma lista de público semelhante (Lookalike Audience). Com base na lista das pessoas que passaram pelo seu site, o Facebook irá procurar outras pessoas com perfil parecido, expandindo assim a audiência dos seus anúncios.

Para conseguir este código, basta acessar o power editor com a sua conta, ir em ações e selecionar o item “Visualizar Código Pixel”. Feito isso  você precisa de um pouco de conhecimento técnico para utiliza-lo, ele deve ficar entre as tags do código fonte do seu site, ou você pode utilizar o Google Tag Manager, mas isso é assunto para outro post.

Para verificar se o seu pixel esta corretamente instalado em seu site, você pode utilizar o plugin do Google Chrome, chamado Pixel Helper, ai basta acessar o site e plugin indicará o uso do pixel.

Essa é uma dica simples, mas que muitas pessoas desconhecem e acabam desperdiçando dinheiro em campanhas que poderiam gerar um retorno maior.
Já passou o tempo que design responsável era um tendência, hoje ele é essencial para qualquer site.

Responsive web design é o termo que está relacionado com o conceito de desenvolvimento de um website para ser alterado de acordo com o comportamento e ao ambiente do utilizador, com base no tamanho da tela, na plataforma e na orientação.  O website deve ser pensado para realizar as correções adequadas no smartphone, tela do tablet, do computador ou da TV. Esta técnica de design particular é a que chamamos de “design responsivo”.

Os celulares  revolucionaram a web, em 2013 já estimava-se que 73% dos usuários navegavam na internet através de um dispositivo móvel, o que não existe mais a possibilidade de assumir o risco de não possuir um site otimizado com uma interface limpa e objetiva. A febre dos celulares é tão grande que segundo a Unisys demora 26 horas para a pessoa média para relatar uma carteira perdida, porém demora 68 minutos para que elas relatem um telefone perdido.

Mas o design web responsivo não é apenas resoluções de tela ajustáveis ​​e imagens redimensionáveis ​​automaticamente, mas sim uma nova maneira de pensar no design. Mesmo assim ainda existem muitas falhas na criação de sites responsivos, criando para o usuário mais um aborrecimento do que uma experiência agradável.

“40% das pessoas vão escolher outro site se não possuir um design amigável.”

As pessoas sabem que têm várias opções na ponta dos dedos, então elas estão mais inclinadas a deixar um site que não pode fornecer-lhes uma experiência de usuário perfeita enquanto estiverem em seu dispositivo móvel.

Algumas dicas importantes para você não cometer erros no seu site.

Pense especificamente

Conhecer e ter informações do seu público pode ser de grande valia para criação do seu site, permitindo que você seja altamente específico quando se trate de ajustar as necessidades de seu público e criar uma experiência quase perfeita para usuários móveis. Existem várias maneiras de segmentar os usuários, mas quando estamos direcionados a um tipo específico de público, não podemos realmente falar em termos gerais, porque cada nicho tem suas próprias necessidades e exigências especiais.

Sites de e-commerce, por exemplo, são provavelmente aqueles que merecem mais atenção e esforço porque eles afetam diretamente a receita e o sucesso da loja. Sem dúvida, o e-commerce móvel é uma oportunidade que nenhuma loja ou varejista gostaria de perder, considerando que os usuários gastaram até US$ 14 bilhões em 2013.

“57% dos usuário de smartphones dizem que não recomendam negócios com um site com um design ruim para móbile”

Intuitividade e Facilidade de Uso

Ao usar dispositivos móveis, os usuários não estão dispostos a mostrar muita paciência em relação a experiências confusas que geralmente são geradas por projetos confusos ou apenas não intuitivos. Os celulares atuais são muito poderosos, porém podem estar com 10 jogos rodando em segundo plano, com algum bate-papo de mensagens instantâneas e uma conexão de internet não tão lenta, por isso a intuitividade é importante.

Mas cuidado! Intuitivo não quer dizer vazio, feio ou confuso, isso significa apenas que qualquer tipo de design, seja um simplista ou mais avançado, tem que ser fácil de usar dentro do que ele se compromete a fazer, deve ir direto ao ponto, porque qualquer ação inútil pode frustrar o usuário.

“Segundo o Google 61% dos usuários não retornam a um site mobile que tiveram problemas para acessar.”

Analisar e aplicar dados

Quando os serviços de testes A / B foram introduzidos nas massas, todos os proprietários do site tiveram a oportunidade de abrir uma porta para melhorias, podendo compreender o comportamento dos usuários sem ter uma interação direta.

Qualquer dado que você possuir torna mais fácil criar uma experiência suave, isso, porque você não está apontando para um público geral desconhecido, o que lhe dá a capacidade de colocar ênfase em especificidades, tornando ainda mais fácil para atender todas as necessidades de seu usuário final.

A Apptimize oferece análises poderosas, é uma ótima solução para um teste móveis A / B, ela permite realizar testes em plataformas iOS e Android.

Padrões responsivos

Atente-se aos padrões, formulários, imagens, vídeos e arquivos de mídia semelhantes devem ser atendidos de uma maneira específica, devido ao modo como os dispositivos móveis reagem a esses arquivos ou formulários em um layout responsivo. Existem vários recursos que permitem que você tome cuidado com isso sem causar muita dor de cabeça.

Como criar seu site responsivo?

Através de um profissional que saiba programar ou empresa que possa desenvolver um design responsivo personalizado. Você também pode encontrar temas responsivos que já vem pronto para utilizar no seu site.

Referencias
https://www.smashingmagazine.com/2011/01/guidelines-for-responsive-web-design/
https://blog.hubspot.com/blog/tabid/6307/bid/24082/9-Amazing-Mobile-Marketing-Statistics-Every-Marketer-Should-Know.aspx#sm.0001txl69q1e54ebxx0nj4mouzve7
http://www.iacquire.com/blog/mobile-behavior-big-game-seating-a-study-with-surveymonkey
https://designmodo.com/responsive-design-patterns/
Eu particularmente me considero uma pessoa muito observadora. Também já comentei no post anterior que sou fã da série The Walking Dead, mas não simplesmente pela matança de zumbis e todo o suspense da série. Principalmente pelo comportamento dos humanos envolvidos.

Vamos raciocinar um pouco. O mundo entra em colapso e praticamente toda a população é contaminada por um vírus transformando-os em zumbis. Resumida a história da série em uma linha, convenhamos, ao invés dos humanos sobreviventes se unirem em um único propósito, combater esse mal e reconstruir a civilização, não, eles se digladiam entre si, como se já não bastasse matar milhares de zumbis, ainda tem que se preocupar em matar outros da mesma espécie. Ironicamente a maior ameaça da trama são os humanos e não os zumbis.

Neste contexto, o grupo passa toda temporada em lugares diferentes tentando se estabelecer, até aparecer outro grupo de pessoas e destruir a pequena comunidade, as baixas do grupo principal da trama não se deve a zumbis, mas sim por outros seres da mesma espécie, humanos.

Essa é a parte real da série, o comportamento humano, o significado da frase, “olhar somente para o próprio umbigo”, assim é hoje, vivemos em grupos (países), cada um tentando tirar proveito para si, uns tentando destruir outros, já outros tentando sufocar o crescimento de alguns. Se pararmos e olharmos bem, não existe tanta diferença assim da série, muda apenas o cenário.

Não precisa ser nenhum Einstein para observar que não evoluímos em nada, continuamos lutando por poder, cada um tentando salvar o seu como pode, passando por cima de tudo e todos, sem pensar nas consequências. A regra é, “quem pode, pode, quem não pode, se sacode”.

Se algum dia tivermos um ataque zumbi, uma invasão alienígena ou mais realista, uma grande guerra. Comece a se preocupar em proteger-se dos seres humanos, porque o resto são meros coadjuvantes na cena.
Os mecanismos de fiscalização hoje, mesmo que falhos, são muito mais eficazes que antigamente. Esse é um dos grandes motivos de estar aparecendo toda essa podridão política. Pensando por este lado podemos supor que a repressão é uma forma eficaz de controlar a corrupção e assim diminuí-la.

Eu prefiro pensar em outra solução para o fato, eliminar a corrupção em uma sociedade sem controle, sem repressão. Oi? Como assim? Tente pensar comigo, basta que a sociedade tenha uma consciência moral desenvolvida o suficiente para não tirar vantagem de um bem coletivo comum.

Investir em uma educação moral seria primordial para que tal fato fosse possível, o problema é que ninguém estuda ética, infinitos cursos possuem disciplina de ética, e por incrível que pareça é a que menos desperta atenção pelos alunos e até por alguns professores, não existe a consciência de que é preciso o domínio de certos princípios da formação do pensamento.

Vivemos em uma sociedade que não consegue se posicionar em nenhuma competição relacionada ao conhecimento. Vejam só, eu fiz boa parte de Licenciatura de Matemática, este curso da origem a famosa Olimpíada da Matemática, onde nunca conseguimos ficar bem colocados mundialmente, sempre beirando as últimas posições, isso serve para qualquer competição que envolva conhecimento, sempre somos os últimos.

O que esperar de uma sociedade como esta? Porque esperamos estar bem formados na questão moral, que é muito mais intelectiva e filosófica, se nosso ensino é desprezível, tanto público como privado, se o pouco que se aprende de filosofia é pobre, se somos ensinados a não pensar. Porque deveríamos esperar grandes reflexões na hora de assumir um cargo público? O Brasil se encontra no ranking ético na mesma posição que se encontra em qualquer outra disciplina, beirando as últimas colocações, isso se torna óbvio com o mínimo de reflexão.

Ética é o pensamento sobre a vida, e quando se fala em pensamento complica, e complica muito, "dá aquela travada", muito culpa da nossa educação desprezível, que não nos ensina a pensar.
Eu particularmente sou fã dos produtores de Hollywood. Os caras são verdadeiros profetas. Ou eles preveem o futuro ou os cientistas tentam sempre imitá-los.

Filmes super antigos que mostravam tecnologias inimagináveis por simples mortais, hoje estão por aí nas ruas. Muitos fãs de quadrinhos ficam maravilhados com os efeitos especiais e poderes dos personagens da Marvel, como o Homem de Ferro e o Wolverine. Nesse momento imaginamos, e se eu tivesse esses poderes? Porém ficamos apenas no mundo da imaginação. Até que um dia, vem o exército dos EUA e anuncia um chip capaz de acelerar as moléculas do corpo humano aumentando a velocidade de recuperação de ferimentos, só falta injetar adamantium nos soldados. Na mesma linha, o mesmo exército vem trabalhando em armaduras capazes de multiplicar as forças humanas, transformando os soldados em super combatentes de guerra, isto lhe soa familiar?

Saindo um pouco dos super-heróis e indo para o lado zumbi da "coisa", uma das sérias de maior sucesso com certeza é The Walking Dead, que conta a história de um grupo de pessoas sobreviventes a um ataque zumbi. Histórias de zumbi andam muito em alta, teorias de sobrevivência a um ataque zumbi, inúmeras séries, filmes e por aí vai. Então, a Rússia resolve anunciar que desenvolveu uma arma para dispersar multidões capaz de transformar pessoas em zumbis, de repente não aqueles das telas que comem pessoas, mas deixar tão “lesado” quanto. Com certeza alguém em algum lugar está tentando produzir algo para transformar pessoas em zumbis.

O que dizer dos filmes de alienígenas, famosos, sempre com a mesma história, extraterrestres que invadem a terra para sugarem os recursos naturais e irem embora, isto me parece mais obra dos humanos. Esta é a mensagem por trás dos panos, na verdade os alienígenas somos nós, que só não atacamos outros planetas destruindo-os porque não temos tecnologia suficiente para tal. Mas somos como células cancerígenas, gosto muito desse sinônimo, nos multiplicamos, colonizando pequenas áreas destruindo-as, expandimos cada vez mais, até que não sobre nada daquela região ou planeta, e nesse momento tentamos migrar para outro lugar (órgão) e realizar o mesmo feito, em espaço de tempo bem maior que o câncer, mas com o mesmo mecanismo de reprodução e destruição.

A notícia mais recente é do "Tay", inteligência artificial criada pela Microsoft para responder usuários no Twitter. Parece tola, mas o bot se rebela e começar a mandar twitts ofensivos, racistas, xenófobos e até genocidas. A empresa desligou o seu bot, mas, de alguma forma, ele “escapou”, como se agisse por conta própria ele conseguiu se replicar em alguns dispositivos de pessoas que clicaram em links enviados na rede social. Com esses aparelhos infectados, a inteligência artificial conseguiu descobrir uma série de falhas de segurança em mensageiros populares. Isso lembra algo? Parece que a Microsoft criou uma pequena rede Skynet.

O fato que a ficção cientifica nos filmes geralmente vão ditando as regras da "evolução", e assim vamos caminhando pouco a pouco para nossa total extinção.
Aplicações pequenas podem não precisar de um pool de conexões, porém aplicações maiores, o pool pode se fazer necessário, pois a cada conexão com o banco é aberto uma conexão no início da transação e fechada ao final, isto pode tornar sua aplicação inutilizável dependendo do número de requisições.

“Mas o que faz o pool? Basicamente, mantém um certo número de conexões abertas com o banco de dados. Quando o cliente Java abre uma conexão usando o pool, ao invés de abrir uma nova conexão com o banco usando o driver JDBC, este simplesmente pega uma das conexões já aberta com o banco e a marca como alocada para aquele cliente Java.

O cliente Java então usa a conexão normalmente e faz as operações desejadas no banco. Quando o cliente fecha a conexão usando o pool, este não fecha a conexão com o banco. Ao invés disso, mantém a mesma aberta, mas a marca como disponível.

Quando o número de conexões que os clientes abrem usando o pool passa do número de conexões que o connection pool mantém abertas, o pool abre uma nova conexão com o banco de dados, a não ser que tenha atingido um número máximo de conexões reais, caso no qual seria lançada uma exceção.” (http://www.devmedia.com.br/connection-pool/5869)

Neste contexto eu tive uma certa dificuldade em configurar um pool de conexões com JPA. O cenário era um sistema REST que já estava em produção utilizando Hibernate puro e realizava o pool com C3P0 (já falaremos dele). Ao colocar as dependências e configurações do JPA o pool para de funcionar.
Como foi difícil achar a solução, vou compartilhar com vocês duas configurações de pool, uma direto no servidor Tomcat e outra através do C3P0.

Pool de Conexão no Tomcat.

Primeiramente realizamos a configuração no Tomcat através dos arquivos server.xml e contexto.xml.

Pool de conexão configurado no arquivo server.xml do Tomcat na tag através de um datasource.

 <Resource name="jdbc/TesteDB"   
        auth="Container"   
        type="javax.sql.DataSource"   
        validationInterval="30000"   
        timeBetweenEvictionRunsMillis="30000"   
        maxActive="100"   
        minIdle="10"   
        maxWait="10000"   
        initialSize="10"   
        minEvictableIdleTimeMillis="30000"   
        jmxEnabled="true"   
        jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;  
         org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer;  
         org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"   
        username="dev"   
        password="dev@1"   
        driverClassName="org.postgresql.Driver"   
        url="jdbc:postgresql://192.168.0.165:5432/teste_v_3_1_0"/>  

No arquivo context.xml do Tomcat, referenciar o datasource criado.

 <ResourceLink name="jdbc/TesteDB"   
        global="jdbc/TesteDB"   
        auth="Container"   
        type="javax.sql.DataSource" />  

Agora vamos para aplicação e no arquivo web.xml, referenciamos o datasource através do código abaixo.

 <resource-ref>  
   <description>DB Connection</description>  
   <res-ref-name>jdbc/TesteDB</res-ref-name>  
   <res-type>javax.sql.DataSource</res-type>  
   <res-auth>Container</res-auth>  
 </resource-ref>  

Como a aplicação está utilizando JPA, no arquivo persistence.xml fazemos referência ao datasource com a linha de código abaixo:

 <non-jta-data-source>java:/comp/env/jdbc/TesteDB</non-jta-data-source>  

Obs: deve ficar logo abaixo da tag.

Ainda no persistence, inclua apenas a propriedade de dialeto.

 <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />  

Agora a parte mais importante, e a causa de todo o trabalho para configuração, utilizar a versão 5.0.4 ou superior do hibernate-entitymanger, pois as versões inferiores possui um bug na utilização de datasource no JPA, o que causou uma certa dor de cabeça. Abaixo as dependência no arquivo pom do Maven.

 <dependency>  
             <groupId>org.hibernate</groupId>  
             <artifactId>hibernate-entitymanager</artifactId>  
             <version>5.0.4.Final</version>  
         </dependency>  
          <dependency>  
             <groupId>javax.validation</groupId>  
             <artifactId>validation-api</artifactId>  
             <version>1.0.0.GA</version>  
         </dependency>  
         <dependency>  
             <groupId>org.hibernate</groupId>  
             <artifactId>hibernate-validator</artifactId>  
             <version>5.2.2.Final</version>  
         </dependency>  
         <dependency>  
             <groupId>org.hibernate.javax.persistence</groupId>  
             <artifactId>hibernate-jpa-2.1-api</artifactId>  
             <version>1.0.0.Final</version>  
         </dependency>  

Pool de Conexão com C3P0

c3p0 é uma biblioteca fácil de usar para drivers JDBC tradicionais "enterprise-ready", meçhorando sua funcionalidade definida pela especificação JDBC3 e as extensões opcionais para JDBC2. A partir da versão 0.9.5, c3p0 apoia plenamente a especificação JDBC4.
Em particular, c3p0 fornece vários serviços úteis:
  • Uma classe para adaptar os drivers JDBC tradicionais baseados em DriverManager para o mais recente regime  de aquisição de conexões de banco de dados através do javax.sql.DataSource.
  • Pooling transparente de Conexão e PreparedStatements.
A biblioteca se esforça para acertar os detalhes:
  • DataSources c3p0 são ambos Referenciável e Serializable, e são, portanto, adequados para a ligação de uma ampla variedade de serviços de nomenclatura baseado em JNDI.
  • Declaração e ResultSets são cuidadosamente limpos quando Conexões e Demonstrações são alocadas, para evitar a exaustão em recursos quando os clientes usam a estratégia de gestão de recursos Lazy, mas comum do que apenas limpar suas conexões. 
  • A biblioteca adota a abordagem definida pela especificação JDBC 2 e 3. DataSources são escritos no estilo JavaBean, oferecendo todo o necessário e a maioria das propriedades opcionais. Todas as interfaces internas JDBC-definidos são implementadas (ConnectionPoolDataSource, PooledConnection, ConnectionEvent-generating Connections, etc.) Você pode misturar as classes c3p0 com implementações de terceiros (embora nem todos os recursos c3p0 irá trabalhar com implementações externas de ConnectionPoolDataSource).
c3p0 espera fornecer implementações de DataSource mais do que adequado para uso por aplicativos corporativos J2EE de alto volume.

Para configurar o pool com C3P0 precisamos adicionar suas dependências no pom.xml.

 <dependency>  
             <groupId>com.mchange</groupId>  
             <artifactId>mchange-commons-java</artifactId>  
             <version>0.2.10</version>  
         </dependency>  
         <dependency>  
             <groupId>c3p0</groupId>  
             <artifactId>c3p0</artifactId>  
             <version>0.9.1.2</version>  
         </dependency>  

Atualizado a dependência, basta adicionar as propriedades do C3P0 no arquivo persistence.xml.

 <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />  
             <property name="hibernate.connection.url" value="jdbc:postgresql://192.168.0.165:5432/teste_v_3_1_0" />  
             <property name="hibernate.connection.username" value="senha" />  
             <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />  
             <property name="hibernate.connection.password" value="password" />  
       <property name="hibernate.connection.provider"  
              value="org.hibernate.connection.C3P0ConnectionProvider" />  
          <property name="hibernate.c3p0.min_size" value="5" />  
           <property name="hibernate.c3p0.max_size" value="100" />  
           <property name="hibernate.c3p0.timeout" value="300" />  
           <property name="hibernate.c3p0.max_statements" value="50" />  
           <property name="hibernate.c3p0.idle_test_period" value="3000" />  
           <property name="hibernate.c3p0.min_size" value="5" />  
           <property name="hibernate.c3p0.max_size" value="100" />  
           <property name="hibernate.c3p0.timeout" value="300" />  
           <property name="hibernate.c3p0.max_statements" value="50" />  
           <property name="hibernate.c3p0.idle_test_period" value="3000" />  

Agora é só tirar o máximo de proveito do pool de conexão e ser feliz.
O projeto completo está disponível no GitHub.

Referências

http://www.mchange.com/projects/c3p0/
http://www.devmedia.com.br/connection-pool/5869
Ver perfis com as cores da bandeira da França e monumentos Brasileiros em vermelho, azul e branco, me deixa realmente triste. Triste pela cabeça fraca de uma civilização que não enxerga dois dedos a frente do próprio nariz. Mesmo com avanço da internet, onde possuímos o poder de ir até a notícia e não o oposto como faz a mídia, onde impõe uma serie de conteúdo sem opção de escolha, não temos nem a possibilidade de pular as partes ruins, se é que existe alguma boa, ainda assim nos deixamos influenciar.

Me deixa indignado olhar líderes mundiais com aquela cara de drama em um teatro, prestando solidariedade para a França e no mês seguinte mandam soldados para campos de guerra, causando muito mais violência e morte do que os atentados franceses.

Pray for Paris. Mas não olhamos para dentro de casa com mais de 600 desabrigados e um monstruoso impacto ambiental. Aqui do lado, no nosso povo, notícia tão sucinta quanto uma vitória da Argentina. Episódio que ainda vem acontecendo, mas vamos orar por Paris, pois lá já aconteceu, já passou, mas continuaremos orando, nós e a mídia sensacionalista (essa só ora pela audiência).

Mas não é preciso se preocupar, em breve Hollywood lançará um grande Filme, de repente intitulado "Pray for Paris", mostrando o drama de cidadãos em meio ao atentado, todos já vão ter esquecido do episódio e lotarão as salas de cinema. Enquanto houver plateia, terroristas sobreviverão.

Assim, a vida segue, meio a inúmeras desigualdades e cada vez mais violenta.


“Deixo registrado que não sou contra a sensibilização com Paris, mas sou contra o descaso e falta de importância dada a diversos outros acontecimentos que ainda podem ser resolvidos. Inclusive o atentado poderia ser evitado.”
O próprio nome diz, sonho, algo que queremos, que desejamos, mas por algum motivo não o fazemos, seja por medo, receio ou crença, mas não realizamos enquanto acordados, muitas vezes por receio do que a sociedade pensará, mas no nosso inconsciente ele permanece e no momento mais íntimo do nosso pensamento ele vem a tona, e tenta ser realizado de alguma forma, pois ali não existe preconceito nem punição, em nossos sonhos podemos tudo, ir além ou ir onde jamais alguém tenha ido, onde jamais imaginemos ter ido, e depois acordamos e voltamos a nossa vida com punições, preconceitos e crenças, vida curta, rápida como um raio, porém a deixamos de viver plenamente por culpa de uma sociedade reprimida e fraca, muitas vezes atrasada, com um pensamento consciente atrofiado, mas é no subconsciente que podemos colocar todo o inimaginável para fora, pois ali ninguém interfere ou julga.

Ps.: Acho que acordei inspirado