lunes, 25 de diciembre de 2006

Grub

A veces, cuando uno toca lo que no debe o instala sistemas operativos que no respetan para nada el actual MBR, el resultado es que intentas arrancar y o bien te es imposible, o te arranca el bendito Windows. Últimamente he tenido que reinstalar GRUB en el arranque de mi máquina y nunca me acuerdo de cómo se hace, así que siempre tengo que acudir a Google a mirarlo. Pues bien, si me lo apunto aquí seguro que sabré dónde ir a buscarlo:

  1. Arrancar con una Live-CD que disponga de GRUB (como Kubuntu/Ubuntu, Knoppix). O con cualquier distribución que entre sus opciones de arranque esté el modo rescate (rescue mode - F5 - linux rescue).
  2. Ejecutar grub desde consola y en el intérprete de comandos de GRUB:
  • root (hd0,1) # en mi caso /dev/sda2
  • setup (hd0) # /dev/sda
  • quit

Y listos. Ya podemos reiniciar y sacar el cd. Tendremos el menú de GRUB tal cual estaba antes de liarla.

domingo, 3 de diciembre de 2006

Comentarios condicionales de HTML

Las guerras entre navegadores fueron cruentas en su día y sólo han dejado vencidos a su paso: los pobres desarrolladores web que tienen que usar todo su ingenio para conseguir que una página se vea igual en todos los navegadores (actuales, antiguos y futuros).

Afortunadamente, el futuro pinta bastante bien en este aspecto. Los nuevos clientes web que salen al mercado (Firefox, Opera, Safari, Konqueror, etc...) tienen entre sus objetivos seguir y cumplir los estándares que se discuten y aprueban en el W3C.

Pero, ¿qué hacer con los navegadores que a día de hoy se usan aunque sean auténticas reliquias del pasado? Existen varias opciones:


  • Hacer varias hojas de estilos, cada una para cada navegador.

  • Hacer una única hoja de estilos, mezclando código válido (que es lo que el W3C recomienda) con selectores específicos que sacan partido de los errores de interpretación de las CSS de cada navegador.

  • Como variación de la primera opción (varias CSS), podemos hacer una CSS general para todos, y alguna más específica para aquellos navegadores en los que haya algún problemilla que resolver.



La primera opción requiere de 2 cosas: tener una manera de poder identificar a cada uno de los navegadores (a través de un lenguaje de programación del lado del servidor como PHP, por ejemplo), y mucho trabajo por nuestra parte, ya que deberemos repetir muchísimo código en cada una de las hojas de estilos. El trabajo de hacer CSS, en principio, dependerá de nuestra paciencia, pero identificar navegadores web no es una tarea fácil y no siempre será posible llevarlo a cabo (si sólo disponemos de HTML para hacer nuestras páginas).

La segunda opción (una sóla CSS), ha sido durante los últimos años la más usada (e incluso recomendada). Requiere de una gran curva de aprendizaje puesto que navegadores ha habido (y hay) muchos y cada uno tiene unos bugs distintos para explotar.

Tal y como va el artículo, todo parece indicar que la tercera opción es la más recomendable. Si hubiera escrito estas líneas hace un año, mi respuesta hubiera sido que la mejor era la segunda (aunque implique muchas búsquedas en Internet y muchas horas de pruebas y más pruebas), pero el mundillo web tiene estas cosas: lo que hasta ayer era el estándar de facto, mañana mismo se convierte en una tecnología obsoleta. Más o menos es lo que ha pasado. Microsoft ha sacado (después de 6 años de sequía) su nuevo navegador (el flamante y renovado IE 7) y como siempre, para bien o para mal, las reglas del juego han cambiado.

La forma de implantar la tercera opción es hacer una CSS general (que se aplicará a todos los navegadores) desarrollándola en algún cliente web que respete lo más posible los estándares de hojas de estilos (como Opera, Safari o Firefox), y luego hacer otras CSS más reducidas (que servirán para sobrescribir algunas reglas generales) para los (en realidad el) navegadores que no siguen las reglas del juego en algún aspecto. ¿Y cómo se consigue esto? Pues con alguna de las herramientas que la misma Microsoft desarrolló en su momento para competir con la casi desaparecida NetScape: los comentarios condicionales en HTML.

