Coloreo de sintaxis para GLSL/HLSL/CG: NShader

Otra extensión más para Visual Studio: NShader, que colorea la sintaxis del código fuente de los distintos lenguajes de programación de shaders existentes. Tiene soporte para las siguientes extensiones de archivos:

  • GLSL: .glsl, .frag, .vert, .fp, .vp
  • HLSL: .fx
  • CG: .cg, .cgfx

image La diferencia se nota

De momento sólo incluye el coloreo, pero están planeados, entre otras cosas, la inclusión de un analizador de sintaxis y un sistema de autocompletado. Y como es un proyecto de CodePlex, si algún usuario considera que necesita algo más, siempre puede añadirlo él mismo.

¿La única pega? Que como todas las demás extensiones, no se puede instalar en las versiones Express de VS.

CopySourceAsHTML: formatea tu código como HTML

¿Alguna vez os habéis encontrado redactando un artículo o tutorial, y al tener que insertar código fuente sólo habéis conseguido copiar un amasijo de caracteres sin tabulación y con los retornos de línea a su libre albedrío? Seguramente habéis acabado sacando una captura de pantalla e insertando el susodicho como una imagen estática. Pues esto se va a acabar, gracias al add-in CopySourceAsHTML disponible para Visual Studio.

Éste add-in ha pasado casi desapercibido a pesar de tener unas cuantas versiones a su espalda, siendo la primera de ellas para VS .NET 2003 (aún disponible para descargar por si alguien sigue usándolo 😉 ). Su uso es tán fácil como descargarlo, ejecutar el instalador, y la próxima vez que abramos el Visual Studio dispondremos de una nueva opción en el menú Edición (y en el emergente también) llamada Copy As HTML…

image

Cuando pinchemos en ella, accederemos a un diálogo con distintas opciones sobre el formato final:

image

Las pestañas File Style, Line Style y Block Style sirven para definir estilos personalizados para cada uno de los elementos nombrados, pero las opciones interesantes están en la pestaña General. En ella podemos seleccionar si queremos numerar las líneas y en qué número empezarían (Number lines from), limitar la longitud de la línea (Wrap lines), quitar la tabulación (Remove line indentation) o cambiar el tamaño de tabulación y fuente. También es recomendado desactivar Embed styles para evitar que incluya los estilos como propiedades de los tags HTML, porque puede resultar en un código bastante largo y redundante. Es más bonito y práctico que los agrupe dentro de un <style> en forma de clases 😀

Y por último, incluyo un trozo de código de ejemplo formateado usando CopySourceAsHTML, para que podáis comprobar lo efectivo que es:

1 using System;

2 using System.Collections.Generic;

3 using System.Linq;

4 using System.Text;

5

6 namespace ColoreoSintaxis

7 {

8 /// <summary>

9 /// También colorea comentarios y summary

10 /// </summary>

11 class Program

12 {

13 static void Main(string[] args)

14 {

15 System.Console.Out.Write(«Hola, mundo!»);

16 }

17 }

18 }

No sé vosotros, pero yo pienso sacarle bastante provecho a partir de ahora 😉

Detectando fugas de memoria: Visual Leak Detector

Ésta librería me la encontré por casualidad un día navegando por Internet, y curiosamente unos meses más tarde tuve que recurrir a ella. Si has desarrollado programas para Linux usando C o C++, seguramente tarde o temprano habrás recurrido a usar Valgrind, el entorno que emula una arquitectura x86 y detecta todos los usos indebidos de la memoria.

Pues bien, Visual Leak Detector es una librería que, al incluirla en nuestro proyecto, nos muestra toda la información (por medio de la consola de Visual Studio o, si lo deseamos, con salida a un fichero de texto) sobre la memoria no liberada (memory leaks) con una precisión pasmosa. Y ahora, un ejemplo de su uso:

  1. Descargamos el instalador.
  2. Lo ejecutamos y procedemos a instalarlo en el lugar que más adecuado nos parezca. Muy seguramente, durante el proceso de instalación nos preguntará si deseamos añadir la ruta a la librería “vld.dll” al path automáticamente. Aceptamos y continuamos.image
  3. Ya esta listo para usar. Si queremos, en la última pantalla podemos visualizar la documentación.image
  4. Ahora hay dos opciones para que Visual C++ reconozca el archivo de cabecera y la librería; la primera consiste en ir a la carpeta donde hemos instalado Visual Leak Detector y copiar los directorios “include” y “lib” a la carpeta “VC” existente dentro de nuestra instalación de Visual Studio. Sin embargo, este método puede considerarse poco más que una chapuza, así que vamos a hacer las cosas bien y lo vamos a configurar desde dentro de nuestro proyecto.
  5. Ejecutamos el Visual Studio y creamos una nueva aplicación de consola de Visual C++. En el diálogo del asistente seleccionamos la sección “Application Settings” y activamos la casilla “Empty project”. No queremos que Visual C++ nos añada archivos que puedan dar lugar a confusión (como las cabeceras precompiladas).image

    image

  6. Ahora es el turno de configurar las nuevas rutas de inclusión del proyecto. Nos vamos al menú “Project” y seleccionamos la última opción, “<Nombredeproyecto> Properties…”. Navegamos el árbol de opciones seleccionando “Configuration Properties / C/C++ / General” y pinchamos en el campo “Additional Include Directories” de la lista de opciones de la derecha. Veremos que aparece un botón con unos puntos suspensivos que nos abrirá una nueva ventanita, en la que pulsando el botón con el icono de una carpeta nos permitirá especificar un nuevo directorio para añadir a la lista. Añadimos el subdirectorio “include” dentro de nuestra instalación de Visual Leak Detector y pinchamos en “OK”.image

    image

  7. Ahora en el árbol de opciones de la izquierda nos desplazaremos hasta “Configuration Properties / Linker / General”. Aquí, con el campo “Additional Library Directories” tenemos que hacer exactamente lo mismo que en el punto anterior, solo que en lugar de agregar el directorio “include”, ésta vez seleccionaremos “lib”.image
  8. Por último, vamos a “Configuration Properties / Linker / Input” y en “Additional Dependencies” escribimos “vld.lib”. De ésta manera le decimos al enlazador que si encuentra algún símbolo desconocido, busque información en dicha librería para resolver las dependencias.image
  9. Ahora ya solo queda comprobar el funcionamiento de la librería. Vamos a añadir un nuevo fichero de código fuente a la carpeta “Source Files” de nuestro proyecto, llamado “main.cpp”, y vamos a teclear el siguiente código:image
  10. Y procedemos a compilarlo y ejecutarlo. Aparecerá la ventana de consola con la ejecución de nuestro programa y podremos finalizarla. Aparentemente todo funciona bien, pero si vamos a “View / Output”, habilitaremos la ventana en la que podremos ver la salida del Visual Leak Detector. Aquí nos informa que se ha producido un memory leak, concretamente de 100 bytes, y el inicio del problema está en la línea 8 de “main.cpp”.image
  11. Podemos comprobar que en dicha línea hemos realizado una reserva de memoria con el operador new, pero luego no la hemos liberado. Vamos a subsanar el error y a comprobar qué ocurre esta vez tras la ejecución:image

En efecto, Visual Leak Detector notifica que no hay ninguna fuga de memoria y que todo ha funcionado correctamente. Ahora es el turno de emplearlo en vuestras propias aplicaciones 😉