No me gustan los post que tienen un video de YouTube y no aportan nada más, pero a pesar de eso lo voy a hacer. Las obras de arte lo merecen. Vía: Alt 1040
Big Ideas (Don´t get any) from 1030 on Vimeo
07-06-2008 | Vida Social
No me gustan los post que tienen un video de YouTube y no aportan nada más, pero a pesar de eso lo voy a hacer. Las obras de arte lo merecen. Vía: Alt 1040
07-06-2008 | Vida Social
Hasta ahora cuando tocaba la hora de comer en la oficina con Mazius-Ma siempre uno de los dos (normalmente él) iba cargando vídeos de Youtube para amenizar el rato. Con las manos pringosas y la falta de ideas pulsábamos en el primer vídeo que aparecía de los simpsons o padre de familia y nos poníamos a comer sin prestar mucha atención, total, ese vídeo lo habíamos visto el día anterior y el otro, pero nos daba pereza buscar otra cosa mientras se nos enfriaba la comida.
Hace dos días me tocó comer solo, frente al ordenador, y en ese momento también muy falto de ideas me quedé viendo la home de youtube durante toda la comida, pensando y pensando hasta que sin darme cuenta ya había comido y cerré la ventana.
Así es como pensé que si de alguna manera pudiera indicar los temas en los que estoy interesado y que una herramienta pudiera ir buscándolos, me sería de mucha ayuda, y además estaría siempre informado de todo lo que sucede en esos temas en lo que a vídeos en la red se refiere.
En ese momento lo paré todo, hice pruebas, vi que podía funcionar, compré un dominio y ayer subí la primera versión: Feedky.
Feedky es una herramienta que te permite indicar tantos tags o palabras clave como quieras y rastrea continuamente la red en busca de los últimos vídeos relacionados que se van subiendo a YouTube, DailyMotion, Metacafe y Vpod. Los reune y te los sirve en dos URLs distintas, una para agregarlo a tu lector de RSS y otra para consultarlo a través de la Web.
Como resultado, y sin mover un dedo, Feedky te sirve en bandeja los vídeos que te interesan y que son de reciente aparición en la red. Ideal para estar informado y para entretenerte mientras comes croquetas, sopas mallorquinas, ensaladilla rusa o incluso arroz tres delicias.
No hace falta registrarse para usar Feedky, así que no os costará más de un minuto montaros el vuestro propio, y de paso comentarme vuestras experiencias, sugerencias, bugs y demás.
30-05-2008 | PHP
[Descargar | ダウンロード | Download] |
12-05-2008 | Vida Social
Estamos en un coche, aparcados en una calle en obras, sin vistas y rodeados de un puñado de niños indios identificados por un número. A mi derecha, en el asiento del acompañante, hay un Alejandro cubierto por una chaqueta para impedir la entrada de luz en su microclima, compuesto por sus manos, sus ojos y su portátil. Cubrirse con una chaqueta es bueno para permitirse -con el brillo al mínimo- poder usar el portátil tirando de batería con una autonomía de más de dos horas. Pero el coche además de todos estos elementos está rodeado de la señal Wi-Fi que nos llega de una tienda de informática a unos pocos pasos de aquí. Curiosamente esta situación mola, pero solo puede darse cuando dos frikis como nosotros se reúnen en la isla de Martín Varsavsky. -¡Ah amigo! ¡así que habéis ido a la Techtalk! -Pues sí, en calidad de emprendedores de segunda asistimos ayer a unas charlas muy interesantes, donde gente importante (y feliz) nos inspiraron a todos con sus palabras. La experiencia ha sido muy buena, pero no tanto como la de muchos otros allí presentes que conocían a todo el mundo y podían hablar de esto y lo otro con más soltura, o de aquellos que pudieron estar más tiempo y participar más de la presencia de Martín y compañía, pero en cualquier caso, suficiente como para volver a Mallorca con más ganas e ilusión por continuar nuestro trabajo y con idea de repetir. No sé si fueron más interesante las charlas de las distintas personas al micrófono o las que mantuvimos nosotros mismos con otras personas que conocimos allí mismo. Lo más sorprendente es que -al más puro estilos de las RUs de BCN- las ganas de comunicar de todos los presentes y el buen ambiente hacía que te olvidaras de protocolos y pasaras a hablar abiertamente de cualquier tema o proyecto. Finalmente nos quedamos con las ganas de despedirnos de Martín y porqué no, de hacernos una foto con él, pero se marchó antes de que pudiéramos darnos cuenta. Habrá que esperar a una próxima ocasión para poder decorar la cabecera de mi cama. Ah, y Alex se encargó de promocionar a chooii.com entre los presentes, así que vamos a ver si lo notamos reflejado a modo de entradas fuera del territorio balear.
10-05-2008 | Blog
Con la finalidad de reducir la carga de los servidores y agilizar al mismo tiempo la descarga de nuestras Webs vengo pensando en la idea de implementar algún tipo de caché Web, con la flexibilidad suficiente como para aplicarlo a determinados archivos, y cuya implementación no me obligue a rehacer nuestro CMS. Finalmente he encontrado una manera muy sencilla y flexible a la vez, por medio del uso del buffer de salida de PHP y el almacenamiento de archivos en HTML identificados por nombres codificados en MD5. En realidad es tan sencilla que voy a explicar el funcionamiento básico para aquellas personas que como yo (hace unas horas) piensen que todo esto se soluciona solo con hard o herramientas altamente sofisticadas y caras. Antes de empezar he de decir que desconozco la técnica usada por otros sistemas de caché web, pero la solución que propongo me parece una buena opción para empezar, así que ahí voy. Si álguien conoce un método mejor y que proporcione la misma flexibilidad estaré encantado de conocerlo. 1. El escenario Imaginemos un servidor en el que alojamos Webs dinámicas en PHP, y cuyo contenido se genera al vuelo para cada usuario que las solicita por medio de distintas consultas a una base de datos. Si el número de usuarios conectados es relativamente bajo el servidor tendrá una carga suficiente como para afrontar las peticiones y las ejecutará en un intervalo de tiempo corto, casi igual que si sirviera páginas en HTML. El problema vendría cuando el número de usuarios conectados creciera y aumentaran las peticiones al servidor, lo que terminaría disparando el número de consultas a la base de datos, cálculos y demás y se crearía una carga en el servidor que comprometería su rendimiento. Y poco más o menos es lo que termina ocurriendo tarde o temprano. 2. Caché Web Lo que buscamos es un sistema que permita almacenar en un archivo HTML el resultado final de realizar dichas consultas a la base de datos, y los cálculos de los distintos scripts en PHP que se realizan cuando servimos una Web, de modo que al próximo usuario que solicite la misma página podamos entregarle ese archivo HTML sin necesidad de volver a realizar los cálculos de nuevo, con el consiguiente ahorro de carga en el servidor y el incremento de velocidad de respuesta hacia nuestro usuario. Este sistema es lo que se conoce como caché Web. 3. Modo de operación Cuando un usuario solicite una página del servidor Web comprobaremos si tenemos almacenada esta en un archivo HTML dentro de una carpeta que llamaremos "cache". Si es así le enviaremos el contenido de este archivo sin más, y nuestro trabajo habrá terminado. De lo contrario, si la página solicitada no existe como archivo HTML dentro de la carpeta "cache", ejecutaremos todo el código necesario para generarla, como veníamos haciendo hasta hoy, se la serviremos y nos la guardaremos en formato HTML dentro del directorio "cache", para que si álguien más nos pide por la misma página ya no sea necesario volver a generarla. 4. Caducidad de la caché Un archivo que guardemos en la caché nos valdrá para dárselo a los siguiente usuarios, pero ¿durante cuanto tiempo?. En algún momento actualizaremos nuestra Web, y la caché debería también actualizarse. Para esta tarea hay dos opciones claras: La primera sería eliminar los archivos de la caché que van quedado obsoletos a medida que vamos actualizando la Web, manualmente (no recomendado) o por medio de algún script. La segunda podría ser eliminando todos aquellos archivos de la caché que lleven más de cierto tiempo (horas, días...). En ambos casos al eliminar los archivos obligaremos al servidor a generarlos de nuevo cuando un usuario vuelva a solicitar los contenidos de la Web. La segunda opción puede ser la más sencilla de implementar por medio de una tarea en el cron o un script que corra en segundo plano, pero nunca optimizaremos el rendimiento al máximo, ya que si el tiempo de vida de la caché lo establecemos bajo (minutos u horas) podemos estar eliminando la caché antes de que realmente hayamos realizado cambios, por lo que estaríamos desaprovechando recursos del servidor. Si por el contrario establecemos un tiempo de vida alto (varias horas y días) podríamos estar sirviendo información desactualizada a los usuarios durante mucho tiempo. Está claro que lo más eficiente es refrescar la caché justo en el momento en que realizamos un cambio en alguna de las páginas, y por supuesto solo la parte relacionada con ese cambio, no toda la caché. ¿Cómo hacer esto? En mi caso aun lo estoy pensando, pero se me presenta fácil ya que las modificaciones en nuestras Webs se hacen por medio de un CMS, y siempre podemos reprogramarlo para que elimine los archivos de la caché que están relacionados con la parte de la Web actualizamos. Si esto no fuera así seguramente optaría por crear distintos scripts a los que acudiría tras cada actualización para indicarles qué apartados han cambiado y que en base a eso borrara los archivos correspondientes de la caché. En cualquier caso lo más importante es saber que hemos de refrescar la caché ¡o nuestra web no envejecerá nunca! 5. Manos a la obra: PRIMERA PARTE Supongamos el siguiente script en PHP que bien podría corresponder a la sección de una web convencional:
<?php echo "Bienvenido a mi Web.\n"; // Cientos de operaciones ... // Decenas de consultas MySQL ... // Diversas comprobaciones de archivos y permisos ... // Multitud de requires e includes (css, jscripts, funciones...) ... echo "Tardo mucho en cargar pero te acostumbrarás\n"; echo "Bye!"; ?>Ahora vamos a imaginar un efecto meneame o slashdot y ya tenemos el servidor temblando. Así que vamos a aplicarnos la primera parte del caché web que tanto he explicado y que aún no he mostrado.
<?php echo "Bienvenido a mi Web.\n"; // Habilitamos el buffer de salida ob_start(); // Cientos de operaciones ... // Decenas de consultas MySQL ... // Diversas comprobaciones de archivos y permisos ... // Multitud de requires e includes (css, jscripts, funciones...) ... // Recogemos el resultado del buffer y cerramos $resultado= ob_get_contents(); ob_end_flush(); // Creamos una cadena con el nombre del script que estamos ejecutando $filename = $_SERVER["SCRIPT_NAME"]; $break = Explode(´/´, $filename); $filename = $break[count($break) - 1]; // Añadimos a la cadena todas las variables $_POST que se han podido pasar al script foreach($_POST as $variable => $valor) $filename.=$variable.$valor; // Añadimos a la cadena todas las variables $_GET que se han podido pasar al script foreach($_GET as $variable => $valor) $filename.=$variable.$valor; // Generamos un nómbre único para referirnos a la cadena que acabamos de crear $filename=md5($filename).".htm"; // Guardamos el archivo con el nombre generado en la carpeta "cache" $f = fopen ("cache/".$filename, ´w´); fwrite ($f, $resultado); fclose ($f); // Mostramos el resultado en pantalla echo $resultado; echo "Tardo mucho en cargar pero te acostumbrarás\n"; echo "Bye!";Vamos a explicarlo. Como puede verse antes de realizar el trabajo pesado en el servidor habilitamos el buffer de salida con ob_start(), lo que quiere decir que no se imprimirá nada en pantalla y que todo quedará guardado en memoria para luego poder recuperar el resultado. Al terminar las operaciones leemos el resultado que ha quedado almacenado en ob_end_flush() y deshabilitamos el buffer. En este momento todo el resultado ha quedado guardado en la variable $resultado y procedemos guardarla como un archivo html en la carpeta "cache". El nombre del archivo es importante que sea único y distinto para cada página, pero incluso más, es importante que sea distinto incluso si la página ha sido llamada pasándole unas variables u otras, pues el contenido podría variar en función de ello, y es por eso por lo que añadimos al nombre del script todas las variables y sus valores que se han pasado tanto por medio de POST como por medio de GET. El script podría completarse incluyendo además cookies y otros tipos de variables de entrada. La cadena obtenida por este proceso es como una huella dactilar que identifica muy bien el contenido de la variable $resultado, ya que solo indicando el nombre del mismo script y pasándole las mismas variables obtendríamos un resultado igual. Pero guardar el archivo usando como nombre esta cadena sería arriesgado ya que puede llegar a ocupar varios centenares de caracteres e incluso no ser válida como nombre de archivo. Así es como pensé en el MD5 como una opción de convertir la cadena a una menor de 32 caracteres, única y que además todos ellos son válidos y permitidos como nombre de archivo. Por último creamos el archivo en la carpeta "cache", mostramos el resultado en pantalla y terminamos el script. Antes de continuar cabe decir que el script podría mejorarse mucho pero no es la finalidad de este post. Por ejemplo las variables convendría incorporarlas a la cadena $filename en orden alfabético, ya que sino se generarían archivos distintos en la caché solo porque el orden de las variables cambiara de posición. Por ejemplo "index.php?a=1&b=2" e "index.php?b=2&a=1" se tratarían como dos archivos distintos cuando realmente no lo serían. 6. Manos a la obra: SEGUNDA PARTE Ahora modificaremos el mismo script para que contemple la segunda parte. Es decir, que busque en la caché el archivo que contiene lo que el usuario busca, y que si es así se lo muestre, ahorrándose tener que realizar todos los cálculos que venía haciendo hasta ahora para cada petición.
<?php echo "Bienvenido a mi Web.\n"; // Creamos una cadena con el nombre del script que estamos ejecutando $filename = $_SERVER["SCRIPT_NAME"]; $break = Explode(´/´, $filename); $filename = $break[count($break) - 1]; // Añadimos a la cadena todas las variables $_POST que se han podido pasar al script foreach($_POST as $variable => $valor) $filename.=$variable.$valor; // Añadimos a la cadena todas las variables $_GET que se han podido pasar al script foreach($_GET as $variable => $valor) $filename.=$variable.$valor; // Generamos un nómbre único para referirnos a la cadena que acabamos de crear $filename=md5($filename).".htm"; // Buscamos en la caché si existe un archivo con este nombre if (is_file("cache/".$filename)){ require "cache/".$filename; } else { // Habilitamos el buffer de salida ob_start(); // Cientos de operaciones ... // Decenas de consultas MySQL ... // Diversas comprobaciones de archivos y permisos ... // Multitud de requires e includes (css, jscripts, funciones...) ... // Recogemos el resultado del buffer y cerramos $resultado= ob_get_contents(); ob_end_flush(); // Guardamos el archivo con el nombre generado en la carpeta "cache" $f = fopen ("cache/".$filename, ´w´); fwrite ($f, $resultado); fclose ($f); // Mostramos el resultado en pantalla echo $resultado;} echo "Tardo mucho en cargar pero te acostumbrarás\n"; echo "Bye!"; ?>Como veis se ha movido al principio el bloque que genera el nombre del archivo. Ahora lo necesitamos para poder buscarlo en la carpeta "cache". Si lo encuentra un simple require cargará su contenido y lo sacará por pantalla, terminando ahí el script. De lo contrario realiza todo el proceso de cálculo y guarda el archivo resultante en la cache para futuras ocasiones. Como veis el proceso es bien simple y permite muchas mejoras a partir de este punto. Dejo para el que quiera continuar a partir de aquí el aplicar un sistema de caducidad de la caché según las necesidades de cada uno.
02-05-2008 | PHP
Las 9:35, las nóminas sin pagar, el correo sin leer, todo desantendido, pero es que he llegado a la oficina y acabo de encontrarme con este post en ALT1040. La lástima es que solo haya tres temas y ninguno dificil de verdad.
29-04-2008 | Juegos
Tener blog mola porque te puedes quejar de cosas en público que de otra manera te las callas. Me acaban de llamar de las Páginas Amarillas para verificar mis datos de facturación, ¿con qué propósito?, con el de de anunciar a Dieyes el próximo 2008-2009. ¿Cómo? No me he anunciado nunca en las Páginas Amarillas (bueno sí, pero dentro de otro anuncio y sin pagar nada por ello) y cómo es que tienes datos mios que quieres verificar? No sé si se trata de un error de las Páginas Amarillas o una nueva estrategia que han montado para cambiar un "¿Sr. Sánchez quiere contratar nuestros servicios?" por un "ay ay ay Sr. Sánchez, siempre recordándole que si no nos confírma sus datos de un año para otro no saldrá anunciado...". Lo primero es más frio y al teléfono uno tiende a decir que no, pero lo segundo es más propio de una relación comercial ya establecida, y uno puede tender a decir ¡perdón por el descuido! ¿dónde firmo?. En cualquier caso ni antes conseguían su propósito ni ahora, ¿o es que esperan que en el año 2008 nos anunciemos en papel?, ¿no verdad?, ¿o sí?
28-04-2008 | Dieyes
Me ha gustado leer el post del mileurista en el blog de Martín Varsavsky ya que es uno de los problemas que me ha tocado vivir, pero que por suerte no volveré a sufrirlo durante un tiempo, ya veremos cuanto. Estoy hablando de la desorbitada cantidad de impuestos que lleva asociada la contratación de un trabajador en la empresa, y el modo en que repercute a esta y al trabajador. En mi caso puedo decir que para que un trabajador perciba 1500 euros netos en su bolsillo, supone un coste aproximado de 1000 euros en impuestos, entre seguridad social e IRPF, es decir, un 70% de lo que el trabajador percibe lo has de pagar en impuestos, en total, 2500€ todos los meses. Siempre me ha sorprendido el elevado gasto que supone tener un trabajador, y hasta que no lo he vivido en mis propias carnes, pensaba que el problema de los salarios bajos era fruto de empresarios perversos y egoistas, pero ahora sé que hay un tercer implicado, que como un gran hermano está presente en todas y cada una de las empresas para llevarse una buena parte del pastel, más incluso de lo que quisieramos para nosotros mismos, pero está ahí y hay que dárselo todos los meses sin excusas ni explicaciones. Al final el empresario tiene que lidiar con este desproporcionado gasto, y no me extraña que muchas veces y muy a su pesar convierta al pobre trabajador en mileurista, o busque otras alternativas. Como bien dice Martín, cuando la gente se pregunta por qué hay tantos trabajadores en negro en España la respuesta es sencilla.
28-04-2008 | Dieyes
Hoy cuando he terminado de comer he sentido que seguía teniendo hambre de algo más, pero no sabía de que. En realidad más que hambre me apetecía algo que no podía describir pero que mi paladar me pedía a gritos, así que Mazius Ma ha rebuscado por mi mesa y ha encontrado una bolsa de chucherías. Coño! era esto lo que buscaba! En la bolsa había un poco de todo, pero lo que más me atraía eran dos sobres de Peta Zetas. Me acuerdo que cuando era pequeño mi presupuesto para chucherías no superaba las 100 pesetas que me daba mi abuela cada fin de semana, y tenía que elegir entre cantidad o calidad, es decir, entre muchos regalices de duro con chicles de peseta o bien unos pocos regalices de los grandes, un par de Peta Zetas o sobres gigantes de sabores que no conocía pero que tenían un montón de colores y dibujos por todos los lados. Siempre elegía la cantidad antes de que la calidad, un poco como sigo haciendo ahora, pero los tiempos han cambiado y me siguen gustando las mismas cosas que antes, lo cual es una suerte, porque ahora que trabajo puedo destinar dinero casi sin límite a comprar chucherías, y digo sin límite porque comprar todas las que me apetecen no suele sumar más de 5 euros. Así que hoy cuando he visto dos sobres de Peta Zetas en una bolsa de chucherías, que además estaba perdida por mi mesa, me he sentido asquerosamente rico, como el que tiene cuatro ferraris aparcados en la puerta y le apetece salir ese día andando. Es más, ahora iré al Caprabo y compraré huesitos, pero no uno ni dos como tenía que hacer antes, no, ¡un paquete de 10 o 20!. Y además voy a ir andando.
22-04-2008 | Comida
www.juansa.es