Blog de Daniel Zegarra Rotating Header Image

PHP

Aqui estoy

Así es, no he muerto aun, solo he tenido mucho trabajo últimamente.

Me ha gustado darme cuenta que después de meses de aprendizaje forzado me encuentro por fin en buenos términos con javascript. Sigo pensando que es un lenguaje inadecuado para la web, con muchos problemas de compatibilidad entre browsers e increíblemente tosco en su aproximación a la OO. Así es, por si no sabias javascript es un lenguaje estructurado al que se le han ideado formas ingeniosas de emular un comportamiento orientado a objetos pero, al fin de cuentas, no lo es ni al 50%.

Mi experiencia con JS se limita a un solo framework y este es Ext-JS. Un framework sorprendente, completamente orientado a objetos (en lo que se puede) y gracias a esto te permite crear enteramente una interfaz totalmente funcional sin tener que escribir una sola linea de código HTML (salgo los infaltables y ).

Y la desilusión recae sobre CodeIgniter y AdoDb. El primero un framework PHP ideado para el desarrollo usando el patrón MVC ofrece una atractiva curva de aprendizaje pero sin ni un solo método de ayuda para Ajax. Definitivamente no es un framework pensado para Ajax. Muy util si deseas tener una web y dispones de poco tiempo y no hay esperanzas de que sea convierta en un gran proyecto.

El segundo AdoDB es una librería en PHP para la abstracción en la comunicación entre PHP y la base de datos. En pocas palabras, es una capa intermedia entre la BD y tu aplicación. No es nada sorprendente, Zend Framework así como otros frameworks tienen paquetes similares (incluso CodeIgniter tiene las suyas). La diferencia con otras librerías es que AdoDb carece de detallada documentación que si poseen sus compañeros, tanto en la web como en el código mismo (el código no se encuentra documentado) y al parecer no recibe soporte desde hace ya un tiempo. PHP 5.3 me lanza varias alertas de comandos obsoletos en esta librería así que todo parece indicar que posiblemente deje de funcionar con la siguiente versión de PHP.

Eso es todo por hoy. Continuo trabajando. Mañana tengo una presentación que debe salir muy bien.

Enhanced by Zemanta

Depurar Code Igniter con Eclipse y Zend Debugger

Sin hacer cambios a Code Igniter no se puede. Aun si enable_query_strings esta definido en FALSE Code Igniter leera las variables que PDT pasa usando GET para que Zend Debugger conecte correctamente a la consola. Es una tonteria que Eclipse no nos permita NO pasar estas variables via GET. La solucion mas rapida pero no permanente es abrir el sitio que deseamos depurar en un browser aparte luego de tener a Eclipse esperando la conexion del depurador, pero es una salida molesta.

Lo que hice fue decirle a Code Igniter que ignore ciertas variables entregadas via GET aprovechando los Hooks para no tocar el codigo base de CI.

Para usar este hook sigue estos pasos:

  1. Descarga este archivo y guardalo en tu escritorio.
  2. Descomprime el contenido del archivo en el directorio application de tu instalacion de CI. Si ya tienes registrado algun hook entonces no reemplaces el archivo config/hooks.php. Agrega el contenido del archivo descargado tu archivo hooks.php actual.
  3. Asegurate que enable_hooks es igual a TRUE en el archivo config.php ubicado en CIroot/application/config/.

Luego de hacer esto, intenta depurar tu aplicacion. Deberia correr sin problemas y ya no mostrar el error de que no se encuentra el controlador.

Nota: La intencion de este articulo es solo compartir un archivo fuente para utilizar Zend Debugger con CI. Para informacion de la instalacion de Zend Debugger o su uso con Eclipse PDT  puedes… googlear.

Descargar ZendDebugger&CI Hook

Nace Kopernik, un sistema académico

Logo de Kopernik

Kopernik es el nombre clave del proyecto personal al que he dedicado mi tiempo estos ultimos 4 meses. Se trata de un sistema academico online desarrollado usando Flex, PHP (Zend Framework) y MySQL para su uso en instituciones educativas.

Logo de Kopernik

Logo de Kopernik. La idea era que el sistema sea usado por escolares y por lo tanto, no debia ser tan serio.

Aprovechando la experiencia que adquiri trabajando y estudiando en universidades decidi crear desde cero un sistema que se ajustara a los requerimientos especiales que cada institucion pudiera tener. Como recien estaba empezando pense que mejor seria comenzar con modulos para colegios pero… resulta que he olvide como funcionan!

Cuando estaba en el colegio no pensaba en procesos y en maneras de como mejorarlos como lo hago ahora. Por eso es que los modulos que ya he creado almacenan datos como el valor en creditos de cada asignatura o que permiten a un alumno matricularse en asignaturas distintas que el resto de sus companeros. De hecho el proceso que los administradores deben realizar para matricular de un alumno esta pensado usando los requerimientos universitarios o de institutos.

En los colegios todos los alumnos llevan lo mismo. Solo hay dos opciones:

  • No te matriculas un año o…
  • Estas matriculado y llevas todas las asignaturas de tu año (con algunas excepciones como no asistir al curso de religion por solicitud de los padres).

Es algo en lo que hay que trabajar.

Por el momento me quedan algunos modulos importantes por desarrollar, como el control de evaluaciones, asistencias y materiales de clase.

A continuacion explico algunos detalles del software y al final puedes encontrar un enlace para que lo puedas ver en accion.

