Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

Blog de Julio César Pérez Arques

Sobre pruebas y errores

Junio 24th, 2009 - [Enlace local]

Veo en las noticias las imagenes de una prueba de carga en un nuevo puente de una autovía en Galicia (España). Durante un momento me quedo absorto mirando la larga flota de camiones sobre el majestuoso puente. Impresiona. No puedo evitar pensar: Vaya! eso sí que es una prueba manual. Y luego yo quejándome sobre las pruebas manuales que hacemos en el desarrollo de proyectos software...



Bastan un par de segundos para darme cuenta de la tontería de mi reflexión. Si eso fuera una primera ejecución de una prueba exigente sobre un proyecto software recien construido, el puente se habría caido arrastrando a la flota de camiones tras él.



En el caso del puente, lo que no estamos viendo es todo el proceso de pruebas y control de calidad, que se ha realizado previamente en cada una de las fases del proyecto para evitar errores.



Pero comparar nuestro mundo de desarrollo software -¿ingeniería software?- con el de la construcción o cualquier otra ingeniería es una equivocación. Una equivocación torpe, injusta y desafortunada, porque, entre otras cosas, hace imaginarse a un programador como a un obrero. Así nos va.



Aunque centrémonos en los errores. Errar es humano. Obvio. A veces estamos distraidos, cansados, estresados, desmotivados o simplemente no somos perfectos y se nos escapan cosas.



Otro hecho es que los proyectos software salen a producción con demasiados errores. También obvio si estudiamos el ineficaz proceso de pruebas que se sigue en la mayoría de proyectos, basado en unas pruebas mínimas, manuales y sin documentar. Por lo que las pruebas dificilmente se repiten en el tiempo, aunque se modifique código afectado, haciendo aparecer nuevos errores o, peor aun, haciendo reaparecer viejos errores. ¿Vosotros compraríais algo cuyo proceso de pruebas fuera así?



Lo primero no tiene solución. Pero sí se puede minimizar el efecto. Contratando talento y con motivación.

Lo segundo sí tiene solución. Aplicar un proceso profesional de pruebas, basado en pruebas automatizadas, completas, independiente y repetibles. Los errores seguirán produciéndose, pero la mayoría serán detectados antes de llegar a producción.



Por supuesto, siempre hará falta alguna prueba manual pero, al igual que en el puente, será más un mero trámite de aceptación que el actual infierno de prueba y error sin fin.

» Leer más, comentarios, etc...

Blog de Julio César Pérez Arques

Nuevo cambio de look y AdSense

Junio 17th, 2009 - [Enlace local]

Aprovecho para anunciar un par de cambios en el blog: (1) nuevo cambio de look y (2) AdSense.



Hacía tiempo que me había cansado del anterior template, un día sin querer dí con este The Journalist y hoy he decidido probarlo, tras unas mínimas modificaciones. No tiene más.



El tema de AdSense sí requiere un poco más de explicación. No pretendo monetizar el blog. No creo ni que le fuera a sacar un euro aunque lo intentara. Sin embargo, sí quiero probar AdSense y ver cómo funciona de primera mano. Últimamente se me ha reactivado la vena emprendedora, así que quiero ver cómo va esto de la publicidad.



Como siempre, cualquier opinión sobre alguno de los 2 temas será más que bievenido!

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

Opera Unite: involucionando la web

Junio 16th, 2009 - [Enlace local]

Hoy Opera ha puesto fin al hype que ellos mismos comenzaron hace un par de días, desvelando su proyecto secreto: Opera Unite. Aunque comercialmente se pueden decir muchas más cosas, lo resumiré en un servidor web dentro del navegador. Mediante esto y un API se desarrollan servicios que se ejecutarán en tu ordenador. Por ejemplo, reproductor multimedia, gestor para compartir ficheros, páginas web, chat...



Actualización 0906161825: Ender Wiggins, un tío mucho más responsable que yo, lo está probando antes de juzgarlo (ver comentarios), por lo que tacho un par de cosas de las que me quejo sin deberlo (no lo borro para que quede constancia ;) ).



Vaya por delante que (todavía) no lo he probado, pero el concepto en sí no me gusta, por muchas razones:

El título del artículo, "involucionando la web", es, sin duda, exagerado e injusto. El producto en sí mismo puede estar bien y en algún caso puede que incluso sea útil, especialmente para usuarios sin conocimientos técnicos que quieran montar un servidor casero fácilmente. Sin embargo, necesitaba poner el contrapunto a lo que ellos dijeron que significaría, "reinventaremos la Web", y a lo que veo en la blogosfera (revolución, y 2...). Desde hace años la tendencia que parece claro que funciona es aligerar los equipos personales y utilizar tanto contenidos como aplicaciones disponibles en la red. Esto es un paso al contrario.

Ójala GDrive, si finalmente se materializa, cumpla las expectativas creadas: gran(-dísimo) espacio de almacenamiento, API para acceder al contenido, búsqueda completa... Eso sí sería un paso adelante.

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

Redes sociales (II): Firefox Collections

Junio 14th, 2009 - [Enlace local]

