Recordando algo más de PHP4. Antigua Clase para Gestionar Usuarios.

Desempolvando algo más del armario saco a la luz otra de las clases que monté en su dí­a para gestionar usuarios, tanto su almacenamiento como su autenticación.
En su dí­a ya veí­a claro que eso de gestionar usuarios no era algo que iba a hacer puntualmente para un proyecto, si no que prácticamente el 99% de las webs necesitaban gestionar a los usuarios que accedí­an a ella, por lo que pensé que tal vez me irí­a bien preparar una clase que me evitara mucho trabajo.
La idea era abstraerme de toda la parte de acceso a datos, dejando ya un script creado para una hipotética tabla usuario y toda una clase que manejara el acceso a la misma. Además, incorporé otra clase que me abstraí­a del uso de la variable de sesión donde almacenaba la información del usuario y además también el acceso a las cookies.
Me sigue haciendo gracia ver código de hace más de tres o cuatro años atrás 🙂
En el zip incluyo el script de creación de la tabla para una mysql, un doc con la documentación y la clase PHP4. Para su correcto funcionamiento se necesitará la clase mysql v0.3 que incluí­ también otro post unos dí­as atrás.
Clase Usuario v0.1
Saludos!
Miguel.

Kumbia, un framework PHP que quiere ser como Ruby on Rails

