El cuento del pintor

September 6th, 2008

pintor

Son muchas las ocasiones en que una empresa no tecnológica se lanza al mundo de internet. Descartemos de este grupo las empresas grandes o aquellas empresas que tienen un departamento de informática propio. En el grupo que nos queda, la empresa, a la hora de acometer un proyecto web, según mi experiencia, puede optar por varias tácticas. Comparemos esta situación haciendo el símil con la temida situación de tener que pintar nuestra casa:

  1. Yo me lo guiso yo me lo como. O aquello de si lo pinto yo me ahorro dinero y no quedará mal. Evidentemente, nos pegamos la paliza un fin de semana, durante una semana tenemos la casa hecha una mierda y los remates no quedan muy profesionales. Serguramente a los dos o tres años empiecen a salir grietas en el gotelé. Esta solución es la solución de emergencia, para salir del paso y gastar poco dinero.
  2. Subcontratemos al mejor postor. Vamos al mercado y pedimos unos cuantos presupuestos. Como no tenemos mucha idea de tecnología damos demasiado valor a ahorrar unos euros. Así que, generalmente y, salvo asistencia por parte de terceros a la hora de valorar las propuestas, nos solemos quedar con el mejor presupuesto que, por supuesto, no suele ser la mejor solución. Es decir, llamamos al pintor que nos ha aconsejado la vecina porque es muy barato y tarda poco.
  3. Que nos pinten las meninas. No nos importa gastar dinero a cambio de calidad. El presupuesto es importante pero no es fundamental. Buscamos una solución óptima para lo que queremos e incluso nos dejamos asesorar por el profesional que contratemos. Es decir, cogemos al pintor que lleva toda la vida haciendo esto. Es más caro pero nos transmite confianza.

Son muchas las ocasiones en que me encuentro estas decisiones en las empresas y, gracias a Dios para poder comer, muchas las que tengo que solucionar después de una mala experiencia o de no haber sabido elegir la opción que más nos convenía. No quiero decir que ninguna de las opciones sea la adecuada. Para cada empresa y en cada situación, habrá que valorar lo que más nos convenga. El problema es no valorar bien y al final tener que elegir dos opciones: la primera, que suele ser barata pero no nos sirve y una segunda para solucionar el entuerto en el que nos hemos metido.

En alguna ocasión incluso he visto una tercera pero eso ya es de juzgado de guardia. Así que aconsejo valorar seriamente en qué situación estamos y qué es lo que queremos y, por supuesto, contar con profesionales cualificados. ¿Se os ocurre alguna situación más? Seguro que las hay.

Si te ha gustado lo que has leído te invito a suscribirte al Feed RSS | ¿Qué es el Feed RSS?

Suscríbete para: Google Reader, Bloglines, My Yahoo o My MSN

noticiastriatlon.comLa grandeza del software libre y de la buena programación hace que la adaptación de ese software para proyectos propios y personalizados sea cercano a un juego de niños. Para muestra este botón.

Si juntas en un fin de semana aburrido con mis dos pasiones: la informática y el triatlón, pueden surgir proyectos como este: noticiastriatlon.com. Nace como experimento y adaptación de una aplicación como Meneamé a un entorno concreto. En este caso, intentamos crear un agregador de noticias de triatlón con el motor de Meneamé. Evidentemente, tenemos demasiado motor para un área tan limitada y pequeña como es el mundo del triatlón pero la adaptación es casi perfecta. Noticiastriatlon.com nace con la idea de aprovechar la casi inexistencia de sitios donde leer noticias de triatlón y de agregarlos todos de manera que el usuario pueda conocer las noticias que se generan en el mundo del triatlón de manera sencilla. Además, la gran potencia de la aplicación es que es democrática, es decir, tanto las noticias que se leen como el sistema de votaciones hacen que se lean las cosas más importantes para el grupo de la “familia triatlética”.

En tres días de vida saco las siguientes conclusiones:

Positivas:

  • Más de 1000 visitas al día de media.
  • Más de 800 usuarios únicos.
  • Interés demostrado por los usuarios en diversos foros, comentarios, correos, etc.
  • Más de 40 usuarios registrados.
  • 15 enlaces directos.

