Categoría : Desarrollo web

Instalando una Wiki

DokuWikiHe comenzado un nuevo proyecto (ya hablaré sobre él mas adelante :)), que a diferencia de tantos otros será un trabajo en equipo y que además cada uno de los componentes estaremos separados por muchos kilómetros.
No es la primera vez que trabajo en colaboración ni con gente a la distancia, pero sí es la primera vez que tenemos que coordinar entre todos las ideas, tareas, diseños preliminares, bocetos, etc.
Así que lo primero que se me ocurrió para facilitar el trabajo fue instalar una wiki. En realidad se dice rápido pero tuve que darle varias vueltas al tema, por empezar no tenía ni idea cómo funciona una wiki y por seguir no sabía que había varias versiones...
Así que después de investigar un poco y probar varias llegué a esta versión: DokuWiki, que no requiere el uso de bases de datos y por lo tanto la instalación consiste en "copiar y usar".

DokuWiki es un Wiki de uso sencillo y compatible con los estándares. Orientado a crear documentación de cualquier tipo dentro de grupos de desarrolladores, grupos de trabajo y pequeñas compañías. Su sintaxis simple a la vez que potente facilita la creación de textos estructurados y permite que los archivos generados sean legibles incluso fuera del Wiki. Todos los datos se almacenan en archivos de texto plano, sin requerir el uso de ninguna base de datos para su funcionamiento.

A pesar de lo simple que parece ser tiene muchísimas opciones, aunque al principio parece que no :), aquí un listado de todas las Características de DokuWiki.

Bake Planet, un planet de blogs creado con CakePHP

CakePHPHace unos días, escribiendo en el foro de Computer Emuzone, se me ocurrió instalar un "planet de blogs" para los blogs de retro informática. Lo primero que hice fue buscar algo ya hecho para no reinventar la rueda, como estoy inscripto al Planet Stratos miré cual usaban (Planet Planet), pero está hecho con Python y yo no sé nada de Python... fue entonces cuando me picó el gusanito de "hacerlo yo mismo"... :D

El resultado es este: Retro invaders, blogs de retro informática, todavía hay algunos errores de charset, pero en general está totalmente operativa.
Para leer las semillas RSS he usado la librería SimplePie, que facilita muchísimo la lectura de RSS, haciendo la parte más pesada.
Apenas tenga una versión un poco mas depurada publicaré los códigos fuentes del proyecto con licencia GPL (o alguna de código libre).

Problemas al intentar comprar un billete en ALSA.ES

A ver... este es un artículo-pataleta sobre la página web de Alsa y espero que los responsables tomen nota de los problemas que tuve que sufrir para poder comprar un simple billete de bus. Al final me convenía caminar 10 minutos hasta la estación y comprarlo directamente, o hacerlo por teléfono... pero uno está acostumbrado a internet: elegir tranquilamente, la fecha y hora, el lugar en el bus, forma de pago, etc.

Resumen de los problemas que tuve

  • Usando Firefox hace cosas raras.
  • La URL no funciona sin las www.
  • Con IE7 también hizo cosas raras.
  • En el "carro de la compra" no hay manera de quitar elementos.
  • El proceso de pago se colgó.
  • No hubo manera de comprobar si mi billete fue comprado.
  • Los formularios y textos de ayuda muchas veces no son todo lo claros que deberían ser.
  • Tuve que llamar por teléfono para saber que había pasado.

Primeras impresiones

Han renovado la web de ALSA (probablemente hace bastante), se nota que la han mejorado mucho, la veo mucho mas clara y agradable, recuerdo que la versión anterior era bastante incómoda y daba errores con Firefox.

Nueva página web ALSA

Problemas desde el principio

Como mi navegador habitual es Firefox intento usar la web desde allí y al principio todo parece ir bien, selecciono Origen y Destino (los desplegables van bien, con Javascript van filtrando los resultados, muy cómodo), selecciono la fecha, cantidad de plazas, pincho en "Iniciar compra" y... ¡Zaass! primeros problemas, me dice que falta seleccionar Origen, Destino, Fecha... o sea todo... o sea que parece que no funciona en Firefox3. Vuelvo a la pantalla de inicio, ingreso nuevamente todos los datos y ahora ya no responde el boton de "Iniciar compra"; Luego hice otras pruebas tuve otros errores y no este, así que deduzco que no está preparado para Firefox.

