domingo, 4 de novembro de 2018

!R(n...)


Hola, hoy hablaremos acerca de funciones recursivas en R, como exemplo utilizaremos la función factorial, es sabido que la misma funciona ya existe en la biblioteca de la lenguaje R, pero el intuito es estudiar el funcionamento del la función recursiva.

La función nativa


Simples, no? este es el primer post en español de la página, teneremos mucho mas muy pronto.

😁✌

domingo, 5 de agosto de 2018

Login on Facebook w/ Jsoup

Hello folks

Today I'll show you how to login in Facebook using the Java library Jsoup.
Jsoup is entirely self-contained and has no dependencies.
Jsoup runs on Java 7 and up, Scala, Kotlin, Android, OSGi, Lambda, and Google App Engine.


Summary:

  1. Creating a blank Java Maven Project
  2. Importing the Jsoup dependency in the pom.xml
  3. Understanding and using the code
  4. Testing

Creating a Java Maven Project


Well, consider using maven in your project, if you don't know about it


Importing the Jsoup dependency in the pom.xml

Jsoup is entirely self-contained and has no dependencies.Jsoup runs on Java 7 and up, Scala, Kotlin, Android, OSGi, Lambda, and Google App Engine. 

You must import the jsoup lib in the your application pom.xml.
Find the last version of Jsoup in the maven repo:


On the date of this posting, the latest version is 1.11.3


Understanding and using the code

I splitted the code in theses classes:

  • FacebookConnect
  • Notification
  • Profile
Unfortunately this blog does not allow anymore code posting, consider get the code in my github
profile, sorry for this inconvenience, if you'll have any question, don't hesitate to ask in comments bellow.

Check out in github, the code was commented and some points are explained:



Your reaction after the code working.

domingo, 15 de julho de 2018

The security context cannot be set in the request as it is already in the response processing phase.


Hello guys,
today i'll show how to resolve the "security context cannot be set in the request as it is already in the response processing phase." problem in a Jersey implementation, the stack trace  is intuitive, but you have no choices to resolve that if you don't read the documentation, I spent a lot time on the stackoverflow searching about, unfortunately not in the Jersey documentation,  then i resolved!

Take a look:


/**
 * @author Jhonatan S. Souza
 */
@Provider
@PreMatching
public class RequestFilter implements javax.ws.rs.container.ContainerResponseFilter, javax.ws.rs.container.ContainerRequestFilter {

The problem is that you r using the response implementation javax.ws.rs.container.ContainerResponseFilter instead the javax.ws.rs.container.ContainerRequestFilter do the change and the request will gonna work.

Indeed, very simple, but gave me a headache. Enjoy!!!
See ya!

segunda-feira, 9 de julho de 2018

Angular 5 - Implement Role-based security


Hi everyone, today I'll show how to create a role-based security in Angular 5 easily, just 
following some steps.
I was searching something to do this kind of job, but unfortunately found only old jobs and broken libs, then I found it in a Microsoft developers page, look this article: Angular How-to: Implement Role-based security.
Sounds good? sure! but, if you get deep in this solution you can see that we have a security lack, in this case I even made a solution that resolves the lack, but I'wont rediscover the wheel and remake the solution showed by Microsoft, in this case we need to do these simple steps: 

1.Implement the solution 

Get the link: Angular How-to: Implement Role-based security and follow the instructions

If you have any questions don't hesitate to get in touch in the comments area.


2.Houston we've a problem!

 I'll give a chance to you discover the lack:


@Directive({
selector: '[myHideIfUnauthorized]'
})
export class MyHideIfUnauthorizedDirective implements OnInit {
@Input('myHideIfUnauthorized') permission: AuthGroup; // Required 
permission passed in
constructor(private el: ElementRef,
private authorizationService: AuthorizationService) {
}

ngOnInit() {
if (!this.authorizationService.hasPermission(this.permission)) {
this.el.nativeElement.style.display = 'none';
}
}
}

Did you found it?
Not? really?
Not yet?
Put in the comments if you have found, by the way, look:

When we using this kind of solution:

   this.el.nativeElement.style.display = "none";

Users can use the browser developer tools and get some sensitive info, cause the elements still there,
them is only hidden, but if you key f11 + ctrl + f you'll found the data.


Some kind of users that can found your "secure"data.

3.SLAY!

To resolve this we just can change the behaviour of the nativeElementI did discover these reading the documentation : Angular native element documentation


3.SOLUTION!

/*
There's the solution, remove the element from the screen.
*/
this.e.nativeElement.outerHTML = "";


/*
Note: If you want only hidden the data (using only not sensitive data)
*/
this.e.nativeElement.hidden = true;


That's all folks!!!


segunda-feira, 26 de março de 2018

[iOS - Swift 4] Gerando QRCodes

Fala galera, hoje apresento para vocês um projeto criado para a plataforma iOS, utilizando Swift 4 e a API  Google Charts API para gerar QRCodes simples, o projeto está no GitHub e está em fase inicial porém funcional, então enjoy :).



