<?xml version="1.0" encoding="ISO-8859-1"?><!-- generator="FeedCreator 1.7.2-ppt (info@mypapit.net)" --><rss version="0.91">    <channel>        <title>Espacio Virtual</title>        <description><![CDATA[Publicación de temas muy específicos relacionados con el desarrollo de software y la informática en general, de los cuales he encontrado poca o ninguna documentación online. El resto corre por cuenta de Google ;)]]></description>        <link>http://espaciovirtual.blogcindario.com/</link>        <lastBuildDate>Wed, 24 Dec 2008 17:28:22 +0100</lastBuildDate>        <generator>FeedCreator 1.7.2-ppt (info@mypapit.net)</generator>        <item>            <title>Sutiles efectos visuales en KDE</title>            <link>http://espaciovirtual.blogcindario.com/2008/03/00013-sutiles-efectos-visuales-en-kde.html</link>            <description><![CDATA[Recientemente todos nos hemos asombrado con los incre&iacute;blesefectos 3D que se renderizaban en los escritorios Linux gracias aproyectos como <a href="http://compiz.org/">Compiz</a> y <a href="http://www.beryl-project.org/">Beryl</a>, y m&aacute;s recientemente con la uni&oacute;n de ambos en <a href="http://www.compiz-fusion.org/">Compiz Fusion</a>.Sin embargo, para algunos todo ese despliegue gr&aacute;fico puedellegar a resultar excesivo. Otros tal vez consideren que este tipo deinterfase debe madurar un poco para integrarse mejor con todo elsoftware existente.<br />Pero existe una alternativa m&aacute;s austera y mejor integrada dentrode los entornos KDE.&nbsp; En la versi&oacute;n 3.5.6 de KDE, el soportepara efectos de sombras y transparencias se encuentra en un estado demadurez tal que hace que valga la pena el intentar utilizarlo, por lo menosmientras esperamos que los exuberantes proyectos de efectos 3D seestabilizen un poco m&aacute;s.<br /><h3>Configuraci&oacute;n de la placa de v&iacute;deo</h3>Para habilitar las transparencias en KDE, lo primero que tenemos que hacer es editar el archivo <em>xorg.conf</em>.Como recomendaci&oacute;n, antes de editar este archivo siempre esconveniente realizar una copia de seguridad dentro de ese mismodirectorio. La raz&oacute;n de esto es que, si cometemos un error enlos valores ingresados aqu&iacute;, cuando reiniciemos corremos elriesgo de que se generen errores en el sistema gr&aacute;fico de Linux (<em>xorg</em>) y por lo tanto la interfase gr&aacute;fica no se cargue. En ese caso, cuando estemos solos con nuestro <em>promp</em> en modo texto, siempre tendremos la posibilidad de renombrar el antiguo archivo de backup (logueados como <em>root</em>) y reiniciar nuevamente en modo gr&aacute;fico.<br />Al menos en Ubuntu / Kubuntu,&nbsp;el path absoluto para este archivoes /etc/X11/xorg.conf. Para editarlo, tenemos que hacerlo conprivilegios de <em>root</em>. Para instrucciones m&aacute;s detalladas sobre como editar archivos restringidos, consultar&nbsp;<a href="http://espaciovirtual.blogcindario.com/2008/02/00012-edicion-de-archivos-restringidos-con-krusader.html">Edici&oacute;n de archivos restringidos con Krusader</a>. Al final del archivo de configuraci&oacute;n, hay que agregar la siguiente secci&oacute;n:<br /><br /><tt><span style="font-size: xx-small;">Section "Extensions"<br />&nbsp; Option "Composite" "Enable"<br />EndSection</span><br /></tt><br />Si tenemos una placa de v&iacute;deo NVidia, entonces tambi&eacute;n conviene a&ntilde;adir en la secci&oacute;n <em>Device</em> las siguientes l&iacute;neas:<br /><br /><tt><span style="font-size: xx-small;">Option "RenderAccel" "true"<br />Option "AllowGLXWithComposite" "true"</span><br /></tt><br />Esto nos permitir&aacute; obtener una mejor performance mediante laaceleraci&oacute;n por hardware. Un ejemplo de c&oacute;moquedar&iacute;a esta secci&oacute;n completa ser&iacute;a el siguiente:<br /><br /><span style="font-size: xx-small;"><tt>Section "Device"<br />&nbsp;&nbsp;&nbsp; Identifier&nbsp;&nbsp;&nbsp; "NVIDIA Corporation NV18 [GeForce4 MX 4000 AGP 8x]"<br />&nbsp;&nbsp;&nbsp; Driver&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "nvidia"<br />&nbsp;&nbsp;&nbsp; BusID &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "PCI:1:0:0"<br />&nbsp;&nbsp;&nbsp; <span style="color: #ff0000;">Option &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"RenderAccel" &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "true"</span><br />&nbsp;&nbsp;&nbsp; Option &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "NvAgp"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"1"&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # para que funcione lahibernaci&oacute;n<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; # Para efectos 3D<br />&nbsp;&nbsp;&nbsp; Option "TripleBuffer" "True"<br />&nbsp;&nbsp;&nbsp; Option "AddARGBGLXVisuals"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; # para quefuncionen los efectos 3D en Beryl / Compiz<br />&nbsp;&nbsp;&nbsp; <span style="color: #ff0000;">Option "AllowGLXWithComposite" "true"</span><br /><br />&nbsp;&nbsp;&nbsp; # Para clonar la salida a la TV<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "TwinView" "true"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "SecondMonitorHorizSync" "30-50"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "SecondMonitorVertRefresh" "60"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "TwinViewOrientation" "Clone"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "TVOutFormat" "SVIDEO"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "ConnectedMonitor" "CRT,TV"<br />&nbsp;&nbsp;&nbsp; Option&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; "TVStandard" "PAL-NC"<br />EndSection<br /></tt></span><br />En rojo aparecen las l&iacute;neas relevantes para este instructivo.<br />Una vez grabado el archivo de configuraci&oacute;n de xorg solo resta reiniciar el sistema.<br /><h3>Configuraci&oacute;n de KDE</h3>Ya tenemos el sistema preparado para utilizar transparencias. Ahora hayque indicar a KDE que utilice esta caracter&iacute;stica.<br /><br /><ol><li>Ir a <em>Configuraci&oacute;n del Sistema</em></li><li>Solapa <em>General</em> &gt;&gt; &iacute;cono <em>Comportamiento de las Ventanas</em></li><li>Secci&oacute;n <em>Comportamiento de las Ventanas</em> &gt;&gt; solapa <em>Translucidez</em></li><li>Chequear <em>Usar translucidez/sombras</em></li><li>Aparece un mensaje de advertencia diciendo que el soporte detranslucidez es nuevo y puede causar problemas. En realidad ya no estan nuevo, y personalmente nunca he tenido problemas. Acepte eldi&aacute;logo con el mensaje si le gusta la aventura.<br />  </li><li>Al activar esta opci&oacute;n, se habilitan tres solapasadicionales en donde se pueden configurar los efectos a gusto de cadauno. Solo a modo de gu&iacute;a, adjunto pantallas con miconfiguraci&oacute;n actual.</li></ol><div align="center"><a href="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/opacidad.jpg"><img border="0" height="225" src="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/opacidad_preview.jpg" width="300" /></a><br />Solapa <em>Opacidad<br /><br /></em><a href="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/sombras.jpg"><img border="0" height="225" src="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/sombras_preview.jpg" width="300" /></a><br />Solapa <em>Sombras<br /><br /></em><a href="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/efectos.jpg"><img border="0" height="225" src="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/efectos_preview.jpg" width="300" /></a><br />Solapa <em>Efectos</em><br /><br /><div align="left">Finalmente, unas pantallas de ejemplo mostrando el resultado final de todas estas configuraciones:<br /><br /><div align="center"><a href="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/ejemplo1.jpg"><img border="0" height="225" src="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/ejemplo1_preview.jpg" width="300" /></a><br /><br /><a href="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/moviendo_ventana.jpg"><img border="0" height="225" src="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/moviendo_ventana_preview.jpg" width="300" /></a><br />Esta transparencia solo se activa al mover la ventana<br /><br /><a href="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/ejemplo2.jpg"><img border="0" height="225" src="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/ejemplo2_preview.jpg" width="300" /></a><br /><br /><a href="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/ejemplo3.jpg"><img border="0" height="225" src="http://espaciovirtual.blogcindario.com/ficheros/2008_03_01/ejemplo3_preview.jpg" width="300" /></a></div></div></div>]]></description>            <pubDate>Sat, 01 Mar 2008 08:02:38 +0100</pubDate>        </item>        <item>            <title>Edición de archivos restringidos con Krusader</title>            <link>http://espaciovirtual.blogcindario.com/2008/02/00012-edicion-de-archivos-restringidos-con-krusader.html</link>            <description><![CDATA[El sistema operativo Linux posee un esquema de seguridad avanzado,en el cual normalmente un usuario no tiene acceso a todos los rinconesdel disco r&iacute;gido, sino que por el contrario tiene el dominiode solo unasecci&oacute;n menor conocida como su <em>home</em> endonde s&iacute; tiene derechos de escritura.<br />Esto tiene sus ventajas y desventajas, como casi todo en esta vida. Unaventaja es que si, por ejemplo, un virus logra ingresar al sistemamientras un usuario normal se encuentra en medio de unasesi&oacute;nde trabajo, dicho virus solo podr&aacute; da&ntilde;ar todoaquello alo que ese usuario tenga acceso. De hecho, ya es dif&iacute;cil queunvirus pueda colarse si el usuario no tiene acceso a los directorios delsistema operativo. Como contrapartida, cuando necesitemos configuraralg&uacute;n aspecto cr&iacute;tico del sistema, nos veremosobligados a editar archivos de configuraci&oacute;n para los cualesnotenemos permisos de escritura de manera predeterminada.<br />Con el administrador de archivos <a href="http://www.krusader.org/">Krusader</a>esta tarea puede volverse algo trivial, siempre y cuando conozcamoscual es la clave del usuario <em>root</em>.<br /><br />Una vez ejecutado Krusader, se deben seguir los siguientes pasos:<br /><br /><ol><li>Navegar en alguno de los dos paneles hasta el archivo quese desea editar (ej. /etc/fstab)<br />    <br /><div align="center"><a href="http://espaciovirtual.blogcindario.com/ficheros/edicion_archivos_restringidos/krusader.jpg"><img border="0" height="224" src="http://espaciovirtual.blogcindario.com/ficheros/edicion_archivos_restringidos/krusader_preview.jpg" width="300" /><br />    <br />    </a></div></li><li>Invocar el men&uacute; contextual del archivo</li><li>Ir al &iacute;tem de men&uacute; Acciones deUsuario &gt;&gt; Edit as Root</li><li>Se nos presentar&aacute; el di&aacute;logo en elcual debemos introducir la contrase&ntilde;a del <em>root<br />    <br />    </em><div align="center"><em><img height="202" src="http://espaciovirtual.blogcindario.com/ficheros/edicion_archivos_restringidos/password.jpg" width="391" /><br />    <br />    </em></div></li><li>Al aceptar el di&aacute;logo de contrase&ntilde;a,si todo est&aacute; correcto se nos abrir&aacute; el editor detexto<em> KWrite</em> ejecut&aacute;ndose concredenciales de <em>root</em>, con lo cual podremosmodificar y grabar el contenido del archivo sin inconvenientes.<br />    <br /><div align="center"><a href="http://espaciovirtual.blogcindario.com/ficheros/edicion_archivos_restringidos/kwrite.jpg"><img border="0" height="211" src="http://espaciovirtual.blogcindario.com/ficheros/edicion_archivos_restringidos/kwrite_preview.jpg" width="300" /></a></div></li></ol>Una alternativa al men&uacute; contextual es utilizar el atajo deteclado<em> Ctrl+E.</em>]]></description>            <pubDate>Fri, 22 Feb 2008 06:45:11 +0100</pubDate>        </item>        <item>            <title>Invocando al objeto wxApp</title>            <link>http://espaciovirtual.blogcindario.com/2008/02/00011-invocando-al-objeto-wxapp.html</link>            <description><![CDATA[La clase <em>wxApp</em> es una de las m&aacute;simportantes dentro de una aplicaci&oacute;n desarrollada con lalibrer&iacute;a <em>wxWidgets.</em> Siempre debemoscrear una clase derivada de &eacute;sta como punto de partida paraun nuevo desarrollo. Es de tipo <em>singleton,&nbsp;</em>porlo que solo existir&aacute; un objeto perteneciente a esta clase.Sobreescribiendo la funci&oacute;n <em>OnInit()</em> seda comienzo a la ejecuci&oacute;n de nuestro programa, como si setratara de la funci&oacute;n<em> main()</em> de C o C++tradicional.<br />A lo largo del desarrollo, habr&aacute; ocasiones en las cualesvamos a necesitar invocar a alguna funci&oacute;n de la clase <em>wxApp</em>est&aacute;ndar o de la derivada que hayamos creado nosotros. Paraestoexisten dos mecanismos diferentes dentro de&nbsp; wxWidgets:<br /><br /><h3>Mediante wxTheApp</h3>Esta es una variable global que contiene un puntero de tipo <em>wxApp*</em>,pero en realidad apunta a nuestra clase derivada. El problema es que siqueremos invocar a una funci&oacute;n creada en nuestra clasederivada,primero tendremos que <em>castizar</em> el puntero a nuestrotipo espec&iacute;fico.<br /><br /><h3>Mediante wxGetApp()</h3>Este m&eacute;todo es un poco m&aacute;s sofisticado, yrequiere tener en cuenta un paso adicional para poder utilizarlo. <em>wxGetApp()</em>es una funci&oacute;n global que nos devuelve un puntero del tipoespec&iacute;fico que nosotros estamos utilizando para desarrollarnuestro software. Por ejemplo, si nuestra clase se llama <em>clsApplication</em>,entonces <em>wxGetApp()</em> nos devolver&aacute; unpuntero de tipo <em>clsApplication*.</em><br />La condici&oacute;n para que esto funcione es agregar una macrosimilar a esta: <em>DECLARE_APP( clsApplication )<br /></em>Un ejemplo un poco m&aacute;s completo del archivo decabecera <em>clsApplication.h</em> podr&iacute;a versede esta manera:<br /><pre><code><span style="color: #000000;"><br /><span style="color: #7f0055;"><strong>#ifndef ClsApplication_H</strong></span><br /><span style="color: #7f0055;"><strong>#define ClsApplication_H</strong></span><br /><br /><span style="color: #7f0055;"><strong>#include &lt;wx/app.h&gt;</strong></span><br /><br /><span style="color: #7f0055;">class</span> clsApplication <span style="color: #ff0000;">:</span> <span style="color: #7f0055;">public</span> wxApp<br /><span style="color: #ff0000;">{</span><br />    DECLARE_CLASS<span style="color: #ff0000;">(</span> clsApplication <span style="color: #ff0000;">)</span><br />    DECLARE_EVENT_TABLE<span style="color: #ff0000;">()</span><br /><br /><span style="color: #7f0055;">public</span><span style="color: #ff0000;">:</span><br />    clsApplication<span style="color: #ff0000;">();</span><br />    <span style="color: #7f0055;">virtual</span> <span style="color: #ff0000;">~</span>clsApplication<span style="color: #ff0000;">();</span><br /><span style="color: #ff0000;">};</span><br /><br />DECLARE_APP<span style="color: #ff0000;">(</span> clsApplication <span style="color: #ff0000;">)</span><br /><br /><span style="color: #7f0055;"><strong>#endif</strong></span> <span style="color: #008000;">// ClsApplication_H</span></span></code></pre>Para m&aacute;s informaci&oacute;n acerca de la clase <em>wxApp</em>, consultar <a href="http://www.wxwidgets.org/manuals/stable/wx_wxapp.html#wxapp">http://www.wxwidgets.org/manuals/stable/wx_wxapp.html#wxapp</a>]]></description>            <pubDate>Tue, 19 Feb 2008 07:49:31 +0100</pubDate>        </item>        <item>            <title>Moviendo el cursor entre palabras en Eclipse</title>            <link>http://espaciovirtual.blogcindario.com/2008/02/00010-moviendo-el-cursor-entre-palabras-en-eclipse.html</link>            <description><![CDATA[Un atajo de teclado bastante extendido para moverse entre palabrasdentro de un procesador de texto es presionar la tecla <i>Control</i>seguida de la flecha izquierda o derecha para desplazarse a la palabraanterior o siguiente respectivamente.<br>Esto tambi&eacute;n es v&aacute;lido en el entorno integrado dedesarrollo Eclipse, pero con unasutileza. Por defecto,&nbsp;no solo nos moveremos entre palabras(grupos de letras separadas por uno o m&aacute;s espacios enblanco)sino que tambi&eacute;n se tienen en cuenta, dentro de una palabra,lasdiferencias entre may&uacute;sculas y min&uacute;sculas.<br>Personalmente encuentro este comportamiento un tanto molesto, puestoque utilizo mucho las combinaciones entre may&uacute;sculas ymin&uacute;sculas (para por ejemplo concatenar dos o m&aacute;spalabras dentro de un mismo nombre de variable) y es raro quenecesite moverme a esos puntos intermedios de un identificador.<br>Y no me resulta pr&aacute;ctico porque, en realidad, uso eldesplazamiento entre palabras comouna forma r&aacute;pida de moverme dentro de una l&iacute;nea,y elcomportamiento descripto m&aacute;s anteriormente <i>ralentiza</i>este desplazamiento.<br>Entonces, si se desea desactivar esta funcionalidad predeterminada ylograr que eldesplazamiento sea solo entre palabras separadas por espacios, se debeproceder de la siguiente manera:<br><br><h3>Para Eclipse con CDT (editor C++)</h3><ol>  <li><big><tt>Window &gt;&gt; Preferences&gt;&gt; C/C++&nbsp;</tt><tt>&gt;</tt><tt>&gt;Editor</tt></big></li>  <li>Deschequear<i> Smart caret positioning in identifiers</i></li></ol><h3>Para Eclipse con JDT (editor de Java)</h3><ol>  <li><big><tt>Window&nbsp;</tt><tt>&gt;</tt><tt>&gt;Preferences&nbsp;</tt><tt>&gt;</tt><tt>&gt;Java&nbsp;</tt><tt>&gt;</tt><tt>&gt;Editor</tt></big></li>  <li>Deschequear <i>Smart caret positioning in Java names(overrides platform behavior)</i><br>  </li></ol>]]></description>            <pubDate>Sat, 09 Feb 2008 18:50:20 +0100</pubDate>        </item>        <item>            <title>Compilar archivos de recursos en Windows con MinGW y Eclipse</title>            <link>http://espaciovirtual.blogcindario.com/2008/01/00009-compilar-archivos-de-recursos-en-windows-con-mingw-y-eclipse.html</link>            <description><![CDATA[Este instructivo demuestra como, en un proyecto C++ gestionado con MinGW / Eclipse, compilar un archivo de recursos.<br><ol>  <li>Por empezar, el archivo de recursos (que probablemente contendr&aacute;&nbsp; la extensi&oacute;n <i>.rc</i>) deber&aacute; copiarse en el mismo directorio en donde residen los fuentes.</li>  <li>Dentro del Eclipse, en la vista <i>Project Explorer</i>, hay que seleccionar este archivo.</li>  <li>Mediante el men&uacute; contextual, acceder a <i>Properties</i>.</li>  <li>Ir a la secci&oacute;n <i>C/C++ Build &gt; Settings &gt; Build steps</i></li>  <li>En el combo <i>Custom Build Step Applicability</i> seleccionar <i>Apply Custom Build Step Overriding Other Tools</i></li>  <li>En el campo <i>Output file name(s)</i> ingresar el mismo nombre del archivo de recursos pero con la extensi&oacute;n ".o"</li>  <li>En el campo <i>Command</i> hay que ingresar el comando necesario para realizar la compilaci&oacute;n del archivo de recurso.<br>En MinGW, tenemos el programa <i>windres</i> que realiza esta tarea.Ser&iacute;a recomendable leer la documentaci&oacute;nespec&iacute;fica para determinar exactamente que opciones utilizar.<br>Como ejemplo, transcribo el comando necesario para compilar un archivollamado armies.rc, utilizado en un proyecto construido sobre lalibrer&iacute;a wxWidgets:<br>    <font face="Courier New, Courier, monospace" size="-1"><br>    </font><tt>windres --use-temp-file -i../src/armies.rc-osrc\armies_rc.o&nbsp;&nbsp; --define __WXMSW__&nbsp; --define_WXDEBUG__&nbsp; --include-dir c:\wxWidgets-2.8.3\lib\gcc_lib\mswd--include-dir c:\wxWidgets-2.8.3\include --include-dir ..</tt><font face="Courier New, Courier, monospace" size="-1"><br>    <br>    </font>Tenga en cuenta que usted deber&aacute; adaptar estos valores seg&uacute;n sus necesidades.</li></ol>Para m&aacute;s informaci&oacute;n acerca del uso del comando <b>windres</b> referirse a: http://www.gnu.org/software/binutils/manual/html_chapter/binutils_12.html <br>Luego solo resta recompilar el proyecto. El nuevo archivo objetogenerado ser&aacute; incluido autom&aacute;ticamente durante la fase delinkeo.Para descargar el archivo de recurso utilizado en el ejemplo, haga click aquí: <a href="http://espaciovirtual.blogcindario.com/ficheros/armies.rc">armies.rc</a>]]></description>            <pubDate>Sun, 20 Jan 2008 16:00:51 +0100</pubDate>        </item>        <item>            <title>Eclipse CDT: Parser de errores</title>            <link>http://espaciovirtual.blogcindario.com/2008/01/00008-eclipse-cdt-parser-de-errores.html</link>            <description><![CDATA[En Linux, cuando se utiliza el <a href="http://www.eclipse.org/cdt/">plug-in CDT</a>para programar con Eclipse en C++, luego de compilar podemos ver ellistado de errores (si es que los hubiera) remarcados en rojo en lal&iacute;nea de c&oacute;digo en la cual se produjo. Lo mismo sucedepara los warnings pero estos se marcan en amarillo de formapredeterminada. Esta funcionalidad es posible gracias al parser deerrores incluido en CDT, que se encarga de interpretar la salida detexto generada por el compilador GCC (m&aacute;s espec&iacute;ficamentepor G++ que es el compilador de C++ incluido en el set de compiladoresGNU llamado <a href="http://gcc.gnu.org/">GCC</a>).Un problema que tuve cuando comenc&eacute; a utilizar CDT fue que loswarnings eran marcados incorrectamente como errores por Eclipse. Luegode mucho buscar por la Web, pude entender el porqu&eacute; de estecomportamiento: yo estoy utilizando una versi&oacute;n enespa&ntilde;ol de Ubuntu Linux, y por lo tanto la salida de errores ywarnings de GCC es en espa&ntilde;ol por defecto. Esto no parece caerlemuy bien mucho al CDT, que se limitaba a mostrar cualquier salida comoun error, porque no es capaz de entender que la palabra "advertencia"equivale a "warning".No encontr&eacute; versiones del parser de errores espec&iacute;ficaspara el idioma espa&ntilde;ol, por lo que enfoqu&eacute; lasoluci&oacute;n a lograr que el GCC mostrara sus mensajes eningl&eacute;s en lugar de espa&ntilde;ol. Esto se puede lograr seteandola variable de entorno LC_ALL de la siguiente manera:LC_ALL = CPero esto afecta la configuraci&oacute;n de todo el sistema, por lo queconviene limitar el cambio solo para la compilaci&oacute;n y elenlazado, utilizando las opciones que nos ofrece el Eclipse CDT de estaforma:<ol>  <li>Cargar en Eclipse nuestro proyecto C++</li>  <li>Men&uacute; "Project" -&gt; "Properties"</li>  <li>Ir a la secci&oacute;n "C++ Build" -&gt; "Environment"</li>  <li>Click en el bot&oacute;n "New"</li>  <li>En el campo "Name" ingresar LC_ALL</li>  <li>En el campo "Value" tipear la letra C</li>  <li>Darle Ok a ambas ventanas y eso es todo</li></ol>Como un beneficio extra, obtener los mensajes del compilador eningl&eacute;s nos va a facilitar las cosas a la hora de buscarinformaci&oacute;n en Internet acerca de esos errores que a veces noscomplican la vida, ya que buscando el error traducido al espa&ntilde;olno va a ser muy fruct&iacute;fero y lamentablemente GCC no dispone deuna codificaci&oacute;n num&eacute;rica para sus errores y warnings.]]></description>            <pubDate>Fri, 18 Jan 2008 07:00:51 +0100</pubDate>        </item>        <item>            <title>Visual Studio .Net - Más que un simple detalle estético</title>            <link>http://espaciovirtual.blogcindario.com/2005/09/00007-visual-studio-net-mas-que-un-simple-detalle-estetico.html</link>            <description><![CDATA[<p>Una de las cosas que primero me causó rechazo cuando comencé a utilizar el Visual Studio.Net fue ver que el IDE no soportaba los estilos visuales de Windows XP. Sé que muchos pensarán que es un simple e insignificante detalle estético pero eso, como le gustaba decir al amigo Albert, es relativo.</p><p>Hay un hecho innegable: Windows XP y sus <i>Visual Styles</i> hace ya 4 años que vieron la luz del mundo digital por primera vez. Desde entonces, como es lógico, Microsoft recomienda programar aplicaciones que soporten estos estilos visuales.</p><p>Por otro lado, Visual Studio.Net ya va por su segunda versión, y la primera tuvo 1 Service Pack. ¿Sería muy descabellado esperar que esta aplicación soporte los temas visuales de su propia empresa desarrolladora? Parece que la respuesta es <b>Sí</b>.</p><p>No solamente Visual Studio.Net se sigue viendo prácticamente igual que una aplicación corriendo en Windows 98, sino que además nos fomenta a nosotros a crear aplicaciones igualmente pobres desde el punto de vista visual.</p><p>En su primera versión, el .Net Framework no poseía en absoluto soporte para los temas visuales. Había que recurrir al viejo truco del archivo .Manifest. En Visual Studio .Net 2003 las cosas mejoraron: el método Application.EnableVisualStyles() posibilita como bien indica su nombre que nuestra aplicación adopte los dichosos estilos visuales. Pero el programador desprevenido puede caer a continuación en varias trampas.</p><h3>&nbsp;</h3><h3>Problema 1</h3><p>Si no se utiliza un archivo .Manifest para el propio IDE, en tiempo de diseño no vamos a poder ver los WinForms con los estilos. Solo los veremos en tiempo de ejecución. Ok, ponemos entonces el .Manifest.</p><h3>Problema 2</h3><p>La mayoría de los controles del .Net Framework tiene la propiedad <b>FlatStyle</b>. El programador debe cambiar esta propiedad desde el valor <i>Default</i> al valor <i>System</i> para que cada control particular acepte los estilos. Esto es así para los Buttons, RadioButtons, Combos, Frames, etc.</p><h3>Problema 3</h3><p>Si a un botón se le quiere agregar icono, tendremos que elegir: o vemos el icono o vemos el estilo visual de XP.</p><h3>Problema 4</h3><p>Y este creo que es el más grave. Resulta que hay un bug en el método Application.EnableVisualStyles() que lo hace incompatible con el uso de los ImageList, que a su vez son necesarios para poner imágenes en controles tan comunes como una Toolbar. Conclusión: tenemos que volver a soluciones alternativas como le viejo y querido .Manifest.</p><p>&nbsp;</p><p>Paradójicamente, el otro día instalé para experimentar en mi PC el Jbuilder X Foundation, un versión gratuita del IDE de Borland para desarrollar en Java. El programa mostró de entrada los estilos visuales sin problemas. Diseñé un simple Frame con unos cuantos controles. Todos mostraron sin problemas y sin modificar una sola propiedad los estilos visuales. Y digo paradójicamente porque estamos hablando de tecnologías multiplataforma que siempre tuvieron fama de no integrarse muy bien con los sistemas operativos anfitriones.</p><h3>Conclusión</h3><p>Creo que ya a esta altura habrán adivinado que no me simpatiza mucho el Visual Studio.Net, y por extensión el .Net Framework.</p><p>Como decía al principio, esto podría parecer solo un detalle. Pero los detalles hablan del cuidado y la dedicación con el que las aplicaciones son desarrolladas. Sobre todo si estamos hablando de herramientas de desarrollo profesionales que se utilizan para soportar sistemas críticos en un sinnúmero de organizaciones de todo el mundo.</p><h2>Links relacionados:</h2><p><a href="http://www.faq-mac.com/mt/archives/007504.php">Windows&nbsp;:&nbsp;Microsoft quiere actualizar XP antes del lanzamiento de Longhorn</a></p><p><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/xptheming.asp">Using Windows XP Visual Styles</a></p><p><a href="http://www.codeproject.com/buglist/EnableVisualStylesBug.asp">Application.EnableVisualStyles Bug</a></p><p><a href="http://www.sadeveloper.net/Articles_View.aspx?articleID=260"><span id="lblTitle">Embedded Icons with Alpha-Blending</span> </a></p><p><a class="TitleLinkStyle" href="http://www.adapdev.com/blogs/smccormack/PermaLink,guid,266a7553-ff35-4454-a228-91f318d2c90a.aspxhttp:/www.adapdev.com/blogs/smccormack/PermaLink,guid,266a7553-ff35-4454-a228-91f318d2c90a.aspx">Bug with Application.EnableVisualStyles() and image rendering</a></p><p><a href="http://www.softwaremix.net/viewtopic-278822.html">Problemas con Toolbar y EnableVisualStyles()</a></p>]]></description>            <pubDate>Sun, 04 Sep 2005 11:40:42 +0100</pubDate>        </item>    </channel></rss>