Aunque en estos meses de humo nubes hablar de redes sociales suena demodé, tenemos novedades para Firefox que nos pueden hacer reflexionar sobre ello.

Las Firefox Collections son conjuntos de extensiones, listados, que puedes compartir y a las que te puedes suscribir. Por ejemplo, la primera colección que iba a figurar en el editor's pics no podía ser otra: Web Developer's Toolbox. Hecha por el usuario Mozilla (pero podría ser cualquiera), recopila las extensiones que ellos consideran fundamentales para el desarrollo web. Yo, una vez me instale la extensión 'Add-on Collector', puedo suscribirme a esta lista. Al hacerlo podré instalar las extensiones que la componen, recibiré actualizaciones si añade alguna al listado... Es una funcionalidad social pero muy potente. Cada sector puede colaborar generando un lote de extensiones interesantes: brokers de bolsa, bloggers, desarrolladores...

Esto genera una funcionalidad colateral muy interesante: sincronización de extensiones entre navegadores. Es algo que llevo necesitando desde que comencé a usar Firefox, y, aunque había formas de hacer algo similar, nada que me satisficiese.

No sé cómo se lo plantearon en Mozilla: ¿Cubrir la necesidad de sincronizar extensiones y de ahí salió la idea de compartirlo? ¿Al revés? ¿Ambas a la vez? El hecho es que la funcionalidad social (compartir colecciones) es la generalización de un caso particular (sincronizar mis extensiones) de interés para el usuario. Este es un ejemplo perfecto de solución del problema del arranque en frío en redes sociales comentado con anterioridad:

Dos nuevas notas mentales que siempre denería tener presente:

» Leer más, comentarios, etc...

Ideas + Ingeniería del Software

CexC, Teiid y el estado del blog

Junio 14th, 2009 - [Enlace local]

Llevo mucho sin actualizar el blog (dos meses), y antes de la última entrada el ritmo ya había bajado. Alguna razón tenía que haber, además del habitual cansancio. Esta página siempre ha sido una vía de escape de mis inquietudes tecnológicas, pero últimamente me parecía estar totalmente desinteresado de las novedades del sector. El escaso tiempo libre y el que me ocupa la fotografía hacían el resto.

Dándole un poco de vueltas este desinterés realmente no existe, lo que ocurre símplemente es que lo cubro en horas de trabajo. Hasta ahora mi trabajo había sido de desarrollo o de gestión de proyectos, lo que apenas dejaba margen al cacharreo con nuevas tecnologías, por lo que esa necesidad que realmente tengo de estar al día, de probar cosas nuevas, se cubría en casa.

Desde finales del año pasado estoy trabajando en el Centro Experimental del Conocimiento (CexC para los amigos), y mi papel es, en gran medida, realizar un esfuerzo de investigación e innovación. Para nosotros es fundamental evolucionar nuestra forma de trabajo y mejorar constantemente las herramientas a utilizar, y una buena parte de mi tiempo se va en leer artículos, noticias, descargar nuevas aplicaciones o componentes, y probarlos y pegarme con ellos. La verdad es que da gusto cuando, en este sector tan condicionado por los plazos y clientes, se tiene oportunidad de invertir una buena parte de tu tiempo en tareas de innovación, y se confía en la adopción de nuevas tecnologías en vez de atarse a la tradición.

Como medio para dar algo más de visibilidad a esto, y como medio de comunicación, en el CexC acabamos de abrir un blog de nuevas tecnologías en el que ir mostrando al menos una parte de esta inversión. Todavía está en pañales, pero os agradecería que figurase en vuestros marcadores o lectores RSS.

La primera entrada habla de Teiid, una fantástica herramienta para virtualización de datos que acaban de liberar en jboss.org. Cualquiera que haya realizado una aplicación empresarial con varias fuentes de datos diferentes sabrá valorarla como corresponde, en mi opinión. El primer artículo es introductorio, pero iremos ampliando con ejemplos prácticos de esta y otras tecnologías de JBoss con las que trabajamos desde hace tiempo.

Todavía no dispone de comentarios (espero activarlo en breve), así que quien quiera abrir el diálogo que lo haga por aquí mismo.

Nos vemos por el CexC :).

» Leer más, comentarios, etc...

Blog de Julio César Pérez Arques

Buenas practicas para desarrollar servicios web SOAP

Junio 11th, 2009 - [Enlace local]

Como complemento a mi último post, Arquetipo de WSDL interoperable, he decidido publicar este post con varias buenas prácticas para desarrollar servicios web SOAP. Como siempre, son sólo buenas prácticas según mi criterio, conocimiento y experiencia.



» Leer más, comentarios, etc...

Blog de Julio César Pérez Arques

Arquetipo de WSDL interoperable compatible con WS-I Basic Profile 1.1

Junio 9th, 2009 - [Enlace local]

En este post voy a publicar un WSDL de ejemplo que cumple con el WS-I Basic Profile 1.1.



La clave de la interoperabilidad entre servicios web SOAP está en su interfaz WSDL. El WS-I Basic Profile es un conjunto de especificaciones y buenas prácticas definidos por la industria para desarrollar servicios web interoperables independientemente de la tecnología con que fueron desarrollados. Su última versión final es la 1.1 y debería ser un must-know para todos aquellos que tengan que definir un WSDL.