Veamos esto con un ejemplo:

...
<head>
...

<link rel="stylesheet" type="text/css" href="./css/all_nav.css" media="screen" title="Hoja de estilos general" />

<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="./css/ie_fix.css" media="screen" title="Hoja de estilos específica para IE 6" />
<![endif]-->

<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="./css/ie7_fix.css" media="screen" title="Hoja de estilos específica para IE 7" />
<![endif]-->

...
</head>
...


Esta técnica (apoyada por la mismísima Microsoft para que los desarrolladores web lleven a cabo la migración de sitios para que funcionen con su nuevo explorador), nos permite tener una CSS general acorde a los estándares promulgados por el W3C que nos servirá para los navegadores actuales y para los que vengan después, y por otro lado, tener localizados, en pequeños archivos, las excepciones a las reglas, sin tener que utilizar molestos y complicados hacks. Así, el código de nuestras páginas validará y a la vez, los contenidos (que es lo que realmente importa), se verán de una forma bastante similar en todos los navegadores que se usan hoy en día.

sábado, 2 de diciembre de 2006

Visita al Laboratorio Aragonés de Usabilidad

Ayer, con motivo del Cadius Zaragoza de Diciembre, fuimos de visita al Laboratorio Aragonés de Usabilidad. Entre los actos a los que asistimos, hubo un focus group sobre la página web que han realizado. Hubo multitud de propuestas y de todas ellas tomaron nota, pero como el movimiento se demuestra andando, aprovecho la ocasión para presentar un rediseño (o realineamiento) de su página web.

La página propuesta ha sido probada en los siguientes navegadores:

  • Firefox 1.0.6 (windows)
  • Firefox 2.0 (linux)
  • Internet Explorer 6.0 (windows)
  • Opera 8 (windows)

Actualización: 2013-01-09

Da gusto ver cómo pasan los años y comprobar que ahí está, ahí está, viendo pasar el tiempo... ;)

viernes, 13 de octubre de 2006

Convertir videos flv a mpg/avi/etc.

Si se desea convertir un archivo .flv a .mpg o a .avi, se puede usar gratuitamente Riva FLV Encoder en Windows Para linux se puede usar ffmpeg, teniendo que introducir, desde consola, el comando:

~$ ffmpeg -i origen.flv -s 320×240 -r 15.00 -b 300 -f mpeg4 -acodec mp3 -ab 96 destino.avi


Más info sobre el tema de descargas de videos y demás aquí y aquí en español.

martes, 3 de octubre de 2006

Cajas fuertes digitales.

Para windows.
Para linux.

Normalizar el audio de los mp3

Dando una vuelta por el blog de ubuntu. Veo un interesante manual para normalizar el audio de nuestros mp3. Tan solo nos hace falta el programa mp3gain(disponible en los repositorios de ubuntu). Abrimos una consola, nos dirijimos al directorio donde tengamos los mp3 y ejecutamos

$find . -type f -iname '*.mp3' -print0 | xargs -0 mp3gain -r -k

Y con eso mp3gain hara automáticamente una normalización de nuestros mp3.

Noticia original aqui.

jueves, 24 de agosto de 2006

Cómo instalar WAPP

Para empezar, ¿qué significa eso de WAPP? Es un acrónimo que quiere decir Windows Apache PHP4 PHP5. Si hay infinidad de referencias a cómo instalar LAMP (Linux Apache MySQL PHP) o AMP (Apache MySQL PHP), tanto en Linux como en Windows, hay muy pocas explicaciones acerca de cómo instalar un entorno mixto de desarrollo para PHP (versiones 4 y 5). De eso trata este artículo.

