Archive for the 'Notas mentales' Category

Installing fearqdb on Debian + lighttpd in 10 steps

Today we’re going to install fearqdb (the best quote database out there) on Debian + lighttpd.

Prerequisites

  1. Lighttpd + PHP and MySQL installed and working.
  2. Enable the PHP gettext module, if you want to use fearqdb in Spanish:
    echo "extension=gettext.so" >> /etc/php5/cgi/php.ini

    Then, install the gettext package.

  3. git.

Installation

  1. cd to /var/www and clone the git repo there:
    git clone git://github.com/wodim/fearqdb.git
  2. Create a new user and a new database for fearqdb in your MySQL installation. You may use phpmyadmin for that matter, I will use the MySQL internal monitor.
    root@debian:~# mysql -uroot -p
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    
    [...]
    
    mysql> create user 'fearqdb'@'localhost' identified by 'password';
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> grant usage on *.* to 'fearqdb'@'localhost' identified by 'password';
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> create database `fearqdb`;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> grant all privileges on `fearqdb`.* to 'fearqdb'@'localhost';
    Query OK, 0 rows affected (0.01 sec)
    
  3. Create the “templates/compiled” folder and make it world-writable.
    mkdir fearqdb/templates/compiled
    chmod 777 fearqdb/templates/compiled
  4. Now, let’s edit the lighttpd configuration file. Enable the rewrite module (it’s commented out) and then add a virtual host for the fearqdb:

    $HTTP["host"] == "qdb.es" {
            server.document-root        = "/var/www/fearqdb"
            url.rewrite-once = ( "" => "/index.php" )
    }

    And then we will use a virtual host for the static content:

    $HTTP["host"] == "qdbstatic.es" {
            server.document-root        = "/var/www/fearqdb/statics"
            setenv.add-response-header += ( "Expires" => "Thu, 01 Jan 2099 00:00:00 GMT" )
    }

    We are using an Expires header here so our visitors cache the content for faster loading. Now, restart lighttpd.

  5. Edit the config.php file.
  6. Create the database skeleton:

    root@debian:/var/www# mysql -ufearqdb -p fearqdb < fearqdb/sql/quotes.sql
    Enter password:
  7. Create a new virtual host inside the database. You could use phpmyadmin but, again, I will use the MySQL monitor.

    root@debian:/var/www# mysql -ufearqdb -p fearqdb
    Enter password: 
    
    [...]
    
    mysql> insert into sites (domain, site_key, lang, locale, `collate`, ip_show, ip_host, ip_part, analytics_enabled, analytics_code, url, statics_url, snowstorm, db, irc, name, nname, cookie, privacy_level, privacy_level_for_bots, page_size, robots) values ('qdb.es', 'mysecretkey', 'es', 'es_ES.utf8', 'utf8_spanish_ci', 0, 0, 0, 0, '', 'http://qdb.es/', 'http://qdbstatic.es/', 0, 'general', 'Visit us at our IRC network!', 'QDB', 'qdb', 'qdb_session', 0, 0, 8, 'allow');
    Query OK, 1 row affected (0.00 sec)

    Obviously, you must change the parameters. They are described here.

  8. Create an user inside fearqdb for yourself.
    Imagine you want “password” to be your password. First, you have to generate a four characters long salt for it. Use, for example, this.
    Once you have it, you have to generate the SHA-512 sum out of it. My random string was yb2R, so:

    root@debian:/var/www# echo -n 'yb2Rpassword' | sha512sum
    93475108054d39b0fc3b77b7707bc095570eaaf194d4b84f83e71eb431b0dae3ec491b0cf7e23e015b05905d683475fc160e706b249e39c9fe6afdb508a5d0df  -

    That’s our hashed password. Now, insert it in the database:

    mysql> insert into users (nick, password, salt, db) values ('admin', '93475108054d39b0fc3b77b7707bc095570eaaf194d4b84f83e71eb431b0dae3ec491b0cf7e23e015b05905d683475fc160e706b249e39c9fe6afdb508a5d0df', 'yb2R', 'general');
    Query OK, 1 row affected (0.01 sec)
  9. (Optional) If you want to use fearqdb in Spanish, generate the .mo file:

    root@debian:/var/www# cd fearqdb/locale/es_ES/LC_MESSAGES/
    root@debian:/var/www/fearqdb/locale/es_ES/LC_MESSAGES# msgfmt messages.po

    Then, restart lighttpd and visit your fearqdb page. If it’s still in English, use the locale command to see whether your locale matches the one you configured in the 7th step. If not, you must use dpkg-reconfigure locales to change it.

  10. Submit your first quote! Use the Submit quote button.
    Then, approve it: you can login by browsing to the /userlogin page. Once you’ve done that, you’ll see the quote being transparent; copy the quote’s code (for example, 18aa). Go to the /panel page, paste it in the “permaid” field, select “do_approved” and then click “Perform”. The quote is now approved and therefore it’s public.

Done!

Rewrite rules for SMF Pretty URLs on Lighttpd