Hola a todos,
El otro dí­a, un compañero de trabajo me comentó que estaba a empezar a trabajar con Kumbia (https://www.kumbiaphp.com), un framework de PHP del cual le habí­an dado buenas referencias.
La curiosidad me hizo entrar en la web y echarle un ojo, y me sorprendió bastante el comprobar que incorpora algunas de las bases de Ruby on Rails, tales como Active Record y el Andamiaje, además de generar automáticamente una estructura de directorios para cada proyecto que creas.
¿Qué quiere decir esto, que las buenas ideas que ha arrojado Ruby on Rails están empezando a asentarse en la comunidad web? Por ahora parece que lenguajes como PHP se hacen eco de estas técnicas, pero, esto va a quedar íºnicamente para lenguajes de código libre como PHP, y Ruby o lo vamos a poder ver pronto en otros como J2EE y .NET.
Os dejo una URL de un proyecto de ActiveRecord para .NET https://www.castleproject.org/ 🙂
Saludos.
Miguel.

Eligiendo tecnologí­a web

Una conversación en la noche de ayer con un amigo ha inspirado este post, ¿cuál es la tecnologí­a web más adecuada para mi proyecto?
Uf, ¡qué difí­cil pregunta! Como siempre una respuesta genérica a esta pregunta es, PUES DEPENDE. Y es que la verdad es cierto, va a depender de muchos factores. No pretendo sacar ningíºn tipo de conclusión al respecto después de haber terminado este post, pero sí­ almenos aproximar un poco los factores que bajo mi punto de vista afectan a nuestra decisión.
Antes de nada empezar diciendo que no existe una tecnologí­a absolutamente mejor que las otras, habrá una tecnologí­a que para los factores que rodean tu proyecto será mejor que las otras en un momento dado. Y digo en un momento dado porque ese es el primer problema a la hora de elegir, que contamos con las circunstancias y las previsiones del momento. Las previsiones y las planificaciones, pueden fallar, quedarse cortas o pasarse de largo… y si esto puede ser crí­tico a la hora de definir un requerimiento funcional imagí­nate al decidir la plataforma tecnológica sobre la que tu aplicación se va a asentar.
Pero bueno, vayamos al grano y pasemos a hablar un poco de los factores que pueden influenciarnos. Empiezo con los más tí­picos para luego ir dándole vueltas a otros algo más rebuscados.
Multi-Plataforma
Si tu proyecto tiene entre sus restricciones que sea publicable a través varias plataformas del mercado estás de suerte, almenos a la hora de tachar algunas de las opciones que estés barajando. De todas maneras, un humilde consejo en este aspecto es recapacitar realmente si es realmente necesario que sea multi-plataforma, porque muchos veces lo ponemos de restricción cuando luego al final trabajamos con una y listo. El concepto de multi-plataforma vende mucho, es un cartel muy bueno de marketing, ¿pero realmente lo necesitas?
Sin Coste Económico o de Coste Bajo
¿Puedes pagar licencias? ¿Quieres pagar licencias? Tal vez tengas presupuesto para ello, o tal vez no.
Alta Productividad
Cuidadí­n con este aspecto, existen plataformas tecnológicas que están directamente orientadas a la productividad, si este es uno de nuestro requerimientos principales, adelante con ellas.
Tamaño del Proyecto
No es lo mismo un proyecto de dos meses que uno de seis que uno de un año. Y aquí­ no juega sólo lo que tienes pensado hacer ahora, si no la previsión de crecimiento que crees que vas a tener. No es lo mismo estar convencido que vas a desarrollar un componente web que saber que si la cosa va bien vas a tener que empezar a agregar más módulos a la aplicación.
Formación de tus Recursos
Tal vez en tu equipo de trabajo cuentes con personas que tengan experiencia en una plataforma en concreto. Y aprovecho aquí­ para hacer un inciso: el llevar a cabo una formación de dos, tres semanas en una determinada tecnologí­a para luego acometer un proyecto nada más salir no suele traer buenos resultados (retrasos sobre todo) si no acompañas el grupo de trabajo de algíºn recurso que ya tenga experiencia contrastada en ella.
IDE
.NET tiene Visual Studio, Java tiene Eclipse/NetBeans/Java Studio Creator, PHP tiene Zend Studio, Ruby on Rails tiene Aptana…
Seguridad
¿Te preocupa especialmente la seguridad? ¿La información que provee o captura tu web debe tratarse de forma especialmente segura?
Servicios Web, Ajax…
Existe plataformas que aportan más facilidades que otras para crear Servicios Web o trabajar con Ajax. Y vuelvo a aprovechar la ocasión para hacer otro inciso, cuidadí­n con el uso de Ajax, si queréis que vuestra aplicación web funcione como una aplicación de escritorio, no construyáis una aplicación web, construid una de escritorio. Ajax es una herramienta que nos puede ayudar puntualmente para resolver ciertos problemas, pero no se debe abusar, o se volverá contra vosotros.
Integración con el Sistema Gestor de Bases de Datos
Me explico, .NET está especialmente diseñado preparado para trabajar contra SQL Server, Java contra Oracle, PHP contra MySQL… Combinaciones del tipo .NET + Oracle o PHP + SQL Server pueden traeros problemas.
Comunidad, Soporte
Algunas plataformas tienen una empresa detrás que te puede dar soporte ante los problemas que puedan surgir, o una comunidad de usuarios más o menos amplia que te ayude a resolver las dudas.

Y aquí­ me paro, creo que por ahora ya quedan presentes algunos de los factores para echarles un ojo y darles alguna vuelta… pero antes de terminar quisiera comentar cuatro cosas sueltas más a la hora de encarar el desarrollo de una aplicación web.
1) Existen tecnologí­as satélite a las diversas plataformas del mercado y que son comunes a todas ellas. Estas tecnologí­as conviene conocerlas, saber cual es su función, para qué las podemos usar y para qué no. Me estoy refiriendo a Javascript, CSS, HTML, XHTML, XML, XSL, JQuery, JSON, AJAX, SOAP, WSDL… No me refiero a empollármelas todas, pero sí­ saber para qué son cada una de ellas y dónde les puedo sacar partido.
2) Desarrollar una aplicación de escritorio no es lo mismo que desarrollar una aplicación web. La gente que trabaja en web tiene muy fácil pasar a trabajar con aplicaciones de escritorio, cuando la historia es alrevés la penalización es más grande (pero no imposible claro está, estoy hablando de que se necesita algo más de tiempo para ubicarse).
3) Intentad definir un íºnico navegador y una versión del mismo para vuestro proyecto, o seguramente os volváis locos. Si trabajáis con una intranet o algo más cerrado os será viable definirlo así­, si tenéis como requisito que vuestra web funcione con varios navegadores del mercado, almenos intentad marcar la versión de cada uno. No es lo mismo desarrollar para un Internet Explorer 6 que para un 7.
Fuf, cada vez me enrollo más en los post, voy a tener que empezar a recortar 🙂
Saludos.
Miguel.

