Too Cool for Internet Explorer

Chiquito de la Calzada meets Emilio Botín 1

Hora y Fecha: Julio 17, 2008 @ 11:00 pm Autor: Moisés Maciá
Categorías:
32 views

Cuando uno de los hombres más poderosos y ricos del país intenta hacerse pasar por “internacional” y sale algo como esto …

… es que algo huele a podrido en Dinamarca.

EDITADO.

Veo que el gaditano ha encontrado otra impagable muestra de cultura patria.

Y como olvidar al mítico principe gitano … si es que en este país de piratas es necesario proteger la cultura de pandereta y pincho de tortilla a toda costa.

Avances con el NAS 2

Hora y Fecha: Julio 9, 2008 @ 10:48 pm Autor: Moisés Maciá
Categorías:
50 views

Después de casi una semana compilando dependencias, afinando configuraciones y haciendo triples saltos mortales hacia atrás para que quepa todo en los 128MB de RAM y 8MB de flash del NAS, tengo un ecosistema medianamente “acogedor“: MLDonkey, GNU Core utils, rsync, Subversion, etc.

Estoy aprendiendo muchas cosas sobre los sistemas empotrados a base de meter la pata en todos los agujeros del camino. Por ejemplo, mi intento de Time Machine sin manzanas se ha visto momentaneamente frustrado por la poca potencia de cálculo del micro Gemini.

La combinación rsync + SSH funcionaba bien en el anterior equipo con un Pentium III viejuno: tomaba snapshots del disco entero (~12GB usados) cada hora en 3-6 minutos (benditos enlaces duros). Ahora la misma operación tarda entre 20 y 40 minutos. Así a ojo debe ser tan potente como un Pentium 200MHz.

Creo que el principal problema es el cifrado que aplica SSH a los datos. Gemini lleva un coprocesador para tareas criptográficas pero parece que no se usa o no es lo suficientemente rápido para descifrar en tiempo real un stream de 100Mb/s. Acepto sugerencias.

Tengo que probar a ver que tal rinde la conexión con un par de rsync en configuración cliente/servidor, sin shell ni transporte cifrado. Creo que esa será la solución; aunque entonces ya no podré hacer snapshots del portátil conectado con WiFi desde el bar, eso resta puntos.

Estoy pensando en abrir un apartado en el blog y una cuenta de SVN para subir todo el código y los binários, pero eso será cuando tenga los paquetes bien pulidos.

PD. apt, cuanto te echo de menos …

Primer aniversario del Geek Errante 0

Hora y Fecha: Julio 2, 2008 @ 10:55 pm Autor: Moisés Maciá
Categorías:
18 views

El Geek Errante, el podcast más escuchado en cinco universos alternativos, está de aniversario. Para celebrarlo han montado un concurso: debes relatar tu experiencia más aterradora con las tecnologías terrestres de la información.

Como premio, un DVD de la primera temporada de The IT Crowd [laureles]cedido generosamente por este blog[/laureles] :) . Si te interesa, ya sabes.

Gracias a la tripulación de la nave y sus agentes durmientes por hacer posible este grandísimo podcast y esperemos que sigan retransmitiendo durante muuucho tiempo, no me gustaría cambiar de universo para seguir escuchándolos.

Kudos!

Google Media Server 0

Hora y Fecha: Julio 1, 2008 @ 1:45 pm Autor: Moisés Maciá
Categorías:
49 views

Me entero a través de lifehacker que Google ha sacado un gadget para Google Desktop llamado Google Media Server que hace algo parecido a lo que yo pretendo conseguir con mi NAS: instalas el gadget y tienes acceso a los recursos de cualquier dispositivo UPnP que tengas en la red.

En el blog de Google Desktop comentan que el objetivo es acceder desde un media center conectado a la TV a todos los cacharros que tengas en casa: marcos de fotografías digitales, dispositivos de almacenamiento, reproductores de musica e incluso consolas como la PlayStation 3 o la Xbox. Además, viene de casa integrado con los servicios de Google (YouTube, Picasa, etc.).

Interesante pero mi sentido arácnido se dispara. Google ya tiene suficientes datos mios. Esta vez me lo monto por mi cuenta.

PD. Este gadget no funciona ni en Linux ni en OSX.

Instalar servidor SSH en Icy Box NAS-4220-B 3

Hora y Fecha: Junio 30, 2008 @ 12:34 am Autor: Moisés Maciá
Categorías:
19 views

Este es el primer post sobre hacks del Raidsonic Icy Box NAS-4220-B y en él voy a explicar cómo instalar un servidor SSH para conectarnos de forma segura a través de Internet o de una red inalambrica.

El primer paso es actualizar el firmware del aparato a la última versión disponible (en este momento es la 2.6.0.IB.1.RS.1). Esta actualización incluye acceso remoto mediante telnet que aprovecharemos para modificar ciertos parámetros del sistema.

