Bom galera desenvolvi uma ferramenta pragmática para ajudar na leitura do inglês o JTranslator, no caso com ele você pode traduzir textos e palavras entre meio e um segundo em media do com dados do Google tradutor e do Bing.

Roda windows/linux/mac

requer o JAVA versão 5 ou superior instalado.

Segue o vídeo de demostração do funcionamento

https://www.youtube.com/watch?v=-1QU6200rFg&feature=youtu.be

Segue link para download

https://github.com/bdmstyle/jtranslate/releases/download/3.1/JTradutor.jar

Sobre o desenvolvimento, o código é open source e esta no Github, implementei usando HtmlUnit com isso a performasse ficou boa e no caso o Google não tem API free. Já o Bing cheguei a implementar com sua API nativa porém por motivos de facilidade de distribuição deixei com htmlunit também. Se eu fosse usar API teria que fazer autenticação com oauth etc.

Espero que gostem!

Dica rápida de como instalar o jdk8 por pacotes.

sudo apt-get update

sudo apt-get purge openjdk*

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:webupd8team/java

aperte [Enter]

sudo apt-get update

sudo apt-get install oracle-java8-installer

aperter [Enter] em seguida [Yes]

java -version

java version “1.8.0_05″
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Client VM (build 25.5-b02, mixed mode).

Nessa segunda parte vamos aprender como configurar um domínio e fazer o Nginx servir um site estático como um blog e como deployar nosso aplicação java sample1.war que fizemos no post passado , usando o jetty como servidor de aplicação.

Primeira parte – http://brunodanielmarinho.wordpress.com/2014/06/01/servlet-3-maven-jetty-sem-ide-em-5-minutos-colocando-em-producao-1/

1 – Configurando o domínio

Você deve ter algum domínio que é nome na internet, existem muitos sites para comprar um dominio como o http://www.onlydomains.com/ que cobra 8,99 dólares por ano em um dominio “.com” por exemplo,depois que você escolher o nome e pagar é claro por exemplo bruno123.com , você acessa a área onde se configura o domínio no site,geralmente “DNS manager ou gerenciar DNS” alguma parecida com isso.

Vai ter uma telinha com algo assim.

www | A | 192.168.0.1
@ | NS |ns1.bruno123.com

Isso serve para você configurar um domínio ou subdominio por exemplo coisas.bruno123.com,blog.bruno123.com ou mesmo o site principal http://www.bruno123.com,funciona assim o cara digita o domínio e é redirecionado para o ip configurado que vai ser o do seu servidor. Você deve usar sempre a configuração do tipo “A” ficaria assim.

www | A | 192.168.0.1
blog | A | 192.168.0.1
coisas | A | 192.168.0.1

2 – Sobre o servidor do seu site

Obviamente deve-se ter um servidor, você pode conseguir um na amazon elastic cloud, colocando seu cartão de credito internacional la você ganha 1 ano grátis para testar uma maquina pequena mais do que suficiente para qualquer projeto pessoal ou de teste.
Subir um servidor esta fora do escopo desse post vamos assumir que você tem uma maquina com ubuntu em algum cloud.
Você deve ter o ip publico do servidor que é facilmente localizado nos clouds e configurar o DNS para apontar para esse ip.

Para começar vamos a um exemplo simples de como servir um site estático por exemplo um arquivo chamado index.html.

Faça ssh no servidor, veja se não tem nenhum apache rodando por acaso rodando “ps -ef | grep” apache se tiver desligue o apache, “sudo service apache2 stop”.

3 – Instalando NGINX
O nginx é um servidor http é ele que recebe a requisição e responde elas, vamos instalar “sudo apt-get install nginx”, e temos o servidor instalado, com isso rodamos “sudo service nginx start”, e deve subir sem erros, digitando o seu ip publico no navegador você já deve poder ver a pagina inicial do nginx

4 – Configurando um site estático.
Bom vamos colocar o nginx para servir um site simples que só tem uma pagina chamada index.html colocaremos esse arquivo em /home/site/index.html com qualquer conteúdo por exemplo “hello world”, crie um arquivo em /etc/nginx/sites-available/ um arquivo chamado site com o seguinte conteúdo.

server {
        listen *:80;
        server_name blog.bruno123.com;
        index index.html;
        root /home/site;

        error_log  /var/log/nginx/site-error.log  warn;
        access_log /var/log/nginx/site-access.log;
}

vamos reiniciar o servidor “sudo service nginx restart”

