¡Felicitaciones a los saboteadores!

Estábamos trabajando hasta tarde con Julio Viana (ex-alumno y gran colaborador en este proyecto), eran algo más de las 2am de hoy (madrugada del 22/2), y nos percatamos que empezaron a desaparecer registros de la base de usuarios de nuestro "mini sistema de altas".

Por suerte que este no era un taller piloto de "seguridad para aplicaciones web", pues podríamos haber pasado mucha vergüenza. Pero era de esperar con solo leer algunos de los comentarios vertidos anónimamente sobre cada paso que fuimos dando, buscando desacreditar el proyecto. Sabíamos que en el apuro podríamos cometer algún descuido. Buscando "administrar el riesgo" con mi colega armamos un sistema de respaldos bastante "paranoico".

Nuestro registro de usuarios llegó hasta el número 100, pero gracias al intento de sabotaje perdimos solamente 3 registros, y parcialmente, pues el sistema enviaba por correo a los administradores toda la información de contacto en caso de emergencias (fallara el respaldo de la base de datos, que se diera un borrado de datos entre medio de dos respaldos, etc).

Creo que los "pichones de talibanes" estaban esperando que dijéramos hoy que el taller se suspende por la pérdida de la base de datos. Lo lamento, los estábamos esperando.

No se aceptarán más registros (en algún momento había que poner un límite) y el taller piloto continúa normalmente.

¡El show debe seguir! ;-)

Taller PHP5: "Semana 1"

Luego de la pasada "Semana 0" (donde nos concentramos en preparar la infraestructura), iniciamos nuestros primeros pasos para cumplir con el objetivo del taller: Introducción a los conceptos del desarrollo Orientado a Objetos con PHP5.


Muy importante: no usaremos libros, solo material que se encuentra disponible de forma libre en Internet. Deberán estudiar todos los conceptos que se les soliciten. Si esto no sucede, se dificultará enormemente continuar el resto de las semanas. Se evaluará a cada participante en base a cada tema tratado. Se considerará una falta grave cometer equivocaciones sobre conceptos que se asumen fueron discutidos en el período correspondiente (que nada impide volver a repasarlos) y el usuario podrá ser eliminado del taller.

Tareas para el taller

Las tareas inician hoy y finalizan el lunes próximo (recuerden, vamos en períodos de una semana, de lunes a lunes). Lo importante es "estudiar" (no solo leer, no se acepta un "eso ya lo sé") y entender los conceptos. Los detalles de implementación los veremos luego.

Estas son las tareas de la "Semana 1":
  • Capítulo sobre POO (wikipedia) y todos sus enlaces relacionados: en particular los conceptos (diferencias con la programación estructurada, definición de objeto, clase, método, mensaje, propiedad o atributo, estado interno) y las características (abstracción, encapsulamiento, polimorfismo y herencia).
  • Capítulo sobre UML: en particular qué es, para que sirve, diagramas de clase, diagramas de casos de uso, diagramas de paquetes, diagramas de secuencia.
  • Capítulo sobre Sistemas de Control de Versiones: y luego la entrada sobre Subversion (SVN).
Nota: este material es considerado "un punto de partida" para investigar el tema y posteriormente solucionar todas las dudas que pudieran surgir (a través de foros que se crearán para tales efectos). No se descarta en absoluto leer ningún otro material que complemente el sugerido en estos puntos.

Altas de Usuarios al Taller

Está pronto el mini sistema de altas de usuarios para el taller. El mapa servirá de complemento para decir "¡aquí estoy!", pero este sistema será el que registrará los datos de todos los postulantes. La idea es que usen datos reales (como así también sus fotos) y posteriormente respondan honestamente un cuestionario para saber sus conocimientos y a qué se postulan (desarrollador / líder de grupo). Se analizará cada ingreso de forma manual y en caso de que los datos no estén correctos o sean insuficientes, se les enviará un correo. Luego, se comunicará su habilitación para participar del taller.


Más novedades: surforce.com

