Archivos Mensuales: julio 2011

Yo y el Humble Indie Bundle 3 en Linux

El Humble Indie Bundle 3 está activo en este momento, puede conocer más sobre el mismo en http://www.humblebundle.com

Después de comprar el paquete me decidí a ejecutarlo en mi Ubuntu 10.10. Aquí mi experiencia:

1. Crayon Physics Deluxe

Viene en un tar.gz, se extrae y se ejecuta el ejecutable ‘launcher’. En mi caso:

./launcher
./launcher: error while loading shared libraries: libmikmod.so.2: cannot open shared object file: No such file or directory

Un rápido ‘apt-cache search libmikmod’ arrojó:

libmikmod2 - A portable sound library
libmikmod2-dev - A portable sound library - development files

Seguido de:

sudo apt-get install libmikmod2

Listo… otra vez:

./launcher
./launcher: error while loading shared libraries: libsmpeg-0.4.so.0: cannot open shared object file: No such file or directory

mmm….

sudo apt-get install libsmpeg0

Ahora si, se vuelve a ejecutar y ya funciona. Jugué un rato, es divertido. Al salir, este es el output:

./launcher: /usr/lib/libjpeg.so.62: no version information available (required by /home/havok/Programas/CrayonPhysicsDeluxe/lib32/libSDL_image-1.2.so.0)
./crayon: /usr/lib/libjpeg.so.62: no version information available (required by /home/havok/Programas/CrayonPhysicsDeluxe/lib32/libSDL_image-1.2.so.0)
warning: failed to open directory 'My Solutions'
warning: failed to open directory 'My Solutions'

Tiene varios warnings, pero nada que le impida funcionar.

2. Cogs

Viene en un archivo ejecutable. Entonces le damos permisos de ejecución:

chmod +x cogs-linux-bin
./cogs-linux-bin

Con eso sale un dialogo de instalación… siguiente siguiente y listo. Vas a la carpeta donde se instaló y ejecutas el archivo ‘Cogs’:

./Cogs

Sólo que en mi caso:

Warning: It appears that your hardware doesn't meet the minimum requirements necessary to run Cogs. The following OpenGL extensions are unsupported: GL_EXT_texture_compression_s3tc

😦 Hasta ahí llegué con Cogs, no pude jugarlo.

ACTUALIZACIÓN: Probé en mi otra computadora con una mejor tarjeta de vídeo y funcionó sin problemas, muy bueno el juego 🙂

3. VVVVVV

Viene en un tar.gz, se extrae y se ejecuta el archivo ‘VVVVVV’:

./VVVVVV
./VVVVVV_32: error while loading shared libraries: libSDL_mixer-1.2.so.0: cannot open shared object file: No such file or directory

Mmmm….

sudo apt-get install libsdl-mixer1.2

Ahora si, ya funciona. El output es bastante largo, pero ningún warning, sólo datos de información. Buenísimo este juego!!

4. Hammerfight

Este juego viene en un archivo ejecutable.

chmod +x hf-linux-07172011
./hf-linux-07172011

Con eso sale un dialogo de instalación… siguiente siguiente y listo. Vas a la carpeta donde se instaló y ejecutas el archivo ‘Hammerfight’:

./Hammerfight

Listo. Ahhh!! No puedo jugar esto :S

5. And Yet It Moves

Este viene en un paquete Debian, dependiendo de la arquitectura. Yo, de 32bits. Se instala con doble click y el Centro de Software de Ubuntu se encarga del resto. Una vez instalado se encuentra en el menú de Juegos o se puede ejecutar el comando ‘AndYetItMoves’.

Que juego más loco! 😛

Eso sería todo 😀 Que buen Bundle.

Cómo migrar los módulos de Drupal

Cuando empecé en el mundo de Drupal colocaba todos los módulos en sites/all/modules/

Varios de los sitios que hice tienen esa estructura. Más adelante, cuando conocí drush y luego gracias a la excelente guía de Felix Delattre conocí una buena práctica para organizar los módulos que probaría ser indispensable una vez que me metí a programar y parchear módulos:

  • sites/all/modules/contrib :: Todos los módulos contribuidos por la comunidad.
  • sites/all/modules/custom :: Los módulos propios creados para el sitio web.
  • sites/all/modules/features :: Almacena las características exportadas del sitio.
  • sites/all/modules/patched :: Almacena los módulos contribuidos que fueron parcheados por uno mismo.

Lo genial de esta estructura es que Drush la reconoce sin problemas, entonces descarga los módulos bajo contrib y no actualiza los que están bajo patched 😀

Como mencioné anteriormente un par de sitios que había hecho no tenían esa estructura y quería mover los módulos, como 40 de ellos. Resultó ser muy simple, sólo es necesario mover los módulos, luego recrear la tabla del sistema y borrar las tablas de caché. En comandos:

cd [...]/sites/all/modules/
mkdir contrib
mv * contrib/
mkdir patched features custom
mv contrib/alguno /carpeta (Se organizan los que eran custom, patched, etc)
drush sm -q
drush cc all

Listo! Lo bueno de esto es que también puede arreglar los típico error de principiante de colocar los módulos contribuidos en /modules/ junto a los módulos del core.

Pathauto idioma neutral

(En inglés ‘Language Neutral Pathauto’)

La versión para Drupal 6 de pathauto tiene un problema con la gestión de los paths en sitios con varios idiomas. El problema es que todos los nodos que cree cualquier usuario se crearán con el path automático en el idioma del usuario, independientemente si el tipo de contenido en particular acepta o no traducción del contenido o contenido en diferente idioma (modula “Content Translate” del core). Esto es un problema porque los usuarios que visiten ese URL que tengan otro idioma no podrán ver el nodo (404) porque no existe ese path para su idioma… de nuevo, es un tipo de contenido que no acepta traducción!!

La problema fue reportado pero los autores justifican que es una característica (yo insisto que es un error, porque es para tipos de contenido que no tengan traducción) y la solución propuesta, agregar una opción en la página de administración no les gustó porque indican que no quieren agregar más opciones al panel de administración (Así? Sin más? Sin proponer otra cosa :S). Al final el error no fue arreglado :S

La solución acá propuesta sigue sin ser perfecta, porque aplicará para todos los nodos nuevos, no por tipo de contenido:


************************************************************************
File: pathauto/pathauto.admin.inc
Line: 29
Function: pathauto_admin_settings()
Hack:

// HACK: Pathauto ignore language setting
$form['general']['pathauto_ignore_language'] = array(
'#type' => 'checkbox',
'#title' => t('Force Language Neutral'),
'#default_value' => variable_get('pathauto_ignore_language', FALSE),
'#description' => t('Create path in language neutral mode'),
);

************************************************************************

************************************************************************
File: pathauto/pathauto.inc
Line: 427
Function: _pathauto_set_alias($path, $existing_alias = NULL, $op = NULL)
Hack:

// HACK: Should we ignore language setting
if ((bool) variable_get('pathauto_ignore_language', FALSE)) {
// _pathauto_verbose('pathauto_ignore_language is TRUE. Current language: ' . $path['language']);
$path['language'] = '';
}

************************************************************************

Etiquetado ,