7 de septiembre de 2017

Uso de FET para generar horarios para el colegio.

El uso básico del programa FET para elaborar horarios escolares, se puede encontrar en bastantes vídeos y manuales.

Esquemáticamente, para empezar hay que introducir los siguientes datos básicos:
  • Nombre del Centro.
  • Días por semana (5 - lunes, martes, miércoles, jueves y viernes).
  • Número de períodos/sesiones con las horas de inicio y fin (9:00, 9:45, ...).
  • Nombre de las materias que se imparten (Lengua, Matemáticas, Inglés, ...).
  • Tipos de materias que se imparten (Infantil y Primaria).
  • Profesores con los que cuenta el centro (Fulanita, Menganito, Sutanita, ...).
  • Grupos de alumnos que se quieren gestionar (I3A, I4B, 1ºA, 2ºB, ...).
  • Y por último y más importante las actividades.
 Las actividades hay que establecerlas especificando:
  • El profesor o profesores que entran en la sesión.
  • El tipo de actividad, si hemos distinguido entre Infantil y Primaria por ejemplo.
  • El grupo o grupos de alumnos que participan en la actividad.
  • La materia que se va a impartir en dicha sesión
  • El número de alumnos (se puede dejar en automático con -1)
  • El número de sesiones de esta actividad. ¡Pero ojo!
    • La duración se refiere a un mismo día
    • Si en la semana son 7 sesiones, dividiremos (split) en 5 días hábiles, y a dos de esas sesiones les daremos una duración de 2.
    • El Mínimo de días normalmente será 1, y el peso de esa restricción (weight) lo pondremos al 100% para que sea inflexible, o lo reduciremos en caso de que no lo sea.
Una vez introducidos los datos, ya podemos Generar el horario en la pestaña Horario. Pero normalmente tendremos que introducir antes otras restricciones, principalmente las de la pestaña Tiempo.
  • En Pausa estableceremos la hora del recreo.
  • En Profesores las horas de disponibilidad, no disponibilidad semanales.
  • En Actividades están las más útiles en mi opinión.
    • Actividades que tienen unos tiempos preferidos de tiempo
    • Mín de días entre grupos de actividades.
Una vez generado el horario nos dirá hasta qué punto se están cumpliendo las restricciones. Si nos sale cero o una cifra pequeña es que lo está resolviendo bien. Si es un horario complicado puede tardar en generarlo un minuto o dos. También nos dirá si hay alguna combinación imposible o en conflicto.

Seguidamente podemos consultar los resultados en la misma pestaña de Horario, principalmente lo podemos hacer por Profesores o por Alumnos. Dispondremos de las opciones de Tiempo y Lugar para bloquear actividades que nos interesen. Siendo un truco importante el hecho de que la última actividad que bloqueemos o desbloqueemos aparecerá al final de la lista de restricciones de Tiempo o Lugar al consultarla al completo con Todas.

Instalar el programa FET en Ubuntu

FET es un fantástico programa para poder crear horarios complejos para tu escuela o academia, se puede instalar en Ubuntu mediante dos métodos:

Forma sencilla


A través de la del Centro de Software de Ubuntu. No tiene ningún inconveniente, salvo que por lo general la versión que se instala no está totalmente actualizada.

También resulta sencillo hacerlo a través de terminal con el comando:

sudo apt-get install fet

Forma manual