Negativas:

  • Pocos envíos de noticias por parte de los usuarios.
  • Pocas votaciones aunque cada día en aumento.
  • No utilizados los RSS. Supongo que esto irá con el tiempo utilizándose.

Seguiremos informando…

Si te ha gustado lo que has leído te invito a suscribirte al Feed RSS | ¿Qué es el Feed RSS?

Suscríbete para: Google Reader, Bloglines, My Yahoo o My MSN

servidor.JPGEn el último post hablaba sobre cómo montar un servidor local con EasyPHP. Son muchos los foros y temas que he leído con las dificultades que tiene la gente que ha creado su página en Joomla! en un servidor local y luego no puede “subirla” a su servidor remoto. Como he tenido que hacer hace poco una migración de este tipo os resumo aquí los pasos importantes al estilo chiquilicuatre para que no tengáis ningún tipo de problemas a la hora de hacerlo.

NOTA: La versión de Joomla! que corría era la 1.0.1, con easyPHP2.0b1.

UNO. Exportación de la base de datos. Como tenía el easyPHP instalado, entráis en la parte de Administración y pinchías sobre el phpmyAdmin (esto sirve para cualquier servidor local). Elegís la base de datos que utiliza vuestro Joomla! en local y en la parte de arriba le dáis a exportar. Dejáis todas las opciones como están por defecto (nótese que el formato del archivo debe ser SQL), elegís el nombre del fichero a exportar (ej: bdlocal.sql) y listo. Tendremos un fichero con la base de datos.

DOS. Copia de archivos de local a remoto. Arrancamos nuestro programa cliente de FTP (en mi caso uso FileZilla) y nos conectamos al hosting que hayamos contratado con los datos de conexión que nos haya facilitado. En mi caso he contratado con Dreamhost. Copiamos toda la carpeta de archivos de Joomla! de nuestro servidor local al servidor remoto.

TRES. Importación de base de datos. Desde el cpanel que nos proporcione nuestra compañía de hosting accedemos al phpmyAdmin. Una vez ahí le damos a Importar y seleccionamos el archivo que antes hemos generado (en el ejemplo bdlocal.sql). Si no hay problemas nos contestará con un mensaje de que se ha importado correctamente la base de datos y si vamos a ella veremos las tablas creadas y llenas de datos.

CUATRO. Modificación del archivo configuration.php. Esta es la parte quizá más complicada. Tendréis que modificar en este archivo las siguientes variables:

  • $mosConfig_host = host de la BD. En el caso de Dreamhost será posiblemente: mysql.nombre_dominio(.com)
  • $mosConfig_user = Nombre de usuario de la BD
  • $mosConfig_password = Clave del usuario de la BD
  • $mosConfig_db = nombre de la BD
  • $mosConfig_absolute_path = dirección absoluta de la página Joomla!. Depende del hosting que tengáis. En Dreamhost es: /home/nombre_usuario_BD/nombre_dominio
  • $mosConfig_cachepath = dirección absoluta de la caché de Joomla! En Dreamhost es: /home/nombre_usuario_BD/nombre_dominio/cache
  • $mosConfig_live_site = Nombre del dominio (ej: www.nombre_dominio.com)

Tened en cuenta que estáis en un entorno case-sensitive por lo que deberéis respetar mayúsculas y minúsculas a la hora de dar valor a las variables. Si os sale algún tipo de error como “…Fatal error: require_once()…” es que no habéis metido correctamente alguna de estas variables.Si todo ha ido bien, tendremos nuestra portal Joomla! funcionando sin ningún tipo de problema.

Si te ha gustado lo que has leído te invito a suscribirte al Feed RSS | ¿Qué es el Feed RSS?

Suscríbete para: Google Reader, Bloglines, My Yahoo o My MSN

easyphp.pngTodo buen desarrollador de páginas y aplicaciones web debe tener un entorno en local (en su propio PC) dedicado para hacer cambios y pruebas rápidamente. Seguramente muchos prefieran instalarse por separado programas como Apache, mySQL o PHP, pero existen programas denominados LAMP que hacen esto de forma automática y sencilla (por supuesto luego se puede personalizar todos los archivos de configuración que queráis). Yo he elegido EasyPHP porque es el que utilizo por su sencillez y que nos monta un servidor local en 5 minutos escasos.

