Blog

28/05/2008
Siddharta Navarro

Después de unos cuantos meses trabajando desde casa, desde Citilab Cornellà nos han ofrecido un lugar de trabajo. Y no les podemos estar mas que agradecidos por esta oportunidad! Aquí las pruebas gráficas de lo que sera a partir de ahora nuestro segundo hogar.

 

Sid en Citilab

Si os fijáis en los techos abovedados podréis observar que Citilab se encuentra en una antigua fabrica restaurada.

 

Entrada Citilab

Entrada de Citilab. Al fondo una performance que prepararon para celebrar el día de Internet.

 

 

Vista de Citilab

01/05/2008
Luis Ortiz

Para la realización de uno de nuestros últimos proyectos nos era necesario tener algún sistema de control de versiones que nos permitiera trabajar conjuntamente y mantener el código centralizado.

Para subsanar el problema optamos por instalar un servidor de Subversion en mi PC domestico que, conectado vía cable a la Red, nos da la fiabilidad necesaria para ello. Explicaré como fue el proceso, paso a paso, para que podáis replicarlo en vuestros PCs si fuera necesario.

La solución elegida fue VisualSVN Server. Esta distribución específicamente diseñada para Windows contiene el servidor de Subversion que se instala como un servicio de Windows y un panel de administración que permite crear nuevos proyectos en nuestro repositorio, usuarios, grupos y gestionar sus permisos.

El proceso de instalación es realmente sencillo. Una vez descargado el archivo de instalación hacemos doble clic en el y solo tenemos que seguir el típico asistente de instalación de Windows. Durante la instalación se nos preguntará por el puerto que queremos utilizar para ejecutar nuestro servidor. En mi caso dejé el puerto por defecto: 8443.

Instalación de VisualSVN Server

19/03/2008
Luis Ortiz

Repasando el último podcast de JavaHispano me viene a la mente el concepto de la excelencia técnica en nuestra profesión.

En dicho podcast se habla de metodologías ágiles de desarrollo que, en contraposición con las tradicionales o predictivas, profesan la cercana relación con el cliente y el constante cambio. Este último requiere sin duda, además de la eliminación de la burocracia de los funcionales y el papeleo innecesario, de la excelencia en nuestro trabajo.

Una de las características que más me llaman la atención en muchos de los proyectos en los que he participado es la ausencia de la responsabilidad consciente sobre el código. Característica que a mi parecer es básica para garantizar la excelencia técnica.

Normalmente el código lo escribe una persona y lo modifica otra y otra y otra sin que ninguna de ellas se responsabilice del resultado final. Esto lleva a tener sistemas ilegibles, con diferentes metodologías para nombrar variables, diferentes metodologías para tabular el código y diferentes patrones y estructuras aplicadas mezcladas en el mismo módulo, archivo o función. Existen muchas formas de garantizar que esto no pase, pero todas ellas pasan por introducir el concepto de responsabilidad.

11/02/2008
Siddharta Navarro

De nuevo he tenido que liarme en un desarrollo relacionado con XmlBeans, y de nuevo he encontrado esos pequeños problemas que no explican en ningún manual, pero que te encuentras a menudo. Así que como en el anterior artículo voy a seguir comentando estos problemas que seguro que os pueden ayudar en el desarrollo de proyectos con XmlBeans.

1. Como manejar tags xs:any en XmlBeans

Cuando compilamos un XSD con XmlBeans, este nos genera una serie de clases con funciones de acceso a los diferentes nodos (gets y sets) definidos en el esquema. Pero, qué pasa si compilamos un esquema que incluye la particula xs:any ? Como podréis comprobar xmlBeans no nos genera una funcion getAny o setAny.

Para acceder y manejar estos nodos la API de XmlBeans incluye las siguientes alternativas:

29/01/2008
Luis Ortiz

Tras publicar dos artículos sobre el tema y dado el interés que despierta esta tecnología en la comunidad, hemos decidido realizar un tutorial exhaustivo que examine las posibilidades de JSON-RPC-Java con las explicaciones, snippets y ejemplos para que podáis incorporarla a vuestros proyectos.

JSON-RPC-Java es una tecnología que permite realizar comunicaciones Ajax entre el cliente y el servidor J2EE, hacer llamadas a funciones de clases Java desde JavaScript, con capacidad para serializar objetos Java y convertirlos en objetos JavaScript y todo ello, de forma transparente al programador.

Funcionamiento básico

Para comprender el funcionamiento de JSON-RPC-Java se debe comprender tanto el funcionamiento de la parte de servidor como del cliente JavaScript.

Desde el punto de vista del servidor Java lo primero es desarrollar las clases que serán accesibles desde el cliente. Para hacer públicos sus métodos y funciones debemos registrar una instancia de nuestra clase en un objeto JSONRPCBridge que previamente habremos creado y guardado en la sesión HTTP. Este objeto es el encargado, junto a un Servlet que más adelante aprenderemos a instalar, de comunicar a JavaScript la estructura de nuestras clases y de gestionar la comunicación entre ambas partes.

11/01/2008
Siddharta Navarro