clique na imagem para acessar o projeto:





quarta-feira, 14 de março de 2018

[Java] Consultando a operadora de um telefone

Descobrindo a operadora de um número usando JAVA


Alô, esse número é TIM?
Descobrir qual a operadora de um telefone nunca fui tarefa fácil, devido não existir um padrão numérico que possamos identificar com algum tipo de cálculo ou coisa do gênero,  e considerando a portabilidade, não sabemos se o telefone de fulano é da operadora A ou da operadora B, devido isso houve uma grande procura de empresas por serviços de consulta  de números, serviços esses que são pagos e não custam barato, dependendo do tipo do plano, ultrapassa a casa das dezenas de milhares de reais,   imagina você com uma empresa que precisa fazer 1000 ligações para clientes por dia? É fato que podemos mensurar uma grande economia se você souber a operadora de cada cliente no qual você irá ligar.

Algumas empresas disponibilizam esse serviço gratuitamente para testes, como é o caso da telein
que é a empresa em que vamos utilizar no nosso exemplo, com ela é possível efetuar algumas consultas gratuitas dentro de um período de tempo de 10 segundos entre cada consulta.

WebCrawler

Comumente, chamamos esse mecanismo de captura de “WebCrawler”, já que eles funcionam como Vermes – entram em um site e vão capturando o conteúdo, além de entrarem em cada link do site e também capturarem seu conteúdo, e assim por diante, no nosso caso vamos entrar no site e efetuar uma consulta utilizando uma biblioteca Java chamada Jsoup
ele vai nos auxiliar para efetuarmos as requisições e ao receber irá nos auxiliar no parser do HTML.

Simples, não?
Primeiro passo, ver como o site funciona:
vamos acessar o site: http://consultaoperadora.com.br/site2015/




De cara podemos observar um formulário com um input de texto e um botão para efetuar o submit do mesmo, vamos fazer uma consulta de teste e coletar os dados da requisição utilizando a ferramenta Devtools do Chrome para nos auxiliar.




Podemos observar que na nossa requisição feita através de um POST do formulário
enviamos dois parâmetros: tipo e numero, e também foram enviados 2 cookies, nossa tarefa
é replicar essa requisição no Java, neste momento entra em cena nossa lib Jsoup que irá nos auxiliar nessa tarefa de receber e manipular os dados.

JSOUP

(Não vou exemplificar como criar um projeto, então devemos levar em consideração que você já criou o seu projeto Java)

Precisamos da dependência do JSOUP em nosso projeto, então vamos pegar a última versão diretamente do site https://jsoup.org/download, preferencialmente utilizar a dependência do Maven
após adicionada a dependência do projeto vamos criar nossa classe de serviço


domingo, 18 de fevereiro de 2018

De Repente, Califórnia




Tudo começou no final de 2016, quando eu me preparava para adentrar o último ano da faculdade, eu já estava pensando no que fazer quando o meu curso terminasse, pois hoje em dia só a graduação já não serve mais para tanta coisa, principalmente na minha área, onde nunca paramos de estudar.

Minha faculdade (me abriu muitas portas)



Eu pesquisei muito e decidi que uma especialização era uma boa, então escolhi fazer um curso em Stanford, porém tinha um grande problema, o meu inglês não era dos melhores.
Decidi melhorá-lo antes de embarcar na minha sonhada extensão internacional, então fui até uma agência de intercâmbio,  descobri que seria um investimento muito alto, pois o  dólar estava  quase R$ 4, depois de muita conversa acabei fechando, pois o investimento valia a pena.
E assim, escolhi fazer meu intercâmbio no Vale do Silício, por que será, né? ahahaha
Fechado o contrato, ainda tinha diversas coisas para acertar, pois eu nunca havia nem andando de avião, nem saído do país, então precisava tirar o passaporte e o tão cobiçado visto.

Stanford


Depois de muita correria consegui o visto e já comprei as passagens, sobrava ansiedade.
Ansiedade que só aumentou quando chegou a minha carta de aceitação por parte do college, e minha carta de acomodação (sim, eu fiquei em uma casa de familia Americana), um plus para acelerar ainda mais a minha vivência com a língua estrangeira, muito melhor do que ficar em uma residência estudantil ou em um hotel, porque conviver com as regras e a cultura da família nativa, intensificou a minha aprendizagem.

O grande dia

Chegou a hora de partir, tudo certo, eu embarcava em um voo com conexão no Panamá  pela Copa Airlines (Ótima companhia) e uma das mais baratas também, pois o preço das passagens para a alta temporada custavam o mesmo que um carro usado.
No voo fiz um amigo, que por coincidência também ia estudar, porém em Los Angeles,isso  tornou o voo um pouco menos maçante.


