feb. 6
2014
En un artículo anterior comentaba la posibilidad de generar un archivo gzip a partir de un volcado de la base de datos MySQL con mysqldump. Ese proceso tenía un inconveniente, y es que desconocemos el estado del progreso de esa copia de seguridad. Para bases de datos pequeñas no es un problema, pero cuando crece, nos podemos quedar esperando un rato largo, y sin información.
cat file.txt | pv -cN cat > file2.txt
Así que si tomamos el ejemplo del anterior artículo:
mysqldump -u [usuario] -p[clave] [base_de_datos] | gzip > [copiaseguridad.sql.gz]
mysqldump -u [usuario] -p[clave] [base_de_datos] | gzip | pv -cN gzip > [copiaseguridad.sql.gz]
$ cat dump.sql | pv -cN cat -s $(du -sb dump.sql | awk '{print $1}') > dump2.sql
cat: 347MB 0:00:06 [27,7MB/s] [==================> ] 43% ETA 0:00:07
$ pv -cN cat -s 828997215
mysqldump -u [usuario] -p[clave] [base_de_datos] | gzip | pv -cN gzip -s $(gzip -l copiaseguridad-anterior.sql.gz | tail -n 1 | awk '{print $2}') > [copiaseguridad.sql.gz]
Así que nada, a partir de ahora tienes la información sobre en qué punto estás... en tus backups ;-)
Read more »
feb. 4
2014
¿Un día pesado en el trabajo? ¿Procrastinando? ¿Viviendo la vida de otra persona?
[caption id="" align="alignleft" width="510"] xkcd - photos[/caption]
A veces nos cuesta conectar nuestra mente con lo que estamos haciendo, y estamos como en otro lado. Pero eso no ayuda a acabar con las tareas, ni a ser más feliz.
En esas ocasiones, intento encontrar una tarea con unos ingredientes muy concretos:
Para las próximas ocasiones, quizá te interese esta charla del autor original del concepto:
[ted id=366]
Read more »
feb. 2
2014
ene. 30
2014
ene. 28
2014
Hacía días que tenía pendiente el hacer un comentario y al final he encontrado el momento. El pasado 24 de Diciembre, Alan Turing recibía el perdón de la Reina de Inglaterra. El proceso había empezado el pasado 19 de Julio, aunque no era ni mucho menos la primera vez que se realizaba esta solicitud.
Mirándolo por el lado positivo, la noticia nos permite ver que es posible que la realeza cambie su opinión sobre algunos temas. Cierto, aceptemos la parte buena de la noticia.
Más allá de los motivos que llevaran a la condena del matemático que descifró Enigma; del desenlace final que llevó a Alan Turing al suicidio; más allá de todo eso, están las razones para decidirlo. Entre ellas, está la incapacidad para contraponer su homosexualidad (en aquel momento punible) al beneficio que proporcionó. ¿Y en qué contribuyó?
Turing contribuyó muy significativamente a romper el cifrado de las comunicaciones del bando nazi y de este modo dar una estocada final a la guerra. Suponiendo que las cifras que se barajan sean ciertas, Turing salvó indirectamente varias decenas de millones de vidas (la Segunda Guerra Mundial suponía unos 11 millones de muertos anuales, y se estima que romper el código de Enigma acortó la guerra en 2 años). Hasta aquí ni siquiera he mencionado la máquina y el test te Turing. Casi nada.
Vemos que ha costado más de sesenta años, que los líderes de un país que se benefició de todo esto, lo hayan perdonado.
Cuesta encajar las palabras ecuanimidad, visión y liderazgo en toda esta historia. En mi opinión, esta historia representa uno de los grandes fracasos en el liderazgo de un país.
Read more »
ene. 26
2014
ene. 23
2014
Si bien es cierto que los navegadores son, por definición, menos potentes que otras herramientas de escritorio (Gephi por ejemplo), estos límites cada vez resultan una restricción menor para nuestros objetivos. Sirva el ejemplo de dos utilidades para representar grafos con una gran cantidad (miles) de nodos, para ver que tenemos margen para sacar partido de las representaciones de datos en HTML5.
La posición de los papers se basa en las citas / referencias, así que un paper está más cerca de los artículos que ha citado o de los que le citan. El modelo utilizado para medir las distancias es el de muelle (Spring) basado en la ley de Hooke (la clásica de los muelles). Las referencias se obtienen procesando las fuentes LaTeX / PDF de los artículos cargados en el repositorio
Se puede aplicar zoom sobre el mapa (con la ruedecita del ratón, y arrastrando), tras lo cual empezarán a aparecer etiquetas y los nombres de autores de los artículos. Por lo que se desprende de la información que hay en el sitio web y en su blog, el código fuente no parece libremente disponible para descarga, pero sí proporcionan una utilidad llamada My Paperscape, en la que se puede cargar una propia versión de datos de gráficos.
Además de lo anterior, llama la atención lo ligera que resulta la carga, y los tiempos de respuesta de las interacciones. Aunque vemos ejemplos de sigma.js con muchos menos nodos que en el caso de paperscape, las sensaciones son muy buenas e invita a trabajar con él para sacarle el jugo.
Por lo que respecta a esta biblioteca javascript para la visualización de grafos, sólo hay un detalle importante en el momento de escribir este post: su autor anunción hace algo más de un mes que realizaría un reinicio de esta biblioteca de código, con el objetivo de hacerla más extensible y mantenible, por lo que lanzó la rama 1.0.0, incluyendo allí los detalles del cambio.
La fecha de lanzamiento que se ha planteado el autor para esta revisión es el 14 de Febrero próximo, pero para los impacientes que no teman perder el tiempo por los cambios que pueda tener, se pueden descargar esta rama. Se espera que incluya soporte para webGL y para dispositivos táctiles.
Así pues, dos opciones interesantes, con enfoques muy distintos, y con aplicaciones variadas. Personalmente me quedo con sigma.js porque se ajusta más a lo que yo necesito (una herramienta que pueda adaptar a mis objetivos), pero em ambos casos hay que reconocer el esfuerzo y la calidad del resultado final.
Read more »
ene. 21
2014
Por un lado, empiezo mi paseo por wikipedia, leyendo el artículo sobre el mercado de la electricidad de España (seguido del artículo Energía eléctrica en España, donde hay un resumen de la historia de este sector). Resulta interesante descubrir que las primeras fuentes de electricidad incluídas en el MIBEL (Mercado Ibérico de la Electricidad, el llamado pool) que venden son las nucleares (por su coste de parada) y las renovables (por normativa legal). Lo hacen a coste cero (para obtener el precio más bajo y por ello entrar siempre entrar en las subhastas).
Eso no significa que se vendan a coste cero, sino al precio (precio marginal en términos económicos) al que se acaba cubriendo la demanda proyectada. Es decir, que después de cubrir parte de la demanda con estas dos fuentes, se sigue subhastando hasta cubrir lo que se espera que sea la demanda total. El precio que cobran todos es el mismo al que lo cobra el último. Nucleares y renovables cobran a ese precio final, a pesar de haberse ofrecido a cero. En resumen, intenta
Para el el caso que nos ocupa, el meollo de la cuestión se encuentra en dos aspectos combinados:
Sin embargo todo lo anterior no parece tener relación con la situación actual. Esto es debido a que los conceptos de oferta y demanda y demanda se asocian a un mercado de competencia perfecta o casi perfecta, con un gran número de proveedores ofreciendo un producto o servicio no diferenciable. Y éste no es el caso del mercado eléctrico español. Aquí encontramos un oligopolio, que para el caso, me atrevería a calificar de la versión capitalista del feudalismo. La generación de electricidad es algo que requiere una infraestructura cuya inversión inicial es costosa, y eso genera una barrera de entrada enorme (y si no es lo suficientemente alta, no hay problema: la elevamos un poco más).
En esas circunstancias, es posible que uno o más de los actores más significativos realicen acciones para distorsionar el precio. Por ejemplo, parando centrales. Esta operación sería impensable en un mercado con competencia perfecta, principalmente porque los costes fijos (estructura, personal, etc.) no compensarían el aumento en el precio marginal en la subhasta: alguien podría ofrecer un precio más bajo que generaría pérdidas.
¿Hay motivaciones para hacer eso? Por supuesto, en los mercados de futuros de Wall Street trabajan muy motivados. Así que por ese lado, hay poco que decir: el mecanismo de fijación de precio permite la especulación debido a su estructura de oligopolio en el contexto económico, y a las puertas giratorias en el contexto legal/político.
En este sentido, la intervención de Laia Ortiz el pasado 16 de Enero de 2014 en la comisión energética del congreso, recoge algunos de los puntos clave comentados:
ene. 19
2014
ene. 13
2014
Desde el punto de vista de una tienda de e-commerce, cada negocio es distinto y también sus políticas de distribución, métodos de pago, combinación de productos, ofertas, etc. No hay dos tiendas idénticas hasta en el más mínimo detalle, y para que una herramienta como Magento se pueda adaptar a cada a caso, es necesario proporcionar una base sólida y a la vez extensible.
Con ese objetivo, Magento trabaja con una estructura de módulos/extensiones que es en gran medida la clave del éxito para su adaptabilidad (y también es un riesgo, para qué negarlo). Combinado con esta flexibilidad, Magento también incorpora la clase Mage, que proporciona una serie de métodos estáticos que actúan como punto de acceso y ejecución de la aplicación.
Si en algún momento quieres simular una petición a la aplicación, este método (junto con el contenido de index.php) te será de ayuda.
/**
* Set all my static data to defaults
*
*/
public static function reset()
{
self::$_registry = array();
self::$_appRoot = null;
self::$_app = null;
self::$_config = null;
self::$_events = null;
self::$_objects = null;
self::$_isDownloader = false;
self::$_isDeveloperMode = false;
self::$_isInstalled = null;
// do not reset $headersSentThrowsException
}
El valor de Mage::$appRoot no será modificable via setter después de haber sido inicializado. No al menos utilizando el método setter.
© 2007 and beyond Mario Alberich, licensed under CC-BY-SA unless stated otherwise.