Migrando ownCloud de MySQL a SQLite

En su momento realicé una instalación de ownCloud utilizando MySQL como base de datos, más tarde se hizo obvio que esta no era la opción correcta y que la necesidad de ahorrar toda la memoria RAM posible y el hecho de que no hubiera más accesos que los míos apuntaron a que debía haber optado por SQLite, el proceso es algo complicado la primera vez así que aquí queda explicado por si hay que repetirlo...

Lo primero es convertir la propia base de datos a SQlite, idealmente esto supondría sacar un mysqdump, pasárselo a SQLite y el estándar del lenguaje haría el continue.

Haciendo MySQLdumps más amigables

Hace un tiempo había tenido que tratar con dumps de MySQL generados por mysqldump(1), a falta de una forma de control de versiones más específica (que por suerte no llegó a hacer falta) se utilizó git(7). Ahora bien, git permite hacer diff entre versiones, pero esto (al menos por defecto) se hace línea por línea, lo que produce que los diff entre dumps muestren grandes cambios aunque solo se produzcan en una fila de la base de datos, para solucionar ese inconveniente está este programa sqlsplit.c.

El programa no está muy pulido, tiene una función main que solo abre archivos y otra que (con la ayuda de dos continue.

Usando andEngine desde emacs

Hoy estaba hechando un vistazo a la programación de juegos en android, una librería con buena pinta para hacerlo es AndEngine, los tutoriales que he encontrado para hacerlo son para Eclipse, pero después de intentarlo y acabar un par de veces con un segfault ¡importando un proyecto! toca volver a los clásicos, vamos a ver como hacerlo con emacs. continue.

Escribiendo un port de Erlang

Resulta que este cuatrimestre ha habido una asignatura cuya práctica se ha desarrollado en Erlang, un lenguaje funcional que favorece la programación concurrente y la comunicación de los procesos usando paso de mensajes. El resultado de la práctica es un crawler donde cada dominio tiene asignado un “hilo” que tendrá que hacer las peticiones al servidor web, más otro que se encargará de descargar imágenes e indexarlas utilizando pHash, el programa se compone de más partes pero ahora nos centraremos en esto.

(Por cierto, el proyecto se ha desarrollado en abierto, tenéis el código en su repositorio de GitHub, EPC).

Al principio cada hilo simplemente hacía una llamada a httpc:request, que es continue.

Trabajando en un repo de Debian

Actualización: Parece ser que ya lo han subido al repo oficial ^_^ , así que no tiene sentido mantener este.

Tras pasar las últimas horas dando palos de ciego he podido montar un repo de Debian, empaquetar M.A.R.S. y subirlo, la idea es hacer una recopilación de juegos libres que no estén en los repos oficiales (intentaría mandarlos ahí pero carezco de la constancia para mantenerlos y no es plan).

Teneis el repo en codigoparallevar.com/debian/ y la clave pública usada para firmar es la de siempre 0x453125AC

Y ya va siendo hora de parar por hoy...

ps: Por ahora solo soporta amd64 y no tiene permitido el listado de entradas de directorio, ya lo puliré. La configuración sería esta:

1
2
deb http://codigoparallevar.com/debian/ unstable/$(ARCH)/
deb-src http://codigoparallevar.com/debian/ unstable/source/

Editando archivos en uso

Leyendo el manual de rsync(1), en la documentación de la opción --inplace avisa de que:

In-use binaries cannot be updated (either the OS will prevent this from happening, or binaries that attempt to swap-in their data will misbehave or crash).

Resulta que hace un tiempo había intentado hacer un programa que modificara su propio binario para guardar datos (sin ningún motivo concreto), pero resultaba en errores al modificar el propio archivo mientras aún estaba en uso, además es posible (en sistemas POSIX) eliminar archivos en uso. La lectura de la opción de antes encendió una bombilla, he aquí ese programa que modifica su binario para guardar un número, lo hace continue.

CM sin agentes de servidor? Prueba ansible

Hace unas semanas había hechado un vistazo a algunas herramientas de gestión de la onfiguración como chef, puppet y salt, pero lo dejé cuando vi que requerían un servicio en el servidor donde se instalaran.

Pues bien, resulta que este sábado, en el hackmeeting se habló de ansible, una herramienta para este propósito escrita en python. Me perdí la charla pero hoy le heché un vistazo a la página web

Ansible is a radically simple IT orchestration engine that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications— automate in a language that approaches plain English, using SSH, with no agents to install on remote systems.

Eso suena muy, muy bien, ando probándolo y por ahora anda genial, quizá es lo que estabas buscando :P.

Detectando errores al vuelo con emacs

Los editores “clásicos” como Emacs y VIM pueden parecer cosa del pasado cuando hoy en día IDEs como NetBeans o Eclipse detectan errores en el código sin necesidad esperar a compilarlo para encontrarlo (aunque esto se de sobre todo con Java, por algún extraño motivo...), sin embargo la extensionalidad de estos editores permite replicar esto sin grandes problemas.

Emacs incluye por defecto un “minor-mode” llamado flymake que permite hacerlo, aunque haya que hacer unas pequeñas configuraciones dependiendo del lenguaje, la Wiki de Emacs describe como hacerlo para unos cuantos lenguajes.

Pero, y si el lenguaje no está soportado, como Flex o ensamblador? La solución es sencilla, solo habrá que crear continue.

Detectando el lenguaje de un texto

A veces puede resultar útil detectar el lenguaje de un texto, en los sistemas *NIX es habitual tener un directorio con listas de palabras habituales de varios idiomas, simplemente comparando la proporción de palabras de un texto que cae en esa lista a través de los distintos lenguajes da un número que parece bastante significativo acerca de que idioma se trata.

Por ejemplo, probando esta aproximación sobre el texto traducido (en Markdown, sin convertir a HTML) de la entrevista de Snowden para Der Spiegel muestra los siguientes resultados:

1
2
3
4
5
6
7
$ python lang.py entrevista-de-edward-snowden-para-der-spiegel.txt
entrevista-de-edward-snowden-para-der-spiegel.txt [2341]

58.61%  spanish
51.60%  galician
29.18%  american-english
29.09%  british-english

Hacerlo sobre el texto de la GPLv3 continue.

Previous » « Next