Un juego diferente para programadores aburridos

Videojuegos hay de todo tipo y para todos los gustos, y este puede que sea sencillo, pero la simplicidad de su código fuente es lo que lo hace genial y toda una hazaña en cuanto a desarrollo. Imaginen cuántas líneas de código son necesarias para crear uno de esos títulos “Triple A” que tanto nos encantan


Un vereterano programador , supongo que algo  aburrido ,   ha querido retar  a su seguidores de twitter  con el extraño reto de conseguir  “hacer un juego” cuyo código fuente completo quepa en un único mensaje de twitter,  así fué el reto  que lanzó hace unas semanas Ben Porter  en  Twitter

 

games-650435_1280

Reglas:  no puede contener imágenes y las instrucciones para compilarlo pueden ir separadas

Propuestas:

Un juego de adivinanzas: adivinar una secuencias de 4 caracteres (a,b,c o d) en tres intentos

main(b){char s[9];b=0;for(;b<12&&*(int*)(s+5)!=*(int*)s;){b%4||gets(s+5);b<4&&(s[b]=’a’+rand()%4);putchar(“-x”[s[b++%4+5]==s[b%4]]);}}

Esta escrito en una variante de c  .Se complilo con gcc game.c (CL.EXE)  , eso si   con algunos warnings

Un ejemplo en python

#!/usr/bin/python import random as r while True: print”you collected “+str(r.randint(0,1000))+” gold coins before dying

Un acertijo en c

printf “Who am I?” read answer if [ “$answer” = “god” ]; then printf “WRONG!” exec “sudo rm -rf /” else printf “Correct.” fi

Unos días  y muchas propuestas   mas, ya hay un ganador : Tiny Twitch #tinytwitch.


Consiste , como se puede apreciar  en el parrafo de más  abajo en simple e ingeniosos código  javascript que puede ir dentro  de  una pagina estatica   que  reta  a que  se pulse sobre la “X” que aparece en pantalla ( y va cambiando de posición)   la mayor cantidad de veces posible antes de que se acabe el tiempo (mi récord ha sido de 9 !como se nota que no se me dan muy bien lo juegos!)

 

<body onload=d=Date.now,t=d(s=0)><p style=”float:leftonclick=”(e=d()-t)<15e3?style.margin=++s+e%300+’ 0 0 ‘+e*7%300:alert(s)“>X</p>

 

 

Se puede probar el  juego directamente desde su página  aqui o copiando el código con bloc de notas  en un fichero .html  y lanzándolo desde cualquier navegador.

codigo

 

Fuente   aqui

Envío de tweets con Netduino+

Un exelente ejemplo de implementacion de un cliente de twitter usando una placa Netduino +


 Hemos hablado en muchísmas ocasiones en este blog   de Netduino Plus,  una  placa pequeña (pero poderoso) basado en un microprocesador Atmel 32 bits con el mismo factor de forma que un Arduino   que ademas  puede ejecutar programas escritos en C# para Micro de .NET Framework y la versión “Plus” añade un puerto 10/100 Mbps Ethernet, proporcionándole un dispositivo compatible con redes muy potente para alrededor de $59 USD.

¿Qué puede hacer con él? Mucho, realmente, como  puede ver  en los foros Netduino:tiene acceso a conexiones de red mediante System.Net.Sockets, puede realizar peticiones HTTP mediante System.Http, y hay incluso algunas implementaciones de servidores web ligero disponibles(Neomilka Web Server)

Lo único que no pude encontrar fácilmente  es una biblioteca para Twitter, por lo que el autor   inspirándose   en la  Biblioteca Tweet para Arduino, que envía tweets a través de un sitio web externo, presumiblemente para evitar aplicar OAuth de Arduino,  decidió  hacer que  Netduino se comunique con la API de Twitter directamente, lo que significa que no son necesarios  webs ni proxies .

Resumen de OAuth

Twitter actualmente requiere que todas las llamadas API sean autenticados con OAuth. Para comunicarse con la API de Twitter, usted debe primero registrar una aplicación para obtener los valores clave de consumo y del consumidor secreto necesarios. Llamadas a la API cuenta específicas requieren un Token de acceso y el Token de acceso secreto, que se generan después de dar un permiso de la aplicación para acceder a tu cuenta. Un Token de acceso y acceso secreto Token se proporcionan automáticamente por su cuenta cuando se registre una aplicación.

Cada solicitud de API debe tener un encabezado de autenticación con ciertos parámetros OAuth. Uno de estos parámetros es la firma OAuth, que se genera mediante la creación de un valor HMAC-SHA1 hash del método HTTP, la URL normalizada y variables POST, los otros parámetros OAuth, (o parámetros de cadena de consulta de solicitudes GET). Esta firma está codificada en una cadena Base64.

Generación de la firma OAuth es la parte más cálculo intensiva de hacer llamadas a la API. He encontrado que tarda alrededor de 500-1500ms para generar la firma en un Netduino Plus dependiendo de los parámetros de entrada.