Passaporte, eu escolho você! - Ash


Welcome to the United States Of America

Depois de mais de 10 horas de viagem, já em solo Americano tive que passar pela tão temida
customs and borders, trocando por míudos: a imigração. E não foi tão simples quanto o planejado estávamos no início da "era Trump", ou seja, repressão contra os imigrantes, principalmente os latinos como “yo” porém, o mais curioso é que, pela primeira vez eu ia falar inglês com um Americano.
E já comecei do modo hard meus caros, ele me fez muitas perguntas, mas muitas perguntas mesmo!
Como por exemplo: "Pra onde vai?, Vai estudar onde?, Posso ver o recibo?, Posso ver sua matrícula?, Quantas horas vai estudar?, Já esteve quantas vezes aqui?, Está nervoso?".
No final deu tudo certo, e cara, como é bom ouvir "Welcome to the United States Of America"!

A entrada do SFO é mais ou menos assim (se não for essa hahaha)

If You are Going To San Francisco Daly City
Saindo do aeroporto precisava ir para a minha homestay, que ficava em uma cidade chamada Daly City, uma das cidades que compõem a baía de San Francisco (Bay Area para os mais íntimos),uma cidade composta de imigrantes, grande parte deles da Ásia, mais precisamente das Filipinas ( por sinal a família que me recebeu era de origem filipina).
Como marinheiro de primeira viagem, eu não sabia que o Bart (metrô) saía direto do Aeroporto, então acabei pegando um taxi, e em menos de 10 minutos eu já estava na porta da minha homestay.

Daly City



Já na minha homestay conheci minha familia, no início éramos eu e mais 2 estudantes,mas chegamos a ser 6 .Os outros foram chegando com o decorrer do tempo,nos comportávamos como irmãos. Durante minha estadia alguns foram partindo, e isso foi realmente triste porém, foi uma experiência ímpar, era realmente como uma família, tomávamos café e jantávamos juntos, íamos a praia, passeios, eventos como 4 de julho, lutas de boxe, e ainda tínhamos uma espécie de Karaokê em casa.


Meu café da manhã Americano (ainda tímido, primeiro dia, sabe como é, né? ahaha)

Jornal matinal da Bay Area.

Minha familia (com meu hostpai)


           
Minha família(com a minha hostmãe)



Stafford House International San Francisco

Então chegou o meu primeiro dia de aula, primeira vez que peguei o Bart (metrô) sozinho, já estava pronto para encarar SF. O primeiro dia foi marcado por uma entrevista, onde era definido o seu nível e a sua sala.
Conheci muitas pessoas novas, a maioria brasileiros, alguns fazendo outros cursos como, business e marketing.

Minha sala, pessoas de todas as idades, pessoas de todos os países.

