Hospedagem Profissional

Hospedagem Profissional
Clique aqui e ganhe US$ 10,00 para testar durante 1 mês a melhor hospedagem: Digital Ocean!

terça-feira, 6 de dezembro de 2016

Como instalar o Oracle Java 8 no Linux (Debian) via repositório e receber atualizações automáticas

Este é um ótimo tutorial para quem vive tendo que atualizar manualmente o Java no Linux. Browsers como o Firefox impedem ou dificultam muito a vida de quem precisa acessar bancos por exemplo se o plugin do Java estiver desatualizado. Seguindo as dicas abaixo, após a instalação do Java, o mesmo será atualizado automaticamente.


A quick tip for Debian users who want to install and stay up to date with the latest Oracle Java 8 (JDK8): the WebUpd8 Java 8 PPA works on Debian too since the package is just an installer and all you have to do is manually add the PPA repository to the Software Sources.


As a reminder, the Oracle Java 8 PPA repository does not host any Java files but only an installer that automatically downloads and installs Oracle Java 8, like the flashplugin-installer package for instance.


To add the WebUpd8 Oracle Java PPA repository to the Software Sources in Debian (tested on Debian Squeeze, but it should work with any Debian version), use the following commands:

 su -  
 echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list  
 echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list  
 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886  
 apt-get update  
 apt-get install oracle-java8-installer  
 exit  

And that's it, Oracle Java 8 (both JDK8 and JRE8) should now be installed and you should receive automatic updates with future Oracle Java 8 versions, under Debian.

Setting Java environment variables


To automatically set up the Java 8 environment variables, you can install the following package:

 sudo apt-get install oracle-java7-set-default  

If you've already installed oracle-java6-set-default or oracle-java7-set-default, they will be automatically removed when installing oracle-java7-set-default (and the environment variables will be set for Oracle Java 8 instead).

Fonte: http://www.webupd8.org/2012/06/how-to-install-oracle-java-7-in-debian.html

segunda-feira, 30 de maio de 2016

Script para monitorar espaço em disco e avisar por e-mail no Linux

Esse script monitora o espaço em disco do Linux, e quando atingir uma taxa de ocupação mínima (no caso abaixo 90%) ele avisa por e-mail ao responsável.

Agende a execução no crontab e pronto. Recomendo 1 vez ao dia.

OBS.
  1. No script abaixo, foram ignorados os filesystems "Sist|tmpfs|/mnt/backup"
  2. Quando a ocupação é maior que 90%, é enviado no e-mail a lista das 10 maiores pastas para facilitar a identificação dos "comedores de disco"



#!/bin/sh
# Shell script para monitorar o espaço em disco
# Irah enviar um email para $ADMIN, se o espaço em disco ocupado
# for maior que 90%
# Autor: Leandro Silva Ferreira
ADMIN="seuemail@seudominio.com"
ALERT=90

df -H | grep -vE '^Sist|tmpfs|/mnt/backup' | awk '{ print $5 " " $1 }' | while read output;
do
  echo $output

  usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1  )
  partition=$(echo $output | awk '{ print $2 }' )

  if [ $usep -ge $ALERT ]; then
     biggers=$(cd / | du -hsx * | sort -rh | head -10)

     echo -e "Espaço em disco crítico em  \"$partition ($usep%)\" no servidor $(hostname) em $(date) \\n\\nMaiores pastas na raiz:\\n$biggers" |
     mail -s "Alerta: Espaço em disco do servidor $(hostname) está no limite: $usep %" $ADMIN
  fi
done

quinta-feira, 14 de janeiro de 2016

Ferramentas essenciais para o desenvolvedor Java




