Español (Colombia)

Desarrolladores

jQuery UI

Blog G2M1 - Desarrolladores

( 3 Votes )

Hace unos días, a petición de un cliente, desarrollé una aplicación custom que permite facilitar un proceso de consolidación de datos. Siempre he preferido el dojo toolkit y en particular sus widgets de dijit, que son muy bien presentados y además tienen muchas opciones útiles para extender su funcionalidad. Sin embargo, por cultura general, y al haber visto el magnánimo theme roller que permite configurar y personalizar un tema (colores, border, etc) desde una simple aplicación gráfica muy completa, y considerando que el dojo toolkit sólo tiene 3 temas, poco personalizables (en realidad si lo son, pero es muy dispendioso afectar todos los widgets, probar, garantizar consistencia cross-browser, ...), me decidí a intentar esta pequeña aplicación con jQuery, y en particular con jqueryUI para la presentación.

Los resultados fueron buenos, sin embargo debo confesar que me siento más cómodo con la aproximación del dojo toolkit a:

  • Unicidad para el lanzamiento de widgets
  • Un solo parser para pasar de markup a widgets
  • una implementación de AJAX más amigable al programador (es mi impresión)
  • una mejor aproximación al problema de Drag and Drop
De otra parte, veo fuerte al jqueryUI en:
  • la implementación de tabs es fantástica
  • El theme roller te deja muy cerca a resolver todos tus problemas de presentación muy rápidamente.

 

XML Web services para Interoperabilidad

Blog G2M1 - Desarrolladores

( 2 Votes )

Cada tanto, nos llaman algunos clientes con una variedad de esquemas de interoperabilidad, es decir: poner a hablar unas aplicaciones con otras, a veces se integran a través de envíos de archivos de texto a un servidor FTP, que luego termina, a través de tareas programadas, siendo integrado a la aplicación. A veces tienen complicadísimos esquemas en donde usan una variedad de técnicas que no funcionan muy bien juntas, como CORBA o sockets abiertos con esquemas personalizados de codificación. En mi experiencia, las soluciones complicadas están mal hechas. Para salvar el problema de interoperabiliad se crearon los Servicios Web XML. La idea es, que dos o más aplicaciones orientadas a la Web intercambien información, lo cual, a nivel conceptual, es fácil de entender y sólo algunos aspectos puntuales requieren consideración adicional:

  • Cómo nos aseguramos de que nuestra información no se encuentra viajando libremente y visible para cualquiera con un sniffer en el sitio adecuado?
  • Cómo podemos ponerle algo de seguridad a la comunicación, de tal forma que no cualquiera pueda ingresar o extraer datos de nuestra aplicación o bien disparar procesos que en últimas sobrecarguen nuestros servidores en lo que se conoce como un ataque de Negación de Servicio (DoS)?

Hay muchas soluciones para las anteriores incógnitas, a mi personalmente me gustan las señaladas a continuación:

  • Si la información que se transporta es muy sensible (hay quienes sostienen que TODA la información es sensible, pero eso es otro tema), siempre podemos usar SSL. Esto encripta los mensajes bastante bien, aunque incrementa la carga en el servidor (por las operaciones de criptografía) y su implementación no es trivial. Pero una vez implementado, y con algo de conocimiento en certificados SSL, tendrá una integración de datos más que razonablemente segura.
  • Normalmente, se espera que las comunicaciones se den entre distintos servidores, si este es el caso, puede usar una técnica llama IP Lockdown, es decir que sólo recibe comunicaciones de una lista de direcciones IP registradas en la configuración de su aplicación. Puede incluso mejorar esto un poco usando algún esquema de autenticación provisto por Apache (o su servidor Web de preferencia), como por ejemplo autenticación básica. Hay mucha referencia extensiva a este respecto, y de seguro mejorará la seguridad de su aplicación. Eso si: SIEMPRE DEJE UN LOG DE LAS TRANSACCIONES REALIZADAS, la idea es que si se presenta cualquier eventualidad, pueda usted ver desde donde y cuándo se generan las peticiones, junto con la mayor cantidad de información relevante (algunos desarrolladores incluyen todo el mensaje de entrada, con sus cabeceras XML y demás, normalmente yo llego hasta una representación JSON de los parámetros de entrada y opcionalmente el tiempo de ejecución de la tarea asociada - de tal forma que sea posible estimar las peticiones que realmente afecten el servicio). Lockdown y autenticación Apache son óptimos porque aíslan el acceso a los recursos de cómputo, es decir: petición errada o inválida ni siquiera entra a ser evaluada, simplemente se rechaza. Por la anterior razón también es importante analizar los logs que deja Apache (o su Web Server de preferencia)
  • En el caso en el cual se implemente un servicio web abierto, es importante pensar en otras restricciones, por ejemplo el uso de autenticación SOAP, que en si representa tema suficiente para otro post.
  • Personalmente, prefiero los servicios usando SOAP en lugar de REST o XML-RPC, me parece que la formalidad de SOAP y el complique de hacer un buen WSDL para el servicio son de lejos sopesados por la extensibilidad y robustez que ofrece.
  • Haga una buena especificación de su Web Service. Hay desarrolladores que planean poco y resuelven todo sobre la marcha, sin embargo a la hora de integrar datos uno NO DEBE improvisar (en general uno no debe improvisar si está desarrollando, esto hace que no sea posible dimensionar el costo y tiempo de un proyecto y por lo tanto alguien salga perjudicado, usted o su cliente, además de ser muy poco profesional). Una buena especificación, que muestre todo el API SOAP que usted va a implementar y los servicios que su aplicación consumirá de otros servidores es de la máxima utilidad, defina certeramente los parámetros de entrada de cada método así como las salidas, de esta forma no improvisará sobre la marcha. Una buena planeación es crucial para entregar un buen producto.
