Configurar un servidor de Minecraft para aprender a programar

minecraftpython

En la entrada anterior “Aprender usando Minecraft” explicaba el movimiento que está habiendo en educación en torno al uso del juego Minecraft. Ahora me remangaré y comentaré cuál es la configuración más recomendable para un centro educativo (y en realidad, para cualquier casa de familias con más de un hijo que quieran jugar juntos).

El primer paso es montar un servidor de Minecraft, para que todo ocurra dentro de nuestro centro, sin necesidad de salir a Internet y teniendo el control sobre quien está en nuestro mundo y las cosas que hace. Existen muchos servidores disponibles, empezando por el que ponen a nuestra disposición los propios creadores del juego. Sin embargo, como mi interés se centra en la programación en Python, las dos opciones más usuales son el servidor Craftbukkit y Spigot. Tal y como explican aquí, la elección más lógica es Spigot, puesto que proporciona las mismas características que los demás, pero con menor consumo de memoria y CPU.

Por motivos de licencias, los programadores de spigot tienen disponible el código fuente del servidor, y las instrucciones completas para compilarlo, pero no ponen disponible para descargar el servidor ya compilado. Teniendo algunos conocimientos de programación en Java y herramientas como Maven instaladas, la compilación es muy sencilla y me llevó menos de 10 minutos en un ordenador con procesador Intel I5. Para aquellos que no tengan ganas, tiempo o conocimientos, siempre hay samaritanos disponibles que viven en países que no tienen  leyes estúpidas como la LPI española que me impiden poner aquí el enlace para descarga. Uno de estos samaritanos está en http://spigotmc.info/ y en esta web se puede encontrar la descarga del archivo spigot.jar, o spigot_server.jar o spigot-1.8.jar que necesitamos para poner en marcha el servidor. El nombre puede variar según el sitio de descarga, o si lo compilamos nosotros, compilándolo uno mismo toma la nomenclatura spigot-version.jar, lo que en mi caso me proporcionó el archivo spigot-1.8.jar. Lo más simple es renombrar cualquiera de ellos a spigot.jar y a este nombre me referiré de ahora en adelante.

Pasos para la puesta en marcha del servidor:

  1. Crear un directorio en el ordenador en el que queramos ejecutarlo, con el nombre que queramos, por ejemplo: servidor-minecraft
  2. Copiar en ese directorio el archivo spigot.jar
  3. Abrir un terminal, desplazarse al directorio servidor-minecraft y ejecutar, dentro de ese directorio:
  4. El servidor arrancará, creará los archivos de inicio necesarios y parará para que aceptemos la licencia.
  5. Editamos el archivo que se ha creado con el nombre eula.txt, y reemplazamos donde pone eula=false por eula=true.
  6. Ahora ya podemos arrancar el servidor para jugar, con el comando

Para parar el servidor escribimos el comando stop. Existen muchos comandos disponibles para el operador (persona que gestiona el servidor) en los servidores de Minecraft, siendo algunos de los más útiles kick para expulsar a un jugador o say para enviar un mensaje a todos los jugadores.

Con los pasos anteriores se puede jugar ya en modo multijugador desde el cliente de Minecraft, suministrando la dirección de red del ordenador donde hemos arrancado el servidor. Sin embargo, mi intención no es montar un servidor para jugar, sino para aprender a programar jugando. Por esta razón sigo algunos pasos más.

Primero de todo, edito el archivo server.properties que se ha creado en el directorio en el que hemos arrancado el servidor. En ese archivo modifico estos parámetros:

  • gamemode =1 #Para arrancar el juego en modo creativo, donde los jugadores no mueren, en lugar de en modo supervivencia
  • allow-flight =true #Es bueno que los jugadores puedan volar para tener buena perspectiva del mundo que están construyendo
  • online-mode = false # Para que no sea necesaria la autenticación de los jugadores en los servidores de Minecraft, ahorrando control y no necesitando Internet.
  • motd= Servidor del instituto # o lo que uno prefiera para que al elegir el servidor los jugadores tengan claro cuál es el nuestro

Ahora, para poder programar en Python, es necesario descargar el plugin RaspberryJuice. Si usáramos Minecraft en una Raspberry Pi no sería necesario, pero como desgraciadamente no es siempre el caso, si queremos que nuestros alumnos puedan usar Python debemos descargar de ahí el archivo raspberryjuice-1.5.jar (actualmente es la versión 1.5, en el futuro podría ser otra) y colocarlo en el directorio plugins que se habrá creado dentro del directorio donde tenemos el archivo spigot.jar. No hay que hacer nada más que dejar ahí el archivo, la próxima vez que arranquemos el servidor ya se podrá alterar el mundo con Python.

