Taller PHP5: "Semana 2 - Ingeniería Inversa"

Esta es la letra de la Semana2 del Taller sobre PHP5:

La "empresa" SurForce, entendiendo que el postulante ha estudiado cabalmente el material que se le sugirió como base, solicita que se apliquen los conceptos aprendidos y resuelva los siguientes requerimientos:

Preparar el entorno de trabajo
  1. Bajar el "proyecto base" desde el repositorio SVN: usando las herramientas instaladas obtener los fuentes del proyecto que se encuentra actualmente alojado en el servicio Google Code.
  2. Reconstruir la base de datos que necesita el sistema (subdirectorio "sql").
  3. Probar todas las opciones del sistema

Documentar el sistema

Se necesita hacer "ingeniería inversa", es decir, usted recibe un sistema que desconoce y que no cuenta con documentación. Se le solicita que analice el sistema y presente una documentación que contenga los siguientes diagramas UML.
  1. Diagrama de "Casos de Uso"
  2. Diagrama de "Paquetes" (presentación, dominio y persistencia)
  3. Diagrama de "Clases" de cada paquete.

Cuestionario

Contestar el siguiente cuestionario (en caso afirmativo indicar claramente en que parte del fuente, en caso negativo, justificarlo de forma detallada)
  1. ¿En qué parte del sistema se realiza "herencia"?
  2. ¿En alguna parte del sistema se usa "polimorfismo"?
  3. ¿Si tuviera que agregar otro tipo de usuario, como un Administrador, qué haría?
  4. Obtenga un ejemplo de "encapsulamiento" y explíquelo detalladamente.

Forma y límite de la entrega

Tienen una semana para investigar, experimentar, y aplicar los conocimientos. El plazo de entrega es el próximo lunes sin prórroga.

Para la documentación deberá usar las siguientes herramientas:
  • Google Docs - deberá realizar un documento "formal" con toda la información que se le solicita. Luego de finalizado, deberá compartir el documento con el Gerente de Proyectos. El documento deberá llamarse "semana2-nombredeusuario".
  • Gliffy - se usará para hacer todos los diagramas UML, que luego deberá grabarlos en un archivo gráfico y agregarlos al documento base (punto anterior).
IMPORTANTE: El desarrollador que exceda de esta fecha límite (lunes 5 de marzo) o que en la documentación falte alguno de los requerimientos, será descartado del taller.

PD: todas las dudas sobre los requerimientos podrán hacerse en los comentarios de esta entrada.

Semana 1 - contesto las dudas de los usuarios

Voy a tomar algunas dudas de participantes del taller para contestarles a todos en general (los ">" representan los textos de mi interlocutor):

Estimado Edu T:

> Voy a dar alguna opinión personal
> por si tienes a bien tenerla en
> cuenta.

Todas las opiniones, sugerencias o críticas se usan para tener otros puntos de vista y contrastarlos con los nuestros, así que bienvenidas!.

> 1º Me he apuntado al curso hace
> ya mucho y aparezco en el
> "mapita", nunca me quedó muy
> claro si eso era el sistema de
> registro de alumnos o sólo un
> modo de darse a conocer,
> finalmente he visto que "eso" era
> el sistema de apuntarse.

Bien, es uno de los temas de estudio en este taller, el gran problema de todos los proyectos y particularmente, de los seres humanos: "la comunicación".

Si recorres las entradas por la etiqueta "taller" encontrarás ordenado cronológicamente los pasos que fuimos dando (el más reciente primero):
  • "Tallerphp5: registrate en el mapa" con la explicación que momentáneamente nos registraremos en el mapa para conocernos (poder saludar y decir "¡Aquí estoy!") y de alguna forma cuantificar cuantos interesados había y de donde eran.
  • Luego, con la entrada "Semana 1" se aclara el tema de los grupos/foros de discusión que se van a armar para nuclear la comunicación entre los participantes y el tema de crear un Wiki para centralizar la información que se genere (procedimientos, metodología, documentación, screencasts, FAQ, lista de proyectos, etc).
Pero como esto es un "experimento" y vamos aprendiendo sobre la marcha, todo lleva su tiempo de organización hasta pulir la forma de trabajo.

