sábado, 16 de maio de 2015

Gmail - Autorizar aplicativos "menos seguros" a utilizar sua conta de e-mail.

Hoje estava configurando o Jenkins para notificar os desenvolvedores por e-mail caso algum build quebre os testes.

Após configurar, executei um teste e estava recebendo a exception abaixo:


javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbtcN
534-5.7.14 bxLwdpoMpOBNNwIy64OqNjOcYWKhv9Ogfd10kGe_pt6RyXUFYm3w7dCuiC7CzMneriV0PS
534-5.7.14 _T7XgUs72hkfmJJI4Tm2mE_cZq9Ow1u6d6FCuHFxRKdlZrOTWO-HGxBLy-IUyRausRPSpI
534-5.7.14 F-BLYzuOzeeUSdE5Bb2VPg1JZn-ZP3gC9BTcBb6wWizSD41F3b6n6MEUL_T1JQ5EOqJAg7
534-5.7.14 g75cqYUuLUzBxU0VnC3j2IVbaZkQ> Please log in via your web browser and
534-5.7.14 then try again.
534-5.7.14 Learn more at
534 5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 j62sm4007819qhc.33 - gsmtp

at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:809)
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:752)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:669)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at hudson.tasks.Mailer$DescriptorImpl.doSendTestMail(Mailer.java:522)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:123)
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:114)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:370)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)



Para resolver este problema, você deve habilitar o acesso de aplicativos "menos seguros" na sua conta de e-mail.

Entre neste link e marque a opção "Ativar".

Teste novamente e veja tudo funcionando! =)

Jenkins - Alterando a porta default



Para alterar a porta default que o Jenkins roda no Ubuntu, siga os passos abaixo:

- Abra o terminal e edite o arquivo jenkins no diretório /etc/default/ como sugerido abaixo:

$ sudo vim /etc/default/jenkins

- Procure pelo parâmetro HTTP_PORT e altere o valor para a porta desejada.

É isso, simples rápido e prático!

quarta-feira, 8 de janeiro de 2014

Usando os comandos javac e java

Resumo de estudos para Certificação Java 6 - SCJP

O meu resumo toma por base o guia de estudos do livro "Certificação Sun para Programador Java 6" Guia de Estudo - SCJP - Exame 310-065


Capítulo 10 - Usando os comandos "javac"

O comando javac é usado para chamar o compilador Java.
Para o exame será preciso entender as opções -classpath e -d passadas no comando javac.
A estrutura do comando é: javac [opções] [arquivos-fonte]
Tanto as opções quanto os arquivos-fonte, são opcionais e ambas permitem múltiplas entradas.
Ex: javac MyClass1.java MyClass2.java


Compilando com -d
Por padrão, o compilador coloca o arquivo .class na mesma pasta do arquivo .java
A opção -d serve para dizer ao compilador em que pasta ele deve colocar os arquivos .class dos arquivos .java
Sendo assim, quando você chama o compilador passando a opção -d você deve em seguida especificar a pasta que deverá ser destinada o arquivo .class após a compilação da classe java.
Imagine a estrutura de pastas do projeto:

meuProjeto

meuProjeto\source
meuProjeto\source\com\MinhaClasse.java

meuProjeto\classes

Se eu estiver no diretório meuProjeto, ao executar o comando do exemplo abaixo, estou dizendo ao compilador que quero que minha classe compilada, ou seja, o arquivo MinhaClasse.class seja movida para a pasta meuProjeto\classes\ deixando assim a estrutura de arquivos bem organizada e de fácil manutenção.
Ex: javac -d classes source/com/MinhaClasse.java

Obs1) Mesmo que o diretório \classes\ não contenha uma pasta \com\ como em source, o compilador criará automaticamente a pasta para manter a mesma estrutura da pasta source.
Obs2) Caso a pasta \classes\ não exista, o compilador acusará o erro de compilação abaixo:
javac: directory not found: classes
Usage: javac <options> <source files>
use -help for a list of possible options


terça-feira, 2 de julho de 2013

Nike Running




O grande problema nos dias atuais para começar a praticar uma atividade física, e se manter praticando com regularidade, é vencer os diversos concorrentes tão atrativos que temos hoje como a internet, televisão, o playstation e a preguiça.

Eis que lhe apresento um bom aliado para te ajudar na difícil tarefa de sair do sedentarismo que são os aplicativos de corrida para smartphones.

Temos diversos apps disponíveis porem vou falar sobre o Nike+ Running que é o aplicativo que eu estou usando.

Para o Android, você pode baixar no google play, basta procurar por "nike running".

Após baixar e instalar o app, abra o aplicativo e clique em "Iniciar".

Será preciso fazer login com uma conta para começar a usar, então você pode entrar com sua conta do facebook ou se cadastrar na rede da Nike+.

Após o login, você será direcionado para a tela principal do aplicativo.

No menu "Perfil", você tem um resumo da sua corrida mais distante, corrida mais longa, 1k mais rápido, 1mi mais rápida e 5k mais rápido, além de outra informações como seus amigos adicionados, troféus e marcas.