Error al usar Firefox3 en la página web de ALSA

Problemas también en el lado oscuro

Pues nada, la web no contempla a los usuarios de Firefox (en este caso version 3, en Safari y Opera no lo probé) resignado abro IE7 y escribo alsa.es (sin las www) y ¡Chann!, pantalla de error Internet Explorer no puede mostrar la página web, no entiendo como se les pueden pasar este tipo de cosas a empresas de este calibre. En fin, uso www.alsa.es como dirección y superados estos pequeños obstáculos voy adelante con la compra: selección de Origen, Destino, Fecha, Hora, Numero de asiento (muy bien ese detalle), confirmar y... ¡me pide otra vez los datos de Origen, Destino, Fecha... ¡pero si esto esto ya lo había seleccionado!, en fin, otra vez ingreso, selecciono, activo, mi nombre, telefono, email, nif... y vamos a pagar, me pide los datos de la tarjeta, entre tanto nervio me asalta un momento de duda quiero volver a consultar los datos del pasaje y no tengo ninguna opción para consultar los datos de mi compra... así que ante la duda no hago el pago y comienzo una nueva operación. Otra vez un par de situaciones raras y ya en la pantalla de "Pagar" veo que tengo la operación anterior pendiente, o sea que tenía que pagar 2 pasajes, algo lógico al fin y al cabo ya que esos datos se limpiarán al terminar la operación. No pago, vuelvo a la pantalla de Inicio a buscar el equivalente a "Mi compra" o "Carro de la compra" y efectivamente lo veo debajo del buscador con el nombre de Resumen de compra y veo que estan las 2 operaciones pendientes, pero no encontré ninguna manera de borrar una de ellas, asi que decidimos darnos por vencidos e intentarlo mas tarde. Viendolo ahora reconozco que tendría que haber caminado esos 10 minutos hasta la estación... :D

Los problemas definitivos

Un par de horas mas tarde, nuevo intento: esta vez vamos directamente al grano, ya totalmente decididos rellenamos NUEVAMENTE todos los datos y llegamos finalmente a la pantalla de Pagar: Número de tarjeta, CCV, Caducidad y finalmente pincho en "Pagar".. ¡Crash! ¿Y ahora queee?? Mensaje de error diciendo que falta "Aceptar las condiciones de compra"... a ver, estoy casi seguro que eso lo marqué... bueno, si dice que falta, puede que se me haya pasadp... ACEPTO LAS CONDICIONES, relleno nuevamente los datos de la tarjeta, con miedo pincho en "Pagar" y ¡Crack! Otra vez el mismo error... ¡Nooo!

Mientras esto pasaba, recibí un mensaje en mi móvil con el código localizador de la compra hecha.
A estas alturas ya no sabía si mi pasaje esta comprado, si lo había pagado 2 veces, si me habían enviado el localizador pero no había sido pagado y luego se anularía, un mar de incertidumbres... En alguna parte de la web encontré unas FAQs, y estaba contemplado el caso de no saber si la operación estaba completa, ahí explicaba que en "Gestión de billetes" había que poner el localizador para saber si la compra había sido realizada. Luego de buscar DONDE está localizada la "Gestión de billetes"... (en estos casos se debería poner "Gestión de compras > Gestión de billetes", para orientar al pobre y sufrido usuario) pongo los datos que me solicita, (recalcar que hay 2 campos para la fecha pero no se sabe que va en el segundo) pincho en "Iniciar búsqueda" y... ¡¡¡Me aparece el buscador de compra de billetes!!! (Origen, Destino, Fecha...), no se sabe si es que no encontró la operación, si dio un error, si "es así"...
Punto final, después de 10 minutos de intentar al teléfono y que dé ocupado, logramos comunicarnos, y alli nos explicaron que la compra había sido hecha, que había sido cobrada una sola vez, que el buscador no encuentra nuestro billete porque no contempla un NIF con letra adelante y que ellos ya saben que la web tiene problemas.
Y para cerrar el tema, caminé 10 minutos hasta la estación, presenté el localizador y pedí que me entreguen en la mano el pasaje!!! No sea que vaya a subirme al bus y me salgan con algo más...

