miércoles, 29 de julio de 2009

La Vida

Palabras maravillosas de William Shakespeare

Después de algún tiempo aprenderás la diferencia entre dar la mano y socorrer a un alma, y aprenderás que amar no significa apoyarse, y que compañía no siempre significa seguridad.

Comenzarás a aprender que los besos no son contratos, ni regalos, ni promesas... comenzarás a aceptar tus derrotas con la cabeza erguida y la mirada al frente, con la gracia de un niño y no con la tristeza de un adulto y aprenderás a construir hoy todos tus caminos, porque el terreno de mañana es incierto para los proyectos y el futuro tiene la costumbre de caer en el vacío.

Después de un tiempo aprenderás que el Sol quema si te expones demasiado... aceptarás incluso que las personas buenas podrían herirte alguna vez y necesitarás perdonarlas...

Aprenderás que hablar puede aliviar los dolores del alma... descubrirás que lleva años construir confianza y apenas unos segundos destruirla y que tu también podrás hacer cosas de las que te arrepentirás el resto de la vida.

Aprenderás que las nuevas amistades continúan creciendo a pesar de las distancias, y que no importa que es lo que tienes, sino a quien tienes en la vida, y que los buenos amigos son la familia que nos permitimos elegir.

Aprenderás que no tenemos que cambiar de amigos, si estamos dispuestos a aceptar que los amigos cambian.

Te darás cuenta que puedes pasar buenos momentos con tu mejor amigo haciendo cualquier cosa o simplemente nada, sólo por el placer de disfrutar su compañía.

Descubrirás que muchas veces tomas a la ligera a las personas que más te importan y por eso siempre debemos decir a esas personas que las amamos, porque nunca estaremos seguros de cuando sea la última vez que las veamos.

Aprenderás que las circunstancias y el ambiente que nos rodea tienen influencia sobre nosotros, pero nosotros somos los únicos responsables de lo que hacemos.

Comenzarás a aprender que no nos debemos comparar con los demás, salvo cuando queramos imitarlos para mejorar.

Descubrirás que se lleva mucho tiempo para llegar a ser la persona que quieres ser, y que el tiempo es corto.

Aprenderás que no importa a donde llegaste, sino a donde te diriges y si no lo sabes cualquier lugar sirve...

Aprenderás que si no controlas tus actos ellos te controlaran y que ser flexible no significa ser débil o no tener personalidad, porque no importa cuán delicada y frágil sea una situación: siempre existen dos lados.

Aprenderás que héroes son las personas que hicieron lo que era necesario, enfrentando las consecuencias...

Aprenderás que la paciencia requiere mucha práctica.

Descubrirás que algunas veces, la persona que esperas que te patee cuando te caes, tal vez sea una de las pocas que te ayuden a levantarte. Madurar tiene más que ver con lo que has aprendido de las experiencias, que con los años vividos.

Aprenderás que hay mucho más de tus padres en ti de lo que supones.

Aprenderás que nunca se debe decir a un niño que sus sueños son tonterías, porque pocas cosas son tan humillantes y sería una tragedia si lo creyese porque le estarás quitando la esperanza.

Aprenderás que cuando sientes rabia, tienes derecho a tenerla, pero eso no te da el derecho de ser cruel.

Descubrirás que sólo porque alguien no te ama de la forma que quieres, no significa que no te ame con todo lo que puede, porque hay personas que nos aman, pero que no saben cómo demostrarlo...

No siempre es suficiente ser perdonado por alguien, algunas veces tendrás que aprender a perdonarte a ti mismo.

Aprenderás que con la misma severidad con que juzgas, también serás juzgado y en algún momento condenado.

Aprenderás que no importa en cuantos pedazos tu corazón se partió, el mundo no se detiene para que lo arregles.

Aprenderás que el tiempo no es algo que pueda volver hacia atrás, por lo tanto, debes cultivar tu propio jardín y decorar tu alma, en vez de esperar que alguien te traiga flores.

Entonces y sólo entonces sabrás realmente lo que puedes soportar; que eres fuerte y que podrás ir mucho más lejos de lo que pensabas cuando creías que no se podía más. Es que realmente la vida vale cuando tienes el valor de enfrentarla.

William Shakespeare
Leer más...

lunes, 27 de julio de 2009

Creando una Aplicacion Web Simple usando Base de datos MySql

Ahora vamos a generar una aplicación Web con acceso a bases de datos, es una aplicación simple, y cumple con la función de irnos adentrando en la construcción de Aplicaciones Web más complejas usando J2EE...