El servidor SSH es un paquete oficial disponible en la pagina web del fabricante. Para instalarlo hay que conectarse al NAS mediante FTP/SMB/NFS con el usuario admin y dejar el archivo ssh-server.tgz en la ruta /public/applications/new_software.

Después de esto, reiniciamos la máquina y ella sola instala el software en los directorios correspondientes. Esta manera de instalar cosas me ha gustado mucho.

Ahora viene el problema: por lo visto alguien en Raidsonic con una mente preclara ha hardcodeado los paths de los binarios a /mnt/IDE1. Este es el punto de montaje de los discos, pero cambia en función de la cantidad y la configuración de los discos que tengas puestos (RAID0, RAID1, JBOD, etc.).

En mi caso el punto de montaje es /mnt/ide3 (en minúscula), con lo que el servidor SSH se instala pero nunca llega a ejecutarse porque no encuentra sus librerías ni sus archivos de configuración.

A mi todo esto me huele un poco mal. Vale que Raidsonic no es una multinacional del software, pero este es un error de bulto que está en la web desde hace tiempo en un paquete “oficial”. Me parece trabajo de becarios mal pagados, porque eso de poner las rutas en mayúsculas y hardcodeadas muy profesional no suena. Pero bueno, hay una solución sencilla.

Podemos hacer un enlace simbólico que apunte al punto de montaje correcto y todo funcionará como se espera. Para esto necesitamos una shell del sistema mediante telnet.

El acceso a traves de telnet no está habilitado por defecto, para activarlo hay que ir a la siguiente URL http://[ip del nas]/cgi/telnet/telnet.cgi y marcar el checkbox (curiosamente el acceso a telnet no sale en el interfaz web, está escondido).

Nos logeamos como root con la contraseña del usuario admin y ya tenemos shell.

En mi caso el enlace simbólico quedaría de la siguiente manera:

  1. ln -s /mnt/ide3/ /mnt/IDE1

Para comprobar que el servicio se inicia correctamente, vamos al directorio de la aplicación y ejecutamos el script de inicio:

  1. cd /mnt/ide3/public/applications/ssh-server/
  2. sh init

Finalmente, activamos el servidor SSH desde el interfaz web y probamos la conexión.

Debido a la combinación de memoria flash + partición en disco que utiliza el NAS para ejecutar el sistema, este enlace simbólico se pierde cada vez que reiniciamos la máquina.

Esto se soluciona instalando el paquete userscript (descarga) que permite ejecutar scripts personalizados durante el arranque del sistema, una especie de cron para que nos entendamos.

El comando para lanzar el servidor es el siguiente:

  1. mnt/IDE1/public/applications/ssh-server/bin/dropbear -d /mnt/IDE1/applications

Descargad Firefox 3.0 malditos! 2

Hora y Fecha: Junio 16, 2008 @ 11:58 pm Autor: Moisés Maciá
Categorías:
25 views

Ayúdanos a superar el número de descargas de la versión 2.0 y batir un récord mundial; sino, arde en el infierno del zorro panda de fuego!!

Download Day 2008

NAS-4220 2

Hora y Fecha: @ 11:31 pm Autor: Moisés Maciá
Categorías:
37 views

Esta es mi nueva adquisición. Es un NAS doméstico. En este vídeo se pueden ver todas las funcionalidades que ofrece de serie:

Lo que interesa es que se trata de un dispositivo empotrado con un puerto giga ethernet, host USB, un controlador SATA2 y Linux, cosa que garantiza horas de diversión hackeandolo y un elevado indice de mapachidad :)

También hay que tener muy en cuenta que, a efectos prácticos, es un ordenador muy pequeño, muy silencioso, que puedes tener encendido todo el día haciendo backups, sirviendo ficheros, descargando cosas … y que consume alrededor de 20W (hay hacks para reducir incluso más el consumo!).

Se puede desarrollar con el tool chain básico de GNU (make, gcc, stdlib, etc.) configurando correctamente el sistema para compilación cruzada al micro ARM Gemini que lleva. Incluso hay una guia oficial sobre como integrar los desarrollos en el interfaz web de gestión del dispositivo para que quede “bonito”.

Vamos, que lo han puesto en bandeja de plata para que la gente ociosa desarrolle soft. De hecho, ya hay una comunidad bastante maja alrededor de este juguetito (tanto en hard como en soft), lo malo es que la mayoría de la información está en alemán (la empresa es de Berlin, y por lo visto no tienen mucha distribución fuera de Internet y Alemania).

Todavía no he podido curiosear porque al parecer si no hay un disco pinchado no va nada, y visto como están los transportes últimamente voy a tardar unos días en conseguirlo …

Que nadie se asuste, vuelvo a programar en C, tengo grandes proyectos para esta cajita :)

It’s hammer time 1

Hora y Fecha: Junio 2, 2008 @ 9:08 am Autor: Moisés Maciá
Categorías:
47 views

