martes, 20 de septiembre de 2011

Creando un proyecto JavaServer Faces 2 fácilmente en Eclipse

(Nota: Esto está orientado para aquellos que no conocen nada acerca de como configurar un proyecto desde cero en JavaServer Faces en Eclipse.)

Para aquellos que se tenga que conformar programando en Eclipse, ya sea porque les enseñan en esa IDE, lo prefieran a otras o simplemente porque no conozcan otra IDE (como es mi caso), en esta ocasión les mostrare una manera sencilla de crear proyectos base con JSF 2. Para ello, utilizaré Project Facets de Eclipse que en pocas palabras son como plantillas de proyectos que ya dejan todo configurado (bajar bibliotecas JAR, configurar el web.xml, añadir el Face-config.xml, etc) .
Por otro lado, también se puede configurar para JPA.

Así, casi lo olvido apuntar, JavaServer Faces (JSF) es un Framework de J2EE (Java para Web) que como todo Framework viene a facilitar alguna parte de  programar, en este caso la creación de interfaces (Ajax incluido) y la parte de Controller. Personalmente, me gusta más que Struts, lo veo más entendible y practico. En especial, la parte de Ajax que JSF lo maneja muy bien.
JPA es un Framework para manejar la parte de Datos (acceso a una Base de Datos, insertar, modificar, etc). Probablemente hallan escuchado de Hybernate, bueno, pues es casi lo mismo (salvo algunos detalles).

Pasos:
  1. Crear un nuevo Dynamic Web Project (si por asares del destino no esta en el menú de la imagen, denle a Others y busquenlo).
  2. Luego en la pantalla de "New Dynamic Project" denle click a "Modify" en la sección de "Configuration".
  3. Les aparecerá la ventana de Project Facets, en ella añaden los Frameworks que desean usar, en este caso pondré JSF 2.
  4. Denle click a Ok
  5. Volverán a la ventana de "New Dynamic Project" y denle "Next" y luego "Next" y, valga la redundancia, "Next" otra vez.
  6. Ahora estarán en la pantalla de JSF Capabilities donde deberán añadir las bibliotecas (JAR) de JSF, si seleccionarón JPA, también les pedirá las de JPA.
  7. Para facilitar las cosas, denle Click al boton con icono de Diskette y una flecha.
  8. Les mostrará una ventana ("Download Lybrary") y seleccionen uno de las dos implementaciones de JSF. Les mostrará dos: el de Oracle (Mojarra) y el de Apache Fundation. Si se preguntan en que se diferencian, es que alguno que otra Biblioteca (digamos, MyFaces, Richfaces, Primefaces, etc) no funciona en el otro, la verdad no recuerdo exactamente cual no funciona. En lo demás, son igualitos.
  9. Denle a aceptar vender tu alma. Y descargar.
  10. Una vez descargado se añadirá a la lista de bibliotecas disponibles de JSF. Denle a Finish y eso es todo. Tendrán configurado las bibliotecas (JAR), el Web.xml y el Faces-Config. 
New Dynamic Web Project
Configuración del Dynamic Web Project
Project Facets
Ventana de selección de bibliotecas
Seleccionamos las implementaciones que deseemos.
PD: Utilizo Eclipse Indigo (3.7), pero también funciona en Helios (3.6), no sé si en Galileo funcione. Eso sí, probablemente si las versiones sean menos actuales no encontrarán todas las plantillas (creo que en Galileo no hay el JSF2).



jueves, 15 de septiembre de 2011

Eliminando Application en AppEngine

Mientras realizaba el anterior post, me di cuenta que no tenía ni idea de como eliminar una Application en AppEngine, pero una rápida búsqueda en Google y encuentras la solución.

Pasos:
  1. Entrar al Dashboard de la Application que quieren dar de baja.
  2. Seleccionar la pestaña "Application settings".
  3. Ir hasta el final de la página y encontrarán el botón "Disable Application", denle click.
  4. Les volverá a pedir una confirmación, denle click a "Disable Application Now".
  5. La aplicación ha sido deshabilitada, pero aun no ha sido eliminada. Denle click a "Request Permanent Deletion". Advertencia: como bien dice el cartel, pasadas las 48 horas se eliminara definitivamente la aplicación y con ella la data y el dominio.
PD: Si les fue útil, denle +1, gracias de antemano.

Publicar proyecto AppEngine a la nube

Este es el tercer artículo de AppEngine y recién me he fijado que no he mencionado exactamente qué es. Dado que hay bastante información en la web, resumiré diciendo que es un host de aplicaciones gratuito proveída por Google para desarrollar páginas webs en Java o Python con limitaciones de ancho de banda, uso de CPU, almacenamiento de disco, etc. También posee una versión de pago que mejora esas limitaciones.