Es como tú bien dices, tenemos que pasar a un modelo centralizado de documentación o nos perderemos en la comunicación desperdigada y generará muchos malos entendidos.

Se ha progresado, lentamente, pero de forma calculada (iré aumentando la velocidad con las semanas). Lo que trato de evitar es hacer pruebas con todos juntos, a la vez. Pruebo con un grupo, cometo errores, cambio la óptica del problema, lo pulo, y luego voy agregando más integrantes al proyecto.

Hasta el momento hay:
  • 2 muy buenos asesores en desarrollo PHP5 (GatorV y WebStudio)
  • 2 excelentes asesores que son docentes en gestión de proyectos y educación a distancia (Mauro y Rafael).
  • un primer grupo de desarrollo (Sistema "Gestión Taller") al cual se le han asignado los primeros desarrolladores a su "líder de equipo". En horas se les está asignado la tarea de solucionar el problema de seguridad y aumentar la calidad del código para evitar posibles nuevos errores (refactoring).
  • Posteriormente, se habilitará nuevamente el sistema de registro, el cual no tendrá ningún límite máximo de usuarios ni de tiempo. Se usará de ahora en más como una "bolsa de trabajo virtual" y paulatinamente se los irá contactando para ser asignados a un grupo de desarrollo.
  • Está definida una forma de evaluar a todos los que se han postulado como líderes (gracias a los asesores en gestión) y en las próximas horas se les comunicará por correo a cada uno.
  • Hay 5 foros prontos para trabajar sobre 5 sistemas concretos. Una vez definidos los líderes de grupo se asignarán los desarrolladores para cada grupo (por esa razón podemos seguir demorando unos días más).
  • El lunes próximo inicia la Semana 2 y está todo pronto: buscaré que apliquen los conocimientos conceptuales que debieron haber acumulado en la Semana 1 (por eso no habilito aún los foros, quiero que se den "la cabeza contra la pared" así aprenden).
> 2º He hecho mis tareas de la "Semana 1"
> y se me ocurrió ver si alguien te había
> hecho alguna consulta o preguntado
> alguna duda sobre sus estudios.

Te aclaro, mucho del trabajo semanal es de "autocapacitación", se busca que sea en solitario. De todas formas iré apoyándolos a través de screencasts, pero que nunca serán un resumen o sustituto de vuestro propio estudio.

La idea de estas semanas es que las tomen dentro del siguiente contexto:

"La empresa SurForce les ofreció integrar su equipo de teletrabajadores y usará un primer mes para evaluarlos y ver como se desempeñan. Les darán pautas para estar prontos para trabajar en equipo. Si ustedes no logran seguir estos requerimientos la empresa dudará de sus capacidades de adaptación y si ustedes pueden ser desarrolladores independientes."

La etapa de trabajo en equipo se aplicará en el segundo mes del taller (aproximadamente).

> Mi primer "problema" fue encontrar dónde
> la gente te plantea sus dudas

Atención: este "piloto" está pensado para ser un taller, no un curso, y buscará ser sumamente práctico. Por eso recreamos este contexto virtual de "empresa". No se van a crear exclusivamente foros para solucionar dudas sobre tareas que deberían resolver ustedes (para eso existen foros especializados para esos menesteres). Se usarán sólo para comunicarse dentro del equipo de desarrollo, y no para descansar en el esfuerzo de otro desarrollador. Un equipo depende del trabajo de todos sus integrantes, del aporte de cada uno de ellos por una causa común.

Si no se logra esa "sinergia", el líder debería detectarlo y resolverlo con el "gerente de proyectos" (tal vez moviendo de grupo, o sacándolo de la "empresa"). El que no cumple, no se esfuerza, no rinde, perjudica al que sí lo hace (no estoy inventando nada nuevo, así es la realidad).

> ¿en los comentarios de "Semana 1"? ¿En siguientes posts sobre el sabotaje?

En las entradas está la información oficial. En los comentarios de esa entrada se discute el tema puntal, o algunas dudas. En la entrada sobre "sabotaje" solo sobre ese tema. Cuando se suman muchos comentarios y algunos aportes comunican detalles importantes, hago una nueva entrada en la página principal resumiendo todo (para que nadie se pierda si no lee todos los comentarios).