url.rewrite-once = (
	"^/(Themes|Smileys|avatars|Packages|awards|geshi|mathtex|pm_attachments)/(.*)?$" => "/$1/$2",

	# Rules for: profiles
	"^/profile/([^/]+)/(?:\?(.*))?$" => "/index.php?pretty;action=profile;user=$1;$2",

	# Rules for: actions
	"^/(activate|admin|ads|announce|attachapprove|buddy|calendar|clock)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",
	"^/(collapse|coppa|credits|deletemsg|display|dlattach|dlpmattach|editpoll)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",
	"^/(editpoll2|emailuser|findmember|groups|help|helpadmin|im|jseditor)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",
	"^/(jsmodify|jsoption|lock|lockvoting|login|login2|logout|markasread)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",
	"^/(mergetopics|mlist|moderate|modifycat|modifykarma|viewkarma|ownkarma|otherkarma)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",
	"^/(movetopic|movetopic2|notify|notifyboard|openidreturn|pm|post|post2)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",
	"^/(printpage|profile|quotefast|quickmod|quickmod2|recent|register|register2)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",
	"^/(reminder|removepoll|removetopic2|reporttm|requestmembers|restoretopic|search|search2)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",
	"^/(sendtopic|smstats|suggest|spellcheck|splittopics|stats|sticky|theme)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",
	"^/(topicattach|trackip|about:mozilla|about:unknown|unread|unreadreplies|verificationcode|viewprofile)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",
	"^/(vote|viewquery|viewsmfile|who|\.xml|xmlhttp)/(?:\?(.*))?$" => "/index.php?pretty;action=$1;$2",

	# Rules for: boards
	"^/([\-_!~\*\(\)$a-zA-Z0-9%\"']+)/(?:\?(.*))?$" => "/index.php?pretty;board=$1.0;$2",
	"^/([\-_!~\*\(\)$a-zA-Z0-9%\"']+)/([0-9]*)/(?:\?(.*))?$" => "/index.php?pretty;board=$1.$2;$3",

	# Rules for: topics
	"^/([\-_!~\*\(\)$a-zA-Z0-9%\"']+)/([\-_!~\*\(\)\$a-zA-Z0-9%\"']+)/(?:\?(.*))?$" => "/index.php?pretty;board=$1;topic=$2.0;$3",
	"^/([\-_!~\*\(\)$a-zA-Z0-9%\"']+)/([\-_!~\*\(\)\$a-zA-Z0-9%\"']+)/([0-9]*|msg[0-9]*|new)/(?:\?(.*))?$" => "/index.php?pretty;board=$1;topic=$2.$3;$4",
)

It’s all there but it’s partially hidden due to the small width of the blog — just copy it.

Memetro y sus consecuencias

A ver, primero voy a definir qué es Memetro. Podríais leer su web, pero joder, qué coñazo y qué largo todo.

Resumen: es una asociación a la que te puedes apuntar y, previo pago de 7€ al mes, crea un fondo económico común que luego será usado para sufragar el coste de las multas impuestas por los revisores al viajar en metro sin llevar un título de transporte válido.

Consecuencias esperadas: somos unos antisistema tope chachis, somos unos rebeldes, somos unos macarras. Esperanza Aguirre –la reencarnación del demonio en la Tierra, como todo el mundo sabe– llora desconsoladamente en su mansión de mil metros cuadrados en la Alameda. ¿Qué hará ahora para joder la vida del pobre madrileño?

Consecuencias reales: el déficit del metro se acentúa aún más, lo cual quiere decir que o se suben todavía más los precios de los billetes/abonos/blabla o se comienzan a recortar viajes y puestos de trabajo. Cuando pase un tren cada veinte minutos en lugar de cada cinco o cuando un negro loco se líe a hostias con todo Dios y no haya vigilantes de seguridad, o cuando la estación de Callao se pase a llamar «José María Aznar Banco Santander», nos reiremos hacia adentro.

Kaput.

Minecraft en Arch Linux

Obviamente sin pagar, ¿eh? Que semos pobres.

  1. Instala el runtime de Java. Mejor el de Oracle que el libre. O sea, éste.
  2. Instala el launcher de Minecraft del AUR, que va muy bien. Alternativamente podrías simplemente bajar el .jar de la web de Minecraft, pero el PKGBUILD del AUR lleva un .desktop, un icono, un script para arrancarlo… vamos, que merece la pena.
  3. Bájate un Minecraft de Linux, como éste. Es necesario que sea de Linux y no de Windows, ya que lleva algunas librerías nativas. Consistirá en una carpeta llamada .minecraft, que habrás de copiar a tu directorio personal.
  4. Abre Minecraft desde el acceso directo que tendrás en el menú, inicia sesión con el usuario y clave que quieras (dale un suave golpecito al teclado), y haz clic en Play offline.

Espera, que la versión es antigua de cojones y no se actualiza. Bueeeeeno.

  1. Vete a The Pirate Bay, y busca la versión más actual de Minecraft. Por ejemplo, así.
  2. Instálalo (sí, necesitas Windows).
  3. Vete a la carpeta donde se instaló y copia las carpetas bin y resources dentro de la carpeta .minecraft de tu carpeta de usuario. No borres las carpetas que ya tienes en .minecraft; simplemente cópialas encima machacando todos los archivos necesarios.

