Archivo de la categoría: Informática

Un cajón de sastre donde comento temas relacionados con el mundo de la informática

Ejecutar algoritmos paralelos en la GPU (1/2)

Navegando por Internet me topé con un artículo de Kriptopolis en el cual hablan maravillas del proceso de las GPUs en comparación con las CPUs. Acto seguido me puse a buscar en Internet como usar la GPU de mi tarjeta NVDIA Geforce 8800 GTS y encontré el entorno CUDA (Compute Unified Device Architecture) de NVIDIA.

Este entorno está orientado a las tarjetas gráficas de la serie NVIDIA GeForce 8, 9, y 200; NVIDIA Tesla y muchos de los productos NVIDIA Quadro y está disponible para Windows, Linux y Mac. Tiene librerías específicas para transformadas rápidas de Fourier (FFT) y algebra lineal (BLAS) entre otras cosas. Existen plugins para MatLab y para Photoshop que usan CUDA para agilizar los cálculos que realizan. Existe otro entorno llamado BrookGPU aunque no lo he tratado a fondo parace algo más genérico.

Con una tarjeta de las mencionadas anteriormente se pueden ejecutar miles de hilos (threads) en cada uno de los nucleos que contiene la GPU a una velocidad superior que con una CPU actual.

Diferencias de GigaFlops entre CPUs y GPUs (Imágen de NVIDIA)

Diferencias de GigaFlops entre CPUs y GPUs (Imágen de NVIDIA)

Para trabajar con CUDA lo primero que hay que hacer es instalarse el último driver de la tarjeta NVIDIA (que ya posee soporte CUDA). Después hay que instalar el toolkit de Cuda y finalmente hay que instalarse el SDK de Cuda. Todo esto se puede bajar en http://www.nvidia.es/object/cuda_get_es.html, pero el driver recomiendo instalarlo desde la sección de drivers para obtener el más actualizado.

En el siguiente artículo explicaré como usar la potencia de cálculo de la GPU con CUDA y Visual Studio 2005, haciendo un pequeño ejemplo.

GuideMe: 2º premio del 3er concurso de Open Movil Forum

Pues finalmente y tal como aparece en la web: http://open.movilforum.com/concurso/3/ganadores GuideMe consigue el segundo puesto con un premio de 2000 €. Enhorabuena al 1er y 3er galardonados.

Lo estúve pensando el otro día y creo que para repartir los premios deberían haber seguido una fórmula de proporciones. Si el premio a repartir son 10000 € y son 3 ganadores, la formula que propondría sería 3x + 2x +x = 10000. Eso sería 6x = 10000, con lo que x ≈ 1667. Finalmente el ganador tendría la proporción 3x, por lo que se llevaría 5001 €, el segundo 3334 € (2x) y el tercero 1667 € (x).

Espero que en siguientes concursos lo hagan de esa manera para premiar al 1, 2 y 3 equitativamente.

Guardar los enláces edonkey de una página web

Muchas veces nos hemos topado con páginas web que tienen un montón de enlaces edonkey publicados y quisierámos guardarlos todos en un fichero, para que luego nuestro programa favorito p2p pueda descargárselos de una tacada en vez de pulsar de uno en uno. En linux se puede hacer muy fácilmente usando los comandos wget y el grep de esta forma:

wget -q -O - <url> | grep -E -o 'ed2k://[^/]+/' > <fichero>

Donde <url> es la url de la página web que contiene los enlaces y <fichero> es el fichero donde queremos guardarlos.

Gráficas en flash

Si en el anterior artículo hablaba sobre las bondades del jpgraph generando gráficas para php, en este comento una utilidad estupenda para hacer gráficas animadas en flash.

XML/SWF Charts es una herramienta hecha en flash creada por Manii. Esta herramienta es un conjunto de ficheros swf que guardaremos en nuestro servidor y que a través de un fichero xml daremos forma a nuestra gráfica. Se pueden generar un montón de gráficas distintas, y lo mejor: son animadas. Aunque flash no está tan extendido como las imágenes estáticas en los navegadores, podría aventurarme que un 90% o más se verá perfectamente.

Así por ejemplo, este fichero xml hace que se muestre esta gráfica:

Gráficas en php con jpgraph

Para crear gráficas en php no he encontrado mejor herramienta que jpgraph. Es gratuito si no se usa comercialmente y su uso es muy sencillo.

Tiene muchos tipos de gráficas para representar datos y se instala fácilmente en cualquier servidor: Copiando la carpeta src en el servidor web, renombrándola a jpgraph y luego simplemente enlanzando dentro de nuestro script php las librerías.

Así por ejemplo podemos crear un gráfico simple con unos datos sobre la renta per cápita de distintos países:

Para generar este gráfico hay que seguir estos pasos:

Incluir las librerias (la ruta dependerá de donde las hayamos copiado):


include ("../../jpgraph/jpgraph.php");
include ("../../jpgraph/jpgraph_bar.php");

Creamos dos arrays con los datos que se van a representar (eje x e y):


$datax = array("Alemania", "España", "Francia", "Italia", "Reino Unido");
$datay = array(43267, 22368, 37644, 32949, 39762);