Una vez que tenemos el servidor en marcha en nuestra escuela, instituto o en nuestra casa, los siguientes pasos habrá que darlos en el ordenador del alumno o jugador. El servidor no necesita de ningún paso más. En la próxima entrada del blog explicaré y mostraré algunos ejemplos de programación en Python usando Minecraft.

Finalmente, hay algo importante que me gustaría recalcar: Minecraft no es software libre, aunque a su alrededor han surgido numerosas comunidades de usuarios que, con software libre, lo están modificando o creando servidores para el juego. Incluso los propios creadores del juego han hecho la versión educativa gratuita para Raspberry Pi, por lo que no parece que tengan inconveniente en que se use para la enseñanza en otros entornos. Los pasos aquí descritos lo están con la finalidad de darle un uso educativo. Si se quiere montar un servidor de Minecraft sólo para jugar mi recomendación es que usen algunas alternativas libres que hay al juego, algunas de ellas muy buenas y de mejor calidad técnica. Hay numerosas disponibles, entre las que destacan, desde mi punto de vista Tesarology , Craft y Minetest.

 

 

 

Publicado en: Educación, TIC

Aprender usando Minecraft

minecraftpython

Aunque no es precisamente un juego nuevo, en los últimos tiempos parece que Minecraft ha explosionado, después de haber conseguido la masa crítica necesaria. Desde niños de primaria hasta veinteañeros pasan horas en un juego que, pareciendo tener  gráficos de los años 80, hace las delicias de los millennials.

En el juego los participantes se crean su propio mini-universo, usando muchas de las herramientas disponibles. Poco a poco muchos jugadores han ido un paso más allá y han ido añadiendo nuevas características al juego. Minecraft es un juego que nunca acaba porque su flexibilidad permite modificarlo y agrandarlo día a día. Aprovechando estas características se está usando directamente en educación en múltiples ámbitos, desde las matemáticas al diseño pasando por la geografía o el arte.

En mi caso, por deformación profesional y por pura lógica al tratarse de un programa de ordenador, he comenzado a indagar como usarlo para para aprender a programar. Fundamentalmente se puede usar Minecraft para aprender a programar en Javascript y en Python. De momento me voy a centrar en la programación en Python.

La configuración más sencilla para programar el mundo de Minecraft en Python es mediante el empleo de una Raspberry Pi, puesto que la empresa dueña de los derechos de Minecraft ha hecho una versión gratuita especial para la Raspberry. Con esta versión se puede jugar inmediatamente y empezar a programar desde el primer momento si se usa la distribución oficial para Raspberry: Raspbian. En esta distribución derivada de Debian se encuentra disponible tanto el propio juego como las librerías de Python necesarias.

El uso de Minecraft con la Raspberry Pi en un centro educativo tiene dos inconvenientes:

  • Desgraciadamente no todo el mundo tiene disponible estas tarjetas para los alumnos
  • La configuración es en modo mono-usuario, no existe un servidor al que conectarse, con lo que cada alumno tiene su propio mundo, en lugar de que haya un mundo compartido por todo el aula o incluso el centro.

Como esta entrada está quedando ya demasiado larga, en entradas posteriores explicaré como montar un servidor de Minecraft que cree un mundo en el que puedan jugar varios alumnos simultáneamente y cómo añadirle el plugin necesario para poder programar en Python y construir o alterar el mundo.

 

Publicado en: Educación, TIC

PGP key transition statement

It is time to begin transitioning to my new key (in fact, it was time to do it a long, long time ago). Click this link to find the properly signed, full transition statement. I m not going to paste the full statement into this post, but my new key is:

 

It can be downloaded from http://www.itais.net/pubkey.gpg

If you signed my old key, I d very much appreciate a signature on my new key, details and instructions in the transition statement. I m happy to reciprocate if you have a similarly signed transition statement to present.

Publicado en: Debian

Usos no habituales de ssh

Para la mayoría de los administradores de sistemas, ssh es la herramienta más usada con diferencia. Su función principal: establecer un acceso seguro a un ordenador o servidor a través de la red.

Sin embargo, la página man de ssh lista una gran cantidad de opciones que no son demasiado conocidas. Veamos un par de casos en los que, si tenemos un ordenador con ssh accesible desde Internet, estamos salvados:

CASO 1: Hace pocos días, comentaba con un antiguo alumno el problema que tenía para acceder a un servidor que estaba conectado a Internet a través de una tarjeta 3G: La mayoría de las compañías telefónicas dan acceso a Internet a través de NAT si estás usando 3G, con lo que tu ordenador o móvil no tiene nunca una dirección IP pública a la que se pueda acceder. Si queremos entrar en ese ordenador con nuestra contraseña ssh viene en nuestra ayuda mediante la posibilidad de hacer un túnel inverso: ssh conecta a un servidor al que sí tengamos acceso generando un túnel encriptado, y una vez conectado, podemos entrar en el primer ordenador a través del túnel que la primera conexión creó.

red2

En el ordenador con la conexión 3G ejecutamos:

Entramos en el servidor y ejecutamos:

Nos pedirá la contraseña del usuario correspondiente en el ordenador con la conexión 3G y voilá ¡estamos dentro!

 

CASO 2: A veces es necesario saltarse las limitaciones que en algunas redes o intranets existen. Algunas de ellas tan absurdas como no poder hacer ssh a un servidor en Internet. De nuevo ssh viene a nuestro auxilio.

En el servidor , editamos el archivo /etc/ssh/sshd_config y añadimos una línea con el contenido:

Con eso nuestro servidor escuchará conexiones ssh también en el puerto 443. Ese es el puerto usado para las conexiones https, por lo que si en nuestra red tenemos acceso a páginas seguras, ya podemos acceder a un servidor via ssh.

Ahora, desde la máquina en la red limitada tan sólo tenemos que hacer

y ya estaremos en un ordenador con acceso a Internet via ssh.

 

En otra ocasión comentaré las posibilidades del archivo config en nuestro directorio .ssh, que permite hacer muchas de estas cosas automágicamente.

Publicado en: Debian, Linux

Robótica asequible en la enseñanza secundaria

Parámetros D-H del robot

Durante el pasado curso, fui orgulloso profesor de TIC de, entre otros, los alumnos que ganaron la First Lego League en Extremadura. Su entrenamiento con los robots de Lego fue posible por la inestimable colaboración de alguien externo al instituto, que prestó sus conocimientos, ganas y el equipamiento necesario para las prácticas y el aprendizaje. Aun viendo el enorme potencial, sobre todo por su facilidad de uso, del sistema Lego, su precio lo hace inalcanzable a muchos alumnos y departamentos de enseñanza.
Robot para la educación en África
En paralelo, este año, el Ciclo de Grado superior en el que también doy clase, evoluciona en su temario y normativa a ser el ciclo de Automatización y Robótica Industrial. Está claro que, poco a poco, el mundo de los robots va pasando ya de la universidad y la industria a las aulas. Mi sorpresa ha sido mayúscula cuando he encontrado un par de proyectos espectaculares que, a bajo o muy, muy bajo precio permitirían empezar con la robótica en las asignaturas de TIC, Tecnología y, por supuesto, en muchos Ciclos formativos que tengan relación con la electrónica, electricidad o informática.

El primero de ellos son estas propuestas para un  par de robots de bajo coste para la educación en África. No sólo el coste es muy bajo (en torno a los $10, sí ¡diez! dólares)  sino que los proyectos están excelentemente documentados. Incluyen tanto el software como el hardware necesario y, en uno de los modelos para los más avanzados, las obtención de los parámetros D-H que permiten modelar la cinética del robot.

El segundo proyecto es algo más caro, en torno a los 200 $, pero lo original de la idea y lo espectacular del resultado hacen que merezca la pena intentar llevarlo a cabo. Se trata de una mano robótica en la que el autor ha tenido la genialidad de usar una cadena de bicicleta para fabricar los dedos, dándole así una apariencia “manual” y el agarre necesario para poder manipular objetos. El proyecto puede verse completo, con todos los detalles para la construcción, incluyendo vídeos en estas páginas web.

Publicado en: Educación, Robótica

20 años de Debian

Hoy mi distribución Linux de cabecera ha cumplido 20 años. En el mundo informático eso es todo un record. Empresas como Google no habían nacido cuando Ian Murdock puso en marcha la distribución en la que el usuario puede ser parte en cualquier momento.

Empecé con Debian como usuario cinco años después de su nacimiento, como desarrollador algunos años más tarde, expecialmente a partir de mi implicación en el proyecto LinEx. En 2004 subí mi primer paquete a la distribución oficial: https://lists.debian.org/debian-devel-changes/2004/11/msg00068.html y desde 2007 guardo con cariño el correo en el que me comunicaban oficialmente mi paso a Debian Developer, con todos los derechos y obligaciones que eso implica.