En mi corta experiencia con este servicio lo que menos me gusta es la base de datos no relacional (BigTable), probablemente porque siempre he usado las relacionales. Por otro lado, escribir el código puede variar bastante, como es el caso de JPA que AppEngine usa como implementación DataNucleus.


El artículo se dividirá en dos partes: Primero la parte en el administrador de la nube de AppEngine para crear la ID de la aplicación, además de unas nociones básicas de su Panel de Configuraciones. Segundo, la publicación del proyecto del artículo anterior.

AppEngine

Crear cuenta AppEngine
(Esta parte lo estoy haciendo de memoria, probablemente no se ajuste a la realidad en algunos pasos.)
El primer paso básico es registrarse aqui. Me registre con mi cuenta de gmail, no se si acepta otras cuentas como Live o Yahoo. Luego de registrar todos tus datos, te pedirá un número de celular para enviarte el código vía SMS que deberás escribir. Pueden reintentar las veces que quieran para que les envien el SMS, al menos asi fue cuando lo intente yo, creo que me demoré 40 minutos intentando, pero también añadir que en cada uno use una forma diferente de escribir mi número de celular, por lo que puede que en realidad solo le tomara 5 minutos (más o menos el tiempo desde mi último intento.)
Si mal no recuerdo, una vez finalizado el registro, les pedirá la creación de su primera aplicación de AppEngine. Solo les pedirá nombre de dominio (que no debe estar en uso y tendrá la coletilla de appspot.com) y el titulo de la aplicación que puede ser cualquiera.
Creando Aplication (ID)

Una vez registrado, acceder a la cuenta y verán la lista de aplicaciones de su cuenta, pueden crear hasta diez aplicaciones en la versión gratuita. La lista muestra el nombre de la aplicación (ID), el titulo de la pagina web (lo que se muestra en el titulo del navegador), el storage scheme (ni idea u.u) y la versión actual de la aplicación (más adelanto paso a detallar este punto).

Lista de Proyectos
Si me he equivocado en eso de que te pide registrar tu primera aplicación de AppEngine, en este módulo podrán crearla haciendo click en "Create Application".

Muy bien, hora de acceder al panel de la aplicación en la nube. Haz click en la aplicación que deseas acceder al panel. Solo explicare los que conozco y considero importantes.

En la primera pestaña, el Dashboard, podrás observar el historial de consumos de recursos.
Pestaña Dashboard
En la pestaña Logs, podrás observar el historial de mensajes de la aplicación (errores, warnings, etc). De vital importancia si no tienes idea de porque no corre la aplicación creada.
Pestaña Logs
En la pestaña Versions, encontraras las diversas versiones lanzadas de tu aplicación. Si te preguntas qué quiere decir, significa que cuando publicas un proyecto bajo esa aplicación puedes seleccionar la versión del mismo, en caso de que está no sirviera puedes volver a la anterior versión sin problemas. Por cierto, si tu publicas una aplicación con un número de versión mayor al actual, no se actualiza solo. Tu tienes que entrar a este módulo y configurarlo.
Pestaña Versions
En la pestaña Permissions, puedes dar privilegios a otros usuarios en la aplicación (Owner, Developer, Viewer). No necesitan haber creado cuenta en AppEngine, aunque sí necesitan una cuenta de Google (gmail) si mal no recuerdo.
Pestaña Permissions
Por último, estaría la pestaña Data Viewer con el que puedes acceder a la base de datos de tu aplicación, eso sí, no se usarlo aún, por lo que no hare mayor reseña del mismo.

Pestaña Datastore Viewer


Publicar Proyecto

Una vez creado la aplicación (ID) pasamos a publicarlo.
Regresamos a Eclipse, hacemos click derecho sobre la carpeta del proyecto Google>Deploy to AppEngine.
Publicar en AppEngine
Les mostrará una ventana, que pedirá sus datos de la cuenta que tiene permisos sobre la aplicación.
Acceder a Cuenta Google
Luego, les pedirá autentifiquen, una vez más, el acceso, denle click a "Grant Access".
Otra verificación
Después, les mostrará la ventana de Deploy que pide cual de los proyectos es el que se desea Deployar/Publicar, por defecto, debería ya estar seleccionado el proyecto al que le hicimos click.
Ventana de Deploy
La primera vez, les dirá que no tiene asignado una application ID, entonces, denle click a "App Engine project settings...".
Les mostrará una ventana que pide la Application ID y la version del mismo (debe ser mayor a 0). Ingresé la Application ID previamente creada en el Dashboard de AppEngine y le dan click a "OK".
Configración del Aplicaction ID y la versión.
Por último, regresarán a la ventana de Deploy, esta vez sin mensajes de error, y le dan click a "Deploy".

Si lo habeis realizado correctamente, cuando entren a la dirección URL podrán ver su "Hola Mundo".

PD: Si el artículo te fue de utilidad, dale un +1.

