domingo, 10 enero 2010

1
objetor

Cómo se crea una Galeria en nuestro CMS

por Fernando Plaza en , ,

Por fin ya hemos habilitado la posibilidad de crear Galerias en nuestro CMS nos hemos esforzado para que sea una tarea muy sencilla y rápida para que los escritores se animen a usarlas.

El sistema es bastante rápido teniendo en cuenta que todas las imágenes asi como sus thumbs primero se suben a nuestro servidor pero luego quedan almacenadas en Amazon S3. Toda la parte Ajax se ha programado con JQuery que se encarga de lo más dificil: subir multiples fotos, actualizar sin refrescar...

Aquí se puede ver una demostración de cómo se ha creado la galería de este post:

Por el momento hemos permitido que se puedan subir fotos de hasta 750 k, diez veces el tamaño máximo que permitimos en las fotos en los posts (75k). En cualquier caso cualquier foto que se sube se adapta en tamaño y peso, de manera que en la web al final queda colgada una versión optimizada (la versión original de mayor calidad se almacena también por si acaso):
  • El tamaño máximo permitido es de 950 pixels de ancho y 600 de alto, cualquier foto que se suba de mayor tamaño se reduce en la versión para publicar de manera transparente para el usuario.
  • Utilizamos el formato jpeg a 90 de calidad, normalmente usamos 80 pero preferimos no ser tan tacaños y que capturas que hubieran quedado mejor publicadas en formato gif o png conserven una buena nitidez pese a estar en jpeg.



PD - En el video se me ha olvidado mostrar que se puede cambiar el orden de las imágenes, para ello sólo es necesario pulsar sobre la imagen y arrastrarla hacia su nueva posición. Para el que le interese el tutorial ha sido grabado con la versión gratuita de Jing.



Ver Galería: 19 imágenes »

domingo, 3 enero 2010

AFR - ratio anual de fallo

por Fernando Plaza en ,



...volumes that operate with 20 GB or less of modified data since their most recent Amazon EBS snapshot can expect an annual failure rate (AFR) of between 0.1% – 0.5%, where failure refers to a complete loss of the volume. This compares with commodity hard disks that will typically fail with an AFR of around 4%, making EBS volumes 10 times more reliable than typical commodity disk drives

Amazon Elastic Block Storage (EBS)

En FernandoPlaza.com: Amazon S3

sabado, 17 octubre 2009

2
objeciones

Moviendo todas nuestras fotos a Amazon S3

por Fernando Plaza en , ,

Este esquema muestra como hemos hecho para pasar todas las fotos de nuestros blogs a Amazon S3.



Siento una enorme admiración por el proyecto AWS (Amazon Web Services)... ¿quién podía pensar que Amazon, el mayor retailer online, de repente se iba a convertir en proveedor tecnológico y buque insignia del cloud computing?

Aunque utilizo S3 desde el año pasado, cuando empezamos a volcar ahí nuestras copias de seguridad, hasta la fecha nunca nos habíamos planteado usarlo como hosting de imágenes... pero ha llegado un momento en el que las imágenes de más de cinco años de publicación en todos nuestros blogs nos han desbordado y no tiene sentido que la mayoría de los recursos del servidor se desaprovechen sirviendo archivos en lugar de sirviendo webs de manera más eficaz (al fin y al cabo como su propio nombre indica un webserver es un servidor de webs).

Para mover todas las imágenes ha habido que reprogramar varios componentes de nuestro CMS para conseguir que las imágenes se carguen en Amazon S3 en lugar de en topmadrid.com, dolcecity.com...

Me centraré en cómo ha quedado ahora el proceso:

1 - La imagen es cargada por el escritor en el CMS con CKFinder, cada escritor tiene una carpetas con sus imágenes que ellos gestionan, todo ello en enzo.es que es donde está instalado nuestro CMS.

2 - Cuando se publica el post, se realiza una copia de cada imagen en otra carpeta que hemos llamado "cache" y desde ahí se sube a Amazon S3 (utilizando el API REST de Amazon S3 y todo programado en el arcaico vbscritp... que tiene mérito)