Creamos el objeto del gráfico de un tamaño de 500px * 200px y establecemos que el eje x es texto y el eje y es numérico:


$graph = new Graph(500,200,"auto");
$graph->SetScale("textlin");

Establecemos los márgenes del gráfico y le añadimos una sombra por detrás:


$graph->img->SetMargin(50,100,20,40);
$graph->SetShadow();

Creamos un objeto de gráfica de barras, decimos que su color sea naranja, que se muestre la leyenda y que añada esa gráfica al objeto general.


$barra = new BarPlot($datay);
$barra->SetFillColor("orange");
$barra->SetLegend("Euros");
$graph->Add($barra);

Le añadimos un título al gráfico y otro a uno de los ejes, poniendo ambos en negrita:


$graph->title->Set("Renta per cápita");
$graph->xaxis->title->Set("Países");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

Añadimos el texto del eje x y finalmente lo mostramos:


$graph->xaxis->SetTickLabels($datax);
$graph->Stroke();

Deautenticación de una red wifi

El otro día estuve probando cómo con el airoplay se puede desconectar a todos los usuarios de una red wifi, probándolo en la red wifi de mi casa. Y efectivamente, dejó a mi pda sin conexión mientras duró el ataque.

Aunque no se ve bien, con la pda hago ping a google y funciona correctamente. Luego me voy al ordenador, ejecuto el ataque del airoplay y a continuación vuelvo a enfocar la pda, donde se ve el cambio de estado de los paquetes ping a time out. Después paro el ataque, enfoco de nuevo la pda y se ve como otra vez hace ping a google correctamente.

Creación de botones web on-line

Muchas veces cuando quieres hacer una web con menús te gustaría darla un toque especial y hacer las opciones en forma de botones con texto. Con el GIMP o el photoshop se puede hacer, pero es engorroso.

Pero hay una manera mucho más cómoda. En la web http://www.buttongenerator.com/
puedes generar botones y menús de botones dinámicamente. Hay algunos que son libres y otros que sólo se pueden usar si te registras en la web. Si los usas debes poner un link a buttongenerator y no puedes venderlos ni incluirlos en un almacén de imágenes o plantilla web.

Programar plugins para VMWare

Con la documentación aportada en este sitio http://akutz.files.wordpress.com/2008/05/vi3progplugin-rev13.pdf he sido capaz de crear un plugin para los clientes de VMWare Infraestructure. El plugin en cuestión es un chat para que la gente que esté conectada y tenga instalado el plugin puedan hablar entre ellos aunque estén distantes geográficamente.

Con el plugin cada cliente se conecta a un servidor de B.B.D.D. SQL Server para comprobar si hay mensajes de otros usuarios cada poco tiempo, al igual que guarda en este los mensajes escritos por el usuario. Si un usuario no está en el chat en ese momento se le puede llamar haciendo doble click en el nombre de la lista de sesiones.

La pena es que la API no haya sido publicada oficialmente por VMWare.  Aún más engorroso es registrar una extensión del servidor (para poner el plugin a disposición de todos) ya que se usan triquiñuelas y no se sabe si VMWare dará documentación de como hacerlo.

Los plugins por lo general deben instalarse en el directorio del ordenador cliente [directorio de VMware]\Infrastructure\Virtual Infrastructure Client\Plugins.

Como está personalizada para mi empresa no pongo los fuentes, pero si alguien desea preguntarme algo lo puede hacer usando los comentarios de este mismo artículo.

Los antíguos artículos de blogger ya redireccionan a este blog

Hace tiempo inserté los artículos de blogger a mi wordpress. Aunque mi hosting no me permitía hacerlo directamente, los importé desde wordpress.com seleccionando la importación desde blogger. Luego exporté los artículos a WXR y finalmente los importé en mi wordpress. Aunque todo ha ido estupendamente, he de retocar algunos artículos porque las fotos y algún texto no se visualizan correctamente.

A continuación tenía que hacer que cuando alguien accediese a alguno de mis artículos de blogger, se mostrase el equivalente en wordpress. Así que usé una solución basada en javascript ya que blogger no permite redirecciones condicionales al estilo de .htaccess. Este script lo puse en la plantilla de blogger, y ¡voilà! Funcionó. Es tan sencillo como poner

<script>
document.location.href="https://www.sistemasorp.es/" + "<$BlogDateHeaderDate$>";
</script>

entre las etiquetas BlogDateHeader y su función es redirigir el navegador a mi dominio, a un directorio en concreto en formato de fecha.

En particular esto me sirve ya que:

  • Casi todos mis artículos están publicados en días distintos unos de otros.
  • WordPress guarda los artículos en directorios en formato de fecha.

Así por ejemplo un artículo que se publicó el 20/05/2004 y cuya URL en blogger es:

http://sistemasorp.blogspot.com/2004/05/las-patentes.html

Redirige automáticamente a:

https://www.sistemasorp.es/2004/05/20/

Así puedo hacer que todo el mundo que tenga activado el javascript pueda ver el nuevo formato del blog si acceden desde blogger.