Creación de un proyecto AppEngine

En primer lugar, debiste haber seguido los pasos de configuración del eclipse apuntados en el anterior post. A continuación los pasos a seguir.
Pasos 2,3,4 y 5


  1. Seleccionar File>New>Web Aplition Project. Si por asares del destino, no te aparece esta opción selecciona "other..." y buscar el tipo de proyecto.
  2. Te aparecera una ventana para la creación del proyecto.
  3. Dale un nombre al projecto.
  4. Luego un package.
  5. Ahora, si es que en anterior post no seleccionaste GWT, deseleccionalo de la ventana (yo no lo seleccionare).
  6. Luego denle click a "Finalizar".
  7. Les creara un proyecto con una estructura muy similar a cualquier otro proyecto Java 2 EE, dependiendo si seleccionaste Google Web Toolkit o no, les creara una estructuración u otra. (Si lo deseleccionan, les creara un "Hola mundo" con un Servlet de prueba).
  8. Paso 7
  9. Pueden ejecutar el proyecto de manera local haciendo click derecho sobre la carpeta del proyecto Run as>Web Aplication.
  10. Paso 8
  11. En la consola les mostrara una dirección url similar o igual a este: http://localhost:8888/ . Accedan y ahi esta vuestra prueba corriendo localmente.
Paso 9
En el siguiente post, explicare como publicar el proyecto en la nube.

PD: Si el artículo te fue de utilidad dale +1, gracias de antemano.

Configurando el eclipse para App Engine

Como comenté en el anterior post, programaré sobre App Engine, debido a que busco un servidor gratuito para realizar mis pruebas, se que existen otros, pero domino solamente Java y ASP .Net (para este último existe Azure, pero solo te dan 30 días de prueba). Ya más adelante probare algo de PHP y Python, para programar en web.

Para programar en App Engine se necesita la IDE Eclipse (no se si se puede programar en otra IDE, pero en esta estoy acostumbrado a programar en Java).


Pasos:


Paso 4
  1. Descargar Eclipse IDE for Java EE Developers (yo probare con la versión 3.7 - Indigo, solo por probar, ya anteriormente he programado en la versión 3.6 - Helios "sin problemas".)
  2. Descomprimir el zip descargado.
  3. Ejecutar Eclipse y seleccionar un Workspace (carpeta donde se ubicaran tus proyectos, asegurarse de que esté vacía para evitarse problemas).
  4. Ahora seleccionar el menú Help>Install New Software.
  5. Denle click en el botón "Add", denle un nombre (Google por ejemplo) y escriban la siguiente dirección: http://dl.google.com/eclipse/plugin/3.7
  6. Les cargara una lista de checks de qué desean instalar, los unicos que creo que deberian instalar son Google Plugin for Eclipse y SDKs> Google App Engine Java SDK x.x.x. Yo seleccionare todos menos el Google App Engine Tools for Android, porque en mi cabeza pienso algun dia probar las otras herramientas, quién sabe... 
  7. Denle next, next, accept terms (zzZZzz, etc, etc), finish.
  8. Pasos 5 y 6
  9. Comenzará a descargar y se demorará un buen rato (dependiendo de vuestro ancho de banda y hardware). 
  10. En algún punto te pedirá que le des una autorización (al menos, a mi sí me ocurrió, dale Ok).
  11. Te pedirá reiniciar, dale que sí. Y ya está, eclipse configurado para App Engine.

En el siguiente post, realizare un proyecto de prueba.


PD: Si el artículo te fue de utilidad dale +1, gracias de antemano.

Primer post y un reto personal


Últimamente, me he sentido algo culpable respecto a no hacer prácticamente nada de programación, bueno, en realidad, a no hacer nada en general. Por lo que me he decidido abrir un blog donde relatare mis avances en un proyecto, aun no se de que exactamente, pero al primero que me dedique iré subiendo mis avances. Entre los proyectos en mi cabeza, todos van dirijidos a programación web y específicamente a HTML5, javascript, java y python (esto debido a que programare sobre la plataforma Google App Engine).

Bueno, ahora a comentar en que proyectos estoy pensando.
 - Un juego estilo Magical Drop (Neo-Geo) escrito sobre HTML5 y javascript.
 - Un control javascript que permita crear un chat similar a Hotmail, Facebook o Gmail.

Por ahora, esos son los que se me pasan por la cabeza, sinceramente los veo poco realistas porque soy un pesimista y nunca he hecho algo similar en el pasado, pero como no se me pasa por la cabeza algo más realista.... Pensandolo bien, mejor comienzo con un proyecto más sencillo como un sudoku en javascript/HTML5, solamente para agarrar algo de cancha.

Espero que esto no termine como casi todas las veces que he intentado iniciar un proyecto por mi cuenta (solo para aprender): lo dejo tirado.