A modo de breve reseña, MySQL en un sistema muy popular de administración de bases de datos, de Código Abierto, bastante utilizado en aplicaciones web por su gran velocidad, flexibilidad y escalabilidad. MySQL emplea SQL, o Structured Query Language, para acceder y procesar los datos contenidos en bases de datos.



Como ya estamos hablando de Aplicaciones Web con Java, asumo que el usuario tiene experiencia con la conexion entre Java y MySQL, por lo tanto no nos detendremos a explicar cómo generar una conexión a la Base de datos, para quien no maneje el tema, puede consultar este Tutorial donde se explica con lujo de detalles una conexion a Bases de datos (de varios tipos) a Java. En este caso, tendremos generada la base de datos MySQL llamada MyNewDatabase, la cual deberán crear y registrar en NetBeans.
Las tablas que utilizaremos las pueden ontener desde ifpwafcad.sql Este archivo SQL creará dos tablas, Subject y Counselor, siendo pobladas con datos simples. Si es necesario, descarguen el archivo a su computador, luego ábranlo en NetBeans y ejecútenlo en la base de datos MySQL llamada MyNewDatabase.

Contenidos

Notas:

  • El Conector/Driver JDBC, necesairo para la comunicación entre las platarormas Java y el protocolo de bases de datos de MySQL, está incluido en las versiones 6.x de NetBeans.
  • Si no se la puede para hacer estos simples ejercicios por su cuenta, o simplemente no tiene dedos para el piano y la programación no es lo suyo, puede ver un ejemplo funcional de este tutorial descargando la aplicación de ejemplo.

Planificando la estructura

Una aplicación web simple puede ser diseñada usando una arquitectura de doble capa, en la cual la aplicación se comunica directamente con la fuente de datos usando la API Java Database Connectivity. La solicitud del usuario se envía a la base de datos, y el resultado es enviado directamente de vuelta al usuario. una arquitectura de doble capa es fácilmente mapeada en una configuración cliente-servidor, cuando un navegador del usuario funciona como cliente, y una base de datos remota alcanzable por internet corresponde al servidor.

La plicación que construrán en esta ocasión involucra la creación de dos Páginas JSP. En cada una de ellas, agregarán etiquetas básicas de HTML para implementar una interfaz sencilla, seguidas de etiquetas SQL provistas por la tecnología JSTL con el objetivo de consultar la base de datos. Consideren el siguiente escenario Cliente-Seridor.

Diagrama que describe la estructura de una aplicación web de doble capa

La página principal (index.jsp) se presenta al usuario con un simple formulario HTML. Cuando el cliente hace una solicitud a la página index.jsp, el código JSP contenido en su interior es parseado, y los datos de la tabla Subject es reunido, agregado a la página, y enviado hacia el cliente. El usuario marca una selección en el formulario HTML presentado y lo envía, lo que genera una solicitud para response.jsp. Cuando response.jsp es parseada, los datos de ambas tablas (Subject y Counselor) es reunido e insertado en la página.
Finalmente, la página es retornada al cliente y el usuario logra ver datos basados en su selección.

Creando un nuevo Proyecto

Con el objetivode implementar el escenario descrito anteriormente, desarrollaremos una aplicación simple para una organización ficticia llamada IFPWAFCAD, o The International Former Professional Wrestlers' Association for Counseling and Development. La aplicación habilitará al usuario para elegir algún motivo de asesoría desde un drop-down (index.jsp), luego se obtendrá la data desde la base de datos MySQL y se retornará la información al usuario (response.jsp).

index.jsp

index.jsp displayed in a browser

response.jsp

response.jsp displayed in a browser

Creando un nuevo proyecto en el IDE:

  1. Para generar un Proyecto nuevo, sigan las instrucciones descritas acá, teneiendo precaución con no usar el mismo nombre del proyecto.
  2. En Nombre del Proyecto, ingresen IFPWAFCAD.
  3. Avanzando por el asistente, dejen las opciones por defecto. Especifiquen el servidor a utilzar (ojalá GlassFish) desde el drop-down Servidores. No seleccionen ningún Framework (después lo veremos). Al llegar al final, bueh... obviamente cllick en Finalizar.
    El IDE crea un template de proyecto para la aplicación completa, y abre una página JSP vacía (index.jsp) en el editor de código. index.jsp sirve como la página de bienvenida a la aplicación. El nuevo proyecto está estructurado de acuerdo a las orientaciones de Sun Java BluePrints.

Preparando la Interfáz