Voy a explicar la instalación para usuarios Windows pero ya sabéis que para Linux es más sencillo aún. Lo primero que tenemos que hacer es descargarnos el instalador de EasyPHP. La versión más avanzada es la 2.0 que está en beta 1. Yo la estoy probando y no he encontrado ningún bug de bulto así que podéis instalaros esta.

Una vez instalada y seguidos los pasos de “Siguiente” y “Siguiente” tendremos instalada la aplicación y nos arrancará una consola en la que podremos controlar (arrancar, detener y reiniciar) los servidores Apache y MySQL con un sencillo sistema de semáforos que indican el estado de los mismos.

A partir de aquí sólo os tendréis que preocupar de programar. Si insertáis en vuestro navegador por defecto (que espero que sea Firefox) la dirección http://localhost os mostrará la página que se sirve desde Apache. En el momento inicial únicamente mostrará un listado vacío de archivos.

Si queréis comenzar a diseñar una página, tendréis que crear todos los archivos (y árbol de directorios si es necesario) colgando del directorio donde habéis instalado EasyPHP en vuestro disco duro. Más concretamente en la carpeta “www”. Aconsejo crear varios directorios en esta carpeta para poder tener varias páginas corriendo a la vez.

En el icono que os ha aparecido en la pantalla de notificación de Windows (abajo a la derecha) podéis acceder, pulsando con el botón derecho, al área de administración de EasyPHP. En él podréis configurar todos los programas instalados. En este caso Apache 2.2.3, PHP 5.2.0, PHPMyAdmin 2.9.1.1 y MySQL 5.0.27. De esta manera es más sencilla la configuración que editando los archivos de configuración de cada programa.

Y eso es todo. En próximas entregas os enseñaré cómo instalar un gestor de contenidos para que podáis comenzar a crear vuestras propias páginas webs sencillas.

Otros productos similares a EasyPHP:

Si te ha gustado lo que has leído te invito a suscribirte al Feed RSS | ¿Qué es el Feed RSS?

Suscríbete para: Google Reader, Bloglines, My Yahoo o My MSN

Supuesta IN-seguridad de datos

January 15th, 2008

lopd.jpgSupongamos que la empresa X, muy conocida en su sector, tiene sus clientes en una base de datos que debe cumplir con la ley de protección de datos vigente.

Supongamos ahora que esta empresa X quiere enviar a sus clientes por correo electrónico un nuevo boletín con información comercial y promociones. Para ello prepara un pequeño script que coja el nombre y el correo electrónico de cada cliente y le envíe la carta comercial personalizada.

Supongamos que algún error aún no identificado ocurre en el proceso lanzado y que, probablemente, manda millones de correos a direcciones de correo electrónico que no pertenecen al usuario para el que está personalizando el mensaje.

Supongamos que uno de los clientes, llamémosle Fulanito Martín, de la empresa X abre su correo y encuentra en su bandeja de entrada un nuevo mensaje con el campo ‘Asunto:’ personalizado y saludando a Menaganito Pérez.

¿Es de suponer que se comete una infracción de la ley de protección de datos? Evidentemente no es un error gravísimo pero Fulanito no tiene por qué enterarse de que Menganito es también cliente. Además, supongo que el proceso es parado antes de que se envíe incorrectamente a todos los clientes por lo que el espectro de clientes afectados es pequeño.

Supongamos que la empresa X, dos horas y media después manda un correo -esta vez no personalizado- rectificando y excusándose por un error informático que “PUEDE haber recibido el boletín de noticias de X con un nombre diferente al suyo”.

Supongamos que esto es una suposición…
Edited: Supongamos que esto NO es una suposición y sucedió ayer…

Si te ha gustado lo que has leído te invito a suscribirte al Feed RSS | ¿Qué es el Feed RSS?

Suscríbete para: Google Reader, Bloglines, My Yahoo o My MSN

Bug en Wordpress.com