No menu "Início" será exibido o total de km percorrido, qtd de corridas realizadas, tempo médio alem de sua colocação no ranking.

No menu "Atividades" é possível ver em detalhes cada uma de suas corridas realizadas além de um gráfico dos seus resultados agrupados por mês.

No menu "Amigos', você pode comparar seus resultados com o de seus amigos e visualizar o perfil deles.

No menu "Loja" você terá acesso a uma loja da nike on line.

Para começar sua corrida, clique no botão do bonequinho correndo, no canto superior direito. Lembre-se de ativar o GPS. O 3G não é necessário para as marcações, porem se você puder habilitar, faça isso, pois é possível interagir on line no facebook durante a corrida.

Você pode selecionar suas faixas de músicas para criar uma playlist e ouvir durante o seu treino.

Durante o treino, você ouvirá o seu resultado parcial como, a distância percorrida, o tempo médio por quilômetro e a quantidade de passos.

Ao finalizar o treino, você pode dizer onde correu, como você se sentiu e com que tênis correu. Após isso, os dados são totalizados e sincronizados.

Você pode agendar sua próxima corrida e o aplicativo irá tocar um alerta no celular quando der a hora da sua corrida.

Agora não tem mais desculpas. Calce o seu tênis e vá correr!

sábado, 23 de março de 2013

Como mudar o Brasil?

Clique aqui: politicos.org.br/






Gostei muito da ideia e vale a divulgação.

Volume da TV abaixando sozinho

Boa noite!

Hoje, ao chegar em casa, liguei a TV como de costume e me deparei com o seguinte problema:

Minha TV LCD 32'' Samsung modelo LB530 começou a abaixar o volume sozinho. A TV não respondia aos comandos do controle remoto e nem os botões laterais funcionavam corretamente.

Não entendi o porque isso estava acontecendo, pois até ontem a noite tudo estava funcionando perfeitamente.

Então depois de xingar injustamente algumas vezes o fabricante, comecei a fazer alguns testes para tentar resolver o problema.

Verifiquei as pilhas e estavam com carga...

Removi o cabo de força por 20 segundos e nada...

Removi de perto da TV outros aparelhos que poderiam estar causando interferência como telefone sem fio, wireless, notebook, celular, mas nada feito...

Pensei em atualizar o firmware mas antes de tomar essa medida mais drástica dei uma pesquisada na internet e descobri um código que você pode fazer no controle remoto para acessar as configurações da TV, como se fosse o setup de um computador.

Para executar este comando, a TV deve estar desligada.

Pressione em sequência:  MUTE + 1 + 8 + 2 + POWER

A TV vai ligar e apresentar um menu. Siga pela opção: Config > Factory reset

As configurações de fábrica serão aplicadas e a TV será desligada.

Ligue novamente e terá que fazer algumas configurações iniciais como, IDIOMA, CASA OU LOJA, CHAVEAMENTO DE AR OU CABO, REGIÃO.

No fim das contas, descobri que o meu problema é que a TV estava configurada como LOJA onde as TVs normalmente tem um canal e um volume default.

Bom.. É isso.. Espero que essa dica seja útil para alguém.

terça-feira, 19 de março de 2013

A Busca (Não gaste seu dinheiro)

A Busca



Neste fim de semana, fui com a namorada ao cinema. A escolha foi o novo filme com o ator Wagner Moura. Sem delongas, achei o filme péssimo. Motivos? Olha a minha lista:
- Texto muito ruim.
- Elenco péssimo.
- Trilha sonora muito pobre.
- Figurino bizarro.
- Fotografia fraca.

Bom.. vamos la.. A história do filme mostra a distância na relação entre o casal separado Theo(Wagner Moura) e Branca(Marina Lima) e seu único filho Pedro(Brás Antunes). Na semana em que completaria 15 anos, o filho foge de casa e todo o filme foca na busca de Theo por Pedro.
Não sei se é porque gostei muito de Tropa de Elite, mas vez por outra o Wagner Moura, me fazia lembrar do jeitão Capitão Nascimento ao falar com sua ex-esposa. Acho que ele vai ficar marcado por muito tempo até que faça um outro papel tão bom quanto foi o nosso amado Capitão.
Durante sua busca, ele segue os rastros deixados por seu filho que, após uma briga com seu pai, resolve fugir de casa à cavalo. O plano do jovem era ir do Rio de Janeiro até o Espirito Santo para dar o animal a seu avô (Lima Duarte), personagem que só aparece na ultima cena do filme, com quem vinha se comunicando por cartas e desenhos, talento que o menino possuía.
O filme peca muito em todos os motivos da lista acima. Se eu pudesse resumir em poucas palavras, eu diria que é um filme que você pensa: "Agora vai ficar bom..." E você fica com essa sensação até o filme acabar.. O filme acaba e não fica bom... NUNCA!
A minha expressão ao ver os créditos?
Um decepcionado: "- Putz! que lixo!"
É isso...