Tutorial de LXC

Containers

Photo by frank mckenna on Unsplash

LXC es una herramienta extraordinaria, algo intermedio entre un chroot y una máquina virtualizada completamente. Usando el mismo kernel que el sistema anfitrión podemos tener sistemas operativos invitados en el propio filesystem. Es decir, cada SO invitado en un directorio. Pero la documentación y la interacción de los distintos componentes puede tornar algo tricky el proceso. Cansado de lidiar con documentación desperdigada por aquí y por allá decidí crear mi propio tutorial. Intentando en lo posible ser distro-agnóstico.

Aquí está:

¡Espero que lo disfruten!

Un abrazo peligroso

¿Cuán genuino es la movida de Microsoft hacia el Software Libre?

dangerous

Photo by Samuel Scrimshaw on Unsplash

Recientemente Dona Sarkar dijo:

Windows no puede ser de código abierto por cuestiones como pueden ser nuestras políticas de privaciad y protección de datos. Un proyecto que empieza siendo de código abierto puede mantenerse así, pero uno que ha nacido dentro de un entorno cerrado, es más difícil de abrir.

Aquí nos presentamos con una falacia. Primero: ¿qué tiene que ver las políticas de privacidad y protección de datos con la apertura del código fuente?

Cualquiera con un mínimo de conocimiento profesional en informática encontrará esa explicación problemática.

¿Qué impedimentos tiene que tener el código fuente de un programa para contravenir las políticas de privacidad y protección de datos?

A mi en principio se me ocurren solamente dos, supongamos que tenemos un programa llamado ABC123 de la empresa ficticia Example Inc. Puede ser el que el código fuente utilce código patentado por otra empresa llamado AnotherOne Inc. En algún momento de la historia Example Inc. y Another Inc. hicieron un acuerdo de no revelación de código fuente.

Ese puede ser perfectamente un obstáculo para la revelación del código fuente. Pero claro en ese caso no tiene nada que ver con el interés por privacidad o la salvaguarda de los datos de los usuarios.

Otra posibilidad que sería ciertamente nefasta es que el programa almacene datos sensibles de las personas.

El código fuente de acuerdo a Wikipedia es

Es cualquier colección de código, posiblemente con comentarios escrito usando un lenguaje de programación legible por humanos, usualmente como texto plano.

Es decir, el código fuente es escrito por los programadores, los datos no forman parte y no debería haber razones para considerarlo así. Y si alguien considera que los datos sí forman parte es grave porque están utilizando los datos del usuario con fines comerciales.

Y el funcionamiento del programa ABC123 está desarrollado de una manera en el que sea imposible disociar los datos de del resto del código está ciertamente mal diseñado y el usuario está siendo damnificado por esa situación.

Lo cierto es que hasta ahora nadie le ha preguntado seriamente a Microsoft por qué no libera el código fuente de Windows.

Fuentes:

El principio de Le Châtelier

Ya siendo adolescente me fascinaba el principio de Le Châtelier que enuncia:

Si se presenta una perturbación externa sobre un sistema en equilibrio, el sistema se ajustará de tal manera que se cancele parcialmente dicha perturbación en la medida que el sistema alcanza una nueva posición de equilibrio.

No siempre los equilibrios son ventajosos, a veces necesitamos romperlo para conseguir un beneficio.

Crisis

unsplash-logo Jan Tinneberg

¿Qué sucede si pensamos esto en términos sociales?

De hecho, hay un principio similar en economía formulado por Paul Samuelson en 1947. En biología este concepto se conoce como homeostasis.

Probablemente, la humanidad nunca estuvo ante una perturbación del equilibrio desde la segunda guerra mundial o incluso desde la caída del muro de Berlín.

¿Qué está haciendo hoy el equilibrio para restablecer el equilibrio? Creo que es una pregunta.