Descargando su código fuente (http://lalescu.ro/liviu/fet/download.html) y compilándolo, que es principalmente de lo que va este artículo.

Lo primero que hay que saber de FET es el hecho de que está programado con el framework Qt. Por lo tanto para compilarlo, necesitaremos hacer uso del comando qmake, que normalmente no tendremos instalado y que en primer lugar deberemos de instalar del siguiente modo:

sudo apt-get install qt-sdk

Una vez disponemos del kit de desarrollo, nos vamos desde el terminal a la carpeta donde hemos descomprimido, y generamos los makefiles con el siguiente comando:

qmake fet.pro

Tardará unos diez minutos dependiendo de tu equipo, y luego terminamos de compilar poniendo tan sólo:

make

Una vez termine, ya estará listo el binario que podremos ejecutar directamente:

./fet

Y eso es todo.

7 de enero de 2017

Compartir escritorio de Ubuntu 16.04 de forma remota a través de Internet

En ocasiones, es muy útil poder acceder al escritorio de una máquina que no tenemos delante, y así resolver cualquier cuestión. Para ello existen las soluciones RDP, o Protocolo de Escritorio Remoto. En Ubuntu 16.04, vienen implementadas en la instalación básica, pero en muchos casos no conseguimos hacer que funcionen como nos gustaría. En este artículo voy a centrarme en los pequeños problemas que pueden dar y cómo se solucionan.



En primer lugar entender cómo funciona

El funcionamiento se hace a través de dos programas diferentes, el servidor y el cliente. El servidor lo haremos funcionar en la máquina que quiere compartir su escritorio, y el que viene instalado en Ubuntu se llama concretamente Compartición del escritorio. Por otra parte el cliente se ejecutará en el dispositivo desde el que queremos ver el escritorio de forma remota, y aunque hay varios el que viene por defecto actualmente se llama Cliente de escritorio remoto Remmina, o simplemente Remmina.

Otro punto importante a destacar, es que dichos programas pueden suponer un claro problema de seguridad por lo que su configuración inicial, sólo permite que funcionen dentro de la red local. Es decir, al hacer funcionar el servidor, abrirá un puerto TCP (por defecto el 5900) que sólo podrá ser visto por clientes que se encuentren dentro de la red local.

Eso no significa que no funcione igualmente bien desde equipos fuera de esa red local, desde cualquier otra conexión en Internet, y es lo que voy a explicar más adelante.

Por último aclarar que el protocolo que emplea este sistema se denomina VNC, y que existen otras aplicaciones que lo gestionan tanto para clientes como servidores. Por ejemplo para Android un cliente que está muy bien es VNC Viewer.

Configuración del servidor

Cómo he dicho antes, me limitaré a explicar los programas que actualmente trae Ubuntu, empezando por el servidor.

Poner en marcha el servidor, se hace sencillamente ejecutando el ya mencionado Compartición del escritorio, y marcando en la ventana de configuración que aparece, la opción de Permitir a otros usuarios ver mi escritorio. A partir de ahí se pone el servidor en funcionamiento y podremos acceder al mismo desde la red local.




Voy a explicar brevemente sus opciones.
  • Para permitir a otros interactuar con el escritorio, selecciona Permitir a otros usuarios controlar su escritorio. Esto permitirá a la otra persona mover su ratón, ejecutar aplicaciones y ver archivos en su equipo, dependiendo de la configuración de seguridad que esté usando.
  • Debe confirmar cada acceso a esta máquina. Si deshabilitas esta opción, no preguntará si desea permitir que alguien se conecte al equipo. Teniéndola activada es necesario estar presente para que puedan conectar.
  • Para solicitar a otras personas que usen una contraseña cuando se conecten al escritorio, selecciona Solicitar al usuario que introduzca esta contraseña. Si no se activa esta opción, cualquiera puede acceder.
  • Si el router de acceso a Internet es compatible con el protocolo UPnP y está habilitado, puede permitir que otros usuarios que no están en su red local vean su escritorio. Para ello, selecciona Configurar automáticamente el router UPnP para abrir y redirigir los puertos. Esta opción no es suficiente por si sola para compartir fuera de la red local.
  • Mostrar icono en el área de notificaciones. Para poder desconectar a alguien que está viendo el escritorio, hay que habilitar esta opción. Si seleccionas Siempre, este icono estará visible independientemente de si alguien está conectado o no.
Como he mencionando antes, la configuración es sencilla y en local funciona sin problemas una vez entendemos sus opciones. El caso más problemático será cuando lo que queremos es salir a Internet. Para eso lo mejor es dejar activada la opción UPnP, pues hoy en día casi todos los routers la soportan bien. Pero además debemos hacer algo más.


Hay un par de apartados de la configuración a los que sólo podemos acceder a través de dconf. Para cambiar la configuración de dconf, lo podemos hacer a través del terminal o de forma gráfica. Para hacerlo de forma gráfica hemos de instalar su editor:

sudo apt install dconf-editor
Luego lo llamaremos y ejecutaremos desde el dash o tablero, y nos dirigiremos al apartado org.gnome.desktop.remote-access


Dentro de dicho apartado, reconoceremos varias de las opciones que nos aparecían en la ventana de preferencias, y algunas más que son clave para lo que buscamos. Concretamente debemos modificar las opciones require-encryption y network-interface.

La opción require-encryption la deberemos desactivar en la mayoría de los casos, pues el tipo de cifrado puede que no sea el mismo para el dispositivo del servidor y del cliente.

La opción network-interface la debemos establecer correctamente, pues dejándola en blanco parece que limita la apertura del puerto a la red local. La deberemos especificar dependiendo de la interfaz que nos conecta a Internet y que podemos conocer con el comando ifconfig. Por lo general los valores válidos serán eth0 o wlan0, pero dependera del equipo concreto.

Conexión mediante el cliente

No voy a entrar en muchos detalles, la forma rápida de acceder a nuestro servidor una vez configurado, es usar un cliente, es este caso el ya comentado Remmina.


Es indispensable conocer la dirección IP del servidor, tanto si estamos conectando de forma local, como si lo hacemos a través de Internet. En el primer caso la podemos conocer usando el comando ifconfig, que nos proporcionará una IP del tipo 192.168.1.100

En caso de querer conectar a través de Internet una forma fácil de conocer la IP pública es acceder desde el mismo a alguna web que nos la proporcione, como por ejemplo http://www.cualesmiip.com/ y que será del tipo 216.58.210.163. También se puede obtener mediante el siguiente comando:

curl ipinfo.io/ip

Obviamente nuestro cliente no debe coincidir con la IP del servidor, deberán ser diferentes pues se tratan de dispositivos distintos con conexiones diferenciadas.

Pues bien, aclarado todo lo anterior, en la ventana de Remmina seleccionaremos como protocolo a usar VNC, escribiremos la dirección IP del servidor y le daremos a Conectar. Tras lo cual se nos abrirá el escritorio de forma remota y podremos observarlo o interactuar con él según la configuración específica que esté establecida en el servidor.