Ubuntu 12.04 + Intellij IDEA 12.1.3 + Play! Framework 2.1.1... Un Hola Mundo diferente!

Si no sabes que es Play! Framework click y averígualo, resumiendo Play! es un framework de desarrollo de aplicaciones rápidas RAD del tipo MVC para Java y Scala, que a diferencia de SpringMVC desarrollar se vuelve mas divertido que doloroso.

En este tutorial aprenderemos a preparar el entorno para desarrollar con Play! y desarrollaremos el épico Hello World en el lenguaje Java
Usaremos como SO Ubuntu 12.04 32bits.
Pero debería funcionar para cualquier distro GNU/Linux y algunos sistemas Unix-like .
Es muy poco probable que haga un tutorial de como preparar un entorno de desarrollo bajo MS Windows, mas sin embargo si usas Windows, siéntete libre de preguntar.

Lo primero que debemos checkear es si tenemos el Java JDK instalado correctamente. Para checkear nuestra versión de java, abrimos una terminal y escribimos:

mrpopper@thekid-pc:~$ java -version
java version "1.7.0_21"
OpenJDK Runtime Environment (IcedTea 2.3.9) (7u21-2.3.9-0ubuntu0.12.04.1)
OpenJDK Server VM (build 23.7-b01, mixed mode)
mrpopper@thekid-pc:~$ 

Yo tengo la versión OpenJDK en su versión 1.7.0_21, de no tener la JDK instalada, escribe en una terminal:

mrpopper@thekid-pc:~$ sudo apt-get install openjdk-7-jre

HINT: Para saber en que directorio te encuentras posicionado, en las terminales de los SO Unix-Like basta con que escribas el siguiente comando:
mrpopper@thekid-pc:~$ pwd
/home/mrpopper
que viene de las siglas en inglés Print Working Directory

Una vez terminada la instalación del openJDK de Java, en la misma terminal o en otra escribimos:
mrpopper@thekid-pc:~$ wget http://downloads.typesafe.com/play/2.1.1/play-2.1.1.zip
Y luego escribimos:
mrpopper@thekid-pc:~$ wget http://download-ln.jetbrains.com/idea/ideaIC-12.1.3.tar.gz
Con lo anterior descargamos el Play! Framework y el Intellij IDEA en el directorio donde estabamos posicionado en esa terminal.
HINT: para listar los archivos en el directorio que te encuentras posicionado, en las terminales de los SO Unix-Like basta con que escribas el siguiente comando:
mrpopper@thekid-pc:~$ ls
En la terminal donde descargamos play! (se supone deberíamos estar ubicados en el directorio donde se descargo) escribimos lo siguiente para descomprimir el zip:
mrpopper@thekid-pc:~$ unzip play-2.1.1.zip
Luego entramos al directorio donde se descomprimió nuestro play! y le damos al comando ls para inspeccionar que hay dentro
mrpopper@thekid-pc:~$ cd play-2.1.1/
mrpopper@thekid-pc:~$ ls
CONTRIBUTING.md  framework  play.bat   repository
documentation    play       README.md  samples
mrpopper@thekid-pc:~$
Si ejecutamos el archivo play que vemos ahí y obtenemos la siguiente salida, vamos bien
mrpopper@thekid-pc:~/play-2.1.1$ ./play
Getting net.java.dev.jna jna 3.2.3 ...
:: retrieving :: org.scala-sbt#boot-jna
 confs: [default]
 1 artifacts copied, 0 already retrieved (838kB/54ms)
Getting play console_2.9.2 2.1.1 ...
:: retrieving :: org.scala-sbt#boot-app
 confs: [default]
 29 artifacts copied, 0 already retrieved (5976kB/242ms)
Getting Scala 2.9.2 (for console)...
:: retrieving :: org.scala-sbt#boot-scala
 confs: [default]
 4 artifacts copied, 0 already retrieved (20090kB/253ms)
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.1 (using Java 1.7.0_21 and Scala 2.10.0), http://www.playframework.org

This is not a play application!

Use `play new` to create a new Play application in the current directory,
or go to an existing application and launch the development console using `play`.

You can also browse the complete documentation at http://www.playframework.org.

mrpopper@thekid-pc:~/play-2.1.1$

A continuación necesitamos agregar el directorio de play a una variable del shell y a su vez esa variable agregarla al PATH, para tener siempre disponible el comando play. 
Con el comando pwd muestro la ruta donde se encuentra el directorio del play, debes copiar esa ruta al porta papeles

mrpopper@thekid-pc:~/play-2.1.1$ pwd
/home/mrpopper/play-2.1.1