Comenzamos por la preparación de una interfaz simple para las dos páginas. Ambas, index.jsp y response.jsp implementan una tabla HTML para mostrar datos con un modelo determinado.index.jsp también requiere un formulario HTML que incluya un Drop-Down list.

index.jsp

Asegurate que index.jsp esté abierto en el editor de código. Si no lo está, debes hacer doble click sobre index.jsp desde IFPWAFCAD > Páginas Web en la ventana Proyectos.

  1. En el editor de código, cambia el texto entre las etiquetas <title> a IFPWAFCAD Homepage.
  2. Ahora cambia el código entre las etiquetas <h1> (<h2> si estás usando NetBeans 6.0 o 6.1) a Welcome to IFPWAFCAD, the International Former Professional Wrestlers' Association for Counseling and Development!.
  3. Abre la paleta eligiendo Ventana > Paleta (Ctrl-Shift-8; ⌘-Shift-8 en Mac) desde el menú principal. Posa el puntero del mouse sobre el ícono Tabla desde la categoría HTML y fíjate lo que mustra el trozo de código que aparece
    Paleta mostrando un trozo de código cuando se posan sobre un item
    Click sobre el ícono, arrastra y suelta la tabla dentro de la página en el editor hasta un punto después de las etiquetas <h1> (o <h2> ). En el dialogo Insertar Tabla, especifíca los siguientes valores y clickea en OK:

    • Filas: 2
    • Columnas: 1
    • Tamaño del Borde: 0
    el código HTML de una tabla se ha generado y agregado a tu página.
  4. Agrega el siguiente contenido a la cabecera de la tabla y la celda de la primera fila de la tabla (Nuevos contenidos en Negrita (bold)):
    <table border="0">
    <thead>
    <tr> <th>IFPWAFCAD offers expert counseling in a wide range of fields.</th>

    </tr>
    </thead>
    <tbody>
    <tr>
    <td>To view the contact details of an IFPWAFCAD certified former
    professional wrestler in your area, select a subject below:

    </td>

    </tr>
  5. Para la última fila de la tabla, arrastra y suelta un formulario HTML dentro de la página, directamente entreel segundo par de etiquetas <td>. En la caja de texto Acción escribe response.jsp, luego pincha OK.
  6. Escribe el siguiente texto entre las etiquetas <form> del formulario que acabas de crear: <strong>Select a subject:</strong>
  7. Arrastra y suelta una Lista desplegable (drop-down list) desde la Paleta hasta un punto justo después del texto recién añadido. En el dialogo Insertar Lista Desplegable, escribe subject_id para el campo Nombre y pincha OK. Fíjate que el trozo de código para el drop-down se añadió a tu página.

    El número de opciones para el drop-down en estos momentos no importa. Posteriormente verémos que agregando etiquetas JSTL se generarán dinámicamente las opciones, basadas en la data reunida desde la tabla Subject en la base de datos.
  8. Agrega un botón de envío (submit) al formulario arrastrando un botón desde la paleta hasta un punto justos después del drop-down que acabas de añadir. Ingresa submit para ambos campos, Etiqueta y Nombre, luego presiona OK.
  9. Para darle formato a tu código, presiona un click derecho y elije Formato (Alt-Shift-F; Ctrl-Shift-F en Mac). Tu código será automáticamente formateado, y debería verse similar al siguiente:
    <body>
    <h2>Welcome to <strong>IFPWAFCAD</strong>, the International Former
    Professional Wrestlers' Association for Counseling and Development!
    </h2>

    <table border="0">

    <thead>
    <tr>
    <th>IFPWAFCAD offers expert counseling in a wide range of fields.</th>
    </tr>
    </thead>

    <tbody>
    <tr>
    <td>To view the contact details of an IFPWAFCAD certified former
    professional wrestler in your area, select a subject below:
    </td>
    </tr>
    <tr>

    <td>
    <form action="response.jsp">
    <strong>Select a subject:</strong>
    <select name="subject_id">
    <option></option>

    </select>
    <input type="submit" value="submit" name="submit" />
    </form>

    </td>
    </tr>
    </tbody>
    </table>
    </body>
    Para ver esta página en un navegador, haga click derecho en el editor de código y elija Ejecutar Archivo (Shift-F6). Cuando se hace esto, la página JSP es automáticamente compilada e implementada en el servidor. El IDE abre tu explorador por defecto para mostrar la página desde su ubicación.
    index.jsp vista en un navegador

response.jsp