shutterstock_124013509_javagears
It’s as true for Java developers as it is for woodworkers: You can’t do the job right without the right tools. Fortunately, there are plenty of Java tools designed to make it significantly simpler to write good Java code — and help you make your Java code even better.
You’ll probably know many of the tools on this list of 18 choices, but others may be new to you. And odds are you haven’t tried them all yet!
  1. GradleBuild tool. Automates the building, testing, publishing, deployment, and more of software as well as generating static websites or documentation.
  2. EclipseOpen-source integrated development environment (IDE). If you could have just one tool for Java development, Eclipse would be a good choice.
  3. IntelliJIDE made by JetBrains, available in an Apache 2-licensed community edition and a commercial edition. IntelliJ provides similar features to Eclipse, with a smooth, developer-friendly experience.
  4. YourKitJava profiler. Combines powerful analysis capabilities, on-demand profiling during both development and production, free embedding into production, and seamless IDE and application server integration.
  5. Clover: Code coverage tool from Atlassian. Runs in your IDE or continuous integration system, and includes test optimization to make tests run faster and fail sooner.
  6. MockitoMock library. Open-source testing framework that enables the creation, verification, and stubbing of mocks.
  7. Jetty: Lightweight, embeddable app server.
  8. Hibernate: Object-relational mapper. Implements the Java persistence API.
  9. VisualVMJVM monitor. An all-in-one Java troubleshooting tool that comes with the JDK.
  10. JUnit: Unit test framework. Core tool of test-driven development that enables repeatable, white-box testing.
  11. Jenkins: Continuous integration tool. Customizable with more than 600 plugins.
  12. Spring Boot: Spring application development system. Works in your build system. Supports Gradle and Maven.
  13. Guice: Lightweight dependency injection/inversion of Control (IoC) framework, from Google.
  14. Guava: Utility library. Contains core libraries that Google relies on in Java-based projects: collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and so forth.
  15. FindBugs: Static code analyzer. Classifies potential errors in code as scariest, scary, troubling, or “of concern.” Available as a standalone GUI or as a plugin for Eclipse, NetBeans, IntelliJ, Gradle, Hudson, and Jenkins.
  16. Jackson: JSON parser. Aims to be fast, correct, lightweight, and ergonomic for developers.
  17. Snappy:Compression/decompression library from Google Code. A great resource when speed is a requirement.
  18. JD-GUI: Decompiler. Standalone graphic utility that displays source codes of “.class” files. Free for non-commercial use (i.e., can’t be included or embedded in commercial products).
Of course, don’t forget New Relic Java Monitoring,the best way to see everything in your Java applications. With New Relic, you can pinpoint code-level application performance issues quickly so you can fix them faster.
Fonte: https://blog.newrelic.com/2014/05/21/toolsforjavadevelopers/

domingo, 6 de dezembro de 2015

Linux: Enviando e-mails com sSMTP pelo GMail

Depois de dois dias batendo cabeça para habilitar o envio de e-mail em um dos meus servidores Ubuntu 14.04.3 com o sSMTP, utilizando uma conta do Gmail, decidi fazer esse post para quem sabe ajudar futuros aventureiros.

Vamos lá!

1 - Instalando o sSMTP:


sudo apt-get install ssmtp

2 - Configurando o STMP do Gmail e suas credenciais:


sudo nano /etc/ssmtp/ssmtp.conf

O arquivo ssmtp.conf ficou assim:


#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
# root=postmaster

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
# mailhub=mail

# Where will the mail seem to come from?
# rewriteDomain=

# The full hostname
#hostname=

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES

hostname=localhost
Root=usuario@gmail.com
Mailhub=smtp.gmail.com:465
RewriteDomain=gmail.com
AuthUser=usuario #(sem o @gmail.com)
AuthPass=sua_senha
FromLineOverride=Yes
UseTLS=Yes

OBS. Não esqueça de colocar os seus dados nos parâmetros "Root", "AuthUser" e "AuthPass". O resto fica como no exemplo.

3 - Instalando o cliente de envio de e-mail para que você possa enviar mensagens pelo PHP, via scripts bash, diretamente no console, etc.


sudo apt-get install heirloom-mailx

4 - Testando o envio! Para isso, execute no console:


echo "Teste de envio de e-mail pelo gmail com sSMTP" | mail -s "Teste de e-mail" destinatario@seudominio.com