Es importante que nuestros dirigentes estén en el aspecto ético a la altura de las circunstancias. Pero entendiendo también que viejos conceptos son insuficientes. Una discusión entre "más estado" o liberalismo no alcanza. Es importante entender el grado en que la tecnología hoy nos rodea. Para qué se usa. Quienes son los dueños.

En un tiempo en que todos corremos detrás de los servicio de Internet, creo que más que nunca tenemos que hacernos preguntas sobre ella. Cuestionarnos la obsesión por los datos, por la rapidez vacía de resultados benéficos reales sobre las personas.

Un tiempo para que podamos descubrir que un empleado feliz puede ser más creativo y más productivo. El trabajo del hombre respetando a la naturaleza y por ende al mismo hombre contenido en ella.

Por primera vez después de mucho tiempo empezábamos a perder la vergüenza de decir que las personas son más importantes que las ganancias económicas.

Sin embargo, pudimos ver claramente en los últimos días como han aparecido las fuerzas que pretenden restablecer un equilibrio que perjudica a las grandes mayorías, dentro las cuales están los que menos tienen.

Enlaces de Interés

OpenSSH, X11Forwarding y Wayland

Digamos que hay tres maneras de levantar acceder a la interfaz gráfica de un Linux remoto:

red pipe with red ropes

Photo by JJ Ying on Unsplash

  • Accediendo a todo el escritorio
  • Accediendo a una aplicación en particular
  • Conectándose a un administrador de login remoto

Una de las maneras habituales hasta hace relativamente pocos años era abrir aplicaciones gráficas de manera individual usando ssh usando la funcionlidad llamada X11Forwarding.

¿Qué es X11 Forwarding?

La mayoría estará de acuerdo con lo poco aconsejable que es usar Xorg en un servidor. Una alternativa menos riesgosa es instalar un programa cliente de X. En ese caso podemos usar el redireccionamiento X11 de ssh. De esta manera los datos viajan cifrados por la red y además, establecerá la variable DISPLAY en la máquina en la cual estamos usando el cliente ssh. Una de las cosas más ventajosas que tiene el redireccionamiento X es que host remoto no necesita un servidor Xorg real. El programa xauth en el host remoto simula que hay un servidor local ante sus programas clientes pero redireccionando la imagen en la pantalla del cliente ssh. Esto tiene un costado problemático: estamos abriendo un canal desde el servidor ssh al cliente ssh. Por eso es muy importante segurizar el servidor para minimizar los riesgos. El protocolo X es muy antiguo y como tal era muy laxo en cuando a la seguridad, de este modo imponía pocas restricciones en el acceso por red. Durante el paso de los años el Xorg se ha esforzado por reducir esos inconvenientes. De hecho cuando una aplicación remota se abre por ssh X la considera un cliente no confiable, impidiendo el acceso a recursos de clientes confiables.

El Problema

El X Window System o X11 nació en el año 1987, y en los comienzos de Linux se usaba XFree86, una implementación libre (aunque con una licencia considerada problemática). Pero en 2004 nació Xorg como un fork de XFree86 y desde ese momento reemplazó en general a su antecesor en el reinado de las interfaces gráficas de Linux. Sin embargo, algunas distribuciones en la actualidad ofrecen de manera predeterminada Wayland en lugar de Xorg. Kristian Høgsberg un desarrollador de Xorg y de gráficos del kernel Linux creó Wayland en 2008. El propósito de Wayland es proveer una alternativa que sea más fácil para desarrollar y mantener que Xorg. Aquí tenemos que recordar que es un compositor: se trata de un software que utiliza buffers de memoria para que la imagen tenga mejor calidad y de paso poder proporcionar ciertos efecto. Wayland es un protocolo para que un compositor pueda comunicarse con programas clientes y además una implementación de dicho protocolo. De esta manera, se dejan las funcionalidades esenciales para que las ejerzan los clientes.