Son muchos años en los que he conocido a gente extraordinaria, técnica y humanamente, y aunque ultimamente los veo menos, desde aquí mi saludo a todos ellos y mi pequeña aportación a soplar las velas de esta extraordinaria tarta de cumpleaños.

 

¡Felicidades Debian!

Foto de familia de la Debconf 2013, Zurich

Debconf 2013, Zurich

Debian is the operating system that makes me free.

Debian is a family gathered around great idea.

Publicado en: Debian, gnuLinEx

Las nuevas nubes y las empresas de hosting

Durante este verano, por un medio o por otro (principalmente a través de la inestimable lista de correo de web2py) me he enterado de varias “nubes” para alojamiento de proyectos web.

Todas estas nubes forman parte de una segunda generación: Te olvidas de las complicaciones que tiene hacer un deploy en sitios como Amazón, puesto que te dan todo listo. Evidentemente tienen restricciones que no tiene una máquina virtual en Amazón, pero te libran de la mayor parte de la parafernalia y te dan toda clase de servicios: desde distintos tipos de bases de datos a servidores no tradicionales como Node.js, ssh, o soporte de casi cualquier lenguaje de software libre disponible: js, java, php, python, perl….

Para los que hace un tiempo que dejamos php por parecernos imposible hacer una programación decente con él, y nunca nos ha convencido la monstruosidad que suponen las API de Java, Python se ha convertido en nuestra tabla de salvación, que con cosas como Django o Web2py nos permiten hacer con relativa facilidad aplicaciones serias y bien hechas. Sin embargo, el problema era encontrar un hosting que admitiera estos frameworks y tuviera un precio razonable para los que no buscamos hacer páginas web comerciales  con miles de visitas. Los hostings de bajo precio sólo admiten normalmente php.

Sin embargo, ahora no veo muy bien que salida pueden tener estos hostings de bajo precio si a precio cero ahora puedo tener disponible mucho más espacio web, capacidad de proceso y el uso de múltiples lenguajes de programación sin casi restricciones en los nuevos alojamientos en nube. O en no mucho tiempo se reciclan y eliminan algunas de sus restricciones o todos estos hostings que hay por menos de 100 € /año tienen sus días contados, por el simple hecho de que no merece la pena pagar por algo que otros me dan gratis, y con la posibilidad de escalar hasta “el infinito” si por casualidad mi aplicación se convirtiera en un éxito y me animara a pagar por su consumo de CPU y ancho de banda.