Bueno, espero les haya parecido útil, ah, y lo mejor es que PHP trae buen soporte para SOAP en la distribución estándar.

   

Sintetizar PDF desde PHP

Blog G2M1 - Desarrolladores

( 2 Votes )

Un alto porcentaje de las aplicaciones orientadas a Web requieren, además de la salida XHTML propia del navegador, otras salidas, a veces flash, a veces Excel, a veces texto, a veces XML, y muchas veces PDF.

Por qué PDF?

PDF ofrece una muy buena salida para mover documentos "inalterables" (más certero sería difícilmente alterables) entre empresas y personas. Por ejemplo, las cuentas de sus servicios públicos, el extracto de su fondo de pensiones y la certificación de un curso (e-learning, b-learning o tradicional/presencial) son ejemplos de archivos PDF útiles. En el mundo corporativo se usa mucho con facturación (invoices) y todo tipo de recibos y notas cambiarias, una certificación digital de cualquier cosa.

Desde este punto de vista, poder sintetizar PDF desde sus aplicaciones tiene la mayor importancia, y aunque algunas personas se confunden pensando que PDF no es un estándar abierto o que hay que tener productos propietarios (como Adobe Acrobat) para poder pensar en sintetizarlo, y por esto creo necesario hacerle saber a todos que PDF dejó de ser un estándar propietario para pasar a ser un estándar abierto en Julio del 2008. Ahora la ISO lo normalizó, como pueden ver acá: http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38920

Entonces ya que sabemos que no tenemos líos de licenciamiento y demás: cómo hacemos para sintetizar PDF desde nuestras aplicaciones? Hay varias formas, he visto muchas aplicaciones que usan la librería FPDF. Aunque admiro profundamente a los creadores de la librería, por hacer un producto excelente, y haber sido la primera librería mainstream buena para esta síntesis, debo decir que me quedo con el producto de don Nicola Asuni, TCPDF. Sólo hay que tener algo de competencia en programación orientada a objetos, y poder entender la diferencia entre encodings, y listo. PDF de altísima calidad, sintéticos y livianos. Bonitos.

Una advertencia: si deciden usar imágenes con transparencia alfa, documentos gigantes, muchas imágenes y fuentes tipográficas por fuera de las que vienen en el estándar (Helvetica, Times, Courier), prepárense para documentos pesados, y cuya síntesis consumirá recursos de cómputo en tales proporciones que podrá agotar el servicio a los usuarios de sus aplicaciones.

 

El enlace de la librería TCPDF: www.tcpdf.org/

No todo lo bueno cuesta!

   

Javascript Frameworks

Blog G2M1 - Desarrolladores

( 3 Votes )

Mootools, YUI, JQuery o Dojotoolkit?

No hay respuesta única para este interrogante, pero si es posible brindar algunas pautas que hagan que escoger uno de estos frameworks (lo cual implica aprendizaje, tiempo, pruebas, etc) sea menos doloroso, lo menos doloroso posible.

   

Términos de uso

Como regla general, el/la usuario/a se compromete a utilizar los servicios y contenidos de la página conforme a lo establecido en la ley, la moral [..+..]

Información de Contacto

Email: info@g2m1.net
Tel: +571 695 2348
Bogota | Distrito Capital
Colombia | Suramérica

Medios Sociales