PHP es un lenguaje de programación bastante usado en entornos web dinámicos, que ha evolucionado muchísimo en muy poco tiempo. Hace ya 2 años que salió la versión 5, sin embargo, aun siendo mejor, no está siendo usada por la comunidad de programadores. Las razones son simples. Mejor dicho, la razón es simple. Casi todo el hosting que permite la ejecución de scripts PHP está sólamente preparado para PHP4. Los cambios entre ambas versiones son profundos (sobre todo en cuestiones de OOP) y la compatibilidad hacia atrás de la versión 5 tiene sus problemas. Ante esta perspectiva, las empresas de hospedaje web han preferido mantener la versión 4 para que todo el código existente (que es cuantioso) siga funcionando.

Pero como las mejoras de la versión 5 (aunque ya está en preparación la versión 6) son evidentes, qué mejor que juguetear con ella en un entorno controlado (como puede ser nuestro ordenador personal) e ir viendo sobre el terreno cómo se comportan nuestros programas en ambas versiones.

Los siguientes pasos explican como instalar la versión 4 de PHP como módulo de Apache y la versión 5 como CGI, sobre un entorno de desarrollo con Microsoft Windows XP y Apache (ambos componentes se sobrentiende que están ya instalados). Para facilitar la instalación, se considerará que Apache (versión 1.3.x o 2.0.x, no la versión 2.2.x porque actualmente todavía no existe módulo de PHP para esta versión) está instalado en c:\apache\.


  1. Descargar las últimas versiones disponibles tanto de la versión 4 como de la 5. A día de hoy: 4.4.4 y 5.1.6. Es conveniente bajar los comprimidos para win32, no los instaladores. De esta forma podremos llevar a cabo la instalación de una forma más limpia y sin que nos falte nada (los instaladores para Windows sólo instalan PHP como CGI, no como módulo de Apache, y vienen sin extensiones externas).

  2. Descomprimir la versión 4 en el directorio c:\php\.

  3. Copiar el archivo c:\php\php.ini-recommended como c:\php\php.ini.

  4. Será necesario cambiar algunos parámetros del archivo php.ini. Son estos:

    extension_dir = "c:/php/extensions/"

    session.save_path = "C:\php\session" ; además será necesario crear ese directorio


  5. Añadir al PATH del sistema las rutas c:\php y c:\php\extensions. Para ello, al final del actual PATH, añadimos lo siguiente: ;c:\php;c:\php\extensions. El punto y coma es el separador de rutas. De esta forma, en lugar de copiar el fichero al directorio c:\windows\system32\, podremos actualizar a la próxima versión de PHP4 de una forma más ágil y limpia. Lo malo de hacerlo así, es que será necesario reiniciar el ordenador para que el sistema relea el PATH (con cerrar la sesión de usuario no es suficiente).

  6. Crear el fichero c:\apache\conf\php4.conf con el siguiente contenido:

    <VirtualHost *:80>
    # carga el módulo de Apache de PHP
    LoadModule php4_module "c:/php/sapi/php4apache2.dll"

    # permite tener el fichero php.ini en ese directorio y no en c:\windows
    PHPIniDir "C:/php"
    </VirtualHost>


  7. Editamos el fichero c:\apache\conf\httpd.conf y añadimos como última línea esto:

    include conf/php4.conf

    Es conveniente terminar la línea con un retorno de carro (por si acaso).

  8. Por último, como antes he indicado, habrá que reiniciar el sistema por haber cambiado el PATH. Tras hacerlo, ya tendremos instalado PHP4 como módulo de Apache. Para comprobarlo, crearemos en DocumentRoot (se considera como directorio de publicación para este artículo c:\apache\htdocs\, pero se puede cambiar en el archivo de configuración), el fichero prueba_php.php, que tendrá el siguiente contenido:

    <?php
    phpinfo();
    ?>

    Para ejecutarlo, habrá que apuntar el navegador web a http://localhost/prueba_php.php y ver qué aparece. Si todo ha ido bien, deberían mostrarse las características del entorno y los módulos de PHP cargados.