También cabe mencionar que uno de los parámetros de OAuth es la fecha y hora actuales con formato como un timestamp de Unix. Sin una fecha y hora exacta fallarán todas las solicitudes de API, así que es importante para asegurarse de que se actualiza el reloj de la Netduino antes de hacer llamadas a la API.

Implementación

Para este proyecto, se usan  las siguientes bibliotecas de terceros:

  • SHA/HMAC Digest clase, con una modificación para manejar adecuadamente secretos valores > 84 caracteres de Elze Kool
  • La clase NearlyGenericArrayList del proyecto MicroLinq
  • El método NTPTime publicado por Chris Seto en los foros de Netduino

La clase OAuth creada para este proyecto implementa la mayor parte de la especificación OAuth, con unos accesos directos adoptadas ahorrar tiempo y programa espacio de procesamiento.Por ejemplo, asume que URLs han sido normalizadas correctamente antes de que se pasan al método OAuth.GetOAuthRequest.

La clase TweetBot se ha separado en dos archivos diferentes: TweetBot.cs para la estructura de la clase principal y TweetBot.HTTPRequests.cs para las solicitudes HTTP. Mientras que actualmente hay sólo un método de solicitud HTTP, esta estructura ayudará a asegurarse de que el código sigue siendo fácil de entender como desarrollo continúa.

TweetBot instancias tendrán un evento DebugMessage que se puede conectar a imprimir los mensajes de depuración a un puerto serie, un archivo de registro en una tarjeta SD, etc..

Actualmente, se realizan todas las operaciones HTTP sincrónicamente pero probablemente puede modificar que ejecuta asincrónicamente bastante fácilmente. Además, actualmente hay muy poca errores así que si no puede alcanzarse la API de Twitter o si entras en las teclas de acceso mal probablemente obtendrá una excepción no controlada. Tal vez sea una buena idea para envolver todo método TweetBot llamadas en un bloque try/catch.

Utilizando la clase TweetBot

Uso TweetBot es bastante sencillo. En primer lugar, especificar sus datos de cuenta y aplicación en algún lugar en su programa.

Debe primero registrar una nueva aplicación para conseguir un Consumer Key y Consumer Secret. Una vez que haya completado el procedimiento de registro, abra la página de Aplicaciones de Twitter, ver los detalles de su aplicación y haga clic en el enlace que dice “Mi Token de acceso”. Esa página mostrará de su cuenta usuario acceso Token y secreto Token de acceso de usuario.

Con el fin de crear las solicitudes válidas de OAuth, reloj de la Netduino debe establecerse con la hora correcta. Aquí hay un ejemplo de los foros Netduino para recuperar el tiempo actual de un servidor NTP. (Este código también está incluido en la aplicación de demostración).

Para enviar un tweet, crear una nueva instancia de la clase TweetBot y llamar a su método SendTweet:

Eso es todo! SendTweet devuelve true si el mensaje fue enviado con éxito.

Programa de demostración

El programa demo incluido con este proyecto crea una serie de “consola” en puerto COM1 el Plus’ Netduino funcionando a 115200bps. Este puerto utiliza pin digital 0 en el N + para Rx y pin 1 para Tx( el autor ha usando un Bus Pirate para comunicarse con el puerto serial de la Netduino, pero también puede usar un dispositivo FT232R (o similar) a 3.3V o un convertidor de nivel).

Bus Pirate

Tres conexiones son necesarias:

  • Autobús pirata Gnd a Netduino Gnd
  • Autobús pirata Tx a Netduino Rx
  • Bus Pirate Rx de Tx Netduino

Consulte el manual de Bus Pirate de números pin específico como pueden variar entre los dispositivos. Una vez que todo está conectado y encendido, configurar el Bus Pirate para 115200bps UART con “Normalidad” (3, 3V / Gnd) salida. La secuencia de comandos es m, 3, 9, 1, 1, 1, 2.

A continuación, inicie la macro “Puente transparente” escribiendo “(1)” (con el paréntesis) y luego “y” aceptar la advertencia. Esto configura el Bus Pirate para actuar como un puente UART transparente, así los caracteres de entrada se envían a la Netduino y todos los resultados de la Netduino se muestran en su terminal.

Consola demo

Cuando se ejecuta el programa de demostración, un mensaje de ayuda se escribirán en el puerto serie. Si se conecta después de que se ha enviado el mensaje inicial, sólo tienes que escribir “?” y pulse enter para verlo otra vez.
Para enviar un tweet, tipo “p < mensaje >” y pulse enter. También puede omitir el mensaje a enviar un mensaje genérico de “Hola desde un [OEMString]!”. (Tenga en cuenta que si intenta enviar el mismo mensaje varias veces probablemente obtendrá un error de “mensaje repetido”).
Si todo sale bien, se registrará su mensaje en Twitter desde tu cuenta:

Código

 Este proyecto está ahora en CodePlex: MicroTweet – Twitter OAuth biblioteca API para la Micro de .NET Framework