Es así como llegamos a que Wayland tampoco tiene como propósito ofrecer el renderizado de aplicaciones remotas, es decir, no existe de manera predeterminada algo como WaylandForwarding. Los desarrolladores de Wayland dicen que podrías en cambio:

  • Usar un servidor de renderizado sobre Wayland con soluciones ya existentes ( vnc, rdp, Xorg) o desarrollar uno nuevo.
  • Usar y/o desarrollar un protocolo de renderizado remoto en un compositor de wayland.
  • Usar y/o desarrollar un compositor remoto aislado o una parte de un compositor de escritorio

GNOME está trabajando con el renderizado de aplicaciones remotas en Wayland y KDE aparentemente también con en su proyecto Plasma.

Una tubería como camino

Waypipe programa desarrollado por M. Stoeckl para eñ Google Summer of Code de 2019: es un proxy para clientes de Wayland. Lo interesante es que puede usar ssh para hacer un redireccionamiento de una manera muy sencilla:

waypipe ssh usuario@servidorssh

waypipe

Ese comando ejecuta dos instancias, una en el cliente y otra en el servidor (es decir debe estar instalado en ambos hosts). La instancia de waypipe que se ejecuta en el servidor ssh simula ser un compositor wayland, y usa un socket Unix para que los programas puedan conectarse. El resultado final es que la aplicación remota se muestra en la pantalla local de wayland. Las pruebas que realicé sobre CentOS8 como servidor wayland y cliente ssh frente a un servidor Fedora 31 han sido satisfactorias.

Más que mil palabras

¿Querés ver un video con waypipe en acción? Lo podés ver a continuación:

Fuentes de Consulta y Más Recursos

Cuestiones con VirtualBox

Hay ciertos detalles a vece que necesitamos pulir al usar VirtualBox, por ejemplo:

Detalles al configurar un Guest en VirtualBox

Photo by Ales Nesetril on Unsplash

Al usar VirtualBox 6.1 aparecen los siguientes errores:

[drm:vmw_host_log [vmwgfx]] *ERROR* Failed to send host log message.

Este error parece inocuo, tiene que ver con el driver de la tarjeta de video, la cual está en VMSVGA, el indicado para Linux.

el otro error es:

"failed to start Cgroup management daemon."

Lo que hice fue desinstalar paquetes obsoletos:

apt-get purge upstart libcgmanager0 cgmanager

Otro inconveniente menor suscitado es la baja resolución luego del login:


Baja Resolución después del login

Probé aumentarle la memoria para video del guest a 32 MB, pero el problema persistía. Entonces creé un usuario de prueba que no presentaba ese problema y comparé los datos que me daba el comando:

gsettings list-recursively

para ambos usuarios.

No encontré diferencias. Entonces, comparé ambos directorios y borré el archivo $HOME/.config/monitors.xml del usuario con dicho problema y efectivamente, logré solucionarlo de ese modo.

Análisis de Arquitectura de Aplicaciones Educativas Libres

Este análisis se es sobre el diseño, la interactividad, usabilidad y experiencia del usuario en programas educativos libres.

Usabilidad

Photo by David Travis on Unsplash

katomic

El software presupone un conocimiento básico de química. Espera que gracias a ese conocimiento el usuario se de cuenta como se juega. El menú Juego pone de relieve la naturaleza del programa. El programa posee una especie de laberinto a la izquierda y la estructura de una molécula que se debe btener en la parte derecha. Posee 4 menús:

  • Juego

  • Mover

  • Preferencias

  • Ayuda

Una barra de herramientas debajo con:

  • Reiniciar partida

  • Deshacer

  • Rehacer

  • Nivel anterior

  • Siguiente nivel

Cada átomo posee flechitas de dirección al pausarlas Se supone que es cuestión de arrastrar y solar. Con algo de investigación uno puede darse cuenta de que se trata de un laberinto, hay que mover haciendo clic en las flechas hasta juntar correctamente los átomos. También es posible moverse con las flechas del teclado.

Es un poco impredecible el movimiento de los átomos, y uno tiene que deducir que siempre se mueve pegado a las paredes, nunca se quedan en el medio.