Y si no te funciona, http://www.youtube.com/watch?v=oahq1N4sq1k

Balance CyanogenMódico en el LG E510 Optimus Hub

Érase una vez un señor que tenía un LG Optimus Hub (E510) al cual flasheó CyanogenMod RC1. Y pudo hacer balance sobre qué ganó y perdió (solamente de las cosas que le importan, claro; hay muchos otros temas que al caballero ni le van ni le vienen). Helo aquí.

Ha ganado…

  • Un widget de música que muestra la carátula y unas cuantas cosas más y otro de energía totalmente configurable.
  • Un reproductor de música con ecualizador y todo.
  • Poder llamar y recibir llamadas mediante un SIP.
  • Poder cambiar de canción con el teclado bloqueado usando las teclas de volumen.
  • Poder hacer capturas de pantalla con un menú que funciona medio bien y poderlas compartir inmediatamente (aunque twicca a nuestro señor le pete la mayoría de las veces si las manda ahí).
  • Poder cambiar el governor, aunque esto le sirva de bien poco.
  • Poder silenciar el sonido del obturador de la cámara (aunque no del todo, ya que el sonido que hace al enfocar no se puede quitar, cosa que al señor le molesta).
  • Poder eliminar notificaciones de una en una, arrastrándolas hacia un lado, en lugar de todas a la vez.
  • Un OSK mucho mejor que el de LG.
  • Una aplicación de cámara bastante más potente, con más opciones y que permite enfocar mejor que la original.

Ha perdido…

  • La garantía (primordial).
  • La skin de LG, que es mucho mejor que la de Android, que parece haber sido diseñada por un politoxicómano a principios del año 2000.
  • La aplicación de radio FM.
  • Que la batería dure seis horas con uso constante, y no dos.
  • Las animaciones de la ROM de LG eran mucho más vistosas.
  • Rapidez; CyanogenMod es algo más lento.
  • Encender el terminal sin introducir el PIN.
  • El reproductor que aparece en la cortinilla de las notificaciones.
  • El lanzador de aplicaciones de LG, que le da mil vueltas a la mierda del ADW.Launcher.
  • Poder reproducir vídeos DivX, XviD y similares sin bajarse códecs del Market Play Shop y sin malgastar batería.

Lo que los americanos llaman trade-offs, vaya.

Postdata: si tu pregunta es simplemente si deberías probarla o no, lee esto.

Nota: el LG Optimus Hub fue comprado a Yoigo por 150 euros con tarjeta prepago y en general ha resultado ser muy buena compra.

Curiosa manera de ocultar un malware

Estaba yo en el chat de Terra buscando… eh… haciendo… bueno, cosas no relacionadas y de repente veo:

01:24:38 < invitado-945999> my video sex sooo hot http://***.net/36975281

Y yo, que como todos sabéis soy muy obediente, voy y pincho. Es un rar con un nombre nada sospechoso: «sex video hoot.rar». Pues lo bajo y lo abro.

Un flv, o sea, un vídeo Flash. Hago doble clic y… no hay aplicación disponible para abrir el archivo. Puto VLC, ¿cómo no se te ha ocurrido asociarte con los flv?

Al igual que vosotros, yo ya me estaba oliendo que era un ejecutable escondido de algún modo, me voy a la terminal y miro qué clase de archivo es:

[neiko@dachau ~]$ file *flv
*flv: ERROR: cannot open `*flv’ (No such file or directory)

Qué dices. Si estaba ahí.

[neiko@dachau ~]$ ls my*
my video sex  vlf.scr

Errr. ¿Cómo que .scr? ¿No era .flv? A partir de ahí ya imaginé qué estaba pasando así es que me fui al Nautilus; al intentar renombrar un archivo te selecciona todo el nombre menos la extensión, tal que así:

Bueno, pues así se veía nuestro archivo:

Y el resto ya lo conocemos: es un carácter Unicode haciendo el chiste, dando la vuelta a esa parte del nombre de archivo e intentándome hacer creer que un scr (salvapantallas, a fin de cuentas un ejecutable más) es un inocente vídeo. Unicode es el infierno (lectura poco relacionada pero obligatoria).

Como nota curiosa, me dio por meter el carácter de marras en Google a ver si salía algo y me encontré con esto:

TTS desde la terminal

Y sin instalar nada. Sólo necesitamos la API de Google que, por suerte, está ahí. Gratis. Como el Loquendo, pero en versión tía.

Vámonos al .bashrc y ponemos esto al final:

function tts {
   cvlc --play-and-exit "http://translate.google.com/translate_tts?q=$1&tl=es" > /dev/null &> /dev/null;
}

Ya está. Recargamos el archivo:

$ source .bashrc

Y ya tenemos la diversión:

$ tts "Juan sabes que soy un arquitecto de prestigio"