Hay muchas novedades con respecto a la infraestructura:
  • Sitio de la "empresa virtual": la empresa donde concentraremos toda la experiencia se llama SurForce (simplemente buscando nombres se nos ocurrió usar el hecho de que el proyecto se originó en el sur, nada más).
  • Grupos de discusión: luego de que los usuarios sean aceptados en el sistema oficial de registro, se les dará de alta en el foro de Google Groups creado para discutir los temas propuestos para cada semana del taller.
  • Documentación centralizada en Wiki: la empresa contará con un wiki que centralizará toda la documentación del taller, así no se perderá información que pueda comentarse entre correos, en el blog o en los foros, toda la información oficial estará ahí, constantemente actualizada..
  • Sistema de gestión de proyectos: se está usando desde hace unos meses (para desarrollar el sistema de altas de usuarios) un sistema de gestión de proyectos llamado ActiveCollab. Oportunamente, cuando se creen los grupos de trabajo, cada uno entrará al sistema para recibir las tareas de desarrollo para su sistema asignado, que será gestionado por su líder de grupo.
  • Sistema de versionado (SVN): ya se encuentra funcionado el servidor SVN para contener los repositorios de todos los proyectos que se desarrollarán. Todos los desarrolladores tendrán acceso a su servidor remoto a través de la integración que dispone el IDE Eclipse. Además de acceder a su propio sistema, con derechos de actualización, tendrán asignados todos los grupos la responsabilidad de colaborar con el framework que usaran todos los proyectos (ese es el uso del framework, reutilizar experiencia y conocimientos convertidos en código).
  • Licencias de los desarrollos: a modo de continuar con la idea de colaborar y compartir las experiencias con otros usuarios, todos los desarrollos serán públicos y liberados bajo la licencia GPL (Software Libre).
Por ahora son estas las novedades. Ni bien se vayan dando de alta en el sistema, iré confirmando los datos y agregándolos a los grupos de discusión para poder trabajar toda esta semana. Tienen mucho para hacer, y todo es un escalón para prepararlos para la semana siguiente. Todas las semanas subiremos un nivel, y probablemente vayan quedando "desarrolladores" despedidos de la empresa por no cumplir con sus responsabilidades (única forma de pago por el taller).

Agradecimientos


Quiero agradecer a todos los usuarios, ex-alumnos y colegas que han demostrado apoyo al proyecto, tanto moralmente como con extensas horas de desarrollo. Y en particular debemos el logo y el desarrollo del sistema de gestión a Julio Viana (egresado de mi curso intensivo de PHP5) que de terco y humilde no terminó de armar su currículum web para que yo lo pueda linkear como corresponde.

En los próximos días iremos armando una sección con los "créditos", haciendo mención a cada uno de los integrantes del proyecto, como dos colegas de la Universidad ORT, Mauro Castro y Rafael Cohen, que participarán como asesores (ambos son excelentes docentes de carreras, tutores de proyectos, especializados en gestión de proyectos y educación a distancia).

Espero que no tengan argumentos para quejarse, esta semana será muy movida. ;-)

Screencast: "Crear un proyecto PHP en Eclipse" (actualizado)

Bueno, luego de experimentar con distintos programas para hacer screencasts, e investigar como solucionar el problema de pérdida de calidad al subirlo a Youtube (sufre un proceso de compresión), aquí está mi primer aporte:

La idea es complementar el uso del blog y el podcast, agregando ahora, un screencast que muestra visualmente y acompañado con audio la explicación de conceptos y usos de herramientas.

Aprovecharé esta nueva herramienta para complementar el taller sobre php5.

Nota sobre GNU/Linux: luego de volver a verlo varias veces (histérico) me acabo de dar cuenta que no hice ninguna referencia al entorno Linux. Como estoy haciendo las pruebas sobre Windows (lugar que estimo será el más común para la mayoría de los usuarios) obvié completamente nuestra otra plataforma (que uso todos los días para trabajar, al revés de muchos). A los efectos, el "workspace" será la ruta de Apache en nuestro sistema, cualquiera sea, lo cual podría ser perfectamente /var/www/ o el de nuestra distribución de turno.

No puedo hacer un screencast para cada plataforma existente, y generalmente, los conceptos se aplican a todas.

Más información

Actualizaciones
  • 18/02/2007 - se agrega comentario sobre GNU/Linux

"Semana 0": Resumen y comentarios

Voy a agregar un resumen de las respuestas que se dieron en los comentarios sobre la "Semana 0":
  • Para los principiantes que recién empiezan con PHP: siempre hay que ir al manual para resolver las dudas; esta práctica enriquece nuestro aprendizaje porque regularmente encontraremos elementos nuevos que pudieron habernos pasado desapercibidos. En esta situación es fundamental leer el primer capítulo del manual: capítulo I - Conceptos Básicos
  • Para los iniciados en PHP, pero que aún no lo dominan (o ya leyeron el capítulo I): es recomendable leer todo el capítulo III - Referencias del Lenguaje, deteniéndonos -sin introducirnos- en el subcapítulo 18, Clases y Objetos (PHP4). No vamos a ver objetos con PHP4, porque para nosotros es obsoleto, y el subcapítulo siguiente sobre objetos en PHP5 lo veremos un poco más adelante.
  • Sistemas de versionado de software (SCM): en nuestro caso particular usaremos SVN en sustitución al famoso y popular CVS, por ser mucho más moderno y contemplar muchas características que no están implementadas aún.
