jueves, 28 de enero de 2016

Effect Games en Javascript

Buscando un poco como está el panorama de motores sencillos de juegos en Javascript, tropecé con Effect Games. En esta web, sus autores, Min & Joe, liberan en GITHUB con licencia MIT (Puedes usarla para lo que quieras) el motor completo en Javascript y tienen programado el back-end en Perl.



También tienen otras demos como un juego de mario bros 1, de naves, y de pompas. Al parecer montaron GoldCartridge.com pero parece que lleva años sin dueño el dominio.

Effect Games en Javascript

Buscando un poco como está el panorama de motores sencillos de juegos en Javascript, tropecé con Effect Games. En esta web, sus autores, Min & Joe, liberan en GITHUB con licencia MIT (Puedes usarla para lo que quieras) el motor completo en Javascript y tienen programado el back-end en Perl.



También tienen otras demos como un juego de mario bros 1, de naves, y de pompas. Al parecer montaron GoldCartridge.com pero parece que lleva años sin dueño el dominio.

miércoles, 27 de enero de 2016

Macros predefinidas oficiales para C/C++ que te pueden salvar la vida.

Si programais en C/C++, deberíais saber que existen sintaxis para tratar partes del código antes de ser usado, esta herramienta es llamada el preprocesador de C/C++ y es el primer programa invocado por el compilador.

Sintaxis:
  • #include "filename.h", se utiliza para hacer referencias a cabeceras de código, que contienen la descripción de variables y funciones a usar. Ya sea de la propia librería o de otra.
  • #define __VAR__ ARG_OPTIONAL, se utiliza para crear una variable, puede verse si existe con #ifdef o #if (defined(__VAR__)), o ser sustituido por el ARG_OPTIONAL
  • #if, #elif, #else, se utiliza como un if normal
  • #ifdef, #ifndef,#elif, #else, se utiliza para comprobar si se ha definido cierta variable
  • defined(__VAR__), devuelve 1 si existe un define previo de la __VAR__
  • #warning "message", se utiliza para informar de errores SIN parar la compilación, visual studio no la soporta, puede usar #pragma "message" como alternativa.
  • #error "message", se utiliza para informar de errores Y parar la compilación

Macros predefinidas:

Viene bien tener la referencia a las macros de GCC y de MVS. No todas tienen porque ser soportadas por otros compiladores, que o bien las ignorarán, o bien fallarán y tendrás que anidarlas en el típico #ifndef(_MSC_VER). Gracias a esto puedes controlar el tipo y la versión del compilador, para alertar de funcionalidades o fallos y hacer la vida más fácil a otros desarrolladores que usen tu código.


¿Realmente son tan importantes?

Mirar siempre los includes que usas es realmente importante para entender que cosas está teniendo en cuenta el código antes de compilarlo. De esta forma se puede diferenciar distintas plataformas, arquitecturas, tamaños de vectores y datos en función de la capacidad de la máquina para la que se compila.

Me encontré este problema por olvidarme al pasar de un proyecto a otro código preprocesado, al no estar definidas ciertas cosas y usar unos no oficiales confundía código de Android y Ipad, con efectos desastrosos en la imagen. Obviamente cuando se ve azul en lugar de correcto sabes que algo va mal, pero es cuestión de habilidad y experiencia encontrar rápidamente la fuente del error. Mi fallo fué omitir en todo el proyecto, en dispositivos __APPLE__ el include de C con los defines:
#include "TargetConditionals.h"
Este include de apple define muchas variables de preprocesado muy útiles a la hora de distinguir iOS de MAC y otras plataformas.

Otros ejemplos:

- Gracias a ayuda de ciertos usuarios en StackOverFlow pude desarrollar un logger multiplataforma para ofrecer información útil ordenada en distintos dispositivos. No es thread-safe.

- Básico, si usas mi logger.h puedes usar este código para printear info en cualquier cpp:

#include "logger.h"
#define LOG_TAG "MyCpp"


#pragma "Let's check our arch"

#ifdef __linux__
    // All linux arch
#elif _WIN32
    // Windows 32 and 64
#elif __APPLE__
#  include "TargetConditionals.h"
#  ifdef TARGET_OS_IOS
    // including iPhone and iPad
#  elif TARGET_IPHONE_SIMULATOR
    // iOS Simulator
#  elif TARGET_OS_MAC
    // Other kinds of Mac OS
#  else
     // Unsupported platform
#  endif
#elif __ANDROID__
    // Android all versions
#else
    // Unsupported architecture
#    error "I don't know the arch"
#endif

#if defined(LOG_TAG)
    #pragma "Log tag is defined in this cpp"
#endif

jueves, 7 de enero de 2016

Usando NoScript

Logo