En resumen, para los que les pique la curiosidad aquí están los tres mejores sitios disponibles (a día de hoy y en mi limitado conocimiento:

  • Dotcloud: con dos servicios gratuitos por email con el que te des de alta, contando como servicio tanto www como una base de datos postgresql o mysql. Es decir, si tienes una aplicación que tire de estas bases de datos, consumes los dos servicios gratuitos disponibles. Tiene documentación para instalar fácilmente bases de datos entornos de programación completos de los más conocidos en el mundo del software libre: http://docs.dotcloud.com/services/roadmap/ . Como inconveniente está la necesidad de instalar una aplicación (libre, en Python) en el ordenador desde el que queramos enviar los archivos a Dotcloud. Esto puede ser un inconveniente para los habituados al ftp, pero una vez que se aprende a manejar tiene mucha más flexibilidad, potencia y posibilidades, permitiéndonos entre otras cosas hacer ssh al entorno donde está alojada nuestra aplicación.
  • Picloud, con 5 horas de CPU gratis. Luego es de pago, pero a unos precios muy bajos
  • FluxFlex, con 3 aplicaciones gratis , enlazado con github permite poner una aplicación en marcha en cuestión de unos pocos segundos. De momento tiene una pega importante con el tamaño máximo de archivo a subir mediante POST, que es de tan solo de 100 KB
Etiquetado con: ,
Publicado en: Linux

Debian packages for web2py

Some time ago I discovered the easy of use of Python and I fell in love with it : it’s a very productive language, easy to understand, multiplatform, multipurpose and with a lot of documentation and  free code around to use and learn from.

Later, I discovered Django and felt more or less confortable with it. Then, about a year ago I found web2py and I fell in love again for exactly the same reasons I like Python. web2py is to web frameworks what Python is to languages: easy to read, multipurpose, jQuery integration, with free documentation, coding and checking the results of your code without leaving the web browser, lots of examples and free code to learn… much easier to understand than Django and (from not my only personal point of view) much more productive.

For some time, I’ve been using web2py starting it right from its sources. Now I’ve finished packaging it for Debian, so Debian and any of its derivatives (as Knoppix, Ubuntu, LinEx, etc.) can install it as a package.

I’ve just uploaded the packages and sources to the New Debian queue where they still have to pass the check of the ftpmasters to be (or not) accepted in the Debian repository. In the meantime, the packages are available at:

http://people.debian.org/~jredrejo/web2py/lenny/ for old releases with Python 2.5 as default python version.
http://people.debian.org/~jredrejo/web2py/squeeze/ for new releases with Python 2.6 or 2.7
Two packages are created:
  • python-gluon: with web2py libraries, needed to server web2py applications using Apache or other web werver
  • python-web2py: (depending on python-gluon) : with web2py rocket server and admin, welcome and example applications.
After installed, if a desktop environment (like KDE or Gnome) is used, web2py can be run from the menu Applications->Programming
This will launch a gui to start the server, and the applications will be stored in $HOME/web2py
If web2py is launched from a terminal, the application will be stored in the directory where it’s launched from (whenever write permissions are allowed, if not it will be done again at $HOME/web2py)
A README.Debian is also installed at /usr/share/doc/web2py-gluon/ with more details on running or installing web2py applications in Debian based distributions, including documentation and an example configuration file to use Apache instead of the built-in server.
You can watch and enjoy some of the web2py features at http://www.web2py.com/examples/default/videos . As an example, if you’re a lazy programmer, take a look at http://www.vimeo.com/16048970 to know how to build a web site with authentication, databases, logging, different layouts, etc. in less than 8 minutes ;)
PAA stampSupport the candidature
.
.
Off topic: I urge you all to read http://www.cenatic.es/swlppa/en and support personally or as a collective the Free and Open Source Software Community as a candidate for the Prince of Asturias Awards 2011 in the International Cooperation category
.
Etiquetado con: , ,
Publicado en: Debian, Python, Web2py

Concurso de Google para estudiantes

Acaba de publicarse la noticia de que Debian ha sido aceptada para participar en el concurso Google Code-in

Es un concurso pensado para pre-universitarios, es decir para estudiantes de ciclos formativos, secundaria y bachillerato que tengan entre 13 y 18 años.

Las instrucciones de participación a través de Debian están descritas en http://wiki.debian.org/GoogleCodeIn2010

En resumen se trata de realizar colaboraciones relacionadas con Debian y el software libre,  mediante programación, documentación, traducciones, gestión de calidad, seguridad, etc.

Si algún profesor (con sus alumnos) o estudiante extremeño se anima a participar,  que no dude en ponerse en contacto conmigo a través de este blog si no tiene un desarrollador Debian de mentor.

El 22 de Noviembre se abre el plazo para concursar y termina el 10 de Enero.

¡¡Ánimo mis muchachos !!

Etiquetado con:
Publicado en: Educación

Algunos ven las cosas claras con los libros y los portátiles

Me ha encantado la lectura de una entrevista con Juan González de la Cámara (Director  General   de GRAMMATA)

Y no sólo porque el tema de los libros electrónicos me encanta y soy un afortunado poseedor y “disfrutador” de uno de ellos.

En la entrevista hablan de los posibles modelos futuros, de la increible ceguera de las editoriales españolas (a las que les recomiendo sinceramente que se lean el libro de Enrique Dans, “Algo va a cambiar”, por su propio bien).

Sin embargo, lo mejor de la entrevista es la parte final dedicada al “mundillo” educativo. Voy a transcribir aquí directamente algunas líneas que merecen enmarcarlas. Por dos razones: porque expresan con toda rotundidad la pura verdad de lo que ocurre con los ordenadores en la administración pública, y porque además de criticar lo que se hace mal, propone una solución que, a mi entender, va en el camino correcto y al que, por supuesto, ninguna consejería de educación se va a apuntar. No vaya a ser que se le quejen las Santillana, Anaya y demás editoriales de turno, que parece que son las que mandan en la educación en nuestra querida España.

“Parece que la administración está más por regalar portátiles que acaban usándose para que los hermanos mayores liguen vía Facebook; o por repartir libros en papel que deben devolverse virgenes (sin subrayar) ya que son un prestamo”

“Para ello, ha decidido la generación de contenidos propios, que sean 100% conformes con los currículos aprobados oficialmente. Basandose en contenidos libres, un equipo de coordoinación pedagogica integrará la futura “Biblioteca Escolar Libre GRAMMATA”

Muchísimas gracias a los editores del blog http://mipapyreebookreader.blogspot.com/ por su entrevista. Ya tienen un seguidor más de sus rss….

Etiquetado con: ,
Publicado en: Educación, gnuLinEx, TIC