El módulo «Sistemas Informáticos»

El año pasado me tocó impartir el módulo «Sistemas Informáticos» del ciclo superior de DAM (Desarrollo de Aplicaciones Multiplataforma). Se trata de un módulo de 5 horas en el que se debe enseñar hardware (desde la teoría de los computadores hasta reparar un PC), sistemas operativos, seguridad, redes y Shell script.

Como se puede deducir, es una barbaridad para solo 5 horas a la semana durante un curso. Además, es un ciclo superior en el que se espera que adquieran un buen nivel. Yo suelo decir a mis alumnos que van a dar los 2 cursos del ciclo de grado medio comprimidos en un solo módulo.

El año pasado me fue bien, en gran parte por el buen nivel de la mayoría de alumnos. Pero sigo dándole vueltas a cómo enfocar la enseñanza de toda la informática menos la programación en tan poco tiempo.

Sigue leyendo

uzbl, una alternativa ligera y con «filosofía» Unix

En los ordenadores del instituto hay, como mucho, 2GB de RAM. Esto no es mucho si quieres tener 2 máquinas virtuales a la vez y un navegador web.

Firefox y Chromium consumen mucha RAM. Así que si sólo quieres navegar, estás ralentizando todo el sistema.Los navegadores generalistas quieren tener de todo: Historial, Plugins, Marcadores, pestañas, clientes de otros protocolos… Sin embargo, el navegador uzbl es solo un navegador web minimalista y fácil de usar sólo con teclado.

Sigue leyendo

Generando datos aleatorios

Para las clases de bases de datos o de scripts en Linux, a veces, es necesario tener un fichero con miles de datos aleatorios, pero en un determinado formato. Introducir datos a mano es una de las tareas más ingratas de la informática. Y más si se tratan de datos de usar y tirar. En este post, simplemente voy a comentar las herramientas que más uso. Hay multitud de ellas y para otros propósitos.

Para generar datos en formato tabla relacional se puede usar generatedata.com. Este permite exportar el resultado en SQL, CSV, XML o Excel y es interesante porque permite generar datos de muchos tipos predefinidos, a partir de un diccionario propio de nombre o ciudades o de formatos para teléfonos, auto-incrementales y otros datos típicos. Además, cuenta con un lenguaje para expresiones regulares por si no nos sirve nada de lo que está predefinido. En mi caso me lo instalé en una máquina virtual para poder modificar su base de datos y poner nombres y ciudades españoles.

Pero si queremos usar sólo la terminal hay que hacer uso o bien de la variable de entorno $RANDOM que contiene un número aleatorio o de los ficheros /dev/urandom y /dev/random. El primero resulta menos seguro para la generación de claves, por ejemplo, porque puede ser menos aleatorio. La razón es que /dev/random devuelve datos aleatorios generados de sus almacenes de entropía, pero pueden ser limitados. urandom, por su parte, devuelve todos los que se le pidan generándolos a partir de almacenes de entropía y de operaciones matemáticas.

Este comando, por ejemplo:

$ cat /dev/urandom | tr -d -c "123456789ABCDEF" | head -c 12 | sed  -r -e 's/(..)/\1:/g' -e 's/:$/\n/g'

Genera direcciones MAC aleatorias.

Con el resultado de cat /etc/urandom podemos hacer prácticamente todo tipo de datos aleatorios si son con formato fijo, estadísticos o palabras sin sentido. Para usar palabras que existan se puede hacer uso en un script del diccionario del sistema. En Ubuntu 12.04 está en /usr/share/dict/spanish.

Si sólo queremos generar una contraseña segura podemos usar el comando pwgen:

$ pwgen -s -y 10

Genera contraseñas seguras de 10 caracteres. Tal vez sean difíciles de leer. Por eso se puede usar sin el -s y las hace más fáciles de memorizar.

Otra manera de conseguir datos es gracias al movimiento Opendata. Se pueden encontrar muchos datos reales muy variados y curiosos en páginas web gubernamentales de todo el mundo.

 

Leer pdf en terminal

Para ver el contenido de pdfs de texto en una terminal se puede usar el comando pdftohtml y luego abrir el fichero con lynx.

Una forma más rudimentaria y que no necesita tener instalado un navegador web por terminal es transformarlo a texto. Con el comando pdftotext podemos extraer el texto de pdfs que no sean escaneados.

$ pdftotext <fichero>

Pero hay algunos pdf que muestran datos tabulados.

Datos tal como se ven en el pdf

Depende de cómo se transformara el documento en origen, esos datos no se guardan en el pdf en el órden de lectura, sino en columnas. De esta manera, el texto resultante de la transformación es ilegible y no se puede, por ejemplo, hacer grep en él.

Así se ven en un editor de texto.

Pero pdftotext tiene la opción -layout que intenta trasformar tal cual se ve, no en el orden en que están en el pdf.

$ pdftotext -layout <fichero>

Resultado correcto visto en un editor de texto.

Haciendo Linux interesante

Casi desde el primer momento que probé el comando grep me convencí de que me gustaba trabajar con Linux. Ya no sólo por los argumentos de que si es más seguro, si es libre y esas cosas. Si no porque era interesante y en cierta manera divertido y satisfactorio.

Para demostrar esto, estoy haciendo un recopilatorio de cosas curiosas que se pueden hacer con los comandos. Me ha pasado el introducir un nuevo concepto, decir que es interesante, pero no recordar un ejemplo que lo demuestre. Para evitar esto, intento darle la vuelta y jugar con los comandos. Por ejemplo, demostrar que todo es un fichero haciendo que salga por pantalla los movimientos del ratón o redireccionando un disco duro a la tarjeta de sonido. Sin embargo, como sucede con los ejemplos anteriores, hay pocas cosas que no están inventadas o que no estén demasiado vistas.

Por el momento, tengo varias cosas en el Wiki. El cual se amplía cada día, mucho más que este blog. De entre esas cosas, una especie de glosario de comandos con aplicaciones curiosas y un artículo dedicado a ncat que ampliaré cuando los alumnos hagan una práctica que estoy elaborando.

Presentaciones alternativas

Las presentaciones tradicionales tipo Power Point o las del Openoffice Impress provocan algunos problemas. Por ejemplo las incompatibilidades entre versiones, la necesidad de tener instalada una tipografía o lo feas y anticuadas que quedan.

He estado probando cosas nuevas para este curso que no sé si utilizaré al final, pero que son muy interesantes.

En primer lugar, buscaba algo similar al Keynote de los Mac pero para Linux. No he encontrado nada satisfactorio. Buscando eso encontré el famoso prezi que permite hacer presentaciones impresionantes, pero poco académicas en mi opinión.

Luego he visto la posibilidad de hacer presentaciones en HTML para poder ponerlas en la web: La propuesta de la w3c, Slideous y Deck.js (este último es el que más buena pinta tiene)

Otra opción es hacer presentaciones en PDF y luego animarlas con impressive, que permite hacer una presentación interesante de cualquier documento PDF sin necesidad de que tenga formato de diapositivas.