Categoría: ‘Desarrollo’

Minipost: JSON vs. XML

24-02-2009 | Categoría: Desarrollo

Después de hacer varias pruebas, he decidido utilizar JSON en lugar de XML para el intercambio de información entre navegador y servidor.

Ventajas: ligero, soportado nativamente por JavaScript, posiblemente será un estandar en la próxima revisión del JavaScript.

Utilizando JSON.js de json.org, así queda un envío de información al servidor:

var httpreq = new getHTTPRequestObject();
function ajaxFunction() {
    if(httpreq) {
        httpreq.open("POST","nuevousuario.php",true);        httpreq.setRequestHeader('Content-Type', 'application/json');
        httpreq.send( JSON.stringify( {"nombre": "Jose", "apellido": "Hernandis", "direccion": {"calle": "San Vicente, 3", "localidad": "Alzira", "codpos": "46600"}}));
    }
}

Minipost: Excelente artículo sobre escalabilidad

23-02-2009 | Categoría: Desarrollo

Si estás interesado, como yo lo estoy en estos momentos, en todo lo relacionado con la escalabilidad de aplicaciones web te recomiendo el blog HighScalability

A través de ese blog he encontrado un excelente artículo que trata varios temas de como escalar una aplicación típica web basada en LAMP: Database sharding at Netlog

Diseñando un API

23-02-2009 | Categoría: Desarrollo

Llevo varios días diseñando el API de la nueva versión de lagaleriadigital.com, que por cierto pronto cambiará de nombre por uno más internacional.

Es la primera vez que tengo que hacer eso, diseñar un API, hasta ahora el desarrollo se hacía de una forma más o menos tradicional, intentando separar presentación de datos y de controladores, evolucionando el código según era necesario. Unas veces se ha conseguido al utilizar un framework como CodeIgniter, otras a mano, pero para poder conseguir una escalabilidad mejor era necesario tener totalmente separado presentación de datos de gestión de los mismos.

Estoy diseñando el API utilizando REST (http://es.wikipedia.org/wiki/Representational_State_Transfer) como base para la comunicación entre cliente y servidor, o entre servidores claro, porque la intención es hacer una API sencilla y ligera.

Lo que no tengo tan claro es si el diseño de un API es compatible con la gestión de desarrollo mediante Scrum. Yo entiendo que sí, porque se puede desarrollar el API a base de sprints, a base de historias, etc. pero como la filosofía de desarrollo ágil indica que no es necesario hacer unas especificaciones super detalladas … pues eso, que tengo dudas filosofales ;)

Una de las ventajas de tener el API es que, cuando lo necesitemos, podremos dedicar un servidor a procesar las peticiones que vengan desde otros servidores de front-end. Otra ventaja es que haciéndolo así preparamos la infraestructura para poder utilizar AJAX para nuestro producto, ya que el navegador, mediante JavaScript, podrá realizar llamadas al API y procesar la respuesta sin necesidad de recargar la página. Una más, podremos reescribir una parte (API, FrontEnd, Base de datos) con más libertad, si vemos que reescribiendo el API con Ruby ganamos prestaciones, o queremos añadir un frontend para iPhone, al tenerlo todo separado es más sencillo hacerlo.

Probando Lazarus

17-01-2009 | Categoría: Desarrollo

Esta mañana disponía de unas horas mas o menos libres, y me he decidido a hacer algo que tenía pendiente desde hace tiempo, probar el entorno de desarrollo Lazarus (http://www.lazarus.freepascal.org/), una variante open source de mi querido Delphi.

Lazarus IDE

La instalación ha ido sin problemas, la primera tontería que he probado todo bien y unas cuantas cosas más que he probado también, así que me he lanzado a la piscina y he tomado la decisión de que la nueva versión de la Agenda, que hice hace un tiempo, estará hecha con Lazarus.

Pero cuando me he puesto a trastear con el entorno, a personalizarlo, me ha salido un error, que si bién no impide el funcionamiento del entorno, no he encontrado como solucionarlo, todavía, porque lo bueno que sea open source es que tengo las fuentes del IDE y puedo buscar donde está el fallo y resolverlo, si quiero.

Error Lazarus

Eso me ha hecho pensar, si no deberíamos lanzar la próxima versión de la agenda bajo alguna licencia open source, es solo una idea que me ha cruzado la mente, ya lo masticaré más detenidamente, de momento voy a seguir con Lazarus, que me está gustando.

Por cierto, hubo un tiempo en que estuve probando MonoDevelop, pero no me terminó de convencer, no se si es porque llevo tanto tiempo con Delphi que otras cosas las encuentro raras (no debe ser eso porque también programo con PHP, utilizando EclipsePDT, y si que me adapto).

Desarrollo web: trabajo en equipo

18-09-2008 | Categoría: Desarrollo

El proceso de preparar un entorno para el desarrollo web en equipo está resultando más complicado de lo que suponía. Todavía no hemos podido empezar con Scrum, se me está haciendo eterno.

Hasta ahora del desarrollo web del producto que queremos tratar con Scrum se encargaba una persona, esta utilizaba un servidor linux (CentOS) interno para ello, desde su máquina Windows editaba el código, lo subía al servidor para probarlo y depurarlo, y finalmente lo subía al servidor de producción, también CentOS, cuando se daba el visto bueno. Ahora como vamos a ser varias personas trabajando con el mismo código necesitamos otro entorno.

En principio opté por Windows como SO de escritorio, instalando XAMPP y EclipsePDT. Pero nos hemos encontrado con muchos problemas, demasiados, para poder ejecutar el software allí. Y, sobre todo, me quedaba la duda de que problemas futuros nos encontraríamos cuando en el entorno Windows el software funcionara pero al pasarlo al CentOS no, el trabajo extra de hacerlo funcionar en dos platarformas sin necesidad real.

Por ello hemos decido hoy poner CentOS como entorno de desarrollo en los ordenadores, claro que eso implica un retraso, pero creo que lo recuperaremos rápidamente al ganar en compatibilidad con los servidores.

Básicamente la idea es que cada desarrollador tenga en su máquina un servidor web completo, para que desarrolle, pruebe y depure en local, luego cuando lo tenga lo suba al servidor subversion y de ahí se pueda sacar una copia diaria al servidor de pruebas interno.

¿Es esa la mejor forma de trabajar? ¿Sabéis como lo hacen en otros equipos? ¿Alguna idea?