mar. 2
2014
Y para acabar, un video sobre la refactorización (semi)automática de código Javascript:
Read more »
feb. 27
2014
Apache es una de esas herramientas tan complejas para las que todos utilizamos un porcentaje ínfimo de las opciones que incorpora (y tampoco necesitamos más). Esa complejidad probablemente será una de las razones por las que otros proyectos hayan apostado por alternativas más ligeras como nginx. Pero bueno, eso es otro tema. Aquí vamos a sacarle partido de esa complejidad.
Los logs de Apache tienen un formato predefinido en la configuración por defecto. En el caso de Apache 2 en Ubuntu (y derivados de Debian), puedes encontrar una lista de los formatos de log dentro del archivo /etc/apache2/apache2.conf, con la directiva LogFormat:
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
Con lo anterior (en concreto con el formato combined) es perfectamente posible salir a la calle muy dignamente en la mayoría de casos. Eso ya nos aporta información sobre fechas, accesos, navegadores (incluyendo buscadores), respuestas y tamaños en bytes.
Para añadir un nuevo formato puedes partir de alguno de los casos anteriores (combined por ejemplo) y añadir tu variable:
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %I" sopadebits_combined
Con el log anterior, podemos acceder a nuestra configuración de host y modificar el formato del log que queremos:
CustomLog /var/log/apache2/localhost.log sopadebits_common
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %T %D" time_combined
Otros casos podrían ser, por ejemplo, incluir el contenido de una cabecera de HTTP (por ejemplo generada por la propia aplicación) por ejemplo para llevar un control de las operaciones internas.
Read more »
feb. 25
2014
Si has desarrollado una buena temporada con Javascript y has requerido de la gestión intensiva de eventos y callbacks, sabrás que es fácil que el flujo de ejecución de la aplicación sea muy difícil de seguir, incluso utilizando profusamente la consola de javascript del navegador y el debugging: salta de un lado a otro y no sabes de dónde viene.
Bienvenido al callback hell. éste es el escenario en el que una caracerística a priori ventajosa del lenguaje de programación (programación asíncrona de javascript) se vuelve en contra. ¿Y ahora qué?
Pero hay más: aparte de la simplificación que supone la agregación de callbacks en un solo promise, existe un motivo más profundo que no hay que perder de vista: al utilizar las promesas, podemos lanzar excepciones desde las funciones llamadas y esperar que la promesa los capture. Y eso sí marca la diferencia, porque permite recuperar el control sobre los errores. Al recuperar ese control, podemos testear y depurar las aplicaciones con más facilidad.
En el fondo las promesas permiten combinar lo mejor de ambos mundos:
feb. 23
2014
feb. 20
2014
Conjuntamente con diff, grep es la otra gran utilidad de referencia. En el momento de buscar textos simples o expresiones regulares, la familia de utilidades grep están en mi navaja suiza de utilidades. échale un vistazo al manual de esta utilidad.
Así, el comando siguiente:
grep -B2 -A3 hola file.txt
grep -m 3 hola file.txt
grep hola file.txt | head -n 3
grep -m 3 hola file.txt | tail -n 1
feb. 18
2014
Hacía mucho, muchísimo tiempo que no trataba el tema de la veracidad de la información en internet, y desde entonces este entorno ha evolucionado, y mucho. En ese proceso de evolución hemos tomado conciencia de la mayor complejidad de las estructuras de red, reflejados no sólo en los aspectos algorítmicos de su análisis sino también en sus implicaciones para las relaciones sociales.
En esa evolución del medio, la profesión periodística se intenta (y puede conseguir) reinventarse, migrando de un contexto de comunicación unidireccional a otro del estilo cluetrain. Escenario: Muchos canales, fragmentación de la audiencia, métricas de rendimiento del servicio para tener ingresos por una publicidad cada vez menos pagada. Opción 1: copia-pega a toda mecha, redacción de contenidos de consumo rápido, competir con contenido amateur. Opcion 2: llegar al modelo de pago por suscripción o por lectura, partiendo de la creación de contenidos de calidad, contrastados, que requieren de su tiempo y esfuerzo (labor periodística, vamos), relación uno-a-uno con el lector...
Volviendo al contexto de Internet, la creación de contenidos de calidad pasa por contrastar las fuentes y su veracidad, pero ese proceso sigue siendo un problema en la Red. Lo es, al menos hasta que la multitud de fuentes se convierta en una ventaja, y el filtrado de esas fuentes sea ágil. Y eso es lo que trata de exponer el Verification Handbook, un recurso totalmente gratuito, y que yo pondría al lado del Data Journalism Handbook (también en castellano) en cuanto a recursos que pueden ayudar a relanzar esta profesión.
Read more »
feb. 16
2014
feb. 13
2014
El comando diff es para mí una de esas pocas herramientas clave en la consola de linux, necesarias en mi día a día, en mis tareas de programación y en general para buscar y comparar archivos de texto. Esta utilidad salva muchas vidas en cuanto a errores y seguimiento de la tarea hecha, además que localiza detalles imposibles de encontrar navegando por el código. Estas son tareas clave cuando se trata de un equipo de programación, y no es uno mismo quien programa.
En ese hábito de uso de diff, me he descubierto centrándome en utilizar una pequeña serie de opciones de la utilidad, sin entrar en su manual y ver otras opciones aplicables. Voy a comentar algunas utilidades en diversos artículos para quien pueda resultar útil.
diff archivo1.txt archivo2.txt
diff -y archivo1.txt archivo2.txt
El tamaño de ancho por defecto para esta función es de 130 caracteres (unas 60 columnas de texto y algunos centrales usados para dar formato a la salida de diff). En los tiempos actuales es posible que dispongamos de una pantalla panorámica que permita mostrar un mayor ancho. Si quieres ampliar este tamaño, puedes utilizar la opción --width=NUM:
diff -y --width=180 archivo1.txt archivo2.txt
feb. 11
2014
Entro en ese terreno que es el offtopic. Me apetece, a pesar del SEO, hacer este pequeño ejercicio para cambiar un poco de tercio. Cuatro aprendizajes sobre las habilidades sociales que recuerdo a menudo (aunque no siempre sepa aplicar):
Read more »
feb. 9
2014
Kayden + Rain from Nicole Byon on Vimeo.
Simplemente genial, su sonrisa carga las pilas más descargadas.
Read more »© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.