Debajo, en una barra de estado dice el Nivel, el tipo de nivel y el nombre de la molécula. A la derecha aparece la puntuación actual y las mejores puntuaciones.

El idioma está en castellano, aunque depende del entorno como esté configurado. Al finalizar el armado de la molécula aparece debajo un mensaje de felicitación, aunque no es muy cálido y/o visible. Y aparece un siguiente desafío.

El juego se puede guardar para seguir en otro momento. Al guardar la partida no está claro con qué extensión se guarda. No obstante al cerrar el juego, pude abrirlo sin problemas yendo a Juego y Cargar..

Además, puedo desde el menú Juego ir al Nivel anterior y luego volver al Siguiente Nivel. Tiene la posibilidad de Obtener niveles nuevos desde la Internet:

Niveles de KAtomic

Para luego descargarlos e instalarlos:

Descarga de niveles

Pese a su apariencia sencilla el juego no es tan sencillo.

Decidí explorar la ayuda:

En la ayuda dice el objetivo del juego es Ensamblar moléculas deslizando los átomos que las componen.

La Ayuda dice Verá flechas verdes apuntando en las direcciones en las que el átomo se puede mover pero en realidad son amarillas. También expresa que El progreso del juego se guarda automáticamente cada vez que se alcance un nivel nuevo y se cargará la siguiente vez que se inicie la aplicación. Algo que efectivamente sucede.

Manual de katomic

Este programa no tiene un sitio web especial para el usuario, solamente un sitio de control de versiones: katomic.git - Katomic is a fun and educational game built around molecular geometry y está listado en The KDE Games Center - KAtomic Information. En ese sitio la información está en inglés.

La navegación citada por Berenguer tal vez no sea tan interesante y no demanda demasiada interacción.

El control que tiene el usuario sobre la aplicación es limitado.

Sería un programa interactivo de segunda generación ya que permite usar íconos y el mouse principalmente.

No obstante el escollo que encuentro es que juego es bastante lineal y su nivel de dificultad puede llevar a la frustración temprana.

De hecho, la ayuda misma dice que la aplicación no proporciona ni pistas ni soluciones.

El control mejora un poco si descargan y usan niveles adicionales.1 Me parece que la relación entre el juego y el contexto del usuario es bastante débil.[ii]

kig

Kig se autodefine como un programa para explorar construcciones geométricas.3

Kig


  • Un punto positivo es el ¿Sabía...? es una manera de ayudar a que el usuarios se involucre con el uso del programa. La ayuda es también en componente importante a la hora de evaluar la experiencia del usuario.4

  • La interfaz es un tanto monocroma, pero el uso de las herramientas es intuitivo. Sin embargo, identificar con solo verlos en algunos casos puede ser un poco difícil, por ejemplo:

  • En este caso, la interfaz tiene dos recursos como para paliar dicho problema: las tooltips y la posibilidad (como cualquier programa del entorno de escritorio Plasma) de ver los íconos más grandes.

  • Una información muy útil está en la barra de estado, sería mejor si estuviese más visible.

  • No explica lo que es un vector.

  • Tiene una manera para seleccionar todo y borrarlo de manera de limpiar la hoja de trabajo.

  • El menú contextual que aparece al hacer clic derecho sobre los objectos es muy útil.

  • No pude establecer un color personalizado, bueno en realidad sí, después de hacer clic en otro lugar de la pantalla pude ver que lo aplica para mover un vector, seleccionar un ángulo de rotación?

  • Con Esc se puede cancelar la construcción de un objeto

  • Está muy bueno que se puede poner una etiqueta en el objeto (el programa le da el nombre correcto)

  • En un momento se colgó el programa, afectando el grado de previsibilidad del programa,

  • Estaría bueno si permitiese crear más polígonos, como trapecios, paralelogramos, etc.

GCompris