Sugerencia (que debería haber surgido naturalmente de ustedes gracias al "sentido común"): prueben completamente la infraestructura. Verifiquen que todo está instalado correctamente y responde, que cuentan con la versión 5 de PHP, que la base de datos responde. Un buen hola mundo leído de una tabla, ejecutar un phpinfo(), debería ser suficiente.

Para los que tienen problemas con la instalación de la infraestructura (tareas de la "Semana 0"): lo comenté en el blog, es parte de tú tarea resolverlo. Piensen de esta manera: seré el Gerente de Proyectos y ustedes están ahora a prueba:

La "empresa" te entregó la lista de herramientas que usan para desarrollar, te dieron una semana para que te prepares, y coordinaron para el próximo lunes empezar con el entrenamiento formal con una serie de pruebas para ver si estás a la altura del desafío, si puedes integrar la plantilla permanente de "trabajadores a distancia".

¿Tú, cómo piensas proceder? ¿qué es lo que vas a dar a cambio? ¿cuanto vas a invertir de tu tiempo? ¿enviarás constantemente correos a la empresa solicitando ayuda ante el menor inconveniente? ¿o serás autosuficiente?

Recuerden: esto no será un "jardín de infantes", aquí no se van a cambiar pañales. Vamos a hacer el simulacro de estar trabajando en una empresa con características muy particulares. Van a pasar un primer "entrenamiento" de un mes y posteriormente dos meses de prácticas reales dentro de uno de los varios proyectos de desarrollo existentes. Trataremos de recrear la infraestructura necesaria para gestionar cada uno de los proyectos y a los integrantes de la propia "empresa".

¿Va a funcionar? Ni idea, el problema no es que yo esté loco, es que ustedes me siguieron hasta aquí ;-)

Iniciamos oficialmente el Taller de PHP5: "SEMANA 0"

Bueno, veo que algunos pocos no tienen nada de sentido del humor ;-).

Podemos decir que el taller a dado oficialmente su inicio. Dije que íba a ser en los primeros días de febrero y que íbamos a trabajar en módulos de una semana. Un desafío/tarea por semana.

Estos son los requerimientos de la SEMANA 0: "Armar la Infraestructura". Tenemos tiempo desde este lunes al próximo lunes, que iniciará la SEMANA 1 con nuevos requerimientos.

Nota: la mayoría sabe que trabajo en cualquier ambiente, tanto Windows como GNU/Linux, por lo tanto es lógico que no debería haber restricciones en ese sentido.

Misión, instalar y dejar funcionando:

  • Entorno de Desarrollo (IDE): usaremos el famoso Eclipse, que generalmente se conoce mucho en el mundo Java pero no en el PHP. Para facilitar la instalación deberán usar la versión empaquetada y probada del proyecto EasyEclipse. Deben elegir la versión acorde a su sistema operativo.

  • Entorno Web: existen muchas alternativas, pero si estamos hablando del mundo Windows, la que está más pulida e integrada a Eclipse es XAMPP, del proyecto ApacheFriends. No se olviden que hay que bajar e instalar la versión que soporta PHP5. Si van a usar GNU/Linux, no hace falta, generalmente esta plataforma ya cuenta con todas las herramientas necesarias (Fedora, Debian, CentoOS, etc).

  • Sistema de versionado (SCM): daremos un paso evolutivo y sustituiremos el sistema CVS por el sistema SVN. Para la plataforma Windows deberán usar el cliente TortoiseSVN, en GNU/Linux muy probablemente ya esté instalada (buscar comando svn).

  • Herramientas colaborativas: sí o sí, a falta de otro proveedor, vamos a usar todas las herramientas de Google, así que es indispensable contar con una cuenta de GMail. Si no llegaras a tener ninguna, avisa en los comentarios que te enviamos una invitación.

  • Diagramas & Diseños: como no todo es Google, ya que no cuenta con una herramienta para estas necesidades, usaremos Gliffy, por consiguiente todos deberán tener un usuario creado en este sistema.

Dudas & Problemas


Cualquier duda o problema lo discutiremos en los comentarios de esta entrada.

La semana que viene, precisamente el lunes, estoy anuncionando la dirección oficial donde deberán darse de alta y además, empezar con las nuevas tareas correspondientes a la "Semana 1"


CONFIRMO: Sí, sí, para el que no entendió el chiste, ya empezamos (y les digo "de nada" a los que me comentaron que se iban de vacaciones y que no volvían hasta mediados de febrero).


(me hacen acordar a una frase irónica que me decía un ex-docente: "ustedes no se dan cuenta que yo soy lo más parecido a 'un corazón con patas' " ;-))

Entradas populares