Ahora sigamos con PHP5.

  1. Para ello, lo primero será descomprimir la versión 5 en el directorio c:\php5\.

  2. Copiar el archivo c:\php5\php.ini-recommended como c:\php5\php.ini.

  3. Habrá que retocar ciertos parámetros del archivo php.ini. Son estos:

    ; Windows: "\path1;\path2"
    ;include_path = ".;c:\php5\includes" ; aunque esté comentado, corregimos la ruta para futuros usos

    extension_dir = "c:/php5/ext/"

    session.save_path = "c:/php5/session" ; además será necesario crear ese directorio


  4. Paso opcional. Si necesitamos acceder a bases de datos MySQL, deberemos habilitar la extensión en el archivo php.ini porque por defecto, en la versión 5, viene deshabilitada. Deberemos dejar así esta línea:

    extension=php_mysql.dll ; sin el punto y coma del principio para que no se tome como comentario


  5. Crear el fichero c:\apache\conf\php5.conf con el siguiente contenido:

    # para habilitar la escucha de Apache en otro puerto además del 80
    Listen 8080

    <VirtualHost *:8080>
    ScriptAlias /php5/ "c:/php5/"
    SetEnv PHPRC c:/php5

    # si nuestro DocumentRoot es otro directorio, habrá que cambiarlo
    <Directory "c:/apache/htdocs">
    Options +ExecCGI +FollowSymLinks
    </Directory>
    AddHandler php-cgi-script .php
    Action php-cgi-script /php5/php-cgi.exe
    </VirtualHost>


  6. Editamos el fichero c:\apache\conf\httpd.conf y añadimos como última línea esto:

    include conf/php5.conf

    Es conveniente, como antes hemos indicado, terminar la línea con un retorno de carro (por si acaso).

  7. Como último paso, habrá que reinicar de nuevo el servicio de Apache para que admita los cambios de configuración. Para probar que esta parte también funciona, esta vez pondremos en el navegador web http://localhost:8080/prueba_php.php. Nótese el cambio de puerto en la petición. PHP4, al ser módulo de Apache, recogerá las peticiones que se hagan al puerto 80. PHP5, en cambio, escuchará lo que se le mande en el puerto 8080. De esta forma, ya tenemos listo el entorno mixto de PHP.



Actualización (2006-11-09):
En la instalación de PHP4, si queremos habilitar alguna extensión (por ejemplo la relacionada con gettext [php_gettext.dll] para internacionalizar nuestras aplicaciones), será necesario añadir al path del sistema el directorio c:\php\dlls\. Para ello, habrá que modificar el path y agregar al final: ;c:\php\dlls. Después, hay que reiniciar el equipo para que el sistema se adapte al cambio.

miércoles, 12 de julio de 2006

Firefox y Thunderbird

Otra vez de probatinas. Después de tener una Fedora Core 4 corriendo en mi sobremesa, decidí pasarme a una Suse 10.0. La experiencia fue positiva, pero no acababa de convencerme. Así que, partiendo del comentario de uno de los editores de Kriptopolis, me he puesto una Arch linux.

La distribución es muy buena en general. Instala lo 'mínimo' y funciona muy ligera al estar compilada para i686. Pero resulta que, entre otras coñas (como el automount de las unidades usb, por ejemplo) no asocia los enlaces http a firefox desde thunderbird y viceversa.

La solución la encontré en yahoo (que no en google, jejeje) buscando por la cadena 'open thunderbird links in firefox'. La solución, en pocos pasos es:

En Firefox.
  1. Escribir en la barra de direcciones 'about:config'.
  2. En la página que aparece y en caso de no existir, crear la entrada tipo cadena (string) 'network.protocol-handler.app.mailto' con el valor 'ruta/al/ejecutable/de/Thunderbird'.
    1. Botón derecho del ratón --> new --> string.
    2. Poner como 'preference name' la cadena 'network.protocol-handler.app.mailto'.
    3. Y como 'string value' la cadena 'ruta/al/ejecutable/de/Thunderbird'.
  3. Reiniciar Firefox.
En Thunderbird.
  1. Para llegar al about:config en versiones anteriores había que instalar una extensión a thunderbird o bien editar a mano el fichero de configuración. En las últimas versiones ya no es necesario y se accede desde el menú Edición (Edit) --> Preferencias (Preferences) --> opción Avanzadas (Advanced) --> botón 'Config Editor'.
  2. Se abrirá una nueva ventana desde la que haremos lo siguiente.
    1. Botón derecho del ratón --> new --> string.
    2. Poner como 'preference name' la cadena 'network.protocol-handler.app.http'.
    3. Y como 'string value' la cadena 'ruta/al/ejecutable/de//Firefox'.
    4. Poner también la cadena 'network.protocol-handler.app.https' Con el valor 'ruta/al/ejecutable/de/Firefox" de la misma manera.
  3. Reiniciar Thunderbird.