GCompris es un conjunto de programas educativos de alta calidad que contiene un gran número de actividades para niños entre 2 y 10 años.

De acuerdo a la definición de su sitio web, Gcompris

es un conjunto de programas educativos de alta calidad que contiene un gran número de actividades para niños entre 2 y 10 años

Desde la primera pantalla guía al usuario claramente en lo que puede hacer.

Bienvenida de GCompris

Y luego la bonita pantalla inicial:

Inicio de GCompris

En la parte inferior, hay a unos botones muy atractivos, cada uno de ellos tiene un ícono que sugiere la función de ellos. De esta manera se estaría cumpliendo la ley de Fitt.[v]

El botón de la G, muestra información muy útil sobre GCompris, KDE y la naturaleza de ellos:

Acerca de GCompris

Cuanta con actividades en las cuales los chicos tienen protagonismo, como por ejemplo un juego sobre el ciclo del agua:

Excelentes gráficos, ayuda integrada, buena interactividad, como dice Berenguer:

“En segundo lugar, apunta la "facilidad"
de uso, o sea la accesibilidad de la información y la sencillez de las operaciones que llevan a ella. También
es deseable en general la "coherencia", la regularidad del programa, es decir, que elementos similares sean
tratados de manera similar”

En muchos aspectos Gcompris se acerca bastante al idea de un programa libre educativo para niños

Por otro lado, Otl Aicher6 cita a Kant: “la finalidad se orienta a lo especial, no a lo general”. En este caso si los proyectos de software libre consiguen profesionalizarse tienen grandes posibilidades en ese aspecto al no estar urgidos por alguna urgencia comercial.

Por otro lado, hay que entender que no solamente importa la facildad de un programa, sino el tipo de experiencia que tiene el usuario al emplearlo.7

Otros Enlaces Útiles


  1. Berenguer menciona la importancia del control del usuario en los programas interactivos en Escribir programas interactivos - Publicado en FORMATS, Universidad Pompeu Fabra, 1997

  2. En ACIMED v.12 n.6 Ciudad de La Habana nov.-dic. 2004 se menciona la importancia de Relación entre el sistema y contexto del usuario como medida de Experiencia del Usuario. 

  3. The KDE Education Project - Kig 

  4. Mencionado también en fuente mencionada en nota 2 

  5. Ley de Fitts - Wikipedia, la enciclopedia libre 

  6. El mundo como proyecto - Otl Aicher 

  7. Usability - Wikipedia 

La gestión de archivos en tiempos de DevOps

Escribía en un artículo anterior sobre ranger. Los gestores de archivos han sido son muy importantes.

Gestores d archivos

En los comienzos de la informática moderna, los gestores de archivos se llamaban editores de directorio. En 1974 Stan Kugell crea el programa llamado DIRED. En la actualidad una implementación de Dired que corre en Emacs.

Dired en Emacs

En los '80s aparecería Norton Commander. Miguel de Icaza creó en 1998 el clon tan popular llamado Midnight Commander.

El comando ls viene desde los tiempos del sistema operativo UNIX de AT&T, naturalmente en Linux usamos la implementación libre de las coreutils. El comando ls sirve para ver el contenido de directorio y ver propiedades básicas de los archivos. Si queremos ver el árbol de directorios podemos usar tree:

El comando tree

Benjamin Sago creó en 2014 una herramienta para reemplazar a ls, llamada exa:

Este programa cuenta con opciones de visualización y filtrado que no están en ls.

La herramienta Broot o bien abreviada br combina funcionalidades de ls, tree y de gestores de archivos. El programa fue creado por Denys Séguret y al igual que exa, está escrito en Rust Programming Language. Aquí vemos como esta herramienta sintetiza las 3 funcionalidades:

Es así como contamos tanto con herramientas tradicionales como otras más nuevas adaptadas más a estos tiempos para ver y manejar archivos.

Fuentes y más recursos

Cómo pegar texto en VIM usando Ctrl-v