En la última Sun Tech Days han hecho una “demo” de la robustez del sistema de ficheros ZFS de Solaris —ese que quiere Jobs para OSX contra viento y marea—.
No menos de mil de dolares en un RAID de ocho discos y un tio con un martillo pilón machacandolos uno a uno, diversión para toda la familia.

Técnicamente se puede utilizar en GNU/Linux, pero no dentro del kernel por temas de licencia. Sólo en espacio de usuario.

El Geek Errante vuelve! 0

Hora y Fecha: Mayo 26, 2008 @ 11:27 pm Autor: Moisés Maciá
Categorías:
56 views

Ya creía que esta joya se iba a perder como tantas otras antes … , pero no, falsa alarma; la nave continua su viaje y su tripulación nos deja otro podcast no apto para seres humanos!!

Beautiful Code 2 0

Hora y Fecha: Mayo 19, 2008 @ 9:24 pm Autor: Moisés Maciá
Categorías:
71 views

Esta es una respuesta para este comentario que al final ha quedado demasiado larga y la pongo aquí.

Veamos, para empezar hay que comprender lo que para los autores del libro es beautiful code: De la misma manera que no se pueden comparar dos poesías por lo melodiosas que suenan al recitarlas, no se puede comparar el código por lo lo estético que resulte.

La belleza a la que se refiere el libro está en los pequeños detalles de la resolución del problema; a veces la belleza reside en lo óptimo del código, la simplicidad, la estructura de la arquitectura, la elegancia del planteamiento, etc. Todos los capítulos hacen referencia a una o varias de estas cualidades.

Hay varios capítulos con implementaciones en el lenguaje C, me voy a quedar con el primero: “A Regular Expression Matcher”, donde el mismísimo Brian Kernighan hace un repaso a las implementaciones de expresiones regulares que se pueden ver hoy en día a lo largo y ancho de lenguajes, librerías, sistemas operativos, etc.

Brian tuvo la necesidad de incorporar expresiones regulares en UNIX pero examinando la implementación de grep le pareció demasiado compleja (~500 lineas), así que desafió a Robert Pike a encontrar la implementación mínima capaz manejar construcciones con:

Carácter Significado
c Coincide con el literal c
. Coincide con un carácter simple
^ Coincide con el inicio de la cadena
$ Coincide con el final de la cadena
* Coincide con cero o más ocurrencias del anterior carácter

Como he dicho, se trata de la funcionalidad básica de un autómata que reconoce expresiones regulares. Perl, grep, awk, etc. son capaces de manejar construcciones mucho más complejas que estas.

Cuenta la leyenda(tm) que Pike se encerró en su despacho, al cabo de un par de horas apareció con 30 líneas de código que implementaban el autómata propuesto por Kernighan y hasta la fecha es la solución óptima al problema.

A esto es a lo que Kernighan llama beautiful code y creo que la afirmación está fuera de toda duda después del show me the code!:

  1.  
  2. /* match: search for regexp anywhere in text */
  3. int match( char *regexp, char *text )
  4. {
  5.     if ( regexp[0] == ‘^’ )
  6.         return matchhere(regexp+1, text);
  7.     do { /* must look even if string is empty */
  8.         if ( matchhere(regexp, text) )
  9.             return 1;
  10.     } while ( *text++ != \0 );
  11.     return 0;
  12. }
  13.  
  14. /* matchhere: search for regexp at beginning of text */
  15. int matchhere( char *regexp, char *text )
  16. {
  17.     if ( regexp[0] == \0 )
  18.         return 1;
  19.     if ( regexp[1] == ‘*’ )
  20.         return matchstar(regexp[0], regexp+2, text);
  21.     if ( regexp[0] == ‘$’ && regexp[1] == \0 )
  22.         return *text == \0;
  23.     if ( *text != \0 && (regexp[0] == ‘.’ || regexp[0] == *text) )
  24.         return matchhere(regexp+1, text+1);
  25.     return 0;
  26. }
  27.  
  28. /* matchstar: search for c*regexp at beginning of text */
  29. int matchstar( int c, char *regexp, char *text )
  30. {
  31.     do { /* matches zero or more instances */
  32.         if ( matchhere( regexp, text ) )
  33.             return 1;
  34.     } while ( *text != \0 && (*text++ == c || c == ‘.’) );
  35.     return 0;
  36. }
  37.  

En el libro se discuten largo y tendido todas las decisiones, casos especiales y alternativas del algoritmo así como la explicación de porque es imposible batir a esta implementación con un lenguaje de alto nivel (básicamente por la manera en que C gestiona las cadenas y la memoria).

El capitulo en cuestión no esta disponible en la red, pero rebuscando he encontrado una explicación similar. Para más detalles podéis encargar el libro en Amazon (es una buena compra), o no.


Bad Behavior has blocked 466 access attempts in the last 7 days.