Si has instalado esta extensión en Firefox, la primera semana te volverás loco intentando navegar por internet, todo bloqueado. Conforme vayas añadiendo las web que uses y en las que confies, se acabarán los problemas.

 Te pongo las primeras que vas a encontrar:
  • Options > Allow global. Permite todo javascript, usar excepcionalmente si hay prisa y no va algo importante, no recomendado.
  • Options > Untrusted > Dominio. Lista de dominios no deseados
  • Options > Temporal Allow > Dominio. Permitir esta sesión
  • Options > Allow > Dominio. Permitir siempre hasta que se diga lo contrario
Ejemplo en FinoFilipino, esta página carga muchas cosas innecesarias, ojo.
Algunas páginas aceptables:
  • http://vgoni.blogspot.com.es/ este blog, si, si te fias de blogspot y de mi
  • www.google.es navegador web, preferible usar duckduckgo, aunque no es tan bueno ni de lejos
  • www.tumblr.com, famosa mezcla de red social y contenido compartiro
  • www.wikia.com, wikis.
Redes sociales, gestores de contenido (CDN), tu verás si las dejas o no, acepta si las usas, ten en cuenta que ganan dinero con tus datos.
  • www.nocookie.net Gestor contenido de imagenes y ficheros, para wikis.
  • www.googleusercontent.com Gestor contenido de google
  • *.cloudfront.net Gestor de contenido mutiples sitios (Trello)
  • www.facebook.com Facebook
  • www.facebookcdn.com Contenido de facebook
  • ytimg.com servidor visitas miniatura de Youtube.
  • https://www.cloudflare.com/ proxy gratuito que usan webs para ofrecer contenido.
  • http://ytimg.com/ imagenes de youtube
  • www.twimg.com, imagenes de twitter
  • www.twitter.com, red social.
  • www.txmblr.com contenido extra de tumblr
  • www.youtube.com, contenido de videos.
  • vine.co para reproducir videos de esa web
  • zappinternet.com, mas videos.
  • www.disqus.com, sistema de comentarios.
  • *.amazonaws.com, servicio de datos en la nube, necesario para contenido multimedia.
  • jwpcdn.com, más contenido.
Especial atención, pagos por internet:
  • www.stripe.com, API para pagar por internet, autorizar solo si necesitais.
  • www.intercom.io, API para comunicar webs con clientes, solo si sabes lo que haces.
No aceptables, estadística, cookies y seguimiento:
  • www.amung.us, estadísticas.
  • www.cedexis-radar.net, estadísticas en tiempo real, no necesario
  • www.googletagmanager.com servicio de google para webmasters que etiqueta el contenido. No es necesario y hace seguimientos
  • www.google-syndication.com servio
  • www.quantserver.com Crea web beacons y cookies, evitar
  • wikia-beacon.com Beacons de las web derivados de wikia.com
  • www.statcounter.com Contadores y perfiles de cookies
No aceptables, anuncios, premios dudosos:
  • www.smartadserver.com, anuncios malos.
  • www.adm-vids.info, anuncios en videos
  • www.scorecardresearch.com, evitar, estadística, premios, y cosas raras
  • www.doubleclick.net gestores de publicidad
Estos son algunos ejemplos, depende de donde navegues te encontrarás unos u otros. Tras meses ya usando este add on en firefox, he notado mucha diferencia cargando páginas. De hecho, al tener que ejecutar menos javascript, se gana en velocidad de carga, aunque como ya he comentado, muchas páginas fallarán ciertos servicios como compras, búsquedas, si no habilitamos correctamente los javascripts a ejecutar. Al principio parecerá que estamos desactivando bombas.

En general, la carga se hace de forma más rápida, y ayuda en parte a mantener nuestra privacidad y hábitos. Aunque claro, no te hace anónimo, para conseguir esto habría que usar Tor, y seguir un comportamiento donde no usemos nuestros avatares y perfiles oficiales en cuentas de redes sociales, DNI electrónico, y cualquier otra web en la que puedan relacionarnos... pero eso es ya otro asunto. En microsiervos se hacen eco hoy de este asunto.

Si todo esto te parece engorroso, puedes usar Ghostery , que no te va a proteger contra la ejecución de Javascript, pero vas a navegar sin dar 100 clicks dejando cada cosa funcionar. Puedes evitar mucho rastreo de forma cómoda y fácil.

sábado, 2 de enero de 2016

Recopilaciones de Software Libre

Si eres, como yo, amante del software libre, esta entrada te interesa. Bartolomé Sintes Marco, profesor de informática de bachillerato, tiene montada una web llamada CDLibre donde puedes encontrar un amplio catálogo de programas de código abierto.
cdlibre.org
CDLibre
Ofrece en distintos ámbitos como:
Esta web lo tiene todo, enlace a la descarga, a las webs oficiales, y en pocos clicks puedes conseguir el código fuente para estudiarlo, o ejecutables en variadas plataformas como GNU/Linux, Windows o MAC, varía según el programa.

Además, os dejo este enlace con las referencias de software libre elaboradas por el gobierno Francés. Nos llevan años de ventaja en cuanto a libertad.