El enlace al sitio con la información original en inglés es este.

miércoles, 14 de junio de 2006

Multimedia y Ubuntu Linux

A pesar de que actualmente no tengo esa distribución instalada, sigo con la mosca detrás de la oreja para tenerla como distribución de escritorio. Así que para no tener que recordar nada, aquí dejo unos links para poder reproducir prácticamente todos los formatos multimedia necesarios desde esa distribución.

Original en inglés aquí.
Traducción al castellano aquí.

Lista de servidores para apt-get:
deb http://us.archive.ubuntu.com/ubuntu/ dapper main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ dapper main restricted

# Ubuntu 'Universe' Repository
deb http://archive.ubuntu.com/ubuntu/ dapper universe main restricted multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ dapper universe main restricted multiverse

# Ubuntu 'Backports' Repository
deb http://us.archive.ubuntu.com/ubuntu/ dapper-backports main restricted universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ dapper-backports main restricted universe multiverse

# Ubuntu Security Updates
deb http://security.ubuntu.com/ubuntu dapper-security main restricted
deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted
deb http://security.ubuntu.com/ubuntu dapper-security universe
deb-src http://security.ubuntu.com/ubuntu dapper-security universe

# PLF - Collection of Non-Free Proprietary Codecs & Applications
deb ftp://ftp.free.fr/pub/Distributions_Linux/plf/ubuntu/plf/ dapper free non-free
deb-src ftp://ftp.free.fr/pub/Distributions_Linux/plf/ubuntu/plf/ dapper free non-free

# WINE - Windows API for Linux
deb http://wine.budgetdedicated.com/apt dapper main
deb-src http://wine.budgetdedicated.com/apt dapper main

# Skype - VoIP Software
deb http://download.skype.com/linux/repos/debian/ stable non-free

# Opera - Web Browser
deb http://deb.opera.com/opera/ etch non-free
Y comando para el mogollón:
sudo apt-get install totem-xine totem-xine-firefox-plugin libxine-extracodecs w32codecs libdvdcss2 flashplugin-nonfree sun-java5-plugin banshee streamtuner xmms skype msttcorefonts realplay f-spot
Donde:
  • Banshee ? CD Ripper/Music Player/Track Editor con soporte para ipod en Gnome.
  • F-Spot ? Administrador/Editor de fotos con soporte para subir a Flickr.
  • Streamtuner ? Ligero navegador de Radios a traves de internet (SHOUTcast, Live365, etc.)
  • Skype ? Aplicación de Voip.
  • RealPlayer Gold 10 ? Alternativa también propietaria al reproductor Windows Media Player.
Fanáticos de AMD64 abstenerse. Demasiada aplicación sólo disponible para 32 bits.

miércoles, 19 de abril de 2006

DNS

Hace unos días tuve un problema extraño. No había forma de navegar por internet. Sólo a determinadas páginas. No a todas.

Se podía acceder a www.google.es y a www.eupla.unizar.es por ejemplo, pero no a páginas extrañas. De las poco buscadas. De esas 'underground' que de vez en cuando se visitan para estar uno al filo de la noticia. Vamos, de esas en las que la mayoría de la gente no entra.

Haciendo pruebas con el maravilloso comando 'ping' descubrí que el problema era que los servidores de DNS configurados en mi /etc/resolv.conf sólo devolvían IP de las URL que tenían en caché. Así que tenían algún tipo de error que hacía que no pudiera navegar mas que por direcciones que hubieran sido pedidas anteriormente por otro usuario.

Solución sencilla. Sólo hay que cambiar unos servidores por otros. ¿Y de dónde se sacan las IP's de esos servidores? Pues gracias al buen trabajo de algunas personas se pueden obtener de http://www.bandaancha.st/toolsdns.php