> La respuesta ha sido: en todos ellos;
> lo cual resulta "engorroso", como opinión

Bien dicho, por eso se creará un Wiki pero lleva tiempo. Si hay algún participante que quiera colaborar con esta tarea, que me avise.

> 3º Las definiciones de la wikipedia son
> bastante técnicas y en algunos casos
> yo diría que poco claras. ¿Se podrían
> añadir "otros enlaces relacionados"?
> De este modo podríamos disponer de
> más información con distinta "narrativa".

Exactamente, me has leído la mente ;-)

Varios puntos:
  • La idea es buscar comprender los conceptos (obviamente eso generará dudas). Pero los apuntes que se dieron son puntos de partida, luego, ustedes deben seguir su propio camino de investigación.
  • La "empresa" te dio ese material, y tu quieres el trabajo y sabes que no puedes estar preguntando a cada rato para que te auxilien... que harías entonces?

> Son sólo unas ideas...lo principal es
> que el esfuerzo/ que estáis haciendo
> vale la pena para muchos, entre
> los que me encuentro.

Una de las tácticas que me gusta hacer en los cursos "presenciales" es la de "Karate Kid" (mis ex-alumnos lo saben muy bien):
  • les doy una serie de caminos a recorrer y no les digo hasta que llegan al final cual era la intención. Lo opuesto a ver una película sabiendo de antemano el final. Lo que enriquece es el proceso de investigación y descubrimiento que ofrece la ruta intencionalmente marcada, no necesariamente saber la conclusión final.
  • La otra táctica es "contextualizar siempre": justamente hoy lo comentaba otra vez, yo aprendí verdaderamente a "aprender" en mi edad adulta, pues considero que mis años de enseñanza "mecánica" de la primaria y el liceo no me aportaron mucho, pues carecían de toda practicidad. Casi nada de lo que aprendimos supimos para qué nos iba a servir en la vida real.
Esa experiencia es la que trato de transmitir. Todo sumamente ligado con su aplicación, tratando de aprender sobre la práctica, la experimentación, con el apoyo de los conceptos y la teoría.

Increíblemente luego de investigar el proyecto OLPC, me di cuenta que el mecanismo pedagógico que usan se llama "Constructivismo", que es el mismo que muchos habremos llegado a usar sin saber que tenía un nombre:

"... una corriente que afirma que el conocimiento de todas las cosas es un proceso mental del individuo, que se desarrolla de manera interna conforme el individuo obtiene información e interactúa con su entorno"

> Edu T (Burgos/España)

Estimado Edu, gracias por tus preguntas. Me dieron un buen punto de partida para comentar varios temas que pueden aclarar dudas a otros.

Sabotaje 1: resumen y comentarios