Para preparar la interfáz de response.jsp debes primero crear el archivo en tu aplicación. Debes tener en cuenta que la mayoría del contenido que mostrará la página será generado sinámicamente usando la tecnología JSP. Por lo tanto, en los siguientes pasos se agregarán placeholders que más tarde sustituirás por código JSP.

  1. Click derecho en el proyecto IFPWAFCAD y elige Nuevo > JSP. Se abrirá el dialogo Nuevo Archivo.
  2. En el campo Nombre, ingresa response.
  3. Acepta nuevamente las configuraciones por defecto y presiona Finalizar. Un esquema de archivo response.jsp es generado y abierto en el editor. Un nuevo nodo JSP es mostrado en la ventana de proyectos.
    response.jsp aparece en la ventana de Proyectos
  4. En el editor de código, cambia el título a IFPWAFCAD - {placeholder}.
  5. Elimina la línea <h1>Hello World!</h1> (o <h1>JSP Page</h1> si estas trabajando en NetBeans 6.0 o 6.1) entre las etiquetas <body>, luego copia y pega la siguiente tabla HTML dentro del cuerpo de la página:
    <table border="0">
    <thead>
    <tr>
    <th colspan="2">{placeholder}</th>

    </tr>
    </thead>
    <tbody>
    <tr>
    <td><strong>Description: </strong></td>

    <td><span style=" font-style:italic;">{placeholder}</span></td>
    </tr>
    <tr>
    <td><strong>Counselor: </strong></td>

    <td>{placeholder}
    <br>
    <span style=" font-style:italic;">
    member since: {placeholder}</span>
    </td>
    </tr>

    <tr>
    <td><strong>Contact Details: </strong></td>
    <td><strong>email: </strong>
    <a href="mailto:{placeholder}">{placeholder}</a>

    <br><strong>phone: </strong>{placeholder}
    </td>
    </tr>
    </tbody>
    </table>
    Para ver esta página en un navegador, haga click derecho en el editor de código y elija Ejecutar Archivo (Shift-F6). Cuando se hace esto, la página JSP es automáticamente compilada e implementada en el servidor. El IDE abre tu explorador por defecto para mostrar la página desde su ubicación. Tu página response.jsp debería verse similar a la siguiente:
    response.jsp vista en un navegador

style.css

Crear una hoja de estilo simple para mejorarar el aspecto de la interfáz.

  1. Click derecho en el Proyecto IFPWAFCAD en la ventana de proyectos y elije Nuevo > Otros. En el Asistente para nuevos Archivos Asegurate de tener seleccionado Web dentro de Categorías, Luego elije Hoja de estilo en Cascada (Cascading Style Sheet) y presiona Siguiente.
  2. Escribe style para el Nombre del Archivo CSS y presiona Finalizar. El IDE creará un archivo css vacío y lo ubicará en el mismo lugar que index.jsp and response.jsp.
  3. En el editor de código, agrega el siguiente contrenido a tu archivo style.css:
    body {
    font-family: Verdana, Arial, sans-serif;
    font-size: smaller;
    padding: 50px;
    color: #555;
    }

    h1, h2 {
    text-align: left;
    letter-spacing: 6px;
    font-size: 1.4em;
    color: #be7429;
    font-weight: normal;
    width: 450px;
    }

    table {
    width: 580px;
    padding: 10px;
    background-color: #c5e7e0;
    }

    th {
    text-align: left;
    border-bottom: 1px solid;
    }

    td {
    padding: 10px;
    }

    a:link {
    color: #be7429;
    font-weight: normal;
    text-decoration: none;
    }

    a:link:hover {
    color: #be7429;
    font-weight: normal;
    text-decoration: underline;
    }
  4. Vincula tu hja de estilos a index.jsp y a response.jsp:

    En ambas páginas agrega la siguiente línea entre las etiquetas <head>: <link rel="stylesheet" type="text/css" href="style.css">

Este documento asume que tienes conocimientos de CSS, sabes como usarlos, y cómo afectarán a los elementos HTML correspondientes en tus páginas index.jsp y response.jsp.

Cuando trabajes con CSS en el IDE, puedes aprovechar las ventajas del Generador de estilos CSS y CSS Preview. Juntas, ambas herramientas proveen un soporte extenso en la creación de reglas de estilos y elementos de visualización cuando se acompañan de atributos de estilos.

Por Ejemplo, ubica el cursor entre la regla h1, h2 en style.css, luego abre la vista previa de CSS (CSS Preview - Window > Other > CSS Preview):


CSS Preview demuestra cómo un elemento se generará en el navegador. También debes tener en cuenta que la vista previa se actualiza automáticamente cuando haces cambios en la regla, entregandote una representación textual en tiempo real del elemento de estilo desde el IDE.



Leer más...