3 - Una vez todas las imágenes están subidas se inicia el asintente para crear las thumbs para este proceso necesitamos tener la foto en el servidor donde está instalado el componente con el que las hacemos ASPjpeg, por eso el CMS revisa la carpeta de caché para ver si sigue ahí la foto y sólo en el caso de no encontrarla se la descarga de vuelta desde S3 (esto es necesario porque la carpeta caché se vacía cada noche y a veces quieres rehacer una thumb de un post que colgaste hace tiempo por lo que la foto original ya no está en la carpeta cache y hay que traerla de S3).

4 - Las thumbs se guardan en enzo.es durante el tiempo suficiente para poderlas pasar también a Amazon S3, después se borrán.

A diferencia de antes ya ninguna foto pasa a los blogs de destino, todo está o temporalmente en enzo.es o en su emplazamiento defitivo en Amazon S3 quedando todos los archivos de cada blog organizados en buckets independientes:



Aprovechando que teníamos que hacer este cambio hemos solucionado un problema que habíamos heredado de blogger:

- Las imágenes de los posts en lugar de colocarlas todas en la carpeta /uploaded_images/ ahora van clasificadas por años y mes, igual que los posts.

- Por su parte las thumbs, para no tenerlas todas juntas como antes en la carpeta /img_thumbs/ se van distribuyendo de manera automática en carpetas de 100 en 100, con lo que evitamos los problemas de la situación anterior: tener carpetas con más de 30.000 imágenes y creciendo que sólo para conseguir listar sus archivos ya era todo un reto.

Sólo nos falta un último empujón para que las galerías entren en el nuevo circuito de S3 y con eso la "migración" estará completa. Los beneficios del cambio son claros, como se puede leer en este post de Amit Agarwal mover todas tus imágenes a Amazon S3 descarga enormemente de trabajo a tu servidor:


En servidores donde corremos aplicaciones hemos comprobado que algunos procesos se ejecutan ahora muchísimo más rápido, tenemos por ejemplo un cron que llama a una página a las 20:00 y que solía terminar cerca de las 22:20... ahora el mismo proceso termina a las 21:45 lo que supone más de media hora de diferencia.

En FernandoPlaza.com: Amazon S3

lunes, 28 septiembre 2009

you’re here to ship products!

por Fernando Plaza en ,

At the end of the day, ship the fucking thing! It’s great to rewrite your code and make it cleaner and by the third time it’ll actually be pretty. But that’s not the point—you’re not here to write code; you’re here to ship products.

Jamie Zawinski leido Joel on Software

domingo, 26 abril 2009

1
objetor

Sobre sistemas de seguridad...

por Fernando Plaza en ,

The present need for security products far exceeds the number of individuals capable of designing secure systems. Consequently, industry has resorted to employing folks and purchasing "solutions" from vendors that shouldn't be let near a project involving securing a system.

Lucky Green

lunes, 23 marzo 2009

4
objeciones

Listado de IPs de bots, crawlers, spiders y demás...

por Fernando Plaza en , ,

Lista actualizada de direcciones IP de los robots que indexan nuestras webs habitualmente.

En mi post Programando un contador de impresiones que excluya a los bots me recomendaba Alberto en los comentarios que compartiera mi listado de IPs de bots, crawlers, spiders y demás...

Para quien le pueda interesar un volcado de este listado de IP se actualizará regularmente en la siguiente dirección:

http://www.fernandoplaza.com/apps/bots/iplist.txt

Los casi 800 bots que tenemos ya fichados están ordenados por el UserAgent para que el listado sea más sencillo de revisar. La estructura del txt no os costará averiguarla por si queréis importar su contenido con cierta frecuencia (para que el fichero no pese mucho el UserAgent está limitado a 100 caracteres).

Espero que os resulte útil.

martes, 17 marzo 2009

6
objeciones

Programando un contador de impresiones que excluya a los bots

por Fernando Plaza en , ,

El tráfico generado por robots, crawlers, spiders y demás que navegan por la red es casi tan grande como el de los humanos. Si queremos programar un contador fiable debemos excluir todas esas visitas.

If our logs are any indication, few bots actually bring enough human traffic to make up for their crawls, so there's alot of free-loading bots out there.

Bots vs Browsers

Programar un contador de impresiones no es nada del otro mundo, básicamente es un código que se ejecuta una vez se carga la página y que realiza una inserción en la base de datos.

