Categoría : Programacion

Se llama programación al acto de crear un programa de computadora, un conjunto concreto de instrucciones que una computadora puede ejecutar. El programa se escribe en un lenguaje de programación, aunque también se pueda escribir directamente en lenguaje de máquina, con cierta dificultad. Un programa se puede dividir en diversas partes, que pueden estar escritas en lenguajes distintos.

3D Simon, juego javascript, WebGL + ThreeJS

He hecho un pequeño juego en Javascript utilizando la librería ThreeJS de Mr doob, los modelos están diseñados en Blender.

Está basado en el juguete retro “Simon Says” en el que hay que repetir una secuencia de colores que va creciendo en valores.

He registrado dominio propio para el juego, con un anuncio cuando fallas la combinación, para poder pagar el Ferrari claro.

Si estás interesado en ver el código fuente, basta con visualizar el código html de la web, no hay nada ofuscado.

Prueba 3DSimon en http://www.3dsimon.com

Todas las opiniones son bienvenidas.

Elevator Saga, juguemos a programar un ascensor.

Elevator Saga es un juego para programadores, se basa en alterar el código fuente que hace funcionar un sistema de ascensores para completar el objetivo de cada nivel, transportar cierta cantidad de personas en un tiempo limitado.

Elevator Saga: Challenge #13

El lenguaje utilizado es Javascript.

El primer nivel es posible superarlo simplemente añadiendo una linea de código, los restantes hasta el 12 son bastante fáciles, basta con un poco de pensamiento lógico, pero a partir del 13 ya hay que pensar en optimizar las rutas para hacer el sistema más eficiente y permita transportar 100 personas sin que nadie espere más de 15 segundos con los 5 ascensores de que disponemos.

Muy entretenido y útil para aquellos que quieran mejorar su Javascript o lógica de programación.

¿Hasta que nivel has llegado tú?
¿Necesitas ayuda para superar algún nivel?, coméntalo y lo compartimos.

Juego: http://play.elevatorsaga.com/

Experimento visual, Multiplixel

Jugando a la par que aprndiendo con una Raspberry Pi, he montado un servidor Web apache y NodeJs para las comunicaciones por socket con el framework ws, Luego he programado una Web con WebGL y Three.js para los gráficos 3D y con WebSockets para las comunicaciones con NodeJS.

El experimento permite escoger un color y poner o quitar cubos en la escena, una idea sencilla que se complica al haber implementado el sistema multijugador a tiempo real.

La dirección url del experimento es: http://dide.technology/pixel.html
Si te interesa el código fuente, la parte de servidor en Nodejs, y la parte del cliente en HTML5 + Javascript.

Nota: Debido a que utiliza estándares de HTML5, para hacer funcionar el experimento, es necesario un navegador en color.
Nota 2: Este experimento es temporal, ya que necesita de un servidor de socket además de un servidor http, por lo que no estará para siempre, cuando pare el servicio quitaré la entrada, esto funciona en mi Raspberry Pi y por allí pasan más sistemas operativos que por la tienda del paki.

Raspberry Pi; Montando algo más que un media center (parte 3)

Esta es la tercera entrada del tutorial Raspberry Pi; Montando algo más que un media center.
Puedes acceder desde aquí al resto de entradas de este tutorial publicadas hasta la fecha:

Instalación del cliente bittorrent: Transmission

Transmission (Web Oficial) es un pequeño cliente bittorrent que instalaremos y configuraremos para que corra en la distribución linux, gestionaremos las descargas mediante su interfaz Web.
Para instalar transmission utilizaremos apt-get vía SSH:

sudo apt-get update
sudo apt-get install transmission-daemon

Alternativamente también puedes optar por la versión más ligera que han compilado la gente de xbian:

sudo apt-get install xbian-package-transmission

Esto dejará instalado y funcionando el servicio Transmission.