O arquivo é auto descritivo, ele pega todas as requisições que vem de blog.bruno123.com que você configurou la em cima no DNS para apontar para seu servidor, procura um arquivo index.html dentro do diretório /home/blog/, e mostra a o site além de configurar os logs.

o ultimo passo é que você tem fazer um link simbólico em /etc/nginx/sites-enabled apontando para o arquivo de configuração em /etc/nginx/sites-available/site para voce poder habilitar o site.
Por exemplo estando no diretório “sites-enabled” faça “sudo ln -s /etc/nginx/sites-available/blog blog” para criar o link simbólico.

Depois disso se você acessar blog.bruno123.com deve aparecer o arquivo index.html com sucesso.

5 – Fazendo redirecionamentos
Caso você queria pode fazer um redirecionamento usando NGINX por exemplo eu gostaria de quando digitar google.bruno123.com eu fosse redirecionado para o google.com. Então para isso eu devo criar uma nova entrada no DNS de google.bruno123.com apontando para o seu ippublic e criar um arquivo novo em “sites-available” chamado google com o seguinte conteúdo:

server {
        server_name  google.bruno123.com;
        rewrite ^(.*) http://www.google.com$1 permanent;
}

por fim criar o link simbólico em sites-enabled novamente e restartar o server “sudo service nginx restart”

Novamente o NGINX vai pegar as requisições de google.bruno123.com que voce configurou no DNS la em cima para o ip do seu servidor e vai redirecionar para o google, bem simples não?

6 – Servindo uma aplicação java, Instalando o Jetty.

Certo mas queremos colocar nossa aplicação sample1.war no ar como fazer? primeiro você deve baixar o jetty servidor de aplicação para servlet , no site dele http://www.eclipse.org/jetty/downloads.php em seguida descompactar em /opt , “cd /opt” e depois “unzip jetty.zip”.

Agora temos que copiar o script de inicialização do nginx para a pasta do linux
“sudo cp /opt/jetty/bin/jetty.sh /etc/init.d/jetty”

Temos que exportar a variavel “export JETTY_HOME=”/opt/jetty” e você pode colocar em /etc/environment para ficar permanente.

Agora podemos fazer sudo /etc/init.d/jetty start e temos um servidor web java rodando.
Para realizar a publicação(deploy)

6.1 vamos pegar o sample1.war nossa aplicação do post anterior e copiar ela para o servidor via SCP.
6.2 renomear de sample1.war para sample.war e copiar ele na pasta de deploy do jetty /opt/jetty/webapps.

Tivemos que renomear o arquivo pois o jetty sobre o contexto da aplicação com o nome do arquivo, por exemplo como o arquivo chama sample.war nesse caso vai ficar ip:porta/sample/index, agora /etc/init.d/jetty restart isso vai deployar nossa app no jetty que por padrão usa a porta 8080;

Vamos criar um novo arquivo em sites-available chamado site java com o conteúdo abaixo e seu respectivo link simbólico em sites-enabled e depois “sudo service nginx restart”

server {
        listen *:80;
        server_name sitejava.bruno123.com;
        error_log  /var/log/nginx/bruno123-error.log  warn;
        access_log /var/log/nginx/bruno123-access.log;

        location /{
          proxy_pass http://127.0.0.1:8080/sample/;
          proxy_redirect off;
        }
}

Bom agora tudo que vier de sitejava.bruno123.com vai ser passado para o jetty em localhost:8080/sample/ com seus parâmetros no caso index, fazendo o PROXY. Efetuando essa configuração em nosso exemplo funciona GET e POST e tudo mais,ou seja podemos fazer hhtp://sitejava.bruno123.com/index?name=bruno e recebemos,
[GET] Hello Word bruno so que agora em produção!!! e não local.

Bom finalizando, só quero dizer que essa não é a melhor forma de fazer mais funciona até a próxima.

Olá pessoal vou começar uma serie de 2 posts, falando como colocar uma aplicação em produção em algum servidor como amazon aws,vamos abordar servlet 3, maven como instalar o jetty e o ngnix, tudo sem ajuda de IDEs.

Nessa primeira parte vamos fazer uma aplicação local com Servlets 3 que eu particularmente gosto bastante pela simplicidade.

*Maven
O maven gerencia para nós as dependências do projeto isso é, tudo que nos necessitamos devemos pedir ao maven que ele vai na internet e busca pra gente, ou seja esqueça ficar procurando jars na internet para colocar em seus projetos.