Respondo todas las consultas recibidas sobre la situación luego del "intento de sabotaje" contra el "mini sistema de altas" para registrarse en el "taller piloto":
  • No hubieron pérdidas de datos: el sistema de altas fue desarrollado con la misma intención que los futuros sistemas que intentaremos desarrollar, "aprender conceptos". No estamos usando ninguna herramienta extra para auxiliar el trabajo ni la seguridad del sistema. La idea es bien clara desde el principio: "aprender de nuestros errores".
  • Seguridad & SQL Injection: Se discutió exactamente esta situación y llegamos a la conclusión de que además de reforzar todas las entradas contra posibles ataques de este tipo, se hiciera un buen respaldo de datos. La base de datos se respalda muy regularmente, pero además, como respaldo alternativo el sistema nos enviaba un correo ni bien el usuario terminaba su registro, con sus datos personales y su correo. Por consiguiente, solo se perdieron tres registros de los 100 de la base de datos, pero disponemos de los datos suficientes para enviarles un correo y pedirles nuevo ingreso.
  • Límite de inscripción al taller: originalmente no teníamos planificado ningún límite (recordar: esto es una experiencia piloto para experimentar sobre muchos temas), puesto que es natural pensar que la cifra de inscriptos sería razonable, pero luego de superar los 50 hace recapacitar a cualquier persona. Si sumamos además de las naturales preocupaciones de cómo gestionar tanto volumen de personas, de forma distribuida, un intento (completamente esperado) de "sabotaje", decidimos momentáneamente suspender el registro en los 100 inscriptos. Como la idea siempre fue aprender, estoy evaluando cambiar este límite "circunstancial" y volver a habilitarlo de forma indefinida, pero agregando nuevos criterios de selección y metodología de trabajo.
  • Luego del registro, se procesó la aceptación del postulante: había llegado a aceptar hasta la mitad de los registrados y estaba empezando a definir con mis "asesores en gestión" el mecanismo de evaluación de los conocimientos de los "líderes de grupos" (cabe recordar que en el registro se les hacía una encuesta sobre sus conocimientos y a que puesto se postulaba). El proceso se suspendió momentáneamente luego del incidente de hoy, pero pienso retomarlo en el correr de los días (ahora cambiamos las prioridades).
  • Cambio de Prioridades, asegurar el sistema de registros: por obvias razones ;-). Como se anunció desde el principio, la idea no es que yo desarrolle los sistemas, es darles pautas para formar pequeños equipos de desarrollo y puedan autogestionarse. Lo que empezaron a trabajar en estos primeros sistemas sabían de antemano que el terreno iba a ser "duro", pero que no me importaba que destruyeran el sitio mientras eso sirviera para complementar la "experiencia" (¡talibanes, gracias nuevamente por colaborar con el taller!). La forma de los respaldos fueron un seguro para no perder la base de usuarios y poder continuar con el taller. Nota curiosa: justamente pocas horas antes pensaba que era extraño que no nos hubieran intentado vulnerar de alguna forma, y volvimos a tratar el tema de las medidas de contingencia.
  • Sobre los contenidos del taller: procederé de la misma forma que he venido trabajando en este blog, compartiendo todas las experiencias del proceso del taller, tanto relacionadas con PHP5 como sobre la gestión a distancia, herramientas, dudas, conclusiones, etc. La idea es generar "contenido", compartirlo, y construir un feedback que nos retroalimente. No me considero "experto gurú consumado" en ninguna área, tampoco en PHP5 ni en gestión de proyectos (nunca terminas de aprender), pero siempre estoy tratando de conocer mis límites y forzarme a superarlos como obviamente es este taller, sobre algo que me supera completamente pero que voy a disfrutar tratando de concretarlo de la forma más creativa posible.
  • Voy a cambiar de rumbo, constantemente: por todo lo anteriormente expuesto. Creé una situación que me supera y que no domino, pero por consiguiente estoy tratando de generar la "sinergia" con los arriesgados "conejillos de indias" (ustedes) y con amigos y colegas que invité o que se ofrecieron a acompañarme en algo por lo que no han dejado de decirme que estoy loco. Así que paciencia, la idea es aprender juntos y sacar todos provecho del proyecto "piloto". Cuando sea la hora de que ustedes empiecen a trabajar en sus grupos de desarrollo solo espero la misma pasión y entrega que yo mismo estoy ofreciendo.
  • Sobre el incidente concreto: sí, voy a ir comentando lo que vayamos haciendo al respecto y cualquier otra información que aporte conocimientos a otros desarrolladores. He invitado a dos colegas expertos en PHP5 que jugarán como nuestros "asesores técnicos": Christopher Valderrama (México, alias GatorV, colaborador de www.forosdelweb.com) y a Pablo Rigazzi (Argentina, alias Webstudio, autor de www.zonaphp.com y moderador en www.forosdelweb.com ).
En resumen: todo esto es parte de la idea original, y cada nuevo problema que se presente es un mundo para explorar. Uno de los mayores problemas (que muchos se preguntarán) es "¡¿cómo lo gestiono?!" ;-)

En las próximas horas iré agregando más novedades y contactando a cada uno de ustedes, por orden de ingreso, y asignándoles un grupo de trabajo con tareas.

Tampoco se olviden, la "Semana 1" de autocapacitación está corriendo y el lunes próximo comienza la "Semana 2" con tareas "muy relacionadas" con los temas que supuestamente ya han estudiado ;-)

Seguimos en contacto.

¡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