miércoles, 17 de diciembre de 2008
Design Patterns: Visitor (Visitante)
Es efectiva para estructuras con objetos de tipo heterogéneo, sobre los que pretendemos aplicar una nueva funcionalidad.
Usando este patrón nos evitamos "contaminar" las clases de los elementos y preguntar por el tipo de ellos (casting).
En su esquema estructural se concentra la funcionalidad en el Visitante, que implementará métodos visit() para cada tipo de elemento.
Cada elemento permitiría su visita con llamadas a métodos accept().
¿Queréis saber cómo se produce tal diálogo?
Nos vemos en el seminario!
martes, 16 de diciembre de 2008
Apache Tapestry
Otra característica importante de Tapestry es el uso de plantillas HTML. En Tapestry cada página es una plantilla HTML que contiene etiquetas HTML amigables para el navegador. Al contrario que las páginas JSP, JSTL o JSF, crear páginas Tapestry es relativamente fácil utilizando herramientas de diseño Web comunes, y puede previsualizarlas en un navegador.
Tapestry esta bajo la licencia de Apache Software 2.0. Se caracteriza por ser fácilmente integrable con cualquier tipo de Back-End, incluyendo J2EE, Spring…
Tapestry está organizado en torno a cuatro principios clave:
- Simplicidad: las aplicaciones web no debe complejas.
- Uniformidad: Lo que funciona en pequeñas aplicaciones deben funcionar en grandes aplicaciones. Diferentes desarrolladores deben encontrar soluciones similares a problemas similares.
- Eficiencia: Las solicitudes deberán ser eficiente y escalable.
- Feedback: Cuando las cosas van mal, el marco no debe ponerse en el camino, en realidad, debería servir de diagnóstico.
Estos cuatro principios de unidad se pueden resumir en: La opción más simple debe ser la elección correcta.
domingo, 14 de diciembre de 2008
Nuestros seminarios 2008
Seminario de XML y SAX
Este seminario pretende dar unas nociones básicas de todos los API´s que actualmente se manejan en Java para manipular y procesar documentos XML y como no, prestando especial atención al API de SAX.
Es fundamental conocer conceptos básicos de XML, para poder abordar con garantías de éxito desarrollos sobre otras tecnologías tan habituales como son los WebServices, Ajax, SOAP y el manejo de muchos estándares que utilizan Schemas como lenguaje para definirlos, sirva de ejemplo el seminario que nos dio el pasado año Ivan con su Batik
Así que oiremos APIs como: SAX, DOM, JAXP, JDOM, Stax. Parsers: Xerces, XML4J, Crimson, Oracle XML Parser, y MSXML (de Microsoft). Y algunas cosas más.
En fin algo que parece sencillo pero que tiene un montón de siglas, APIs, componentes, tecnologías, productos y frameworks. Espero que os pueda aclarar algo en esta jungla de siglas.
DNM
jueves, 11 de diciembre de 2008
Seminario Cocoon
Ventajas de este tipo de publicación:
- Separación limpia entre contenido y presentación.
- Permite separar claramente los papeles del programador y el diseñador.
- Proporciona una mejora muy notable del mantenimiento: Se puede realizar un cambio radical de imagen de todo un site web con tan solo modificar las hojas XSL y sin tocar ni una sola línea de código.
- A partir de un solo documento XML con el contenido, se pueden obtener páginas HTML para su presentación web, páginas WML para dispositivos WAP, documentos PDF para imprimir, etc.
- Aunque no hay ningún estándar que regule como debe ser un sistema de publicación si que está basado en estándares con mucha fuerza en el mercado, por lo que es más sencillo pasar de usar uno a usar otro.
- Es compatible con el resto de tecnologías web como servlets, JSPs...
martes, 9 de diciembre de 2008
Seminario Velocity
Dentro del mundo de la programación Web está extendido en todos los desarrollos de aplicaciones la utilización del MVC(Model View Controller).Una aproximación más del esfuerzo para separar el trabajo de un programador Web del de un diseñador Web dentro de este patrón es la utilización de Plantillas.Velocity es un motor de plantillas que mediante su lenguaje llamado VTL inserta contenido dinámico en la parte de la presentación de la aplicación.
Como ventaja a priori que puede tener frente a la utilización de JSP tenemos la posibilidad de separar la parte HTML y el código Java de manera completa, ya que en el caso de JSP podemos incorporar todo el código Java que queramos,cosa no muy recomendable.Como otras utilidades tenemos la generación de informes,envio de correos,etc.
Desventaja,el uso extendido de JSP y la industria que lo respalda que hace difícil la competencia.
Espero con este artículo mostrar que existen alternativas a los JSPs que quizás puedan ser interesantes.
PD:Ahora soy un G4, espero poder seguir siendo bienvenido en este blog 'G5' ;-)
jueves, 31 de julio de 2008
El estrés en el trabajo
Un saludo
DNM
jueves, 19 de junio de 2008
GRID Computing una realidad en el mundo científico
Que lo disfrutéis. Prohibido preguntar qué son los Hadrones ;-)
DNM
viernes, 13 de junio de 2008
Incrementando la memoria en los porcesos ANT
- Crear la variable de entorno ANT_OPTS
- Asingnarle la memoria deseada como por ejemplo -Xms256M -Xmx512M, que se corresponde con una reserva inicial de 256MB y una máxima de 512MB
Espero que sea de utilidad
DNM
lunes, 26 de mayo de 2008
Caminando hacia un estandar para el Etiquetado del software en el CVS del G5
Actualmente nuestra nomenclatura es la siguiente.
V_XX_XX_XXXX
Un ejemplo sería v_00_05_00M1. La descripción de cada uno de los caractéres y su modificación es la siguiente:
- Los dos primeros dígitos para la identificación de la versión principal, estos digitos se incrementan cuando:
- Hay un cambio importante en la arquitectura de la plataforma. Es decir del core o capas generales de la arquitectura de la plataforma, Servidor de aplicaciones o Base de Datos.
- Hay un incremento significativo de funcionalidades que cubre la plataforma. Normalmente estará asociado a incorporación de nuevas Capacidades o evoluciones importantes de las ya implementadas.
- Evolución en JDKs y APIs de JEE.
- Los dos siguientes digitos designan evoluciones moderadas para una versión principal dada. Estos dígitos se incrementan cuando:
- Hay nuevas funcionalidades y mejoras sobre la versión anterior. Normalmente estarán asociadas a incorporación de nuevas Capacidades o funcionalidades de los interfaces de usuario.
- Los dos últimos dígitos designan parches a la versión correspondiente.
- Por último se tienen los siguientes textos:
- Mx: (Mile Stone x) Designa una versión que pasa almenos el 70% de las pruebas automáticas Funcionales (JMeter) de regresión y pasa el 100% de las pruebas unitarias (JUnit) de regresión de la plataforma.
- RCx: (Release Candidate x) Designa una versión que:
- RC1: Pasa el 100% de todas, las pruebas de regresión (automáticas).
- RC2: Pasa al menos un 70% de las pruebas definidas en el plan de pruebas para dicha versión.
- RC3: Pasa las pruebas de RC1, RC2, el 95% de las pruebas definidas en el plan de pruebas para dicha versión que no estén pospuestas. Siempre que el 5% de las pruebas no pasadas no sean defectos importantes o críticos, en un estado de asignado o resolvíendose.
- Rx: (Release) Designa una versión que pasa las pruebas de RC3 y:
- Pasa las pruebas de carga definidas en el "Rendimiento de la aplicación".
- Pasa las pruebas anteriores y las de estabilidad.
- Sin texto: Es la versión estable del aplicativo donde ha pasado el100% de las pruebas de regresión, las pruebas definidas en el plan de pruebas , las pruebas de rendimiento, las pruebas de concurrencia, las pruebas de estabilidad definidas en la versión y se ha realizado una reunión entre el jefe del equipo de pruebas y el Jefe de Proyecto para aceptar los resultados del plan de pruebas.
192.168.5.30
jueves, 24 de abril de 2008
PayPal va a exigir EV SSL a los Navegadores
DNM
miércoles, 2 de abril de 2008
Implantando SCRUM en el equipo
DNM
domingo, 9 de marzo de 2008
DIA, una herramienta Open Source para diagramas
Últimamente he estado probando DIA, una herramienta para hacer diagramas Open Source disponible para Linux y Windows, y lo más importante, simple y flexible.Viene ya con los elementos para hacer diagramas UML y ER.
A diferencia de herramientas CASE más complejas y completas, DIA no aspira a más que ser el típico "pintamonas" y lo hace bien.
Tras arrancarlo, aparecen dos pantallas. La principal es el área del diagrama, que presenta un continuo de hojas para a trabajar.
La secundaria de control permite escoger cualquiera de los elementos del lenguaje que estemos usando para el diagrama (UML, ER, etc...), además de líneas, cuadros, áreas de texto y demás formas.
En concreto para diagramas ER trae entidades, relaciones, atributos y los imprescindibles conectores.
- Para las entidades, podemos ponerle nombre, indicar si es débil o asociativa, y los parámetros de formato (colores y fuentes)
- Para las relaciones, permite indicar la cardinalidad, orientación del rombo, darle un nombre y cambiar los parámetros de formato.
- Los conectores, una vez asociados a la entidad y a la relación, ajustan automáticamente la línea cuando mueves una u otra, y también permite cambiar los puntos de los "codos".
Lo he estado usando con un diagrama de unas 20 entidades aproximadamente, relaciones por todos los lados, etiquetas y algunas explicaciones, y no me ha dado mayor problema.
En resumen un pequeño "Visio" mucho más sencillo y open source.
Para linux lo podéis encontrar en los repositorios de vuestra distribución favorita, y para windows lo podéis descargar de sourceforge. (http://dia-installer.de/index_en.html)
Como curiosidad, el fichero que genera en un XML comprimido, así que supongo que podría llegar a acoplarse a eclipse e incluso a un CVS.
sábado, 1 de marzo de 2008
Artículo: JSF
La tecnología JavaServer Faces surge como una solución a la separación entre la presentación y el comportamiento en una aplicación Web, de forma tal que las actividades de los autores de las páginas puedan separarse de las actividades de los desarrolladores de la lógica. Además, esto posibilita el desarrollo de entornos de desarrollos (IDE) que permitan trabajar en el diseño con funcionalidades del tipo drag-and-drop. Esta tecnología define un modelo de componentes UI que permiten definir la estructura del componente, diferentes formas de presentación, validaciones, la navegación entre las páginas y otros elementos.
Al igual que Struts, JSF pretende normalizar y estandarizar el desarrollo de aplicaciones web. Hay que tener en cuenta JSF es posterior a Struts, y por lo tanto se a nutrido de la experiencia de este, mejorando algunas sus deficiencias. De hecho el creador de Struts (Craig R. McClanahan) también es líder de la especificación de JSF.
JSF trata la vista (el interfaz de usuario) de una forma algo diferente a lo que estamos acostumbrados en aplicaciones web. Sería más similar al estilo de Swing, Visual Basic, donde la programación del interfaz se hacer a través de componentes y basada en eventos (se pulsa un botón, cambia el valor de un campo, ...).
JSF es muy flexible. Por ejemplo nos permite crear nuestros propios componentes, o crear nuestros propios “render” para pintar los componentes según nos convenga y es más sencillo.
- Autor: Isaac Remiro
- /cvspanel/formacion/JSF
viernes, 29 de febrero de 2008
Programación de sistemas en tiempo Real en Java
De momento he encontrado una empresa Aonix qué está especializada en este tipo de desarrollos y quizá sea un buen sitio por donde empezar. Tienen incluso un producto PERC Pico con el que desarrollan productos comerciales.
¿Y que hace la comunidad Java? Pues hay un grupo en el Java Community Process el Real-time Specification for Java (RTSJ) que es el que marca las pautas.
Queda por investigar como está el mundo Opensource en este aspecto ¿Hay entornos de desarrollo específico?¿librerías GPL? etc.
jueves, 28 de febrero de 2008
Artículo: Ajax
Las aplicaciones web de hoy en día difieren de sus ancestros en que proporcionan un servicio instantáneo a los usuarios, los desarrolladores se han visto obligados a adoptar nuevos paradigmas de interactividad a medida que los usuarios demandan nuevas funcionalidades.
Espoleados por tecnologías poco conocidas y menos usadas que han ido incorporando a los navegadores a lo largo del tiempo, la WEB ha dado un gran paso a delante rompiendo en pedazos el modelo de uso tradicional que requería cargar nuevamente toda la página cuando se accedía a nuevos datos. Las empresas empezaron a experimentar con la recarga dinámica de fragmentos de las páginas web, transmitiendo solamente una pequeña cantidad de datos al cliente, lo que se traduce en un funcionamiento más rápido.
Autor: Oscar Mena Nava
- /cvspanel/formacion/Ajax
Artículo: SQL y PL\SQL
El artículo repasa las funcionalidades básicas de SQL y PL\SQL
Autor: Javier Barrocal Palmero
Recursos y seminario completo en:
- /cvspanel/formacion/Plsql
Artículo: Novedades de java 5
El objetivo principal de este documento es mostrar una descripción de las principales novedades que ofrece la versión 5 de Java en cuanto a las características del lenguaje. También se exponen sucintamente las novedades referentes a la máquina virtual y a las liberías más utilizadas.
Autor: Pio Castro Cobo
* /cvspanel/formacion/Java5
Artículo: Hypersonic
Este artículo explica los conceptos básicos sobre la base de datos Hypersonic, cuando es aconsejable usar este tipo de base de datos así como los ficheros que se crean al generarla.
También se explica como se usa hypersonic con JDBC y el manejo de la herramienta swing que trae hypersonic.
Hypersonic es un gestor de base de datos de ficheros escrito en Java. Este tipo de gestores de bases de datos suelen utilizarse para el manejo de tablas pequeñas y tienen la ventaja de que la base de datos se incluye dentro de la distribución del proyecto.
Este gestor se encuentra equipado con una interfaz gráfica a través de la cual se pueden visualizar los datos que contiene actualmente así como gestionar la base de datos.
Autora: Mireya del Teso Mancha
/cvspanel/formacion/Hypersonic
Artículo: Junit 4
Este artículo explica las novedades que ofrece la nueva versión del framework para realizar pruebas unitarias con Java JUnit versión 4.x, sobre la versión 3.x. Repasa brévemente las funcionalidades y estructura de la versión 3.x para posteriormente repasara en mas detalle las nuevas funciones de JUnit 4.x con la incorporación de las anotaciones de Java 5 siguiendo unos ejemplos simples que prueban un EJB tipo calculadora y su integración en el IDE de desarrollo eclipse 3.2.x y ANT para la automatización de las pruebas, como aconseja las metodologías ágiles de automatizar toda la fase de integración y pruebas todo lo que se pueda. Por último se dan una serie de consejos de buenas prácticas para implementar buenas pruebas unitarias.
Autor: Diego Núñez Monasterio
- /cvspanel/formacion/TutorialEJB30
Artículo: Uso de metadatos para errores SQL
De forma genérica los metadatos son datos sobre los datos.
En los sistemas gestores de base de datos, los metadatos almacenan la estructura de las tablas, los campos, las restricciones, etc.... Suelen ser vistas o tablas especiales de diccionario.
También podemos considerar metadatos como las descripciones que podemos dar de tablas o campos para que puedan ser entendibles por un usuario final.
Así, podemos darle dos utilidades inmediatas al concepto de metadatos:
Dar una información más detallada de lo ocurrido ante una excepción de SQL. En lugar de un mensaje de error del tipo : "Se ha violado la restricción PK_OP" podemos llegar a generar un mensaje más claro, del tipo "Se ha violado la clave primaria PK_OP, de la tabla OPERACIONES. Los campos de la clave son: ID_OPERACION, ID_ANYO" De esta forma un desarrollador puede encontrar mucho más rápido la causa de un error, sobre todo en modelos complejos.
Dar información orientada al usuario final. Ante el mismo error, podríamos llegar a generar algo del estilo: "Se ha producido un error por insertar una operación que ya existía"
La primera opción estaría orientada a logs internos de la aplicación, y la segunda a mensajes informativos al usuario.
Los metadatos del tipo 1 necesarios nos los proporciona el Sistema Gestor de Base de Datos.
Los de tipo 2 tendríamos que mantenerlos nosotros, como una extensión del diccionario de base de datos con respecto a entidades de negocio inteligibles por un usuario.
Autor: David Valdés Rodríguez
- /cvspanel/formacion/ErroreSQL
lunes, 25 de febrero de 2008
Jazz, algo se mueve en serio en la Integración Continua
La duda que me queda es si habrá parte de la plataforma en modo licencia open source o habrá que soltar la pasta. No hay que perder la pista de que IBM anuncia, que sus productos de la familia Rational (por cierto muy caros) van a utilizar esta tecnología. Por lo que ponen en su web y por su trayectoria en el modelo de negocio en estos últimos años (por lo menos en el mundo Java), lo normal es que liberen la parte central (core) de la plataforma y se pongan ha poner sus productos de pago sobre esta. Dejando que otras empresas pongan los suyos.
Me encanta el jazz y su espíritu a la hora de componer y ejecutar la música, como no disfrutar de bandas míticas como Jazz Mesengers, Duke Ellington, Glen Miller y tantos otros. Si IBM pone ritmo de Jazz al desarrollo del software y su eslogan es "People, not organizations, builts great software", ¡yo me apunto! aunque solo sea para disfrutar del Jazz, mi entrada seguro que es la del gallinero.
Bibliografía