1 – Instalação do maven
Para instalar então primeiramente você deve ter o java instalado “java -version” tem funcionar, em seguida vamos fazer a instalação do maven baixe a ultima versão de http://maven.apache.org/download.cgi. Vamos descompactar o arquivo em /opt  exporte a variável de ambiente  com o comando “export M2_HOME=/opt/apache-maven-3.2.1″, então o comando “mvn -version” deve funcionar.

2 – Criando projeto
A criação é bem simples pedimos ao maven criar um projeto usando o template “maven-archetype-webapp” e damos o nome “sample” e falamos que ele é do grupo “com.sample” com o comando abaixo e isso cria nosso java web.

mvn archetype:generate -DgroupId=com.sample -DartifactId=sample
 -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

3 – Configurando o jetty embedded

Com o maven gerenciando as dependências do nosso projeto tudo que nos necessitamos é pedir para ele, no caso eu quero um servidor web jetty e usar servlet 3,para isso eu declaro o plugin do jetty e a dependência do javaee7 que é nescessario para o servlet3(para quem não sabe o jee é um jar com as especificações de servlet no caso) no arquivo pom.xml que é onde o maven é configurado.

com o arquivo ficando como o abaixo:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.sample</groupId>
  <artifactId>sample</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>sample Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <build>
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>8.1.15.v20140411</version>
        <configuration>
          <stopKey>STOP</stopKey>
          <stopPort>9999</stopPort>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-web-api</artifactId>
      <version>7.0</version>
    </dependency>
  </dependencies>
</project>

Se tudo esta certo agora você pode rodar.. o comando “mvn clean install” na raiz do projeto(onde fica o pom.xml) e devera ocorrer “BUILD SUCCESS”, legal ja temos o jetty e o jaee7 com muito pouco esforço.

4 – Criando nosso Servlet 3

Servlet 3 é muito simples e fácil não temos que ter web.xml ou mapeamentos para que conhece as versões mais antigas da especificação servlet.
4.1 – vamos entrar no projeto ate a pasta main sample/src/main/ que o maven criou para nós então criamos uma pasta chamada java onde ficara nossas classes.
4.2 – Depois criamos uma pasta chamada mypackage que sera nosso pacote java(isso é estrutura de diretórios que o ide cria para nós geralmente um pacote java não é nada mais apenas uma pasta)
4.3 – Em seguida criamos nosso servlet que se chama IndexController, muito simples nos apenas dizemos @WebServlet(“/index”) ou seja que esse servlet responde quando se digita /index na url e colocamos um hello World nos metodos doGet e doPost.


package mypackage;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;



@WebServlet("/index")
public class IndexController extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.getWriter().write("[GET] Hello Word "+request.getParameter("name"));
  }

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response)	throws ServletException, IOException {
    response.getWriter().write("[POST] Hello Word "+request.getParameter("name"));
	}

}

Rodando o projeto com o comando “mvn clean install jetty:run”, e acessando http://localhost:8080/index?name=Bruno nós recebemos como resposta

[GET] Hello Word Bruno

Simples não? sem Eclipse, Netbeans sem colocar jar na mão, sem web.xml, sem baixar servidor web, gosto bastante de Servlet pois é muito leve e rápido, para coisas simples e pequenas.

Claro fazer essa pequena aplicação usando um ide é mais rápido ainda,todos os ides tem um plugin ou algum suporte para maven, o que deixa as coisas bem produtivas.

Note que dentro da pasta target nos temos o arquivo sample1.war que é o arquivo que colocarmos no servidor de aplicação para publicar o aplicativo, no próximo post iremos colocar em produção essa aplicação usando o servidor nginx e instalando um jetty de verdade para fazer a publicação(deploy).

Fonte do exemplo no github https://github.com/bdmstyle/servlet3sample/tree/master

Depois de perder muito tempo procurando como fazer essa atividade simples, resolvi postar pois estava dificil de encontrar uma explicação descente.

Primeiro vamos a estrutura de exemplo

$ svn st
? project/trunk/target
? project/trunk/myfile.x

1 – primeiro configuro um editor de texto, no meu caso vim
export SVN_EDITOR=vim

2 – “svn propedit svn:ignore project/trunk/” vai abrir um novo arquivo e simplesmente digita “target” que é o diretorio que eu quero ignorar salva e funciona!

 $ svn st
? project/trunk/myfile.x

Obrigado.

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 591 outros seguidores