Como software de Netduino, este código está liberado bajo la licencia Apache 2.0.

 

 

 

Fuente   aqui

Herramientas para construir twitter walls

Herramientas para crear in twetter wall


A la hora de asistir a un evento, muchas veces nos encontramos con pantallas especiales dedicadas a mostrarnos lo que está sucediendo en Twitter  conocidas como Twitter walls o tweet walls, que  dependiendo del presupuesto asignado, a veces tienen detrás todo un software especialmente desarrollado para la ocasión. En el caso de los eventos más normales  como pueden ser conferencias,clases, seminarios, etc que, por desgracia  carecen de sponsors, podemos usar varias utilidades que nos permitiran proyectar un hashtag de dicho evento:

Visible Tweets

Para usar  Visible Tweets no necesitamos nada más que un hashtag y un proyector para poder trabajar con esta herramienta. Usando todos los términos de búsqueda que podemos encontrar en el buscador de Twitter, podemos crear un tweet wall en apenas unos minutos, sin demasiados problemas. Cuando ingresamos a la herramienta, nos encontraremos con una barra central donde tenemos que insertar nuestra palabra clave, y luego, nada más sentarnos a ver cómo funciona.

No es necesario crear una cuenta para poder usar Visible Tweets, y como nos podemos imaginar para proyectar un hashtag en un evento nada más tenemos que conectar un PC a un proyector o TV. No será lo más avanzado del mercado, pero ciertamente funciona. Si queremos hacer algunas limitaciones, podemos seleccionar nada más los tweets de una determinada cuenta, pero también seguir palabras claves, hashtags y más. Es una herramienta de visualización de tweets muy efectiva, ideal para aquellos que no tienen mucho presupuesto para dedicar a esta cuestión.

hashtags

Twitter Fontana

Twitter Fontana también es una herramienta muy sencilla que nos permite proyectar un hashtag en un evento sin demasiados problemas pero sí nos pedirá que iniciemos sesión con Twitter para poder comenzar a usarla.

Una vez que tenemos creada la selección de tweets, vamos a poder pausar, personalizar, y ver como presentación Esto último es muy importante dado que será lo que nos permita trabajar con un proyector o TV en un evento . Así como Visible Tweets, no necesitaremos nada adicional, y podremos configurar el estilo de transición entre diferentes tweets, el estilo en general que tendrá la presentación, y mucho más. En poco tiempo podemos tener configurado un tweet wall con los colores de una marca, por ejemplo.

Tweet Fontana

Tint

Tint es una herramienta empresarial que, además de permitirnos proyectar un hashtag en un evento, también es una solución apropiada para poder embeber todas las redes de Social Media en varios canales de marketing que pueda tener una marca. Tint es básicamente un tablero donde podemos sincronizar todas las redes sociales, y comenzar a trabajar desde allí. Además de cuentas, también se puede monitorear hashtags específicos, y esto es lo que particularmente nos interesa.

Tint cuenta con una buena cantidad de clientes de renombre, entre los que podemos mencionar a bandas como Kiss y The Lumineers, equipos como los Dallas Cowboys, y marcas como Sony y Bacardi. Claramente, para poder usar Tint tendremos que dedicar parte del presupuesto del evento para poder hacer esto, dado que no es una herramienta gratuita. Pero sí es una de las herramientas más poderosas, dado que además de proyectar un hashtag en un evento nos permite aprovechar otros canales como Facebook y YouTube.

 

TweetBeam

TweetBeam es una herramienta específicas para poder proyectar un hashtag permitiendo  crear un tweet wall rápidamente y con la sola asistencia de un proyector o TV. TweetBeam es, en principio, una herramienta gratuita siempre y cuando esté destinada a proyectos no comerciales. Sin embargo, si nos interesa usarlo para negocios, podemos contactarnos con su equipo para recibir un presupuesto de uso.

Conectándonos con nuestra cuenta de Twitter, podemos acceder a un tablero especial donde podemos ir creando “shows” en base a eventos y ocasiones especiales, también hashtags. La actualización es automática, pero gracias a este tablero podremos trabajar en algunas cuestiones básicas de edición. También puede ser interesante para conferencias y presentaciones. Entre algunos de sus clientes, se cuentan Disney y Cisco.

TweetBeam

Twijector

Twijector,  cuenta con herramientas de moderación que permiten, entre otras cosas, crear un filtro de groserías, o de palabras que no queremos que sean destacadas, así como también bloquear a los spammers. Fundamentalmente, tiene una herramienta de pre-moderación para que solamente los tweets seleccionados por nosotros aparezcan proyectados.

Twijector tiene otras funcionalidades atractivas,como por ejemplo nos permite guardar todos los tweets que se han recibido sobre un determinado evento en un archivo especial para poder accederlo en el futuro ,asi como  tambien  nos permite generar una “audiencia” con todas las personas que interactuar con el hashtag del evento( para obtener algo así como una base de datos personal de los usuarios de Twitter a los que les interesa nuestra marca o evento).

Fuente  aqui