Página áltamente recomendable para cualquiera que tenga conexión ADSL en España.

martes, 31 de enero de 2006

Ubuntu Xperience

Al fin me decidí por instalarme la última versión de la distribución linux Ubuntu. Mira que estaba contento con Fedora y que siempre he sido un fan de Mandriva linux. Pero bueno, todo el mundo estaba que si lo bien que iba y lo maja que era. Y además, tenía las últimas versiones de software y se actualizaba fácilmente. También estaba el uso (o la falta de uso, mejor) de la cuenta de root en esa distribución. Total, que al final me decidí a probar.

Además, estaba el hecho de que tengo un AMD 64 con lo que me apetecía tener una distribución más adaptada a mi hardware actual que la Fedora 32 que tenía instalada. Puesto y bien mandado, empecé la instalación con alegría en el corazón.

Y todo empezó muy bien. Incluso buscaba actualizaciones en Internet antes de terminar la instalación, con lo que los paquetes eran lo más actuales posible. También funcionó bien el montaje de las particiones que tenía de la Fedora, con lo que no perdí las configuraciones personales de mi cuenta en $HOME.

Llegó el primer rearranque y... grub>

Y nada más. No carga nada. Ningún sistema operativo.

Bueno, como ya me había pasado algo parecido anteriormente, tenía impresa la documentación de grub y pude arrancar el ubuntu. Terminó de instalarse aunque me dio unos mensajes de fallo del demonio de bluetooth. ¿Y para qué si yo no tengo bluetooth? Bueno, para luego. Primero que funcione.

¡Vaya! Fallan las X. El driver de la tarjeta gráfica. Era de esperar. Es una ATI.

Pero eso me obliga a tener que rearrancar la máquina. Y vuelta al grub>

Ala pues. Vuelvo a meter los comandos necesarios para arrancar la ubuntu. Y vuelven a fallar las X. Como no he sido previsor, no se de dónde sacar los drivers. Navegar por Internet en modo texto no es muy agradable pero no es imposible, así que gracias al uso de e-links y a google, encontré los arcanos necesarios para poder instalar el driver.

sudo apt-get install xorg-driver-fglrx
echo fglrx | sudo tee -a /etc/modules
sudo sed -e 's/"ati"/"fglrx"/' -i /etc/X11/xorg.conf
Pero no funcionó.

Recordé que el driver de fglrx para Fedora contenía un script de configuración (fglrxconfig). Lo busqué y lo ejecuté. ¡Milagro! Las X funcionan. Pero aún queda el problema del grub.

Dos horas e incontables rearanques después, decidí dejarlo. No había forma. Aparte, entre intento e intento había descubierto unas cosillas que hacían inviable para mí el uso de la ubuntu 64.

  • El plug-in de flash sólo funciona sobre sistemas operativos de 32 bits. No funciona en 64.
  • Wine no funciona ni compila (lógicamente) sobre sistemas operativos de 64 bits.
  • No conseguí que funcionara Totem para ver películas.

Así que, para que sea a 32 bits, me vuelvo a mi Fedora Core 4 con wine en rpm, plugin de flash y mplayer para ver películas.

Por mucho que me guste Synaptic... ¡Que viva Fedora!

domingo, 22 de enero de 2006

Hojas para tramposos

Curiosa traducción del término inglés cheat sheets. Supongo que nombrarlas como chuletas es algo más correcto y comprensible. Pero ya que espero que no sirvan para aprobar ningún examen sino que se utilicen para resfrescar la memoria cuando más se necesite, creo que la denominación más adecuada sería colecciones de pequeños recordatorios.

Me gustaría destacar 2 de estas colecciones:

Cheat Sheets - ILoveJackDaniels: centrada en temas de desarrollo web. Los formatos disponibles para descargar son PNG y PDF (excepto la de colores RGB, que sólo está en PNG).


Cheat Sheet Roundup. Incluye entre sus referencias a las anteriores y añade otras muchas, como por ejemplo: CVS, Subversion, Vim, ColdFusion, JSP, Java, Python...

Ambos enlaces son indispensables para vuestra colección particular.