OBS. Não esqueça de trocar "destinatario@seudominio.com" pelo seu e-mail.


E se o e-mail de teste não chegar ?

Bom, é aqui que perdi 2 dias da minha vida pra fazer isso funcionar.

É problema de REDE ou de CONFIGURAÇÃO ?

Para isso, use o telnet :


# telnet smtp.gmail.com 465
Trying 173.194.212.108...
Trying 173.194.212.109...
Trying 2607:f8b0:400c:c11::6d...
telnet: Unable to connect to remote host: Network is unreachable

Se a resposta for parecida com o quadro acima, seu problema é de rede.

- Verifique se o seu provedor tem algum tipo de bloqueio anti spam para envio de e-mails por SMTP (No meu caso utilizo DigitalOcean e eles bloqueiam por padrão, tive que abrir um ticket no suporte para que pudessem habilitar. Perdi horas por conta disso achando que eu tinha configurado algo errado).

- Verifique se existe alguma regra de firewall impedindo que o seu servidor se conecte no SMTP do Gmail na porta configurada (no caso deste post, a porta utilizada foi a 465). Para isso, dê uma olhada nas regras do IPTABLES ou UFW. Se usa provedores que tem uma camada de segurança extra como a Amazon Web Services por exemplo, veja no painel de controle na parte de segurança se tem algo impedindo o acesso.

Resolvidas essas questões, o que se espera do telnet é algo assim:


# telnet smtp.gmail.com 465
Trying 173.194.212.108...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.

Agora repita o teste de envio relatado no passo 4 acima. Se ainda assim não receber o e-mail, seu problema é de configuração ou de prevenção de invasão do Google.

Primeira coisa, veja no log do seu servidor os detalhes das tentativas de envio:


# tail -n 100 /var/log/mail.log 

Se o resultado for algo como abaixo, seu problema é usuário ou senha errados (confira bem), ou algum dispositivo de prevenção de invasão do Google:


Nov  7 01:33:34 lion sSMTP[28075]: Creating SSL connection to host
Nov  7 01:33:35 lion sSMTP[28075]: SSL connection using RSA_ARCFOUR_SHA1
Nov  7 01:33:35 lion sSMTP[28075]: Authorization failed (534 5.7.14  https://support.google.com/mail/answer/78754 y194sm2932906vkd.13 - gsmtp)

Se tem certeza que seu usário e senha estão corretos, verique se o Gmail não te mandou algum e-mail lhe informando uma possível invasão de conta, como o seguinte:


Esse problema me tomou mais algum tempo, até que eu pudesse perceber o e-mail na caixa de entrada. Clique em "Revisar seus dispositivos agora" e confirme sua identidade.

Ainda sobre o Google, mesmo que não receba o e-mail acima, certifique-se de:
Foi no primeiro item do check list que perdi horas achando que meu problema era alguma configuração. Veja do que se trata :

Para proteger sua conta, o Google pode dificultar o login à sua conta se suspeitar que ele não esteja sendo feito por você. Por exemplo, o Google pode solicitar informações adicionais, além do seu nome de usuário e sua senha, se você estiver viajando ou se tentar fazer login na sua conta em um novo dispositivo.
Sendo assim, acesse o link https://g.co/allowaccess e caso esteja bloqueado, libere o acesso a novos dispositivos para sua conta. Esse era o meu problema, e depois de liberado, fiz o teste de envio novamente e veio a mensagem esperada no log:


Nov  7 01:50:30 server sSMTP[28123]: Creating SSL connection to host
Nov  7 01:50:30 server sSMTP[28123]: SSL connection using RSA_ARCFOUR_SHA1
Nov  7 01:50:33 server sSMTP[28123]: Sent mail for destinatario@gmail.com (221 2.0.0 closing connection p138sm2945424vkd.25 - gsmtp) uid=0 username=root outbytes=603

E é claro, recebi o e-mail de teste na minha caixa de entrada.

Uma última observação: Nas minhas pesquisas, identifiquei que algumas pessoas tiveram problemas com os certificados para acesso via SSL.
Para isso, algumas propriedades adicionais foram utilizadas no arquivo ssmt.conf, sendo:


UseStarTTLS=Yes
TLS_CA_File=/etc/ssl/certs/ca-certificates.crt

Bom, espero ter ajudado. Se tiver algo a acrescenter, comente o post.

domingo, 29 de novembro de 2015

Apache Camel 2.16 - Swagger Java and API documentation out of the box

Este vídeo mostra a utilização do Apache Camel, com CDI e Swagger para geração de documentação automática para serviços rest.

In the upcoming Apache Camel 2.16 release we recently added a pure Java based Swagger module, camel-swagger-java.

This module is replacing the older camel-swagger module that was Scala based. The new module is also using the new swagger 2.0 spec. And least but not least the module integrates out of the box, so end users just need to turn it on, by declaring the context-path to use for servicing the Swagger API documentation. Then Camel is able to auto detect camel-swagger-java on the classpath and tie into the swagger model read and generate the API as swagger 2.0 in json format. All this can be run in any kind of JVM. You do not need to use a servlet container (but you can).




Fonte: http://www.davsclaus.com/2015/09/apache-camel-216-swagger-java-and-api.html

domingo, 15 de novembro de 2015

Como rodar JSF 2.2 no JBoss AS 7.1.1.Final "Brontes"

Esse tutorial tem por objetivo apresentar os passos necessários para a atualização do JBoss AS 7.1.1.Final "Brontes" para que seja possível rodar aplicações utilizando o JSF 2.2.

Vamos lá!

O primeiro passo é efetuar o download dos jars de 'impl' e 'api' do Mojarra 2.2

Para isso, use as urls abaixo :


No momento em que escrevo esse post, as últimas versões são:


Coloque o jar de 'impl' na seguinte pasta:

<jboss_home>/modules/com/sun/jsf-impl/main

Edite o arquivo 'module.xml' nesse diretório e altere o atributo 'resource-root-path' para o nome do jar de 'impl' que você copiou. No nosso caso, 'jsf-impl-2.2.12.jar'.

A versão final do XML ficou assim:


<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.sun.jsf-impl">
    <properties>
        <property name="jboss.api" value="private"/>
    </properties>

    <dependencies>
        <module name="javax.faces.api"/>
        <module name="javaee.api"/>
        <module name="javax.servlet.jstl.api"/>
        <module name="org.apache.xerces" services="import"/>
        <module name="org.apache.xalan" services="import"/>
    </dependencies>

    <resources>
        <resource-root path="jsf-impl-2.2.12.jar"/>
        <!-- Insert resources here -->
    </resources>
</module>


Agora coloque o jar de 'api' na seguinte pasta:

<jboss_home>/modules/javax/faces/api/main

Edite o arquivo 'module.xml' nesse diretório e altere o atributo 'resource-root-path'para o nome do jar de 'api' que você copiou. No nosso caso, 'jsf-api-2.2.12.jar'.

Ainda no arquivo 'module.xml', adicione a linha abaixo na seção 'dependencies':


<module name="com.sun.jsf-impl"/>

A versão final do XML ficou assim:


<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="javax.faces.api">

    <dependencies>
        <module name="javax.el.api" export="true"/>
        <module name="javax.servlet.api" export="true"/>
        <module name="javax.servlet.jsp.api" export="true"/>
        <module name="javax.servlet.jstl.api" export="true"/>
        <module name="javax.validation.api" export="true"/>
      <module name="com.sun.jsf-impl"/>
    </dependencies>

    <resources>
        <resource-root path="jsf-api-2.2.12.jar"/>
        <!-- Insert resources here -->
    </resources>
</module>

Pronto, seu JBoss está rodando JSF 2.2.


segunda-feira, 9 de novembro de 2015

Getting Started With Docker

The De Facto Open-Source Containerization Solution


Teaches you typical Docker workflows, building images, creating Dockerfiles, and includes helpful commands to easily automate infrastructure and contain your distributed application