El WSDL de ejemplo está diseñado para que use un schema XSD donde definir los mensajes de petición y respuesta de las operaciones. De esta forma se puede usar un editor de XSD como ayuda para diseñar la estructura de los mensajes, que es la parte más importante del WSDL y que requiere el verdadero esfuerzo intelectual. Dejando de esta forma el proceso de definir el fichero WSDL a un mero trámite de copy&paste.Además es una buena práctica en una SOA publicar los schemas xsd para reutilizar sus elementos.



Este WSDL sólo tiene 1 operación. Además usa los siguientes literales como ejemplo:



El fichero schema xsd nombreServicio_msg.xsd sería el siguiente:



<?xml version="1.0" encoding="UTF-8"?>

<schema xmlns:tns="http://dominio/ws/nombreServicio/schema/msg"

xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://dominio/ws/nombreServicio/schema/msg">

<element name="nombreOperacionRequest">

<complexType>

<sequence>

<element name="campo1" type="string"/>

<element name="campo2" type="string"/>

</sequence>

</complexType>

</element>

<element name="nombreOperacionResponse">

<complexType>

<sequence>

<element name="campo1" type="string"/>

<element name="campo2" type="string"/>

</sequence>

</complexType>

</element>

</schema>

La operación del servicio tiene 2 elementos de entrada y 2 de salida, todos de tipo string, a modo de ejemplo. Puedes modificar los mensajes existentes o crear mensajes para nuevas operaciones a tu gusto. No olvides modificar el targetNamespace.

Si el schema xsd se complica puedes plantearte dividirlo por operaciones o por entrada y salida.

Este fichero puede ser descargado aquí.



El fichero wsdl nombreServicio.wsdl sería el siguiente:



<?xml version="1.0" encoding="UTF-8"?>

<definitions name="nombreServicio"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"

xmlns:tns="http://dominio/ws/nombreServicio"

xmlns:msg="http://dominio/ws/nombreServicio/schema/msg"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/"

targetNamespace="http://dominio/ws/nombreServicio">

<!-- Importacion de schemas -->

<import namespace="http://dominio/ws/nombreServicio/schema/msg"

location="./nombreServicio_msg.xsd"/>

<!-- Definicion de mensajes -->

<message name="nombreOperacionRequest">

<part name="body" element="msg:nombreOperacionRequest"/>

</message>

<message name="nombreOperacionResponse">

<part name="body" element="msg:nombreOperacionResponse"/>

</message>

<portType name="nombreServicio">

<!-- Relacion Mensaje-Operacion -->

<operation name="nombreOperacion">

<input message="tns:nombreOperacionRequest"

wsaw:Action="urn:nombreOperacion"/>

<output message="tns:nombreOperacionResponse"

wsaw:Action="urn:nombreOperacion"/>

</operation>

</portType>

<binding name="nombreServicioBinding" type="tns:nombreServicio">

<soap:binding style="document"

transport="http://schemas.xmlsoap.org/soap/http"/>

<!-- Definicion de operaciones -->

<operation name="nombreOperacion">

<soap:operation soapAction="urn:nombreOperacion"/>

<input>

<soap:body use="literal"/>

</input>

<output>

<soap:body use="literal"/>

</output>

</operation>

</binding>

<service name="nombreServicio">

<port name="nombreServicioPort" binding="tns:nombreServicioBinding">

<soap:address location="http://localhost:8080"/>

</port>

</service>

</definitions>



Lo primero sería modificar los nombres del servicio, operación y targetNamespaces de ejemplo. Puedes añadir nuevas operaciones a tu gusto. Como puedes ver, he puesto comentarios indicando los sitios que deberían ser modificados.

No cambies la url del endpoint. Por lo general, los servidores de webservices detectarán la url y realizarán la modificación de forma automática. De este modo te evitas tener una copia del WSDL por entorno (desarrollo, pruebas, producción, etc.).

Este fichero puede ser descargado aquí.



Una vez realizadas las modificaciones convenientes no olvides validarlo todo, el schema xsd y el wsdl.

» Leer más, comentarios, etc...

Blog de SQUaC

Próximos cursos en usabilidad y testeo unitario

Junio 4th, 2009 - [Enlace local]

Os anunciamos dos cursos que vamos a ofrecer en Valencia en junio/julio, dentro del plan de formación del ITI .

Los cursos son:

» Leer más, comentarios, etc...

Mal Código

Buscar el error del usuario

Junio 4th, 2009 - [Enlace local]

Buenos días,Los datos son:Nombre de usuario: bbernatemail: boromirb@blablabla.comTeléfono: 5556664242Un saludo, Boromir BernatOn Wed, 2009-06-03 at 18:19 +0200, Misma Mente wrote:> Necesito que nos pases los siguiente datos para crearte una cuenta:>> Nombre del usuario:> email:> Teléfono:>> Un saludo, Misma>Ante este intercambio de correos entre un administrador y un usuario. ¿Cual es el fallo

» Leer más, comentarios, etc...

Información legal y técnica