Randolph Pausch
(23 de octubre de 1960 – 25 de julio de 2008)
Versión completa: La última conferencia
En el último artículo hemos visto AWK como herramienta para el tratamiento masivo de datos, donde hemos demostrado que podía ser una alternativa parcial a otras herramientas comerciales como SAS, ACL o IDEA (muy utilizadas en el mundo de la Auditoría). AWK es una solución parcial dado que únicamente nos proporciona funcionalidades para hacer un tratamiento básico sobre los ficheros (p.ej. sumarizaciones, cruces de datos, operaciones matemáticas simples, etc), sin embargo no tenemos las características estadísticas que si podemos encontrar en las herramientas comerciales.
Afortunadamente para todas esas funcionalidades podemos apoyarnos en R: R es un lenguaje de programación que permite llevar a cabo análisis estadísticos avanzados, entendiendo por por estadística como la ciencia de recoger y analizar datos con el propósito de sacar conclusiones y tomar decisiones.
Con R también podemos realizar cálculos numéricos, aunque para esas tareas también vale la pena echar un vistazo a Octave.
Aparte de las potentes características de R, existen multitud de paquetes que amplían las funcionalidades: desde dedicados al análisis de datos psicológicos hasta financieros.
Al igual que AWK, R no ofrece una interfaz gráfica tan potente como las herramientas comerciales que comentavamos, aunque podemos apoyarnos en determinados mecanismos que nos harán la vida más fácil a la hora de tratar la información (p.ej. utilizando MySQL Query Browser) como veremos en las correspondientes secciones del artículo.
Para aprender a utilizar R mediante esta guía es muy recomendable replicar todos los ejemplos y visualizar los resultados directamente. Únicamente leyendo el artículo es más difícil entender el funcionamiento completo de la herramienta.
De antemano pido disculpas si soy inexacto o cometo algún tipo de error en las explicaciones estadísticas, no soy un experto en esa materia y estaré muy agradecido si detectáis incorrecciones y las hacéis llegar vía comentario o correo.
Finalmente, destacar que para la elaboración del artículo me he basado en diversos tutoriales que he encontrado por Internet, especialmente simpleR, con los cuales he ido aprendido a utilizar R de forma paralela a la redacción de esta guía.
Continue reading R, estadística y tratamiento masivo de datos (alternativa a SAS, ACL e IDEA)
GNU awk es una herramienta muy útil para modificar archivos, buscar y transformar datos y, en general, realizar cualquier tipo de tratamiento masivo de ficheros. Con un programa awk es posible contar el número de líneas de un archivo, seleccionar columnas, aplicar filtros, realizar cruces, borrar el último campo de cada línea, hacer sumarizaciones, comprobar duplicados, muestreos, etc.
Para aprender a utilizar AWK mediante esta pequeña guía, lo mejor es copiar los ficheros de ejemplo que aparecen y ejecutar las instrucciones o programas que se comentan para ver directamente cual es el resultado. Únicamente leyendo la guía es bastante más complicado entender el funcionamiento de AWK.
Continue reading Tratamiento masivo de datos con AWK, alternativa parcial a ACL o SAS
Fantástica explicación de la crisis del crédito:
El dijous 29 de Gener tindran lloc les primeres Jornades GPL Tarragona, a on tenim convidats molt especials que estic convençut que ens faran passar una bona estona. Podeu accedir a l’agenda de les jornades a la mateixa web de GPL Tarragona, o bé escoltar el programa l’Internauta de Vicent Partal a Catalunya Radio, a on hem tingut el plaer de participar.
Us recomano que visiteu directament la pàgina de L’internauta per accedir als programa complet mitjançant podcast. No obstant, per anar obrint boca he fet l’extracció de l’entrevista per penjar-la a la plataforma Woices (a les jornades tindrem l’oportunitat de conèixer els detalls darrera d’aquesta iniciativa empresarial).
Per altra banda, qui vulgui accedir a GPL Tarragona aprofitant les possibilitats de SocialDNS (cal instal·lar plugin pel navegador) pot fer-ho mitjançant go://gpltarragona. A les jornades també podrem conèixer que hi ha darrera d’aquesta comunitat/tecnologia.
Us esperem a tots!
Si necesitamos almacenar información sensible en nuestro sistema, a parte de tener en cuenta los procedimientos de borrado seguro, tenemos varias opciones:
Veamos como podemos utilizar la tercera opción:
sudo apt-get install encfs sudo adduser miusuario fuse sudo chmod 660 /dev/fuse sudo chown root:fuse /dev/fuse sudo modprobe fuse
Al igual que sshfs, EncFS utiliza Fuse y por tanto cualquier usuario que pertenezca al grupo ‘fuse’ podrá crear y montar directorios cifrados:
mkdir ~/.private mkdir ~/Private encfs ~/.private ~/Private
La primera vez que ejecutamos ‘encfs’, deberemos escoger si queremos una configuración en modo experto o deseamos una de las configuraciones predefinidas: paranoica o estándar. La segunda será suficiente siempre y cuando establezcamos una contraseña robusta.
En el ejemplo, cabe destacar que EncFS guardará los archivos cifrados en ~/.private y los nombres de los ficheros también estarán cifrados (lo único que no se oculta es la cantidad de ficheros, información poco valiosa habitualmente). Para desmontar el directorio podemos ejecutar:
fusermount -u ~/Private
Si tenemos acceso a un servidor remoto con SSH, podemos acceder a los ficheros de la máquina mediante herramientas como gftp o WinSCP. Pero lo realmente útil es montar un directorio remoto en uno local, de forma que si por ejemplo tenemos un fichero de música/vídeo en el servidor, lo podremos reproducir sin necesidad de descargarlo completamente.
Para esto haremos uso de fuse (tecnología que permite a los usuarios de sistemas Linux montar dispositivos, es decir, no se requiere que sea ‘root’) y sshfs:
sudo apt-get install sshfs sudo adduser miusuario fuse sudo chmod 660 /dev/fuse sudo chown root:fuse /dev/fuse sudo modprobe fuse
Con estos comando hemos instalado sshfs, hemos añadido un usuario al grupo fuse (si corresponde a nuestro usuario actual, probablemente necesitaremos reiniciar la sesión para que tenga efecto), nos hemos asegurado que el dispositivo /dev/fuse tiene permisos de lectura/escritura para el grupo fuse y finalmente hemos añadido el módulo al kernel.
Para montar el directorio remoto por SSH/SFTP:
mkdir ~/Remoto/ sshfs -o ro,allow_other miusuario@servidor.com:/home/miusuario ~/Remoto -p 22
Con este comando hemos montado el directorio remoto ‘/home/miusuario’ en ‘~/Remoto’, conectando por el puerto 22 con el servicio de SSH. Además, hemos indicados en las opciones que el acceso sea de solo lectura (ro = read-only) y que otros usuarios puedan entrar en el directorio (allow_other), por supuesto estas opciones se pueden eliminar para que no deshabilitar su efecto.
Para desmontar el directorio podemos ejecutar:
fusermount -u ~/Remoto
Si no disponemos de una partición cifrada, es posible que nos interese borrar determinados ficheros confidenciales de forma segura, para ello utilizaremos ‘secure-delete’:
apt-get install secure-delete
Secure-delete nos proporciona 4 comandos de borrado:
Encuentro especialmente útiles los 2 primeros comandos acompañados del parámetro ‘-ll’, esto hará que el borrado se realice con un único pase de datos aleatorios. Ese nivel de borrado ya se considera bastante seguro, hay muy pocos lugares en el mundo donde se pueda recuperar información que haya sido sobreescrita con datos aleatorios en 1 única pasada.
Podemos hacer una prueba creando un fichero de prueba de 100 MB y realizando su posterior borrado seguro:
dd if=/dev/zero of=test.img bs=1M count=100 srm -v -ll test.img
En mi sistema el borrado ha tardado 40 segundos, imaginaros cuanto tardaría si no indicásemos la opción ‘-ll’ y se realizasen los 38 pases con los que viene por defecto 😉
Nos podría interesar mantener una conexión SSH permanente en dos equipos, por ejemplo para aprovechar las capacidades de creación de túneles cifrados entre diferentes equipos. Si utilizamos el comando ‘ssh’ habitual, en caso de que se caiga la conexión por cualquier motivo (p.ej. desconexión temporal de la línea) tendremos que volver a ejecutar el comando manualmente.
Para evitar esta problemática tenemos autossh, el cual se encargará de relanzar la conexión ‘ssh’ en caso de que deje de estar operativa:
AUTOSSH_DEBUG=1 AUTOSSH_GATETIME=0 AUTOSSH_PORT=1610 autossh usuario@servidor.com -L 1610:127.0.0.1:1610
Para el correcto funcionamiento, es recomendable el uso de conexiones SSH con claves RSA, de lo contrario al relanzar la conexión SSH se requerirá la intervención del usuario para introducir la contraseña (ver sección ‘Acceso remoto: SSH’ de Securización de un sistema Ubuntu (GNU/Linux)).