Con el comando cd solo sin argumentos me ubico en la carpeta home de mi usuario, en mi caso /home/mrpopper en la carpeta home de cada usuario se encuentra un archivo oculto que guarda información sobre la terminal que esta usando ese usuario, el archivo se llama .bashrc (en los SO Unix-Like los archivos y carpetas que comienzan con punto son ocultos) abrimos el archivo con el gedit
mrpopper@thekid-pc:~/play-2.1.1$ cd
mrpopper@thekid-pc:~$
mrpopper@thekid-pc:~$ gedit .bashrc
El archivo debería de tener algunas cosas, nos vamos hasta el final del archivo y de ultimo agregamos las siguientes lineas:
#variable para play
export PLAY_HOME=/home/mrpopper/play-2.1.1
Donde /home/mrpopper/play-2.1.1 es la ruta donde descomprimieron el play, recuerden que les dije que lo copiaran al portapapeles, guardamos y cerramos el gedit también cerramos todas las terminales que estén abiertas, esto para que la variable tenga efecto. Probamos que la variable esta cargada con el valor que queremos
mrpopper@thekid-pc:~$ echo $PLAY_HOME
/home/mrpopper/play-2.1.1
Volvemos a abrir el archivo .bashrc con el gedit para agregar la variable PLAY_HOME al PATH del sistema, justo abajo de lo ultimo que habíamos agregado, quedando así:
#variable para play
export PLAY_HOME=/home/mrpopper/play-2.1.1
export PATH=$PATH:$PLAY_HOME:$PATH
Guardamos y cerramos gedit y todas las terminales abiertas. Abrimos otra vez una terminal y si escribimos el comando play deberiamos tener la siguiente salida
mrpopper@thekid-pc:~$ play
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.1 (using Java 1.7.0_21 and Scala 2.10.0), http://www.playframework.org

This is not a play application!

Use `play new` to create a new Play application in the current directory,
or go to an existing application and launch the development console using `play`.

You can also browse the complete documentation at http://www.playframework.org.

mrpopper@thekid-pc:~$
Ya tenemos nuestro play listo, vamos a crear un proyecto para nuestra aplicación Hello World escribimos en una terminal
mrpopper@thekid-pc:~$ play new helloWorld
      _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.1 (using Java 1.7.0_21 and Scala 2.10.0), http://www.playframework.org

The new application will be created in /home/chucho/helloWorld

What is the application name? [helloWorld]

Y luego cuando nos pregunte What is the application name? le damos ENTER y cuando nos pregunte Which template do you want to use for this new application? le decimos 2 Create a simple Java application 
Which template do you want to use for this new application? 

  1             - Create a simple Scala application
  2             - Create a simple Java application

 2
OK, application helloWorld is created.

Have fun!

mrpopper@thekid-pc:~$
A continuación entramos a la carpeta donde se creo nuestro proyecto con el comando cd y una vez dentro de la carpeta escribimos el comando play
mrpopper@thekid-pc:~$ cd helloWorld/
mrpopper@thekid-pc:~/helloWorld$ play
[info] Loading project definition from /home/mrpopper/helloWorld/project
[info] Set current project to helloWorld (in build file:/home/mrpopper/helloWorld/)
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.1 (using Java 1.7.0_21 and Scala 2.10.0), http://www.playframework.org

 Type "help play" or "license" for more information.
 Type "exit" or use Ctrl+D to leave this console.

[helloWorld] $ 

Como vemos nuestro promp de la terminal cambio, ahora es un promp propio de play para nuestra aplicación. Vamos a escribir el comando run y ver que pasa.
[helloWorld] $ run

[info] Updating {file:/home/mrpopper/helloWorld/}helloWorld...
[info] Resolving org.hibernate.javax.persistence#hibernate-jpa-2.0-api;1.0.1.Fin                                                                                [info] Done updating.                                                        
--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)
Con el comando run ponemos nuestra aplicación a correr, play posee un servidor de aplicaciones embebido. Si entramos a la siguiente dirección http://localhost:9000 veremos la plantilla de bienvenida de play


Ok volvemos a la terminal de play y paramos el servidor con Ctrl+D y volvemos a apretar las teclas Ctrl+D para salir del promp de play y volver a la terminal original. 
Ubicamos el directorio en donde descargamos el Intellij IDEA unos pasos mas atrás, y lo descomprimimos con el siguiente comando y luego entramos al directorio bin del directorio donde se descomprimio:
mrpopper@thekid-pc:~$ tar -xzvf ideaIC-12.1.3.tar.gz
.....
...
..
mrpopper@thekid-pc:~$ cd idea-IC-129.451/bin/
Una vez en ese directorio escribiremos el comando pwd y copiaremos la ruta en el porta papeles
mrpopper@thekid-pc:~/idea-IC-129.451/bin$ pwd
/home/mrpopper/idea-IC-129.451/bin
mrpopper@thekid-pc:~/idea-IC-129.451/bin$
Ahora vamos a crear un lanzador, algo parecido a lo que hicimos unos pasos atras para tener siempre disponible el comando play en nuestro entorno. Pero esta vez sera para nuestro Intellij IDEA, abre una consola y escribe el comando:
mrpopper@thekid-pc:~$ sudo gedit /usr/local/bin/idea
Esto nos abrirá un documento vació en el gedit al cual debemos agregarle las siguientes lineas
#!/bin/bash
/home/mrpopper/idea-IC-129.451/bin/idea.sh
Si se fijan la segunda linea es la ruta que habíamos copiado al porta papeles y le concatenamos /idea.sh, guardamos el documento y cerramos gedit ahora ejecutamos el siguiente comando para asignarles permisos de ejecución al archivo que acabamos de crear
mrpopper@thekid-pc:~$ sudo chmod +x /usr/local/bin/idea
Ahora para ejecutar Intellij IDEA abre el lanzador de comando con Alt+F2 (Alt Izquierdo) y escribe idea y Enter.