Lo primero de todos es felicitar a todos aquellos que nos visiten. Les deseo un feliz año nuevo y espero que hayan pasado unas buenas fiestas. Nosotros hemos estado bastante desconectados del blog porque navidad no es un buen momento para escribir entradas, mas que nada porque la familia se puede enfadar bastante si te encuentra delante del ordenador el día de Navidad.

Por otro lado los Reyes Magos me han traído una multa de tráfico (debe ser que no me he portado muy bien). Hoy me he decidido a pagarla, si no quería tener que pagar doble dentro de 15 días. He entrado en la web señalada por la multa para los pagos por Internet (www.bcn.cat/hisenda) y después he clickado en la sección "multas" (http://bcn.cat/hisenda/es/principals_multes.html). Como habéis podido comprobar, la web es del Ayuntamiento de Barcelona. Pues bien, la página no se ha abierto. De echo todavía esta cargando...

08/01/2008
Luis Ortiz

La ley de Demeter que explicamos en un articulo anterior puede resultar compleja de utilizar, pues genera gran número de funciones que solo tratan de comunicar unos objetos con otros.

Existen en consecuencia algunas excepciones que mejoran este aspecto, algunas situaciones en que es mejor no utilizar dicha ley.

Leyendo esta interesante discusión podemos extraer tres excepciones básicas:

  • Las colecciones de objetos (Listas, colas, mapas, tablas, arrays, etc.).
  • Los objetos de valores (los ValueObjects).
  • Los métodos factoría.

Y basándonos en nuestra experiencia personal nos atrevemos a añadir una cuarta, aunque resulte una obviedad: la interacción con librerías de terceros. Puede pasar que uno llegue a confundir lo bueno con lo mejor y nos encontremos escribiendo interminables wrappers de objetos de otras librerías para no incumplir la ley de Demeter.

Posts relacionados:

07/01/2008
Luis Ortiz

180px-Demeter_MKL1888.pngLa ley de Demeter es un principio básico de la programación orientada a objetos. Sorprende al conocerlo su gran utilidad, sus resultados en proyectos de todos los tamaños y el poco conocimiento que la comunidad de desarrolladores tiene de su existencia.

Su enunciado básico es:

A method of an object should invoke only the methods of the following kinds of objects:

  1. itself
  2. its parameters
  3. any objects it creates/instantiates
  4. its direct component objects

Mejora de forma considerable la encapsulación y la cambiabilidad de nuestro código. Explicaremos en este artículo cual es su significado y como detectar los lugares en nuestro código donde no se cumple.

Una forma de comprender mejor esta ley podemos dar la vuelta al enunciado y enumerar los casos prohibidos: no se debe llamar a métodos de los objetos devueltos por otros métodos.

El caso más común que debemos evitar son las cadenas de métodos, de la forma:

a.getX().getY().getValue();

y sustituirlas por funciones que realicen dicha acción:

a.getXYValue();

17/12/2007
Luis Ortiz

json160.gifJSON-RPC-Java permite, como comentamos en el post anterior, la comunicación transparente entre el código JavaScript y Java.

Otra de las características que hacen tremendamente interesante a esta tecnología es el tratamiento que hace a los objetos devueltos. Esta librería es capaz de serializar los objetos Java y de deserializarlos como objetos JavaScript. Así ahorramos el tiempo necesario para determinar el formato de la información a enviar, siendo innecesario definir esquemas para nuestros XML o JSON como hacíamos sin JSON-RPC-Java.

Devolviendo Beans

Un Bean (o JavaBean) es un objeto Java que cumple las siguientes características:

  • Implementa un constructor sin parámetros.
  • Sus atributos son accesibles vía getters y setters.
  • Implementa la interfaz Serializable.

Podéis encontrar más información en la Web de esta tecnología.

Con JSON-RPC-Java, si una función de un objeto registrado devuelve un Bean este se serializa y se envia. De tal forma que podremos acceder a el como si se tratara de un objeto JavaScript.

Por ejemplo, un objeto de la siguiente clase:

public class Ejemplo implements Serializable {

14/12/2007
Luis Ortiz

Desde hace un tiempo, en diferentes proyectos, utilizamos esta librería, que simplifica enormemente el desarrollo de aplicaciones Web que hacen uso del archiconocido Ajax. Os explicaremos e este articulo como instalarlo y empezar a usarlo.

JSON-RPC-Java permite al programador JavaScript acceder de forma transparente a las funciones de servidor de una aplicación Web J2EE.

Para empezar a usar JSON-RPC-Java debemos definir cuales son las clases que deseamos que se puedan acceder desde JavaScript. Usaremos la siguiente, por ejemplo:

package com.ateneaTech.jsonrpcjava;


public class Ejemplo {

public String foo() {

return "Hola, foo!";

}

}

El siguiente paso es registrar esta clase. Solo es necesario registrar una clase una vez en cada sesión. Aunque existen formas de registrar clases desde un JSP, nosotros recomendamos, por claridad en el código, hacerlo en un servlet. Para ello utilizamos la clase JSONRPCBridge que nos permite registrar nuestra clase en el RPC. Mantendremos una instancia de JSONRPCBridge por cada sesión, con el código:

Pages

Contact

Are you interested in our services?

Contact us