<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>El Futirifoken &#187; Mono</title>
	<atom:link href="http://www.gazer.com.ar/category/general/programacion/mono/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gazer.com.ar</link>
	<description>El arte de no decir nada ;-)</description>
	<lastBuildDate>Mon, 26 Dec 2011 19:56:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>emerge -av life</title>
		<link>http://www.gazer.com.ar/2007/06/06/emerge-av-life/</link>
		<comments>http://www.gazer.com.ar/2007/06/06/emerge-av-life/#comments</comments>
		<pubDate>Wed, 06 Jun 2007 04:56:47 +0000</pubDate>
		<dc:creator>Gazer</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Tesis]]></category>

		<guid isPermaLink="false">http://www.gazer.com.ar/2007/06/06/emerge-av-life/</guid>
		<description><![CDATA[Ha pasado un buen rato, y la verdad que no ha pasado mucho en mi vida. Estoy bastante ocupado con boludeces de la facultad (trabajos, entregas, parciales, etc) y principalmente con mi tesis que dio un giro que no me esperaba , se recorto por todos lados lo que yo tenía pensado hacer (o más [...]]]></description>
			<content:encoded><![CDATA[<p>Ha pasado un buen rato, y la verdad que no ha pasado mucho en mi vida. Estoy bastante ocupado con boludeces de la facultad (trabajos, entregas, parciales, etc) y principalmente con mi tesis que dio un giro que no me esperaba <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , se recorto por todos lados lo que yo tenía pensado hacer (o más bien lo que yo había entendido que tenía que hacer <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ).</p>
<p>Resumido en un párrafo de un mail en la charla con uno de mis directores de Tesis :</p>
<blockquote><p>Tal vez para resumir mi idea sobre el proyecto, lo que estarías haciendo es un &#8220;reificador de mensajes entre objetos&#8221;, configurable de forma que la reificación pueda encenderse y apagarse de forma dinámica por motivos de performance. Casi la palabra aspecto se puede suprimir <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p></blockquote>
<p>En fin, parece tan simple, que complica. Para empezar estoy analizando diferentes weavers y como realizan su trabajo, para poder comprender los cambios que se necesitan en la VM.</p>
<p>Les dejo <a href="http://hugunin.net/papers/aosd-2004-cameraReady.pdf">acá</a> buen paper sobre el weaving en AspectJ.</p>
<p>En otro aspecto de la vida, mi hermana juró por su título hace un par de semanas, y ahora oficialmente soy el único miembro no-titulado de mi familia <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , lo que suma una presión extra a completar mi carrera de grado. Tengo una foto que predice el futuro, donde estoy posando muy sonriente con el título de mi hermana (total enrollados todos son iguales!!), pero voy a tener que esperar a viajar a Cipolletti para obtener una copia <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gazer.com.ar/2007/06/06/emerge-av-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O.L.E. screencast!</title>
		<link>http://www.gazer.com.ar/2006/07/20/ole-screencast/</link>
		<comments>http://www.gazer.com.ar/2006/07/20/ole-screencast/#comments</comments>
		<pubDate>Thu, 20 Jul 2006 06:55:31 +0000</pubDate>
		<dc:creator>Gazer</dc:creator>
				<category><![CDATA[Mono]]></category>
		<category><![CDATA[Oregano]]></category>

		<guid isPermaLink="false">http://www.gazer.com.ar/2006/07/20/ole-screencast/</guid>
		<description><![CDATA[Para aquellos curiosos hice un pequeño screencast de editor de componentes. Lo nuevo respecto de mi último post es la habilidad de modificar los puntos de control de los elementos y darles nuevas y alocadas formas . Por razones de sueño, no pude completar los puntos de control de lo elipces, por lo que no [...]]]></description>
			<content:encoded><![CDATA[<p>Para aquellos curiosos hice un pequeño screencast de editor de componentes. Lo nuevo respecto de mi último post es la habilidad de modificar los puntos de control de los elementos y darles nuevas y alocadas formas <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Por razones de sueño, no pude completar los puntos de control de lo elipces, por lo que no lo muestro en el video.</p>
<p>El screencast lo hice, como siempre, con vnc2swf y está <a href="http://gazer.com.ar/wp-content/OreganoLibEditor.html">acá</a> y pesa casi 3Mb.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gazer.com.ar/2006/07/20/ole-screencast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oregano Library Editor!</title>
		<link>http://www.gazer.com.ar/2006/07/11/oregano-library-editor/</link>
		<comments>http://www.gazer.com.ar/2006/07/11/oregano-library-editor/#comments</comments>
		<pubDate>Tue, 11 Jul 2006 22:09:38 +0000</pubDate>
		<dc:creator>Gazer</dc:creator>
				<category><![CDATA[Mono]]></category>
		<category><![CDATA[Oregano]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://www.gazer.com.ar/2006/07/11/oregano-library-editor/</guid>
		<description><![CDATA[Así como lo leen, ya estoy trabajando en un editor para las bibliotecas de componentes de Oregano. En principio para poder cambiar algunas que no me gustan mucho o que tienen detalles, después veré si la aplicación queda lo suficientemente linda como para hacerla crecer . Luego de una frustrada búsqueda de algún Canvas (no [...]]]></description>
			<content:encoded><![CDATA[<p align="left">Así como lo leen, ya estoy trabajando en un editor para las bibliotecas de componentes de <a href="http://oregano.gforge.lug.fi.uba.ar/">Oregano</a>. En principio para poder cambiar algunas que no me gustan mucho o que tienen detalles, después veré si la aplicación queda lo suficientemente <em>linda</em> como para hacerla crecer <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p><a class="imagelink" title="OreganoLibraryEditor.png" onclick="doPopup(197);return false;" href="http://www.gazer.com.ar/wp-content/uploads/2006/07/OreganoLibraryEditor.png"><img id="image197" src="http://www.gazer.com.ar/wp-content/uploads/2006/07/OreganoLibraryEditor.thumbnail.png" alt="OreganoLibraryEditor.png" width="165" height="133" align="left" /></a>Luego de una frustrada búsqueda de algún Canvas  (no iba a repetir los errores del pasado y usar GnomeCanvas <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ) decidí hacer uno minimalista, que soporte las operaciones básicas que requiero : Agregar cosas, moverlas y rotarlas. Salvo esta última, las demás están andando, con soporte <em>Group</em> y <em>UnGroup</em></p>
<p>Y si, como ya se pueden imaginar la aplicación está escrita en C#, con Gtk# y Cairo#. Como el <em>buildsystem</em> depende enteramente de <a href="http://www.monodevelop.org/">Monodevelop</a>, no creo que libere código alguno por el momento.<br />
En la captura se puede ver el diseño de un componente místico, conocido como Futirifoken <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p><strong>UPDATE:</strong> Unos toque mágicos con el Stetic, un poco de magia de System.Xml.Serialization y un par de hacks para sacar la cosa más rápido y &#8230;</p>
<p align="center"><a class="imagelink" title="OreganoLibraryEditorWorking.png" onclick="doPopup(199);return false;" href="http://www.gazer.com.ar/wp-content/uploads/2006/07/OreganoLibraryEditorWorking.png"><img id="image199" src="http://www.gazer.com.ar/wp-content/uploads/2006/07/OreganoLibraryEditorWorking.png" alt="OreganoLibraryEditorWorking.png" width="327" height="272" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gazer.com.ar/2006/07/11/oregano-library-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scary Code</title>
		<link>http://www.gazer.com.ar/2006/06/16/scary-code/</link>
		<comments>http://www.gazer.com.ar/2006/06/16/scary-code/#comments</comments>
		<pubDate>Sat, 17 Jun 2006 02:48:21 +0000</pubDate>
		<dc:creator>Gazer</dc:creator>
				<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://www.gazer.com.ar/2006/06/16/scary-code/</guid>
		<description><![CDATA[Preparándome para mi charla sobre Mono en la CTT de junio organizada por el Cafelug, me puse a jugar con un ejemplo para mostrar que, efectivamente, anda eso de mezclar lenguajes en .NET. Antes de seguir leyendo, si sufrís de nauceas, estás embarazado/a, o simplemente este tipo de cosas te impresionan, no sigas leyendo Todo [...]]]></description>
			<content:encoded><![CDATA[<p>Preparándome para mi charla sobre Mono en la CTT de junio organizada por el Cafelug, me puse a jugar con un ejemplo para mostrar que, efectivamente, anda eso de mezclar lenguajes en .NET.</p>
<p>Antes de seguir leyendo, si sufrís de nauceas, estás embarazado/a, o simplemente este tipo de cosas te impresionan, no sigas leyendo <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Todo comienza con la definición de nuestra clase en C# :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> ClaseCS <span style="color: #008000;">&#123;</span>
    <span style="color: #0600FF; font-weight: bold;">private</span> <span style="color: #6666cc; font-weight: bold;">int</span> x<span style="color: #008000;">;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">int</span> X <span style="color: #008000;">&#123;</span>
        get <span style="color: #008000;">&#123;</span> <span style="color: #0600FF; font-weight: bold;">return</span> x<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
        set <span style="color: #008000;">&#123;</span> x <span style="color: #008000;">=</span> value<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> ClaseCS <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span> x<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        X <span style="color: #008000;">=</span> x<span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
    <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">override</span> <span style="color: #6666cc; font-weight: bold;">string</span> ToString <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>
        <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #6666cc; font-weight: bold;">String</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Format</span> <span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Soy ClaseCS hecha en C# {0}&quot;</span>, x<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>No es una clase que haga mucho (el property está bien al cuete). Lo importante acá es el método ToString que luego utilizaremos desde IronPython.</p>
<p>Para compilar solo debemos ejecutar : #> mcs -target:library -out:clasecs.dll ClaseCS.cs.</p>
<p>La parte que asusta es ahora ejecutar la consola de IronPython, sobre todo por el <em>notice de copyright</em> que trae la última versión <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Voy a mostrar todo de una y después  explicar que es cada cosita.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">IronPython 1.0.60523 <span style="color: black;">&#40;</span>Beta<span style="color: black;">&#41;</span> on .<span style="color: black;">NET</span> 2.0.50727.42  
Copyright <span style="color: black;">&#40;</span>c<span style="color: black;">&#41;</span> Microsoft Corporation. <span style="color: black;">All</span> rights reserved.  
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">import</span> clr  
<span style="color: #66cc66;">&gt;&gt;&gt;</span> clr.<span style="color: black;">AddReferenceToFile</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;clasecs.dll&quot;</span><span style="color: black;">&#41;</span>  
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">import</span> ClaseCS   
<span style="color: #66cc66;">&gt;&gt;&gt;</span> c = ClaseCS<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>  
<span style="color: #66cc66;">&gt;&gt;&gt;</span> <span style="color: #ff7700;font-weight:bold;">print</span> c 
Soy ClaseCS hecha en C<span style="color: #808080; font-style: italic;"># 1</span></pre></div></div>

<p>Trivial, no <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ?. Básicamente lo que hago es importar un módulo especial de IronPython que se encarga de manejar las referencias a los assemblies .Net del sistema. Si hacemos cosas como &#8220;import System&#8221; el CLR se encargaría transparentemente. En mi caso, al cargar algo especifico lo debo hacer explicitamente (y no es mayor problema, porque el Zend de Python dice &#8220;mejor explícito que implícito&#8221; <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> ) .</p>
<p>El método AddReferenceToFile agrega una referencia al DLL que habíamos generado antes, para que la máquina virtual la conozca. Luego importamos el módulo, y como no tenemos namespace declarado, podemos instanciar directamente ClaseCS ().</p>
<p>Por último llamamos a &#8220;print c&#8221; que lo que hace en llamar a c.__str__ para obtener la representación en forma de texto de la instancia. Internamente IronPython traduce a una llamada ToString del código intermedio que está mapeada con nuestro ToString de C#, dando como resultado que se imprima el texto que habíamos definido en nuestra clase de C#.</p>
<p>No es algo que recomiende hacer en sus casas, pero es algo relindo y loco para impresionar en una charla <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.gazer.com.ar/2006/06/16/scary-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu Update</title>
		<link>http://www.gazer.com.ar/2005/05/04/ubuntu-rocks/</link>
		<comments>http://www.gazer.com.ar/2005/05/04/ubuntu-rocks/#comments</comments>
		<pubDate>Wed, 04 May 2005 19:06:01 +0000</pubDate>
		<dc:creator>Gazer</dc:creator>
				<category><![CDATA[GNU+Linux]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://www.gazer.com.ar/archives/2005/05/04/ubuntu-rocks/</guid>
		<description><![CDATA[Luego de varios días con los repositorios rotos, Ubuntu Breeze (como se llama la nueva versión de desarrollo) volvió a la vida. La novedad con la que me encontré es que han creado paquetes para Mono 1.1.X y Gtk# 1.9.x, con lo que ahora puedo probar todo eso que no podía antes, por no querer [...]]]></description>
			<content:encoded><![CDATA[<p>Luego de varios días con los repositorios rotos, <a href="http://www.ubuntulinux.org">Ubuntu</a> Breeze (como se llama la nueva versión de desarrollo) volvió a la vida. La novedad con la que me encontré es que han creado paquetes para <a href="http://www.mono-project.com/">Mono</a> 1.1.X y <a href="http://gtk-sharp.sf.net/">Gtk#</a> 1.9.x, con lo que ahora puedo probar todo eso que no podía antes, por no querer compilar Mono desde los fuentes, o sea : <a href="http://www.gnome.org/projects/beagle/">Beagle</a> e <a href="http://www.ifolder.com/">iFolder</a>.</p>
<p>También compilé <a href="http://www.monouml.org/">Mono UML</a>, una herramienta  <acronym title="Computer-Aided Software Engineering">CASE</acronym> para generar diagramas UML y luego código (C# por ahora si mal no recuerdo), entre otras <a href="http://www.monouml.org/index.php?sect=features">cosas</a>. Si bien está un poco verde, los diagramas son 1000 veces más <em>lindos</em> que los que hace Dia. Pueden ver como compilarlo en <a href="http://www.enzolutions.com/mono/archives/2005-03-21T23_41_54.html">este</a> enlace.</p>
<div style="text-align: center;"><a href="wp-content/monouml.png"><img title="Mono UML" src="/wp-content/monouml-mini.png" alt="Mono UML" /></a></div>
<p>Sin duda Ubuntu crece y crece para el lado correcto cada día &#8230;.</p>
<p>Pero, para tener un poco de variedad, no le pierdan la vista a <a href="http://foresightlinux.com/">Foresight Linux</a>, una distro que quiere pisar fuerte. Seguramente haré uno de mis <em>famosos</em> review&#8217;s cuando termines los actuales <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.gazer.com.ar/2005/05/04/ubuntu-rocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu@Work</title>
		<link>http://www.gazer.com.ar/2005/02/22/ubuntu-at-work/</link>
		<comments>http://www.gazer.com.ar/2005/02/22/ubuntu-at-work/#comments</comments>
		<pubDate>Tue, 22 Feb 2005 21:54:53 +0000</pubDate>
		<dc:creator>Gazer</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://miriya.assekuransa.com/blog/archives/2005/02/22/ubuntu-at-work/</guid>
		<description><![CDATA[Ayer y hoy estuve sin PC en el trabajo por culpa del micro que se quemó. Cuando tuve micro nuevo, tuve que cambiar el mother porque no lo soportaba, y con el nuevo mother algo falló y me quedé sin disco (solo lógicamente). Por lo que al tener que reinstalar, aproveché y migré a Ubuntu [...]]]></description>
			<content:encoded><![CDATA[<p>Ayer y hoy estuve sin PC en el trabajo por culpa del micro que se quemó. Cuando tuve micro nuevo, tuve que cambiar el mother porque no lo soportaba, y con el nuevo mother algo falló y me quedé sin disco (solo lógicamente). Por lo que al tener que reinstalar, aproveché y migré a Ubuntu Linux.</p>
<p>La tarea fue muy dificil, no por la distro, sino porque luego de 4 horas de tratar de instalarlo (pasando por pruebas con Knoppix 2.4 y 3.6, y cambio de memoria), descubrí que el mother nuevo tiene problemas con el IDE0 y por eso fallaba. En fin, ya tengo cambie el que no andaba y terminó de instalar mi PC para poder retornar a mis tareas diarias.</p>
<h4>GPuzzle</h4>
<p>Leyendo <a href="http://www.osnews.com/story.php?news_id=9780">este</a> artículo de <a href="http://www.osnews.com">OsNews.com</a>, me encontré con que nombraron a <a href="http://gazer.homelinux.org/proyectos/GPuzzle/">GPuzzle</a> entre los programas desarrollados con Mono &#8220;menos conocidos&#8221; <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , claro, seguramente la editora tomó una lista de <a href="http://www.gnomefiles.org/">GnomeFiles.org</a> y no ha tenido tiempo de probarlos todos <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> , porque GPuzzle apesta <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  (y lo dice quién lo programó). Una excusa para mejorarlo <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.gazer.com.ar/2005/02/22/ubuntu-at-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ponele un TrayIcon a tu aplicación</title>
		<link>http://www.gazer.com.ar/2005/01/20/ponele-un-trayicon-a-tu-applicacion/</link>
		<comments>http://www.gazer.com.ar/2005/01/20/ponele-un-trayicon-a-tu-applicacion/#comments</comments>
		<pubDate>Thu, 20 Jan 2005 06:11:20 +0000</pubDate>
		<dc:creator>Gazer</dc:creator>
				<category><![CDATA[Mono]]></category>

		<guid isPermaLink="false">http://miriya.assekuransa.com/blog/archives/2005/01/20/ponele-un-trayicon-a-tu-applicacion/</guid>
		<description><![CDATA[Es realmente muy simple hacer que nuestra aplicación use el área de notificación de Gnome utilizando Mono y C#, gracias a que Todd Bermann hace ya unas semanas escribió el módulo Egg TrayIcon enteramente en C#, liberándonos de la tortura del código en C &#8230; realmente se implementa en unos pocos minútos, veamos. 1) Primero [...]]]></description>
			<content:encoded><![CDATA[<p>Es realmente muy simple hacer que nuestra aplicación use el <em>área de notificación de Gnome</em> utilizando Mono y C#, gracias a que <a href="http://codeblogs.ximian.com/blogs/tberman/">Todd Bermann</a> hace ya unas semanas <a href="http://codeblogs.ximian.com/blogs/tberman/archives/000439.html">escribió el módulo Egg TrayIcon enteramente en C#</a>, liberándonos de la tortura del código en C <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  &#8230; realmente se implementa en unos pocos minútos, veamos.</p>
<p>1) Primero bajamos el archivo <a href="http://codeblogs.ximian.com/blogs/tberman/archives/TrayIcon.cs">TrayIcon.cs</a> que Todd Bermann ha hecho.<br />
2) Escribimos nuestra applicación de prueba, contará hacia adelante (hasta el overflow del int) :</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">// Namespaces que vamos a utilizar</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">Gtk</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">Gnome</span><span style="color: #008000;">;</span>
<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008080;">Egg</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// Este namespace está definido en el archivo TrayIcon.cs</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// Nuestra clase de ejemplo</span>
<span style="color: #6666cc; font-weight: bold;">class</span> TrayTest <span style="color: #008000;">&#123;</span>
  <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">int</span> count <span style="color: #008000;">=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
  <span style="color: #0600FF; font-weight: bold;">static</span> Label label<span style="color: #008000;">;</span>
&nbsp;
  <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> Main<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> args<span style="color: #008000;">&#41;</span> 
  <span style="color: #008000;">&#123;</span>
    EventBox eb<span style="color: #008000;">;</span>
    TrayIcon trayIcon<span style="color: #008000;">;</span>
    <span style="color: #008080; font-style: italic;">// Creamos un programa</span>
    Program test <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Program <span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Test&quot;</span>, <span style="color: #666666;">&quot;0.0.1&quot;</span>, Modules<span style="color: #008000;">.</span><span style="color: #0000FF;">UI</span>, args<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">// Creamos la etiqueta</span>
    label <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Label <span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Hola Mundo&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">// No realmente necesario para este ejemplo, pero si deseamos agregar</span>
    <span style="color: #008080; font-style: italic;">// menú contextual o tooltip es necesario</span>
    eb <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> EventBox <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    eb<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span> <span style="color: #008000;">&#40;</span>label<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">// Creamos el tooltip</span>
    trayIcon <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> TrayIcon <span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Test&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    trayIcon<span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span> <span style="color: #008000;">&#40;</span>eb<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    trayIcon<span style="color: #008000;">.</span><span style="color: #0000FF;">ShowAll</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">// Iniciamos el texto</span>
    Count <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">// Refresco cada 1 segundo</span>
    GLib<span style="color: #008000;">.</span><span style="color: #0000FF;">Timeout</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Add</span> <span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1000</span>, <span style="color: #008000;">new</span> GLib<span style="color: #008000;">.</span><span style="color: #0000FF;">TimeoutHandler</span> <span style="color: #008000;">&#40;</span>Count<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">// Done!, Corriendo!!!</span>
    test<span style="color: #008000;">.</span><span style="color: #0000FF;">Run</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
  <span style="color: #008000;">&#125;</span>
&nbsp;
  <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">bool</span> Count <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
  <span style="color: #008000;">&#123;</span>
    label<span style="color: #008000;">.</span><span style="color: #0000FF;">Text</span> <span style="color: #008000;">=</span> <span style="color: #6666cc; font-weight: bold;">String</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Format</span> <span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Voy contando {0} veces ...&quot;</span>, count<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    count<span style="color: #008000;">++;</span>
    <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">true</span><span style="color: #008000;">;</span>
  <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>3) Compilamos nuestra aplicación  :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"> $ mcs -target:exe -out:TrayTest.exe -pkg:gtk-sharp -pkg:gnome-sharp <span style="color: #000000; font-weight: bold;">*</span>.cs
 Compilation succeeded</pre></div></div>

<p>4) La ejecutamos :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"> $ mono .<span style="color: #000000; font-weight: bold;">/</span>TrayIcon.exe    <span style="color: #7a0874; font-weight: bold;">&#40;</span>en Debian con <span style="color: #ff0000;">&quot;./TrayIcon.exe&quot;</span> alcanza, no se si otras distros usan binfmt por defecto<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Si no tenemos área de notificación en nuestro panel de Gnome, lo agregamos antes para ver el resultado, y veríamos algo como :</p>
<div align="center">
<img src="http://www.gazer.com.ar/wp-content/trayicon.png" alt="Ejemplo de TrayIcon" />
</div>
<p>Como se darán cuenta, muy simple y rápido &#8230;. Espero que lo disfruten!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gazer.com.ar/2005/01/20/ponele-un-trayicon-a-tu-applicacion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GPuzzle</title>
		<link>http://www.gazer.com.ar/2004/12/07/gpuzzle/</link>
		<comments>http://www.gazer.com.ar/2004/12/07/gpuzzle/#comments</comments>
		<pubDate>Tue, 07 Dec 2004 17:10:54 +0000</pubDate>
		<dc:creator>Gazer</dc:creator>
				<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://miriya.assekuransa.com/blog/archives/2004/12/07/gpuzzle/</guid>
		<description><![CDATA[GPuzzle es un simple programa realizado en Mono y GTK# de un viejo juego que tenía cuando era chico. El objetivo es ordenar la secuencia de números que se nos presentan, como se ven en las imágenes de ejemplo. El otro día se me ocurrió hacerlo cuando leí que Sam Loyd había comercializado un juego [...]]]></description>
			<content:encoded><![CDATA[<p>GPuzzle es un simple programa realizado en <a href="http://www.go-mono.org">Mono</a> y <a href="http://gtk-sharp.sourceforge.net/">GTK#</a> de un viejo juego que tenía cuando era chico. El objetivo es ordenar la secuencia de números que se nos presentan, como se ven en las imágenes de ejemplo.</p>
<p>El otro día se me ocurrió hacerlo cuando leí que <a href="http://en.wikipedia.org/wiki/Sam_Loyd">Sam Loyd</a> había comercializado un juego llamado <a href="http://en.wikipedia.org/wiki/Fifteen_puzzle">The Fifteen Puzzle</a>, cuyo desafío era ordenar la secuencia de números, comenzando solamente con el 14 y 15 invertidos. Claro, que años más tarde un matemático demostró que ese juego no tiene solución <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , utilizando una técnica que mide el &#8220;nivel de desorden&#8221;, con lo que se deduce que para que tenga solución debe tener un nivel par, y el juego de Lloyds tenía nivel de desorden 1 <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , el premio que ofrecía estaba bien a salvo.</p>
<div align="center">
<img src="http://www.gazer.com.ar/wp-content/gpuzzle.png" alt="Juego Terminado" /> <img src="http://www.gazer.com.ar/wp-content/gpuzzle1.png" alt="Formación Inicial" />
</div>
<p>Como verán, Debian Sid está un poquito rota y las cosas se ven medio mal, pero no le presten importancia <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , lo mismo a mis feos recortes de imágenes apurados <img src='http://www.gazer.com.ar/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Bien, aún no está terminado, pero ya funciona y se puede jugar. Para descargarlo pueden utilizar mi repositorio <a href="http://www.gazer.com.ar/repos/">Darcs</a> bajando el repositorio GPuzzle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gazer.com.ar/2004/12/07/gpuzzle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parche para MCatalog</title>
		<link>http://www.gazer.com.ar/2004/10/25/parche-para-mcatalog/</link>
		<comments>http://www.gazer.com.ar/2004/10/25/parche-para-mcatalog/#comments</comments>
		<pubDate>Mon, 25 Oct 2004 05:43:34 +0000</pubDate>
		<dc:creator>Gazer</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://miriya.assekuransa.com/blog/archives/2004/10/25/ricardo-gazer-markiewicz-parche-para-mcatalog/</guid>
		<description><![CDATA[MCatalog es un catálogos de libros y películas escrito en Mono+GTK# que promete cosas muy lindas. Puede manejar préstamos de nuestras cosas y lo más lindo es que busca en Amazon toda la info del libro/película (incluida una fotito). Pero bueno, como mi ISP me obliga a usar proxy http, tuve que empezar a leer [...]]]></description>
			<content:encoded><![CDATA[<p><a class="wiki" href="http://mcatalog.sf.net/">MCatalog</a> es un catálogos de libros y películas escrito en <a class="wiki" href="http://www.go-mono.org/">Mono</a>+GTK# que promete cosas muy lindas. Puede manejar préstamos de nuestras cosas y lo más lindo es que busca en <a class="wiki" href="http://www.amazon.com/">Amazon</a> toda la info del libro/película (incluida una fotito).</p>
<p>Pero bueno, como mi ISP me obliga a usar proxy http, tuve que empezar a leer un poco del System.Net de la plataforma .NET para ver como diablos se le agrega un proxy a las conexiones HTTP.</p>
<p>El primer intento fue exitoso, pero solo era local para el System.Web.Services.Protocols.SoapHttpClientProtocol, que tiene una propiedad que es proxy donde le asignamos una instancia de WebProxy y sale todo andando bonito. El problema es que el resto de las consultas las hace con WebClient, que dentro usa WebHttpRequest. Este último soporta proxy, pero como esta oculto dentro del WebClient no tenia acceso a él.</p>
<p>Luego de un rato de googlear y leer la documentación de MSDN encontré System.Net.GlobalProxySelection !, la magia estaba hecha .. Tiene una propiedad que se llama <em>Select</em> donde asignamos una instancia de WebProxy , y todas nuestras HttpRequest utilizarán proxy <img src="http://wiki.lug.fi.uba.ar/img/smiles/icon_cool.gif" alt="cool" />.</p>
<p>Luego de fixear un par de cosas más, como ser sacar la configuración desde el Gnome Proxy Settings, el <a class="wiki" href="http://gazer.homelinux.org/files/patches/proxy.diff">parche</a> vino a mí y lo envié a los desarrolladores. Solo falta ver si lo aceptan <img src="http://wiki.lug.fi.uba.ar/img/smiles/icon_mrgreen.gif" alt="mrgreen" />.</p>
<p>El parche fue realizado sobre la versión 0.0.4.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gazer.com.ar/2004/10/25/parche-para-mcatalog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