December 31st, 2007

bug.jpg

Un bug es un error, un fallo de programación. Ocurre cuando un programa o aplicación responde con un comportamiento no esperado o erroneo. Muchos conoceréis el famoso bug de Excel ‘07 en el que si multiplicais 5,1 por 12850 os devolverá 100000 cuando el resultado correcto sería 65535. Si leeis el link que os he puesto encontraréis la explicación a esto.

Ayer, casi por casualidad y sin buscarlo entré como cada día para ver las estadísticas de este blog en Wordpress.com. Hice una pulsación sobre ‘Salir’ para dejar de estar identificado y me di cuenta de que no había consultado los comentarios. Pulse el botón de comentarios pero como ya no estaba identificado me apareció la página de identificación de Wordpress.com. Inmediatamente después le di al botón ‘Atrás’ del Firefox y cual es mi sorpresa cuando se carga la página de estadísticas del blog pero con una gráfica que no se corresponde con las estadísticas normales. Realmente no sé lo que es, lo que está claro es que no tiene nada que ver con mi blog puesto que aparecen los años 2003, 2004 y 2005 y yo en esos año aún no era blogger. Os dejo la captura de pantalla para que lo veáis e intentéis adivinar qué es lo que representa.



Technorati Tags: , , , ,
Site Search Tags: , , , ,

Si te ha gustado lo que has leído te invito a suscribirte al Feed RSS | ¿Qué es el Feed RSS?

Suscríbete para: Google Reader, Bloglines, My Yahoo o My MSN

consultoria400.jpg

Cuando escribí el post “Consultoría Tecnológica: visión personal” estuve buscando un ejemplo para argumentar mi texto pero no se me ocurrió nada. Casualmente el sábado estuve tomando algo con el jefe de sistemas de unos conocidos grandes almacenes. Me comentaba que harto “de los de desarrollo”. Que gracias a malas prácticas en el desarrollo ellos tenían el doble de trabajo. Os paso a explicar el ejemplo concreto.

Pongamos que estos conocidos grandes almacenes utilizan el body shopping de una manera normal, como cualquier empresa. La conocida consultora que subcontratan proporcionan unos supuestos expertos en desarrollo de aplicaciones Java. La aplicación en cuestión tiene que realizar una query pesada sobre tablas de millones de registros. Se finaliza la aplicación y mi amigo y su grupo analizan la complejidad de los algoritmos utilizados para la consulta. Parece que existe un problema: se estima en algo más de tres años el tiempo de respuesta :-). Estando el desarrollo entregado el jefe de proyecto de la famosa consultora comenta que hay que habría que cambiar el algoritmo, que no está del todo acabado… Inaudito. No obstante se les da otra “oportunidad”. Cuando empiezan realmente a analizar el problema no hacen más que pedir el aumento del tiempo de timeout del servidor de aplicaciones y más memoria. En este punto me acuerdo de los diversos hilos escritos sobre si faltan programadores (2). ¿Es que no es posible encontrar un buen programador? Consiguen rebajar el tiempo de respuesta a unos veinticinco minutos y piden unos 3GIGAS¡¡ de memoria. Inaceptable.

Mi amigo y su equipo un poco cansados de que les llamen a horas intempesitvas porque se cae el servidor deciden ponerse con el problema y reducir el tiempo de respuesta a tres minutos. Moraleja: ha intervenido un buen programador y ha utilizado nuevos algoritmos. Incluso van más allá. Consiguen localizar un patrón en el servidor de tal manera que son capaces de detectar cuando el servidor se va a caer debido a otras querys. Con lo que cuando detectan el patrón son capaces de lanzar un pequeño script que pueda reiniciar el servidor de manera automática y sin intervención alguna.

Este es un caso típico que no es tan raro y que me sirve para explicar lo que debería de hacer un buen consultor tecnológico o lo que debería ser un buen programador. También es un caso típico para explicar en lo que se ha convertido la consultoría que no ofrece profesionales con alta cualificación y experiencia. Creo que no es necesario sacar conclusiones porque el caso es por sí mismo bastante esclarecedor. Gracias a Miguel A. por servirme de inspiración.

