758

Archivo de la categoría ‘php’

AulaDigital Preguntas y Respuestas – Con un poco de imaginación y Open Source

3D Character and Question MarkA ratos estas últimas semanas he estado creando una nueva sección en AulaDigital: Preguntas y Respuestas de tecnología. Está completamente inspirado en otros servicios ya existentes como Yahoo! Respuestas  y  Stack Overflow, pero en Español.

El reto ha sido crearla en tiempo récord (tiempo del que no dispongo) y para ello he utilizado componentes completamente Open Source y un poco de imaginación. Los ingredientes han sido:

- WordPress como software base. Este software parece estar diseñado para extenderlo, impresionante su flexibilidad.

- Wp-Answers, un plugin para WordPress de Andrés Nieto. La versión sirvió prácticamente out of the box, aunque será la próxima parte a optimizar, espero poder contribuir

- Algunos plugins más, como TDO Miniforms para customizar un poco más el sitio y hacerlo más funcional.

Gracias a todo esto es posible hacer un experimento sin dedicarle demasiado tiempo. Espero poder evolucionarlo y contribuir a los creadores de los plugins cuando esté más rodada la sección.

Animaos y preguntad!

Domingo, febrero 28th, 2010

Symfony Live 2010: Nos vemos allí!

Symfony Live 2010Apurado tiempos, pero ya lo tenemos todo casi listo para el Symfony Live 2010, que se celebrará en París la semena que viene. Desde Acilia participamos como patrocinadores y además doy una charla acerca de sistemas CMS y Symfony.

Symfony nos ha ayudado de forma definitiva en nuestros proyectos, tanto externos donde lo incorporamos con frecuencia, como internos, como es el caso de Quiniela15, nuestro sitio de pronósticos de quinielas. Por lo tanto, vamos más que encantados de participar en el evento.

El primer día seráun training day, que contará con algunas partes muy interesantes como la integración de Zend y Symfony. Los siguientes días serán de conferencias, donde espero con impaciencia la de Jonathan Wage (creador de Doctrine), Dustin Whittle, que hablará de proyectos de Symfony en Yahoo! (lo cual me intriga profundamente dado mi paso por Yahoo!) y Fabien Potencier que nos desvelará partes de Symfony 2. Mi charla será entre medias, a ver si estoy a la altura y sobre todo, se me pega algo de estos monstruos!

Si vas para allá, nos veremos!

Sábado, febrero 13th, 2010

HipHop PHP de FaceBook y el revuelo en la red

hip hop php facebookFacebook anunció esta semana que iba a liberar como Open Source un nuevo invento suyo, llamado HipHop PHP, que sirve básicamente para aumentar de forma importante el rendimiento (y por lo tanto rebajar el consumo de recursos) en la ejecución de PHP. Esto lo consigue pasando el código de PHP a C++ y compilándolo. Es algo fantástico, porque el rendimiento puede ser realmente bueno, incluso superando a lenguajes como Java o C#.

La noticia me parece genial por dos motivos. Uno por el invento en sí, que es muy bueno. A muchos se les puede haber ocurrido, de hecho tuve conversaciones con compañeros en el pasado sobre ideas parecidas, pero como todo, sin una buena ejecución, las ideas no valen nada. El otro por hacerlo Open Source, por lo que algunos enfermos podremos probarlo y eventualmente disfrutarlo.

La opinión de Rasmus Lerdof, creador de PHP, ha sido largamente esperada. Y en un ataque de simplicidad (que es lo complicado) lo ha calificado de nifty trick, algo así como truco ingenioso. Esto ha provocado todo tipo de interpretaciones, muchas pensando que minusvaloraba el invento. Nada más lejos de la realidad, era más bien un halago. Como cuando simplificó un tutorial de Ajax, cuando la gente estaba como flipando con el tema en 2005, y lo llamó Ajax en 30 segundos, porque con la suficiente abstracción y simplificación, es lo que se tardaba en aprender.

Donde sí ha metido una puyita, como hace a veces con los frameworks, es diciendo que está muy bien, que evidentemente para Facebook puede valer, pero que las aplicaciones que ve por ahí  tienen problemas mucho más importantes y esto no los soluciona. Para qué engañarnos, es verdad.

Es cierto, como dice Rasmus, que la mayoría de las veces las ineficiencias no están en el lenguaje en sí, sino en las queries y estructura de base de datos, el número de peticiones HTTP, headers de expiración mal puestos, etc…, nada que ver con el lenguaje, ahí no suele estar el cuello de botella.