Espero que los responsables de la web o de la empresa tomen medidas, porque una web tiene que ser una herramienta clara, fácil y simple de usar... está claro que a la web de ALSA le falta terminar de cerrar varios detalles. Y digo detalles porque en general la web está bien.

Actualizándose a CakePHP 1.2

CakePHP 1.2 Framework PHPFinalmente me he decidido a dar el salto a la nueva versión de CakePHP.

El primer contacto fue duro porque:
- Estoy muy acostumbrado a la v1.1.
- Tengo muchas "mini-librerías" que fui creando a medida que aprendía a usar CakePHP.

Ahora me queda por delante aprender a usar todas las nuevas posibilidades, dejar de lado mis "mini-librerías" ya que CakePHP 1.2 ofrece de base cosas como gestión de usuarios, permisos de usuarios, gestión de lenguajes, paginación, etc.

Para ir aprendiendo comencé con un proyecto simple: convertir mi (muy) antigua página web de Manual de Crianza de Caracoles a CakePHP, agregarle un sistema de noticias y artículos de caracoles, recetas de cocina, etc. Ya avisaré cuando haga la actualización.

Usando Código Abierto (Open Source)

Software LibreMi entrada al mundo del Código Abierto fue muy gradual... casi sin darme cuenta...

Hace 3 años (en el 2004) estaba haciendo páginas webs completamente Flash, algo de Dreamweaver y Photoshop, creando infografías con 3D Max, leyendo el correo con Outlook, navegando con IE, subiendo archivos por FTP con EasyFTP, usando MS Office, ACDSee para ver imágenes, Media Player para ver videos, Acrobat Reader para ver PDFs, Winamp para escuchar MP3s... etc. Y Windows XP como sistema operativo.

Ahora de esa larga lista de programas propietarios lo único que sigo utilizando es Windows XP, Flash en muy poca cantidad y Fireworks. Todo lo demás lo reemplacé por alternativas libres. Y es que el tema del Código Abierto tiene un "no sé qué" de comunidad, de colaboración, de grupo, de solidaridad, que como decía antes, muy silenciosamente y muy de a poquito me convirtió en uno más de los suyos.

Mi postura sobre el tema es: Si necesito un programa y existe una alternativa "libre", entonces la elijo antes que la opción popular/privada. A veces se da el hecho que la alternativa libre tiene menos características que la privada, entonces hay que evaluar otros factores ¿esas caracteristicas que no tengo son realmente necesarias? ¿Valen el dinero extra a pagar? ¿O en todo caso, vale la pena el trabajo que lleva conseguir los cracks y desprotecciones, cuando podría tener un programa de forma totalmente legal, actualizable y gratis?

Si no sabes lo que es el Software Libre, Código Abierto y todo lo que hay detrás, te aconsejo que le eches un vistazo a estos enlaces con información sobre el tema.

* La imagen corresponde al logotipo de GNU

Framework PHP: CakePHP

Finalmente voy a hablar un poco de mis comienzos con este "framework" para PHP.

Empecé a programar PHP/MySQL hace algo más de 2 años, al principio todo era nuevo y el uso que le daba al lenguaje era usando los comandos básicos del lenguaje, pero a medida que iba aprendiendo y haciendo proyectos mas grandes y complicados veía que necesitaba "algo más"... Desde una manera de organizar los archivos, carpetas hasta una manera estandar de acceder a las bases de datos y mostrar la información.

Cuando uno apenas domina un lenguaje es impensable utilizar librerías y funciones que dan por sentado una base en el manejo del lenguaje,... pero una vez tenemos esas bases, ya podemos "aventurarnos" a las cosas mas complicadas.

CakePHPAsí que llegado a este punto en donde las bases de PHP ya las tenía mas o menos asumidas y viendo que necesitaba urgentemente un orden y sistema de trabajo fue cuando me atreví a ver de que se trataba esto del CakePHP.

En estos días se cumple mas o menos el año desde ese primer acercamiento a CakePHP, y no puedo estar más conforme con la elección :)