P.D.: Mañana comienca FICOD e intentaré ir contando las cosas que por allí vea si es que puedo sacar tiempo.


Technorati Tags: , , , ,
Site Search Tags: , , , ,

Si te ha gustado lo que has leído te invito a suscribirte al Feed RSS | ¿Qué es el Feed RSS?

Suscríbete para: Google Reader, Bloglines, My Yahoo o My MSN

El lobo, la cabra y la col

August 24th, 2007

cabralobocol.gifLeyendo el otro día la entrada en Microsiervos que citaba la magnífica explicación de Jesús León del problema de Los puentes de Königsberg vino, no sé por qué extraña razón a mi mente, un viejo problema de mi época de estudiante. En concreto era un problema de Inteligencia Artificial sobre resolución de problemas y espacios de búsqueda: El lobo, la cabra y la col. Os transcribo el enunciado del mismo:

Un granjero se encuentra en la orilla de un río junto con un lobo, una cabra y una col. Ademśa dispone de un bote en el que sólo puede transportar una única cosa cada vez. El granjero pretende transportar al lobo, la cabra y la col al otro lado del río utilizando el bote. Sin embargo, debe tener cuidado y no dejar solos en una orilla al lobo y a la cabra porque el lobo se comería a la cabra. Tampoco puede dejar la cabra y la col porque la cabra se comería la col. ¿Cómo conseguiría el granjero trasladar todo a la margen derecha del río?

Este problema que se resuelve fácilmente invirtiendo un ratillo de pensada, nos sirve para explicar métodos de representación de espacios de búsqueda. Para ello utilizaremos el paradigma del espacio de estados que consiste en representar la situación actual de problema en estados.

Sobre el ejemplo presentado, fijaremos primeramente un operador de transición del estado. Representaremos con un tupla los elementos que se transportan en el bote en cada viaje (ida, vuelta). Denominaremos al Lobo con una L, a la cabra con una C y a la col con una X. Debemos de fijar también un estado inicial que en nuestro problema será el listado de los elementos que tengamos en la margen derecha del río (). Y el estado final al que queremos llegar que será (L,C,X), Resumiendo:

Operador: (ida, vuelta) elementos que se transportan en el bote
Estado inicial: () -vacío-
Estado final: (L,C,X)

Asumimos como premisa inicial que si el granjero está en medio de los tres elementos estos no interactúan entre sí, es decir el lobo no se come a la cabra si el pastor está en esa orilla y lo mismo con la cabra y la col.

A continuación se dibuja el espacio de búsqueda de soluciones (perdón por la precariedad):

espaciodebusqueda.png

Los nodos del árbol del espacio de soluciones representan diversos estados del problema. Las líneas que unen los nodos representan los operadores, es decir el viaje del bote.

Como vemos la solución viene dada por 4 viajes (ida y vuelta), hasta llegar al estado final (L,C,X). Por supuesto un ordenador o un procesador no llega directamente a esa solución sino que irá construyendo el espacio de búsqueda según el algoritmo que elijamos. El método que elijamos será el que determine la eficiencia en encontrar la solución. Por ejemplo, no es lo mismo ir construyendo el espacio de búsqueda en profundidad que en anchura… pero los algoritmos ya son otro cantar…

Os dejo un enlace por si queréis probar de manera interactiva a resolverlo.


Technorati Tags: , , ,
Site Search Tags: , , ,

Si te ha gustado lo que has leído te invito a suscribirte al Feed RSS | ¿Qué es el Feed RSS?

Suscríbete para: Google Reader, Bloglines, My Yahoo o My MSN

Gestión de proyectosEn estos días que corren en el que todo el mundo es experto en todo, se me ocurre hacer una reflexión sobre las personas que dirigen y gestionan proyectos. Me centraré sobre todo en proyectos tecnológicos que es mi campo aunque casi todo es extrapolable a otro tipo de proyectos (salvando las particularidades de cada ámbito).