PHP4 toca a su fin

Es una noticia que se publicó a mediados de julio en https://www.php.net pero que no habí­a caido en comentar por aquí­. El soporte de PHP4 termina a finales de este año. PHP5 está con nosotros desde hace ya tres años, y PHP6 empieza a asomar la cabeza, por lo que se ha decidido finalizar el soporte que se estaba dando a PHP4.
La verdad es que esta noticia me toca bastante en lo sentimental, ya que PHP4 fue la primera plataforma en la que desarrollé mi primera “verdadera herramienta”, aquella ya lejana KTFCL, Liga Española de Team Fortress Classic, en la que al final de sus dí­as llegaron a estar registrados más de 800 jugadores, tanto españoles como del resto de europa.
PHP4 me enseñó de verdad lo que era trabajar en web con un lenguaje de servidor. Atacando a una base de datos MySQL, utilizando javascript para el cliente, sesiones, autenticación de usuarios, hoja de estilos, incluso un rudimentario pero efectivo método para hacer la web multi-idioma. Más adelante vino alguna otra web, como la de Profundo Azul, donde ya además se empezó a explotar de verdad la pobre orientación a objetos que disponí­a PHP4. Monté clases para gestionar el acceso a la base de datos, crear thumbnails al vuelo, incluso algunas para generar controles de servidor a través de PHP4 y que permití­an generar el HTML directamente de listbox, textbox, repeaters… al más puro estilo los controles de servidor de ASP.NET 1.1 del momento, pero todo hecho en PHP4.
La verdad es que fue todo muy divertido, y además, me sirvió para aprender muchos conceptos que hoy en dí­a siguen siendo muy íºtiles.
He estado ahora leyendo parte del código PHP de esas clases y me ha parecido curioso así­ que lo voy a dejar aquí­ publicado para que veais un poco como fue su desarrollo. Me hace gracia porque es código que hice hace más de tres años, y veo en él muchas aspectos de programación que aíºn quedaban por pulir, mejorar… incluso que alguna de las buenas o malas prácticas que he propuesto en la web se cumplen o no se cumplen en el mismo. Qué curioso… te ves un poco a ti mismo al mirar ese código 🙂
Clase MySQL v0.3
Clase Thumbnail v0.3
Clase DropDownList v0.1

Hasta siempre PHP4.
Saludos.
Miguel.

Zend Framework

Uno de los mayores problemas que existen a la hora de realizar desarrollos con PHP es la necesidad de contar con un Framework de Desarrollo de garantí­a que nos ayude en dicha tarea. Ya no sólo un Framework que cuente con una serie de herramientas que nos faciliten parte del trabajo, como acceso a la base de datos, tratamiento de fechas, acceso a xml, incluso Ajax… si no también que nos ayude a respetar 100% el modelo MVC (Modelo-Vista-Controlador, https://es.wikipedia.org/wiki/Modelo_Vista_Controlador).
Parece ser que Zend (https://www.zend.com), una de las empresas que está detrás del gran impulso que se ha dado a la íºltima versión de PHP, la 5, está en pleno desarrollo de un Framework que cumple con las caracterí­sticas que os comentaba anteriormente. Disponen de una fase beta, que ya se puede descargar en https://framework.zend.com, e incluso si estáis interesados podéis participar en su desarrollo.
La verdad es que me estoy planteando seriamente en utilizarlo para desarrollar la base del gestor de curriculum que estoy preparando. Tengo bastante curiosidad en comprobar cuánto se parece en su base a STRUTS, el Framework de Desarrollo MVC por excelencia para desarrollos web con J2EE.
¿Alguien que pueda aportar su experiencia al respecto?
 Saludos a todos!