Cuando copiamos un texto desde otro programa y lo queremos pegar en VIM, no podemos usar el atajo de teclado Ctrl-v. Sin embargo, podemos usar la siguiente configuración para poder hacerlo

imap <C-v> <C-o>"+p

Dicha configuración hay que guardarlo en el archivo ~/vimrc (en el caso de neovim usar ~/.config/nvim/init.vim).

¡Eso es todo!

Uso de Software Libre en el Instituto Joaquín V. González

La entrevista al profesor Matías García arrojó resultados interesantes, de manera que decidí acercarme al "Joaquín".

Hay varios motivos que llevaron a Matías a usar software libre:

  • El problema ético de usar copias ilegales de software.
  • Las herramientas disponibles como software libre.
  • El uso de software libre en educacion es coherente con los principios pedagógicos, éticos y morales que se deben enseñar en toda institucion educativa, como por ejemplo no usar copias prohíbidas de software.

De alguna manera, Matías propuso una contrapropuesta utilitaria y ética al mismo tiempo.

El software libre es usado por algunos docentes y en mayor cantidad por alumnos que descrubren sus bondades. En cambio muchos docentes prefieren quedarse usando software privativo ya que consideran que es lo que pide el mercado.

Algunos de los ejemplos de software libre que se utilizan actualmente son:

Mientras tanto el software que siguen usando muchos docentes por resistencia al cambio es:

  • MS Windows 7 (a ser reemplazado el año que viene por la versión 10)
  • MS Office 2012
  • MS Visual Studio
  • Adobe Illustrator
  • Adobe Dreamweaver

Durante la implementación, dado que el departamente de soporte técnico no poseía conocimientos de software libre, Matías colaboró activamente en el proceso.

Los escollos más difíciles a sortear a mi entender de acuerdo a la entrevista son:

  • Falta de decisión política y/o institucional tanto a nivel del Instituto mismo como del estado.
  • Falta de un departamento permamente y profesionalizado de soporte técnico.
  • Pocos conocimientos técnicos.

Para complementar: las iniciativas para implementar y comenzar a usar software libre depende de esfuerzos individuales, a esto se le suma que no hay demasiada conciencia sobre las implicancias legales y/o éticas de las licencias de software-

Para actividades en aulas virtuales en algunos casos usan Google Classroom y en otros Moodle. Matías me comentaba que si bien la solución de Google no es libre y presenta ciertos reparos en cuanto a la privacidad, su uso tiene su explicación: presenta una solución homogénea, de rápido y fácil uso (la mayoría de los alumnos tiene una cuenta de Google al tener un celular con Android). El uso de Moodle depende que algún profesor lo instale, le de mantenimiento, etc. Algo similar sucede con una solución alternativa que le comenté como Nextcloud.

Mi propuesta: Jornadas para Docentes: Uso de tecnología en el aula

En este caso usar una solución que dependa de una infraestrucura de servidores propia es poco viable, teniendo en cuenta la carencia de personal dedicado para tal fin.

Por lo tanto debería ser software de escritorio y fácil de instalar y usar.

Sería interesante poder realizar unas Jornadas de Uso de Tecnología en Educación en el mismo Instituto abierta tanto para docentes. Podrían dividirse en grupos y plantear preguntas tales como:

  • ¿Qué espero que me aporte la tecnología?
  • ¿Por qué uso determinado programa?
  • ¿Cómo enseño informática?
  • ¿Es el modo conductual y/o constructivista el único posible?
  • ¿Qué condiciones de uso tiene el software que hay en las computadoras el instituto?

Luego podría haber una charla que llamaría ¿Hay vida más allá de PowerPoint?

El objetivo es mostrar:

  • Alternativas similares: LibreOffice Impress
  • Alternativas con diferente interfaz: Calligra Stage
  • Alternativas "para salir de la caja": Por ejemplo, hacer un video con kdenlive
  • Alternativa techie (para profesores de informática): Presentaciones con markdown