Primero definamos lo que es la gestión de proyectos. La gestión de proyectos es la disciplina de organizar y administrar recursos de manera tal que se pueda culminar todo el trabajo requerido en el proyecto dentro del alcance, el tiempo, y coste definidos (wikipedia). Sobre el gerente la wikipedia también es clara: “Sin importar el campo, un gerente de proyectos exitoso debe ser capaz de visualizar el proyecto completo de principio a fin y tener la habilidad de asegurar que esa visión se haga realidad”. De aquí surge la primera de mis reflexiones motivada por el hecho de que es muy usual en las empresas el ver en esta figura a gente que no es técnica. Aquí viene la polémica, ¿un gerente de proyectos informáticos debe ser técnico? En mi opinión: “Sí, pero…”. No me cabe la menor duda de que el que mejor va a saber “visualizar el proyecto completo de principio a fin” es una persona que haya estado involucrado directamente en su trayectoria profesional con este tipo de proyectos desde posiciones inferiores en la “jerarquía de mandos”. Sin embargo, no todo aquel que haya estado en esas posiciones es capaz de ser gerente de un proyecto. Es decir, el perfil que debe de tener un gerente de proyectos es el de gestor y técnico.

Como de vez en cuando es bueno levantar la cabeza y salirse del tunel en el que nos encontramos en el trabajo diario para reflexionar he vuelto a mis principios. He cogido mis viejos libros de Gestión de proyectos y he releído algunas de las cosas fundamentales que cualquier gerente de proyectos debe de conocer. A continuación os resumo lo que a mi entender deben ser las aptitudes básicas de un gerente de proyectos:

  • Gestión de proyectos, valga la redundancia. Agrupo aquí todas las capacidades técnicas básicas que debe de conocer como son el uso de un procesador de textos, una hoja de cálculos, un software de gestión de proyectos (planificación de tareas) el correo electrónico y alguna otra menos importante.
  • Gestión económica-empresarial, son todos aquellos conocimientos entorno a la planificación económica y empresarial de un proyectos como son la preparación de los presupuestos, conocimiento interno de la empresa, dinámica de la empresa, gestión del rendimiento, gestión y desarrollo de equipos de trabajo,…
  • Conocimientos Técnicos. Como hablaba antes, son todas aquellas experiencias que se han ido acumulando con el paso de los años en otros proyectos. No cabe duda que en cuantos más proyectos se haya estado involucrado mayor conocimiento se tendrá de todas las áreas de un proyecto y más eficacia se tendrá como gerente del proyecto. Será más fácil “ir al grano”, hacer las preguntas adecuadas y programar con mayor exactitud de esta manera.
  • Comunicación. Es necesario que el gerente de proyectos sea capaz de transmitir lo que piensa y de comunicar a las diferentes áreas del proyecto entre sí. Se engloban en este punto la capacidad de comunicación oral, la capacidad de redacción, de realización de presentaciones y la capacidad de “empatizar” con la otra parte del canal de comunicación ya sea cliente, integrante del grupo de trabajo o jefe. Por otra parte, es importante el liderzago, muy ligado a la empatía. Es necesario “conectar” con la gente, saber adaptarse, ser flexible y saber cuándo redirigir un aspecto del proyecto bajo tu criterio.

Como se puede ver la gestión de proyectos no es fácil y mucho menos es fácil encontrar perfiles adecuados de gerente de proyectos. Este artículo se me ha venido a la cabeza después de cruzarme en mi vida profesional con gerentes de proyectos que por no cumplir no cumplen ninguno de los puntos básicos que he definido anteriormente. Si es vuestro caso y estáis bajo el “mandato” de esta gente, tened paciencia. Demostrad cómo se hacen las cosas y procurad no saliros del camino correcto de cómo hacer las cosas. El tiempo pone (y quita) a cada uno en su sitio y si no es en esa empresa seguro que será en otra.

Este tema me apasiona y da para mucho por lo que en este sentido volveré a escribir sobre por ejemplo: el multirol de un Jefe de proyectos, ¿Por qué es complicada la gestión de proyectos?, etc.


Technorati Tags: , ,
Site Search Tags: , ,

Si te ha gustado lo que has leído te invito a suscribirte al Feed RSS | ¿Qué es el Feed RSS?

Suscríbete para: Google Reader, Bloglines, My Yahoo o My MSN