Yo lo he puesto en mis plantillas al final del todo y precedido de un Response.flush para que en caso de que algo falle el usuario reciba la página solicitada sin demoras, además sólo hago una inserción en la base de datos y el recuento de las totalizaciones se realiza por las noches en un proceso batch... de esta manera aun siendo un código que se ejecuta en todas y cada una de las páginas es mucho más ligero que si primero tuviera que buscar el número de impresiones del día (select) y luego actualizarlo (update).

Lo complicado empieza cuando te das cuenta de que más de un 50% de tus impresiones proceden de robots, spiders, crawlers... y que necesitas filtrar todas esas entradas para que el dato se asemeje lo máximo posible a lo que te devolvería un Google Analytics.

¿Cómo hacemos para filtrar toda esta moralla? Pues yo no sé cómo lo harán los sistemas estadístico pero yo lo hago por IPs o analizando el UserAgent del navegador que visita la página.

En iplist.com (IP Addresses of Search Engine Spiders) puedes encontrar un buen listado de IPs de bots para excluir, son unas 3.500 direcciones aunque después de importarme todas ellas cuando intente cruzarlas con mis datos no hubo muchas coincidencias...

Así que opté por re-invetar la rueda (one more time) y crearme mi propia lista con un poco de ayuda de Bots vs Browsers. Básicamente lo que hago es en el proceso batch buscar dentro del UserAgent palabras como bot, crawl, spider, mediapartners, slurp... y almacenar todas esas IP para excluir sus impresiones (ya tengo almacenadas unas 400 y subiendo... que aun siendo menos de las 3.500 de iplists.com me funcionan mucho mejor). Por el momento el sistema funciona bastante bien y el número de impresiones que recibo se acerca muchísimo al que me dan mis estadísticas.

Llevaba tiempo necesitando un contador de este tipo, lo he estado retrasando porque sé que el API de Analytics está al caer pero yo no podía esperar más... cuando lancen el API ya veré la manera de integrar también esos datos para corroborar los mios.

viernes, 20 febrero 2009

4
objeciones

Historia de un Viejo Informático

por Fernando Plaza en , , ,

...os garantizo que en la actualidad es imposible poner en marcha ninguna nueva aplicación, por sencilla que parezca, en menos de seis meses… y los que tengáis experiencia, decidme si tengo razón o no

Me encantó este artículo que encontré a través de Menéame sobre El Método de trabajo en el Proceso de Datos en los 70', leyendo cosas así uno entiende el presente: sobre todo las dificultades que han tenido las grandes empresas para informatizar sus procesos de producción y como en definitiva eso se convierte en pieza clave de su liderazgo.

Cuando en la tele hablan sobre la falta de sistemas informáticos en la Justicia, la verdad es que aunque no deja de ser vergonzoso, uno se da cuenta de la pasta gansa que hay que invertir en producir un software específico que satisfaga todas las necesidades informáticas de la Justicia de nuestro páis, algo así lleva más de los 4 años de una legislatura y no es un proyecto nada lucido: cuando lo pongan en marcha nadie irá a cortar una cinta roja con una tijeras y aun haciéndose lo mejor posible caerán collejas a diestro y siniestro.

También se entiende que para salir del paso cada comunidad autónoma haya ido poniendo parches en el asunto... no tengo ni idea de lo que nos podríamos encontrar si tiraramos de la manta, probablemente alguna que otra barbaridad, pero detrás de ellas no hay malas intenciones ni una flagrante necesidad de consumar la chapuza nacional: sólo personas desbordadas intentando solucionar sus problemas del día a día y peleándose por conseguir sacar su trabajo adelante (en lugar de esperar a que les llegue una ayuda de las altas esferas que nunca termina de precipitarse).

En fin, la informática no es sencilla, necesitas buenos analistas y buenos programadores, y también necesitas un ambiente de estabilidad que permita a todo el mundo hacer bien su trabajo... pero con la pizca de marcha necesaria para que todos se ponga las pilas y no se duerman en los laureles.

Al final la informática automatiza procesos, reduce costes y un montón de cosas más... todo muy mecánico, muy aséptico, pero hasta llegar a ese punto -tanto en los 70 y como en nuestros días- ha hecho falta "masa humana en estado puro" y gestionar personas es difícil, por no decir que es un arte.

sabado, 17 enero 2009

La evolución de Windows y los libros que he tirado en el 2009

por Fernando Plaza en , ,

A diferencia de otros libros, los manuales de informática caducan como los yogures... llega un momento en que ya no te sirven para nada, salvo para montar un museo.