Sin embargo, él y otros que son auténticos cracks, no tienen que bregar día a día con que Javeros, Tiburones de Microsoft, Fanboys de cualquier lenguaje, echen en cara a PHP que no es tan eficiente en tiempo de ejecución. Esto es difícil de defender incluso ante techies, con lo que frente a gente que no sabe es un auténtico infierno. Te ves a ti mismo contando especie de fábulas para que entiendan los conceptos, es desesperante. Y es cierto que los frameworks son multipropósito y que es mejor estudiar cada proyecto y sería más eficiente (en cuanto a código) programar específicamente para ese proyecto. Esto sería así en un mundo perfecto, pero cuéntale al equipo de mantenimiento del cliente que esto es especial y al cliente mismo que la aplicación le sale por el doble en el doble de tiempo. Aunque sea mejor, no es realista.

Por lo tanto, bievenido HipHop PHP y cualquier herramienta que nos ayude!

Jueves, febrero 4th, 2010

Vogue is in the Air

vogue


He esperado algo más que en anterior lanzamiento para anunciar por aquí, con el entusiasmo aún en lo alto, que hemos lanzado Vogue España! Ahora, después de unos días, sí puedo decir que ha sido un trabajo duro, pero con unos resultados muy grandes.

Esto es así por trabajar con un equipo realmente bueno, con muchos años de experiencia, positivo y con ganas de hacer las cosas bien. La coordinación de esfuerzos entre el equipo de Ciclik, el de Condenet y nosotros desde Acilia ha sido excelente.

No hay nada mejor al final de un proyecto que recibir la felicitación y percibir la satisfacción de tu cliente. Y nada más gratificante, que ver que el cambio ha tenido efectos positivos desde el primer día.

Así que nada! A por otro Lanzamiento!

Jueves, enero 28th, 2010

PHP tercero en ránking de lenguajes de programación

70881947v1_350x350_front_color-blackwhiteMe he enterado de esto vía VivaPHP y me ha pillado totalmente de sorpresa. PHP iba subiendo últimamente en la lista TIOBE, que hace una medición de los lenguajes de programación más populares, a pesar de lenguajes de programación modernos como Ruby o Python, con características muy interesantes y en muchos casos superiores a lo que puede ofrecer PHP.

La razón de esta subida para mí es clara. Es un lenguaje con una curva de aprendizaje muy rápida (sencillo, vamos) con el que se pueden hacer cosas más que suficientemente potentes en web (está diseñado para este entorno), gracias a su flexibilidad. La orientación a objetos ha mejorado en los últimos tiempos, atrás quedaron los proyectos desordenados gracias a Frameworks como Symfony, Zend, Cake PHP o Code Igniter y ya hay IDEs muy completos que lo soportan como Netbeans o Eclipse. También tenemos ORMs muy activos como Doctrine o Propel.

Además, como bien apuntan en VivaPHP, los dos lenguajes que le preceden no son exclusivamente Web, por lo que posiblemente PHP se ha confirmado como lenguaje Nº1 para la construcción de Sitios Web.

Martes, octubre 27th, 2009

El Admin Generator de Symfony

symfonyUna de las mejores características de Symfony es el Admin Generator. Con esta funcionalidad puedes gernerar un backoffice completo, con bastantes helpers, definiendo qué se puede editar y qué no y la navegación para poder hacerlo, de forma realmente sencilla.

Hay un vídeo explicando los pasos desde cero (tan desde cero que se construye el modelo de datos en el mismo tutorial). Tarda como unos 15 minutos en hacer administradores mucho mejores que algunos que he visto con mucho tiempo de desarrollo. Es una abstracción realmente interesante.

Además, aunque no se explique en el vídeo, se puede generar para modelos ya existentes con un poco de ingeniería inversa .

Lo mejor es verlo.

Miércoles, abril 15th, 2009

Rendimiento de WordPress en VPS

Tener un WordPress en un servidor virtual con pocos recursos puede hacer que el rendimiento sea bastante pobre y la ejecución sea muy lenta. Esto puede pasar especialmente en el panel de administración, donde hay múltiples peticiones htp. 

Esto tiene solución, siempre que el tráfico en el sistema no sea demasiado alto. Una cosa que da muy buen resultado es ajustar la configuración de Apache, que viene por defecto configurado para sistemas más potentes. 

Lo primero, y que da muy buen resultado inmediato, es bajar, o incluso eliminar la directiva KeepAlive del archivo de configuración de Apache. Lo mejor sería dejarlo “On” pero con un KeepAliveTimeout bastante menor que los 15 segundos que vienen por defecto. Con dos segundos sería suficiente, pero podemos evitar que se abran y cierren conexiones innecesarios dejándolo en 5-6. 

Esto debería ser suficiente, pero se puede ir más lejos eliminando módulos innecesarios. En este post hay algunos detalles más. 

