Tuesday, June 21, 2016

Recursos Interesantes

Gamepads:
http://www.gamepadjs.com/
http://www.aplu.ch/home/apluhomex.jsp?site=36

Formalización de algoritmos:
http://citc.ui.ac.ir/zamani/clrs.pdf
http://infolab.stanford.edu/~ullman/focs.html

Problemas de programación:
https://projecteuler.net/

Compiladores en web:
http://www.tutorialspoint.com/compile_cpp_online.php
https://jsfiddle.net/
http://cpp.sh/

Visualización de algoritmos de ordenamiento y grafos:
http://algo-visualizer.jasonpark.me/
https://github.com/cytoscape/cytoscape.js

Búsqueda de Islas de vértices y aristas:
http://vlado.fmf.uni-lj.si/pub/networks/doc/sunbelt/islands.pdf
http://vlado.fmf.uni-lj.si/pub/networks/doc/dagstuhl/large.pdf
http://vlado.fmf.uni-lj.si/pub/networks/course/networks.pdf
http://vlado.fmf.uni-lj.si/pub/networks/doc/mix/islands.pdf

Programación de ROM para GB y GBA o emuladores:
http://gbdk.sourceforge.net/
http://www.loirak.com/gameboy/gbatutor.php
http://www.ezflash.cn/
https://www.reinterpretcast.com/writing-a-game-boy-advance-game
http://www.freeinfosociety.com/media/pdf/2901.pdf

Escalado en pixeles:
http://www.cambridgeincolour.com/tutorials/image-resize-for-web.htm
http://www.datagenetics.com/blog/december32013/index.html
http://algolist.manual.ru/graphics/quant/qoverview.php

Mapa del mundo:
http://earthobservatory.nasa.gov/blogs/elegantfigures/files/2011/10/land_shallow_topo_2011_8192.jpg
http://earthobservatory.nasa.gov/blogs/elegantfigures/2011/10/06/crafting-the-blue-marble/

Usar la salida de audio de smartphone
http://www.edn.com/electronics-blogs/embedded-basics/4416138/Turn-a-Smart-Phone-into-a-Signal-Generator

Recursos para juegos
http://html5gamedevelopment.com/2012-01-free-game-graphics-and-audio-resources/
http://www.aseprite.org/

Generación de mecanicas
http://www.cc.gatech.edu/~azook3/paper/zook-aaai-2014.pdf 
https://books.google.com.mx/books?hl=es&lr=&id=61LbUE2K3zoC&oi=fnd&pg=PP1&dq=roleplaying+game+design&ots=cdK7tSL0wA&sig=Uv8Yf029-XGBvCJcdGXXUTQmDcU&redir_esc=y#v=onepage&q=roleplaying%20game%20design&f=false 

Hacer un SNES
http://gizmodo.com/how-to-build-your-own-mini-snes-1790156604

Pixelización
http://www.research.rutgers.edu/~timgerst/
https://sites.google.com/site/tiffanycinglis/research/rasterizing-and-antialiasing-vector-line-art-in-the-pixel-art-style

Monday, December 7, 2015

Criba de Eratóstenes con MPI



Hola, lectores.

Durante mi curso de Sistemas Distribuidos en maestría se me dio la tarea de hacer una versión paralela del conocido algoritmo para obtener números los primos en cierto rango, La Criba de Eratóstenes.

Debo decir que siempre he sido un googleador profesional. Es decir, antes de buscar la solución a un problema, hago una búsqueda en Google para revisar soluciones que ya existen, a veces incluso código fuente para aterrizar el asunto (sé que no soy el único).

Lamentable y sorprendentemente, mi búsqueda no dio como resultado un código  en el cual basarme para hacer este trabajo práctico, por lo que tuve que descifrar las propuestas que encontré en pseudocódigo, lenguaje natural o matemático.

Supongo que la solución a la que llegue podría ser de utilidad para alguien que se encuentre en la situación en la que me encontré yo, así que la subo a este blog, para que esté disponible para esa pobre alma en pena.

No diré que este código este optimizado, ni siquiera diré que corre más rápido que su versión secuencial (es probable que tarde más). Pero sí diré que es una implementación paralela de la Criba de Eratóstenes usando MPI (Message Passing Interface). Más específicamente use MS-MPI junto con Visual Studio 2015. Sugiero revisar el siguiente tutorial para usar MS-MPI en Visual Studio: [link], en caso de que sean tan tontos como yo para seguir usando Windows.

Dejo un enlace a un PDF con el código fuente y una breve explicación del mismo. Recomiendo usarlo solamente como algo didáctico (para entender el funcionamiento de MPI) o quizás como base para generar una mejor solución para el mismo problema.