Caracteristicas generales

  • Es modular, de tal forma que sea facil reutilizar los modulos comunes y adecuarlos a lo que necesite.
  • Permite el trabajo colaborativo (tiempo real).
  • Solo hace uso del puerto 80. No es necesario habilitar la salida puertos adicionales en una red controlada.
  • El cliente solo necesita tener Adobe Flash instalado.
  • No requiere de licencias adicionales.
  • Es multiplataforma. Corre en Windows, Mac, Linux y cualquier otro sistema operativo que tenga soporte para Adobe Flash (talvez Android?)
  • Es multitarea. Las aplicaciones y modulos son cargados dentro de contenedores visibles como ventanas. Por lo tanto, no es necesario salir de un modulo para entrar a otro. Puedes tener varios modulos abiertos al mismo tiempo compartiendo el escritorio visible o minimizar algunos de ellos para usarlos luego.
  • Al instalarlo en un servidor web con un IP publico es accesible desde cualquier parte del mundo.
  • Control de acceso, a modulos y acciones, por grupos de usuarios. Se define que grupos tienen acceso a que modulos y las operaciones que realizan estos.
  • El sistema cuenta con algunas herramientas como el administrador de tareas (clic secundario sobre el fondo) y un explorador de directorios (del servidor).
Tres aplicaciones abiertas: el explorador de alumnos, el explorador de archivos y el administrador de tareas

Tres aplicaciones abiertas: el explorador de alumnos, el explorador de archivos y el administrador de tareas

Tecnologias usadas

  • Flex 4: Empece el proyecto con la version 3 pero las nuevas caracteristicas (en especial la capacidad de trabajar con archivos localmente y el skining) resultaron muy tentadoras y tuve que hacer la migracion ya casi a mitad del proyecto (y acepto que no fue una decision muy inteligente. Me retraso todo el calendario pero espero haya valido la pena).
  • Zend Framework: Elegi este framework por la empresa que hay detras (Zend creadora de PHP) y por que ya me encuentro familiarizado con el. Ademas podia usar el paquete Zend_Amf para conectar Flex con el servidor. Tuve que migrar desde AMFPHP por lo que perdi el explorador de servicios y el control de acceso en cada clase. Realmente fue una migracion dura porque las clases del sistema (no academicas) ya estaban empezadas y funcionaban perfecto con AMFPHP. La gran ventaja de usar Zend_Amf es que tienes a tu disposicion todo el framework de Zend y ademas es el unico soporte para AMF que tiene la venia de Adobe sin ser desarrollado por Adobe (y la version actual de AMFPHP se encontraba abandonada en una version beta).
  • PHP: Como es obvio, por ser un lenguaje fantastico y porque casi todo servidor Apache lo tiene instalado.
  • MySQL: Necesitaba una base de datos transaccional y confiable. Que mejor que MySQL usada en la mayoria de servicios de hosting.

Requisitos

  • Del lado del cliente
    • Flash Player 10.0.0 o una version mayor.
  • Del lado del servidor
    • PHP 5.2
    • Apache
    • MySQL

Acceso a la demo

Antes de ingresar por favor, lee las siguientes instrucciones:

  • Los datos de acceso se encuentran pre-escritos en los campos de texto, solo es cuestion de logearse.
  • El usuario de prueba pertenece al grupo de administradores, por lo que tendras acceso sin restriccion sobre los modulos y acciones que puedan estos realizar. Ten cuidado de eliminar aplicaciones, volver a registrarlas te puede resultar complicado si no sabes donde se encuentran almacenadas.
  • La falta de acentos se debe a que uso en teclado en ingles. Lo corregire muy pronto. Las fallas ortograficas se deben a mi falta de atencion a las clases de lengua (junto con la eficiencia del corrector ortografico de Word). Cuando tenga tiempo aplicare las correcciones necesarias.
  • La primera vez que cada aplicacion es solicitada puede demorarse unos segundos en cargarse (dependiendo de tu velocidad de salida a Internet). La aplicacion queda almacenada en la cache de tu navegador y es cargada de alli en las solicitudes posteriores.
  • Y por ultimo, te recuerdo que esta es una version en desarrollo y por ello puede tener errores. Si encuentras alguno, por favor ayudame a corregirlo comentandolo en este post. Gracias.

Eso es todo. La direccion de acceso es la siguiente: http://kopernik.danielzegarra.net/. Espero tus comentarios.

La directiva date.timezone de PHP

Ya había publicado un post acerca de el error que provoca no definir esta variable en PHP. Me doy cuenta ahora que la instalación por defecto de Zend Server no define este variable lo que hace que AMFPHP 1.9 no funcione adecuadamente.

Error que devuelve el browser de servicios de AMFPHP

Error que devuelve el browser de servicios de AMFPHP

La solución con Zend Server es bastante simple. Tan solo te diriges a las directivas de configuración y defines un valor para el parámetro date.timezone bajo la categoría date. Como dije antes, los valores posibles están publicados en http://pl2.php.net/manual/en/timezones.php.

Modificando la configuracion de PHP usando la administracion de Zend Server

Modificando la configuracion de PHP usando la administracion de Zend Server

Primeros pasos con AMF y Zend Framework

Ahora que estoy de vacas tuve tiempo para leer la documentacion del framework de Zend para su PHP y esta bueno. 

Decidi aprenderlo de una vez y empezar a usarlo en mis proyectos. 

Una de las primeras cosas que busqué fue su compatibilidad con AMF puesto que estoy acostumbrado a usar AMFPHP para casi todo. Zend Framework viene con clases para trabajar con AMF y son clases muy buenas. 

En 15 minutos arme mi gateway AMF en PHP con tan solo 7 lineas de codigo y cree un flash simple para probar mi servidor. 

A este servidor solo le falta agregarle la autenticación y Zend Framework trae clases para eso tambien. 

Puedes descargarte el Gateway + Service y Flash de ejemplo en el siguiente enlace.

Descargar Gateway AMF usando ZF + Service y Flash de ejemplo

Necesita tener las librerìas de Zend Framework junto al ejemplo.