O college tinha uma estrutura digna de primeiro mundo, tudo muito organizado e no horário marcado, o ensino era realmente muito bom. Senti uma evolução tremenda já nos primeiros dias.Tínhamos muitas atividades fora da escola, como visita a museus, pontos turísticos, encontros de intercambistas,grupos de estudos, almoços e jogos de Beisebol (We'r SF ♥).

Porém tínhamos que estudar muito, todos os dias havia trabalho para casa, e os trabalhos eram corrigidos todas as manhãs, confesso que muitas vezes fiz meus trabalhos no metrô, já que passei a tarde e a noite jogando video game com meus amigos ou fazendo algo pela cidade.
Precisávamos de uma nota para conseguirmos nos formar, e não era tão simples assim, já que tudo contava, desde a sua participação em sala, até o seu sotaque poderia contar na sua nota.
A escola tinha uma regra muito clara e objetiva que não poderia por nada ser quebrada: Não falar outro idioma que não fosse o inglês. 

Entrada do college, fica em frente a um dos cartões postais da Cidade, o  Transamerica building



California Academy Of Sciences



@Twitter


Respiramos Tecnologia e ar puro também
Conheci lugares magníficos e pessoas que me faltam adjetivos. San Francisco é uma cidade linda, com muitos lugares para serem explorados, muitos pontos turísticos e muita preservação da natureza.
Tive a oportunidade de posteriormente conhecer outros lugares como: Oakland, Colma, South San Francisco, Daly City (onde eu morava), San Diego, Los Angeles e Las Vegas.

Infelizmente por motivos operacionais não fiz a visita nas empresas no vale, porém conheci o Twitter acho que já é um começo. Ahahaha!

Cidade vista da Lombard Street


Golden Gate Bridge

Em bares e cafés que eu ia sempre tinha alguém programando, sempre tinham grupos que eu julgava serem Startups nascendo,  locais que passaram figuras ilustres como Steve Jobs e Elon Musk, era uma sensação tão incrível: a de estar no mesmo lugar onde várias empresas começaram, onde muitas irão começar e quem sabe um dia eu não possa ter minha própria empresa? 
Para quem é movido por tecnologia San Francisco com certeza é o combustível.


Um projeto campeão

Foi em San Francisco que nasceu um dos projetos que mais tarde me traria diversos frutos.
Foi lá que começou o projeto que mais tarde eu entregaria para a Natura, o resto da história vocês já sabem.

Meu escritório

Stanford, ai vou eu!


Com muito esforço, noites sem dormir, consegui meu diploma! ahahaha
Melhorei muito meu inglês, finalmente me livrei das legendas, recentemente assisti Stranger Things 2 em inglês e foi uma sensação maravilhosa, poder compreender, poder falar e ser compreendido.
Enfim, agora eu estou preparado para encarar um curso em Stanford, estou começando a mexer os pauzinhos para ingressar  assim que terminar o meu MBA.

Meu amigo Gabriel, viciado em 7Eleven e Carls JR


Considerações Finais
Fazer o intercâmbio foi uma das melhores coisas que já fiz na vida, uma experiência que vou levar pelo resto da vida, junto com os amigos que fiz.
Além de ter uma grande valorização por parte do mercado de trabalho, pois tenho recebido várias propostas de emprego após ter colocado em meu Linkedin essa experiência, porém estou muito satisfeito com meu atual emprego.
Nunca desista dos seus sonhos, por mais difícil que pareça, continue a remar!

Aquela ideia com o meu amigo Zuckemberg


Titio Bill


Os Steve's






quarta-feira, 14 de fevereiro de 2018

[EN] jQueryUI Dialog without a container

I've a serious problem with dialogs in jQuery, because always we need to build a container div to put our content inside.
Perhaps we have another method to do that?
Thinking...BINGO! 😜
We have! it's simple, so instead this :





We will be using a new way, take a look:











Confused?😀

Let me explain:

First, build a jQuery with a div inside,
this trick avoid us to need to use another div on your DOM
after that, we made a method
to simplify we follow the pattern.

Voilà 👌


terça-feira, 6 de fevereiro de 2018

Many To Many de uma maneira simples no JPA

Fala galera, hoje vou mostrar para vocês como implementar uma relação muitos para muitos
no JPA de uma maneira simples de entender, criei um projeto onde temos uma relação many to many
entre duas tabelas, sendo elas: POST e TAG, onde será necessário criar uma tabela associativa
POST_TAG, segue a lógica: O post pode ter várias tags e vice versa.



O segredo está na hora de mapear as classes, a entidade  associativa post_tag, não precisa ser criada
no JPA, para tal utilizamos uma anotação chamada @JoinTable


Como  podemos observar precisamos anotar a nossa coleção com @ManyToMany e
em seguida precisamos da nossa tabela associativa, que é feita através da anotação @JoinTable
que recebe como atributo joinColumns um array de @JoinColumn, onde devemos declarar
de forma explicita o atributo da entidade, no caso tag_id, pois eu estava dentro da classe Tag
e precisamos informar a coluna de relação, no caso inverseJoinColumn, que é referenciada
no array inverseJoinColumns, está pronta nossa tabela de associação, mas e a outra ponta da
relação? como fica? Segue:



Não há necessidade de mapear as duas pontas da relação, para isso utilizaremos o atributo mappedBy
na outra ponta da relação, ou seja, na classe Post,  informaremos o nome do atributo da outra classe 
fazendo assim nossa relação.

Bom,  por hoje é só.

Segue o link do projeto completo no github, enjoy :)

segunda-feira, 15 de janeiro de 2018

[Java] Utilizando a técnica de Shadowing

Uma dúvida muito recorrente entre programadores iniciantes, é sobre a ambiguidade entre
as variáveis e atributos dentro de uma classe, principalmente quando estão encapsulando
os atributos, fazendo um curso na Alura (que inclusive recomendo fortemente), descobri
sobre a técnica de shadowing, veja:

 Para resolver problemas de ambiguidade entre variáveis dentro do mesmo escopo
utilizamos a técnica de shadowing, podemos referenciar pela própria classe; para variáveis de instância, usamos a palavra chave this

class Pessoa {

    static int x = 0;
    int y = 0;

    public static void setX(int x) {
        // Usando a referência da classe
        Pessoa.x = x;
    }

    public void setY(int y) {
        // usando o this
        this.y = y;
    }
}
Quando não usamos o this ou o nome da classe para usar a variável, o compilador sempre utilizará a variável de menor escopo.

class X {
    int a = 10;

    public void metodo() {
        int a = 20; // shadowing
        System.out.println(a); // imprime 20
    }
}