CakePHP es Código Abierto, o sea que somos libres de utilizarlo sin pagar, obviamente si podemos hacer donaciones para que ese proyecto siga creciendo y mejorando todos saldremos beneficiados.

Aprendiendo y organizando proyectos PHP

Hace un año y medio mas o menos que empecé a usar PHP para el desarrollo de páginas web. Aunque el lenguaje realmente no me fue difícil de aprender, lo más problemático fue encontrar un método de trabajo y forma de organizar los archivos y carpetas (código, estilos, imágenes, etc).
Actualmente estoy usando el framework CakePHP, pero antes de usar este framework profesional pasé por varias etapas de investigación y experimentación para encontrar un método de trabajo cómodo y potente.
A continuación cuento un poco cómo era mi forma de trabajo antes de conocer CakePHP:

Modelo Vista Controlador

Desde el primer momento me atrajo la lógica MVC (Modelo Vista Controlador), que aunque no la comprendía en profundidad, sí veía que era una manera muy ordenada de organizar los archivos de un proyecto.

El Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página, el controlador es el Sistema de Gestión de Base de Datos y el modelo es el modelo de datos

Debido a ser novato usando PHP y POO sólo logré implementar "a medias" el MVC, esto quiere decir que no apliqué el Modelo y hay algunas "zonas grises" entre Controlador y Vista.

  • Solución para el Modelo: ninguna, no llegué a comprender este punto.
  • Solución para el Controlador: la lógica de cada pantalla en archivos PHP independientes.
  • Solución para la Vista: para separar la presentación de los datos utilicé la Clase MGTheme de Marioly.

Organización de los archivos de una página web

La manera en que organicé mis páginas web era la siguiente:

  • /clases: accesos a las bases de datos, control del template de pantalla (MGTheme.php), etc.
  • /control: el código que controla cada una de las pantallas de la página web (catalogo.php, inicio.php, etc.)
  • /config: configuracion de las bd, key de googlemap, textos en los distintos idiomas, etc.
  • /descargas: vcards, archivos pdf, etc.
  • /inc: (includes) segmentos de códigos, funciones, etc.
  • /img: las imágenes de la web que forman parte del contenido, no del aspecto visual. Ejemplo: fotos de la empresa, productos, etc.
  • /flash
  • /jscripts
  • /vista: plantillas (.tpl) e imágenes (menús, marcos, fondos).
  • index.php
  • favicon.ico

Mi próximo artículo será sobre el framework CakePHP, donde contaré mi experiencia con este excelente framework (¿librería?) PHP.

A seguir sufriendo con IE7...

O cómo M$ pasa de todos y le importan nada los estándares y las tendencias de desarrollo web XHTML+CSS, etc.

Todo esto no es nada nuevo para los que estamos en el desarrollo de páginas web, pero de vez en cuando nos sorprendemos cuando lo dice alguno de los "conocidos" que siempre se han mostrado favorables a las políticas de Windows.

Se trata de Paul Thurrott y sus propias palabras son las siguientes:

Mi consejo es simple: Boicotear a IE. Es un cancer de la web y debe ser frenado. IE no es seguro y no implementa estándares, lo que lo hace inusable tanto para el usuario final como para los creadores de contenido de la web. Por su base de usuarios, sin embargo, muchos desarrolladores están sufriendo por desarrollar para IE al costo de descartar los bien establecidos estándares que funcionan bien en otros navegadores. Tu puedes cambiar esto demandando más de Microsoft y usando una alternativa mejor de navegación. Yo recomiendo Mozilla Firefox, pero el Safari de Apple (O Konqueror) y Opera 8/9 son muy valiosos de considerar.

Artículo original (en ingles): IE 7.0 Technical Changes Leave Web Developers, Users in the Lurch

Vía: aNieto2k

Eclipse fácil: distribución EasyEclipse

EasyEclipseLuego de intentar varias veces utilizar el entorno de programación Eclipse, ha sido gracias a esta distribución EasyEclipse que me he decidido finalmente a usarlo de forma activa.

EasyEclipse Distribution consiste en varios paquetes con plugins instalados y listos para el desarrollo de aplicaciones HTML, PHP, Java, LAMP, Python, etc.

 
#