Si la cosa se pone seria, siempre podemos elegir otro servidor web, tipo Cherokee.

Martes, marzo 3rd, 2009

Contar descargas de un archivo

Una consulta me ha hecho desempolvar un viejo script que tenía por ahí para contar los clicks que se hacían para ir a una url. Esto es igualmente válido para hacer tracking de downloads o descargas.

Supongamos en el script es invocado de la forna:

http://url_dominio/download.php?file=xxxxx.pdf

El script, que estaba escrito en php3, es a grandes rasgos así:

<?php

//RECUPERAMOS PARAMETRO

$url=$_GET[file]

// CONEXION BBDD
mysql_connect (“localhost”, “xxxxlogin”, “xxxpasss”);
mysql_select_db (“xxxxxxx”);

// INSERTAR O HACER UN UPDATE EN BBDD CON LA DESCARGA. TAMBIEN PODRIA IR A UN FICHERO LOG

mysql_query(“INSERT INTO log_table VALUES (XXXXXXXXXXX)”);

//CONSTRUIR URL FINAL

$url=”http://url_dominio”.$url;

//REDIRIGIR AL ARCHIVO CON DESCARGA

header(“Location: $url”);

?>

Importante no sacar nada, ni un error, ni un print, ni un echo, nada, antes de la directiva header(). Si sale algo, la redirección no se ejecutará.

Otra opción a la que podemos optar ahora es a utilizar una herramienta externa, como Google Analytics. De esta forma que no tenemos que hacer una tabla en la base de datos, construir el script y procesar los datos almacenados posteriormente. Hay un tutorial de Analytics que lo explica bastante bien.

Sábado, febrero 7th, 2009

Las bonanzas de PHP

En este sector de la informática, en todos sus géneros, también hay religiones. Está la religión de Linux, que no aguanta a los de la religión de Windows, si bien transigen con los de la religión Mac. En lenguajes de programación hay gran extremismo también. Los fervientes de Java no paran de sacar defectos a su aparentemente rival la Diócesis PHP y se ríen abiertamente de los del Monasterio de Ruby.

Si eres de los que luchan en el bando PHP, puedes leerte el último documento de php.ie en su defensa.

Hablando un poco más en serio, la gente de php.ie ha publicado un White Paper llamado PHP for Enterprise/Business Whitepaper donde se alaban las bonanzas de PHP, si bien hay pocas comparaciones objetivas con otros lenguajes como Java (su principal rival) o .Net. Se ve que detrás hay cierta carga emocional y poco objetiva que le resta algo de valor al documento, pero no razón.

He visto últimamente muchas críticas a PHP, que he de reconocer es mi lenguaje web preferido, muchas de ellas injustas, como que no es un lenguaje orientado a objetos (lo es totalmente), no se puede aplicar patrones MVC (hay muchísimos frameworks PHP) o que no es escalable (no escala igual que Java, pero escala).

La principal ventaja que le veo es flexibilidad, una gran comunidad de desarrolladores y gran disponibilidad de librerías y código Open Source. Por mi experiencia en ambos lenguajes, normalmente PHP gana en rapidez de desarrollo y Java en robustez. Según las circunstancias, una opción puede ser mejor que otra, pero por si acaso, lo mejor es conocer varias opciones (no sólo estas) y saber qué elegir en cada momento. La Fe te puede jugar una mala pasada.

Lunes, enero 12th, 2009

Ordenando Arrays

desordenHace no mucho nos encontramos con la tarea de ordenar una lista de clasificación de Quiniela15 con ciertos criteros. En principio parece una tarea simple, hay muchos algoritmos que lo hacen y elegimos el más sencillo, el llamado “Burbuja” o “Bubble Sort”, que toma elemento por elemento y calcula si debe o no cambiarlo de posición, casi lo que harías si tuvieses que hacerlo manualmente. Es la forma más lógica y simple, pero nos salían n² operaciones para determinar el orden del array, siendo n el número de elementos y, en una clasificación de 1600 usuarios, las operaciones se elevaban a 2,560.000, así a lo tonto… y muchas de esas operaciones llevaban asociada una consulta a base de datos para recuperar valores. No es que el sistema no pudiese con ello, pero está claro que es uno de esos momentos en los que merece la pena dedicarle tiempo a optimizar.

Entre algunos de los algoritmos conocidos más populares, finalmente ha funcionado bien el llamado “Quick Sort”, acabando el proceso en pocos segundos. Además está esta página donde está implementado para múltiples lenguajes de programación (PHP, Ruby, C, Python, Visual Basic… y muchos otros de los que ni siquiera conocía su existencia).  Si alguna vez te has encontrado este problema, la solución no puede ser más sencilla.

Domingo, diciembre 21st, 2008