Para terminar con el IDE una vez que termine de cargar y nos vamos al menú File > Settings > Plugins > Install jetBrains plugin y buscamos el plugin de scala y lo instalamos.

Una vez instalado el plugin de scala language, volvemos a una terminal y nos vamos al directorio de nuestro proyecto helloWorld y ejecutamos el comando play luego cuando aparezca el promp de play ejecutamos el comando idea y luego el comando run así:



mrpopper@thekid-pc:~/helloWorld$ play
[info] Loading project definition from /home/mrpopper/helloWorld/project
[info] Set current project to helloWorld (in build file:/home/mrpopper/helloWorld/)
       _            _
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/

play! 2.1.1 (using Java 1.7.0_21 and Scala 2.10.0), http://www.playframework.org

 Type "help play" or "license" for more information.
 Type "exit" or use Ctrl+D to leave this console.

[helloWorld] $ idea
...
..
.
[helloWorld] $ run
--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)

Vamos al IDEA nuevamente y menú File > Open... y buscamos el proyecto helloWorld y lo abrimos. Una vez cargado el proyecto vamos a editarlo un poco, buscamos la carpeta app y la expandimos, expandimos el paquete views y ubicamos el archivo index.scala.html y borramos la linea @play20.welcome(message, style = "Java") esto es para remover la plantilla de bienvenida y agregamos <h1>@message</h1>


Luego en el paquete controllers abrimos la clase Application y reemplacen "Your new application is ready." por "Hello World!"
package controllers;

import play.*;
import play.mvc.*;

import views.html.*;

public class Application extends Controller {
  
    public static Result index() {
        return ok(index.render("Hello World!"));
    }
  
}
Guarden y entren aquí http://localhost:9000 y ahí tienen su épico Hello World!


NOTA: La finalidad de este tutorial es solo preparar el entorno  necesario para trabajar con play! framework, no abarca detalles sobre las funcionalidades del framework o su anatomía.  En un próximo tutorial entraremos en mas detalles.
Espero les haya sido de utilidad.
Saludos

Publicado en , , , , , , , , , , , , , , , , , , , | Deja un Comentario

Cras credo, hodie nihil



Ese titulo hace alusión a un articulo que leí una vez, que tuvo tanto significado para mi que provoco que unas semanas después de haberlo leído cerrara mi cuenta en Facebook y me pusiera a hacer cosas mas productivas como por ejemplo este blog.

No es que aquel articulo me haya hablado sobre alguna conspiración del gobierno estadounidense y Mark Zuckerberg para irrumpir en nuestra privacidad no, nada de eso, eso ya todos los sabíamos.
El articulo lo que hizo fue que por primera vez en mi vida conociera la definición de la acción que inconscientemente muchos de nosotros hacemos todos los días pero no nos damos cuenta. 
Esa acción que muchos hacemos a diario se llama procrastinar y simplemente es la acción o hábito de postergar actividades o situaciones que deben atenderse, sustituyéndolas por otras situaciones más irrelevantes y agradables. 

Cuantos de nosotros no hemos estado en la situación donde debemos hacer algo y las excusas aparecen e inexplicablemente parecen tener sentido, como por ejemplo: "es que me duele el cuello, eso mejor lo puedo hacer mañana". 

Procrastinar viene del ingles Procrastinate que a su vez deriva del latín procrastinare, procrastinator y procrastinatio. Están formados por el prefijo pro, "hacia" y el adverbio cras, "mañana".
En el siglo III, en Capadocia, un comandante romano se sintió atraído por la fe cristiana y (diabólicamente, según la leyenda piadosa) era desviado de la conversión por un cuervo que graznaba cras cras, que es la voz del cuervo (de donde viene “crascitar”), como si le dijera: “Déjalo para mañana”. Pero el centurión, muy ejecutivamente, aplastó al cuervo respondiéndole: hodie hodie (hoy hoy). Se convirtió al cristianismo, fue martirizado y se venera el 19 de abril como san Expedito.
No es que quiera hacer una analogía donde el cuervo es Facebook y el Blog el cristianismo. Pero en realidad no esta mal la comparación ya que por mucho mucho tiempo quise crear un Blog y por mucho tiempo perdí tiempo valga la redundancia, en Facebook.
Así que ya con Facebook aplastado yo digo hodie hodie.




Publicado en , , , , , , , , , , , | Deja un Comentario
Con la tecnología de Blogger.

Buscar

Swedish Greys - a WordPress theme from Nordic Themepark. Converted by LiteThemes.com.