Les tengo mucho cariño a estos libros porque en su día me los empollaba de "cabo a rabo": concretamente el de Windows NT y 98 con cerca de mil páginas cada uno me los peiné enteritos: lo cual a parte de mucha satisfacción personal y muchos conocimientos que no sabes que tienes hasta que los necesitas... también tiene su lado negativo.

No obstante, llegado el momento hay que asumir que estos libros han perdido casi toda su utilidad, aunque tienen cierto valor histórico.


Con ellos entendemos como el revolucionario Windows 95 con el que Windows se convertía en el Sistema Operativo de nuestra máquina y dejaba de ser un mero Interface Gráfico (GUI) ejecutable a partir de MS-DOS (¿os acordáis cuando cargábamos DOS y luego tecleábamos c:>win.exe para que se cargara el Windows 3.0?... los más avispados modificaba en autoexec.bat para que esta ejecución fuera automática, siempre y cuando tuvieras disco duro)

... ese Windows 95 que evolucionó en un bastante decente Windows 98 (sobre todo en su versión Windows 98 SE Second Edition) y que terminaría degenerando en la abominación del Windows Me (Millennium Edition) que no había por donde agarrarlo.

Todo ello en el entorno doméstico porque en el corporativo usábamos Windows NT, en su versión Workstation para los ordenadores de escritorio o Windows NT Sever para los servidores, mucho más robusto, que muchos adoraban lo que ancló el salto hacia Windows 2000 Professional/Server que no fue masivo. Finalmente sería esta rama, la corporativa la que perduraría en el tiempo... aunque en el gráfico se represente como una fusión lo cierto es que Windows Me se desechó y Windows XP proviene del kernel de NT.

Windows XP ha sido un sistema operativo maravilloso y Vista no ha estado a la altura para sucederlo, aunque yo uso Vista en su versión 64bits y me funciona perfectamente lo cierto es que la gente esperaba más, se necesita algo excepcional para desbancar a XP... hoy parece que Microsoft ha decido no seguir haciéndole el boca a boca a un muerto y va hacer borrón y cuenta nueva: pierde la batalla de Vista para intentar ganar la guerra con Windows 7.

En mi opinión Windows 98 fué para Windows 95 lo que hoy es Vista para Windows XP -un paso intermedio que no terminó de calar- la gente no cambiaba de ordenador para pasarse al 98 y en ocasiones seguía pidiendo que el ordenador nuevo se lo sirvieran con Windows 95 OEM (por otra parte comparar Vista con Me es desproporcionado).

Me encantan estas cosas y la historia de Microsoft Office es igualmente apasionante.

sabado, 27 diciembre 2008

1
objetor

La opacidad en las aplicaciones: Ey! ¿hay alguien ahí?

por Fernando Plaza en , ,

Nuestro CMS lo utilizan ya cerca de 40 personas, algunos de los cuales ni siquiera están en España y sólo tenemos contacto con ellos por mail... ¡con algunos ni siquiera he hablado nunca!

Esto despierta en mi toda una serie de temores paranoicos... sobre todo cuando algo falla o empieza a funcionar con lentitud... ¿exáctamente qué es lo que ha fallado?

Como está construido con Active Server Pages en Vbscript no hay un registro de sucesos que se pueda interpretar con facilidad como en ASP... asi que estás literalmente a ciegas (están los logs de servidor, pero a ver quien es el guapo que se pone a interpretarlos...)

Para poder atajar este problemilla se nos ha ocurrido crear un Registro de Eventos al estilo 11870 de uso interno para monitorizar algunos acciones: el logueado de usuarios, la creación de nuevas entrada, la creación de una etiqueta, la publicación... así hasta unas 15 ó 20 acciones, que iremos aumentando.


Tengo especial interés en monitorizar la subida de archivos e imágenes al servidor, ya que es de las acciones que más problemas pueden ocasionar... también estáría bien añadirle un poco de AJAX para crear un "efecto Digg - Menéame" que te evite el tener que estar dándole todo el rato a F5.

Pienso que esto -a parte de útil por cuestiones técnicas de soporte y control- puede llegar a aumentar la interactividad entre los usuarios del CMS ya que las acciones son públicas para todos los usuarios del mismo blog.

Aquí el proceso de publicación de la entrada que estás leyendo:

siguiente página »