Varios comandos útiles:

  • Detener el servicio transmission:
    sudo service transmission-daemon stop
  • Iniciar el servicio transmission:
    sudo service transmission-daemon start
  • Reiniciar el servicio transmission:
    sudo service transmission-daemon restart
  • Comprobar el estado actual del servicio:
    sudo service transmission-daemon status
  1. Configuración de transmission y permisos:

    Antes de hacer totalmente funcional el servicio tenemos que editar el archivo de configuración:

    1. Detenemos primero el servicio para poder editar la configuración:
      sudo service transmission-daemon stop
    2. Abrimos el archivo para editarlo:

      /etc/transmission-daemon/settings.json

      Yo para editar estos ficheros uso FileZilla con el puerto y las credenciales del SSH por SFTP.

      Y editamos los siguientes valores:

      • download-dir: Carpeta donde transmission guardará las descargas.
      • incomplete-dir: Carpeta donde transmission guardará los archivos incompletos.
      • incomplete-dir-enabled: Poner a true para que transmission utilice la carpeta incomplete-dir.
      • peer-port: El puerto que utiliza tranmission para descargar torrents, se debe configurar en las NAT del router.
      • rpc-username: Nombre de usuario de la interfaz Web.
      • rpc-password: Contraseña de la interfaz Web, la escribimos plana que transmission ya se encargará de encriptarla al próximo incicio.
      • rpc-port: Puerto de la interfaz Web.
      • rpc-whitelist-enabled: Importante ponerlo en false si queremos acceder a la interfaz Web desde cualquier ip.

      Estos son los que yo considero más importantes, pero échale un ojo a todas las variables, son muy intuitivas.

      Tienes la explicación completa de todas las variables en el siguiente enlace: https://trac.transmissionbt.com/wiki/EditConfigFiles (inglés).

    3. Cambiamos el usuario que iniciará transmission modificando el fichero:

      /etc/init.d/transmission-daemon

      Cambiamos el valor de USER a root, si no hacemos esto transmission lanzará un error de permisos al iniciar las descargas.
    4. Ahora ya podemos volver a arrancar transmission con la nueva configuración:
      sudo service transmission-daemon start

    La interfaz Web de transmission ya debería funcionar, en mi caso sería: http://192.168.1.50:9091.

    Almacenar las descargas en disco USB o Pendrive:

    XBian monta automáticamente los discos usb, si lanzamos el siguiente comando:

    df -h

    Podremos ver nuestra unidad en el listado, algo como /media/usb0.

    Esta es la ruta de nuestro disco, con acceso root.

    Almacenar las descargas en una unidad de red SMB:

    Nota: es necesario haber instalado antes Samba, se explica en este mismo tutorial, un poco más arriba.

    1. Crear una carpeta vacía donde veremos el contenido de la unidad de red:
      mkdir -p /mnt/descargas

      Reemplaza descargas por el nombre que quieras para tu carpeta.

    2. Editar el fichero /etc/fstab, añadimos la siguiente linea al final:
      //192.168.1.40/descargas /mnt/musica cifs user=admin,pass=1234,rw 0 0

      La primera ruta corresponde a la ruta de la carpeta SMB remota, la segunda es la que hemos creado previamente, cambia los valores de user y pass por los correspondientes.

    3. Ahora solo falta recargar fstab para que haga efecto sin tener que reiniciar:
      mount -a

      Ya tenemos montada la carpeta remota descargas en /mnt/descargas, podemos probarlo listando el contenido por ejemplo:

      ls /mnt/descargas

      Podemos ver todas las unidades montadas con el comando:

      df -h

      Que producirá un listado similar a:

      Filesystem Size Used Avail Use% Mounted on
      rootfs 15G 941M 14G 7% /
      /dev/mmcblk0p2 15G 941M 14G 7% /
      tmpfs 38M 280K 38M 1% /run
      tmpfs 5.0M 0 5.0M 0% /run/lock
      tmpfs 10M 0 10M 0% /dev
      tmpfs 75M 0 75M 0% /run/shm
      /dev/mmcblk0p1 34M 11M 24M 32% /boot
      //192.168.1.50/series 3.7T 2.5T 1.2T 68% /mnt/series
      //192.168.1.50/peliculas 3.7T 2.5T 1.2T 68% /mnt/peliculas
      //192.168.1.50/musica 3.7T 2.5T 1.2T 68% /mnt/musica
      //192.168.1.50/descargas 3.7T 2.5T 1.2T 68% /mnt/descargas
      //192.168.1.50/incoming 3.7T 2.5T 1.2T 68% /mnt/incoming
      //192.168.1.50/juegos 3.7T 2.5T 1.2T 68% /mnt/juegos
      //192.168.1.50/software 3.7T 2.5T 1.2T 68% /mnt/software

      En mi caso, utilizo incoming para almacenar los archivos temporalmente mientras se descargan, una vez completados (y si no está flexget de por medio) pasan a descargas, de todo esto se encarga transmission.

    Automatizando las descargas con Flexget

    Flexget (Web Oficial) es un servicio que se ejecutará con la frecuencia que parametricemos y buscará en las fuentes rss que especifiquemos contenido que coincida con los criterios configurados para añadirlos a transmission, también es posible mover ficheros una vez completados así como enviar notificaciones, el formato del fichero de configuración de bastante complejo por lo que goza de muchas posibilidades y con una simple búsqueda en Google aparecen cientos de ejemplos.

    Veamos como instalar Flexget en XBian:

    1. Instalar flexget:
      sudo apt-get update
      ssudo apt-get install python-pip
      sudo pip install flexget

      Atualizamos el módulo python de transmission:

      sudo easy_install –upgrade transmissionrpc

      Si todo ha ido bien obtendremos la versión lanzando el siguiente comando:

      flexget -V

      Debería respondernos con un You are on the latest release conforme tenemos la última versión de flexget instalada.

    2. Archivo de configuración:
      Creamos una carpeta para el archivo de configuración:

      mkdir /root/.flexget

      Ahora tenemos que crear un archivo de configuración en esa ubicación (/root/.flexget) siguiendo el protocolo descrito en la Web Oficial: http://flexget.com/wiki/Configuration.

      Aquí pongo un ejemplo de un archivo de configuración que revisa tu cuenta de showRSS buscando los episodios nuevos de las series allí configuradas y los añade a transmission, luego envía un email con los torrent añadidos. Se pueden hacer maravillas con este archivo de configuración, internet está lleno de ejemplos y cada uno tiene sus necesidades, así que este queda como un mero ejemplo:

      1. Regístrate en showRSS: http://showrss.karmorra.info/.
      2. Añade tus series en la pestaña Your Shows.
      3. Consigue tu identificador accediendo a feeds → your feed address → Generate, verás el user_id en la URL del RSS (un número de 6 dígitos normalmente).
      4. Creamos el fichero config.yml en la ruta /root/.flexget/ modificando los valores de las variables por los que correspondan a tus credenciales del correo, tu cuenta de tranmission, tus series y demás, he marcado en rojo los valores que deberías modificar:
        presets:
        global:
        # Configuración de los parámetros del correo
        # Puedes deshabilitar el envio estableciendo: active a False.
        email:
        active: True
        from: tucorreo@gmail.com
        to: tucorreo@gmail.com
        smtp_host: smtp.gmail.com
        smtp_port: 587
        smtp_login: true
        smtp_username: tucorreo@gmail.com
        smtp_password: tupassworddecorreo
        smtp_tls: true
        tasks:
        download-rss:
        rss: http://showrss.karmorra.info/rss.php?user_id=tu_id_de_showRSS
        all_series: yes
        # Limita a 10 el número de espisodios (por cada llamada)
        limit_new: 10
        # Configuración del servidor transmission
        transmission:
        host: localhost
        port: 9091
        username: tu_usuario_de_transmission
        password: tu_password_de_transmission
        removewhendone: no

        sort-files:
        find:
        # Descargas de transmission
        path: /mnt/descargas/
        regexp: ‘.*\.(avi|mkv|mp4)$’
        accept_all: yes
        seen: local
        thetvdb_lookup: yes
        all_series:
        parse_only: yes
      5. Creamos una tarea cron para que se ejecute el script de flexget una vez cada hora:
        crontab -e

        y añadimos la siguiente linea al final del fichero (Ctrl+X para grabar y salir):

        @hourly /usr/local/bin/flexget –cron

        Puedes aprender más sobre como funciona cron en este artículo: Cron & Crontab, explicados.

    Pronto la cuarta entrega…

    Esta es la tercera entrada del tutorial Raspberry Pi; Montando algo más que un media center.
    Puedes acceder desde aquí al resto de entradas de este tutorial publicadas hasta la fecha:

Raspberry Pi; Montando algo más que un media center (parte 2)

 

Esta es la segunda entrada del tutorial Raspberry Pi; Montando algo más que un media center.
Puedes acceder desde aquí al resto de entradas de este tutorial publicadas hasta la fecha:

Primer arranque de XBian y configuración inicial.

Nota: Es importante conectar el cable de red antes de arrancar XBian por primera vez, nos facilitará las cosas aunque no es imprescindible.

Después de instalar XBian en la SD usando nuestro ordenador personal, insertamos la SD en la Raspberry Pi y arrancamos el sistema. Raspberry Pi no tiene botón de encendido ni de reinicio, por lo que con el simple hecho de proporcionarle alimentación eléctrica se iniciará.

XBMC arranca a la primera, sin preguntas salvo un mensaje de bienvenida, ya podemos utilizar el mando a distancia siempre y cuando sea compatible tu TV con el sistema CEC, si no es así podemos utilizar un teclado USB, si aún no lo has conectado, cuando lo hagas lo más probable es que Raspberry Pi se reinicie, don’t panic!.

Si notas que va algo lento, es normal, está actualizando los Addons que vienen instalados por defecto.

Contunuar leyendo

Raspberry Pi; Montando algo más que un media center (parte 1)

Esta es la primera entrada del tutorial Raspberry Pi; Montando algo más que un media center.
Puedes acceder desde aquí al resto de entradas de este tutorial publicadas hasta la fecha:

He instalado una serie de programas en una memória SD que usará la placa Raspberry Pi como sistema operativo y me permite usarlo como un estupendo Media Center (XBMC) en red, un cliente de descargas bittorrent (transmission) con las descargas automatizadas (Flexget) y un servidor Web (Apache) y quiero compartirlo detallando los pasos que he seguido para conseguirlo y algunos consejos para sacarle más partido a este estupendo cacharro.

Raspberry Pi:

Placa Raspberry Pi (Click para ampliar)El famoso Raspberry Pi fue diseñado con fines educati… bla bla bla… es el mejor y más barato juguete que he podido trastear últimamente. Si aún no lo conoces, échale un ojo al artículo de la Wikipedia antes de continuar:

http://es.wikipedia.org/wiki/Raspberry_Pi

 

Ventajas:

Una vez acabado nos permitirá:

  • Reproducir en la TV cualquier contenido (1080p incluido) almacenado en red (en un PC, Mac, Linux, en un NAS) o  conectando directamente un disco USB al RPi, también música y fotos.
  • Utilizar el mando a distancia nativo de la TV para controlar el XBMC.
  • Acceder a la biblioteca del XBMC a través de la Web o desde una App para Android / iOS.
  • Conectarnos mediante SSH para ejecutar comandos SHELL en el RPi.
  • Gestionar descargas bittorrent con el cliente Transmission mediante una interfaz Web y desde XBMC.
  • Almacenar las descargas de transmission en un disco USB o en una unidad de red Windows mediante Samba.
  • Automatizar las descargas de series y películas en base a un detallado archivo de configuración mediante Flexget y envio de informes mediante correo o whatsapp.
  • Gestionar el estado de los servicios (xbmc, transmission, ssh, apache2,..), reiniciar o apagar el RPi y otras utilidades mediante un panel de control creado en php.
  • Acceder a todos los servicios de configuración a través de internet configurando los puertos en el router.

Contunuar leyendo

Google te ayuda con la política de Cookies

De todos es sabido que según la Ley de Servicios de la Sociedad de la Información(LSSI),  los sitios web que hagan uso de cookies deberán incluir un procedimiento de consentimiento informado previo a su utilización (Más info PDF).

Google ofrece un servicio para facilitar el procedimiento de adaptación a dicha ley, www.cookiechoices.org.

Consiste en la inclusión de un fichero js que deberás almacenar en tu servidor y cuatro líneas de código Javascript.

El texto explicando la política de Cookies ya es cosa tuya.