<?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>Linux, Java y programación &#187; mono</title>
	<atom:link href="http://casidiablo.net/tag/mono/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Fri, 11 Nov 2011 05:41:21 +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>Video Tutorial de Introducción a MonoDevelop</title>
		<link>http://casidiablo.net/video-introduccion-monodevelop/</link>
		<comments>http://casidiablo.net/video-introduccion-monodevelop/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 03:22:08 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[video tutoriales]]></category>
		<category><![CDATA[monodevelop]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3063</guid>
		<description><![CDATA[¡Hola de nuevo! En esta ocasión me gustaría compartir con ustedes este video tutorial acerca de MonoDevelop. No es nada avanzado, solo muestra algunas características de este IDE. El video en cuestión lo grabé hace más o menos siete meses, pero casualmente había olvidado que lo había grabado Y, aunque ya vamos en la versión [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fvideo-introduccion-monodevelop%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Video%20Tutorial%20de%20Introducci%C3%B3n%20a%20MonoDevelop%22%20%7D);"></div>
<p style="text-align: justify;">¡Hola de nuevo! En esta ocasión me gustaría compartir con ustedes este video tutorial acerca de MonoDevelop. No es nada avanzado, solo muestra algunas características de este IDE. El video en cuestión lo grabé hace más o menos siete meses, pero casualmente había olvidado que lo había grabado <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Y, aunque ya vamos en la versión 2 de MonoDevelop, no quiero perder el trabajo que alguna vez hice.</p>
<p style="text-align: justify;"><embed src="http://blip.tv/play/g9MGgYjCR5OibA%2Em4v" type="application/x-shockwave-flash" width="640" height="430" allowscriptaccess="always" allowfullscreen="true"></embed></p>
<p style="text-align: justify;">Como siempre, pueden encontrar el vídeo en <a title="Esta dividido en dos partes (Youtube solo deja videos menores de 10 minutos)" href="http://www.youtube.com/watch?v=sbdI1iSoRYE">Youtube</a> o en <a href="http://www.vimeo.com/5084692">Vimeo</a>. Aunque creo que hay un pedazo que se ve feo y el sonido no es el mejor, espero que les guste y disculpen lo feo <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/video-introduccion-monodevelop/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Moonlight 1.0 lanzado oficialmente + video</title>
		<link>http://casidiablo.net/moonlight-10-lanzado-oficialmente-video/</link>
		<comments>http://casidiablo.net/moonlight-10-lanzado-oficialmente-video/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 18:05:30 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[noticias]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[moonlight]]></category>
		<category><![CDATA[silveright]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2868</guid>
		<description><![CDATA[Por todos lados andan comentando el lanzamiento de Moonlight 1.0, la implementación libre de Microsoft Silveright. Moonlight se distribuye en la forma de un plugin para Firefox, en versiones de 32 y 64 bits, y puede ser descargado desde el sitio web del proyecto. Como no tengo mucho tiempo, los dejo con un video que [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fmoonlight-10-lanzado-oficialmente-video%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Moonlight%201.0%20lanzado%20oficialmente%20%2B%20video%22%20%7D);"></div>
<p style="text-align: justify;">Por todos lados andan comentando el lanzamiento de <a href="http://es.wikipedia.org/wiki/Moonlight_(runtime)">Moonlight 1.0</a>, la implementación libre de <a href="http://es.wikipedia.org/wiki/Microsoft_Silverlight">Microsoft Silveright</a>. <strong>Moonlight </strong>se distribuye en la forma de un plugin para Firefox, en versiones de 32 y 64 bits, y puede ser descargado desde el sitio web del proyecto.</p>
<p style="text-align: justify;">Como no tengo mucho tiempo, los dejo con un video que preparó <a href="http://linpodcast.com/blog/2009/02/12/instalar-moonlight-1-0-en-linux/">JainuX</a> en el que se ve el proceso de instalación y posterior uso:</p>
<p style="text-align: justify;"><object width="640" height="430" data="http://blip.tv/play/AeyiGJHdZQ" type="application/x-shockwave-flash"><param name="src" value="http://blip.tv/play/AeyiGJHdZQ" /><param name="allowfullscreen" value="true" /></object></p>
<p style="text-align: justify;">Más información: <a href="http://www.go-mono.com/moonlight/" target="_blank">Moonlight 1.0</a></p>
<p style="text-align: justify;">Descarga <a href="http://www.go-mono.com/archive/moonlight-plugins/latest/novell-moonlight-1.0-i586.xpi" target="_blank">Moonlight 1.0</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/moonlight-10-lanzado-oficialmente-video/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Busqueda Binaria &#8211; C Sharp</title>
		<link>http://casidiablo.net/ejemplo-localizacion-binaria-c-sharp/</link>
		<comments>http://casidiablo.net/ejemplo-localizacion-binaria-c-sharp/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 00:43:32 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[binaria]]></category>
		<category><![CDATA[busqueda]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[mono]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2259</guid>
		<description><![CDATA[Hace unos dí­as y poní­a un ejemplo acerca de búsquedas lineales en arreglos, ésta vez hablaremos acerca de las búsquedas lineales, un método mucho más rápido para buscar elementos. ¿Cómo funciona este método? Para poder aplicar éste método de búsqueda es necesario que el arreglo esté ordenado; posteriormente, se aplica el siguiente algoritmo: se ubica [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fejemplo-localizacion-binaria-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Busqueda%20Binaria%20-%20C%20Sharp%22%20%7D);"></div>
<p style="text-align: justify;">Hace unos dí­as y poní­a un ejemplo acerca de <a href="http://casidiablo.net/buscar-elementos-dentro-array-csharp-metodo-lineal/">búsquedas lineales en arreglos</a>, ésta vez hablaremos acerca de las búsquedas lineales, un método mucho más rápido para buscar elementos.</p>
<p style="text-align: justify;"><em>¿Cómo funciona este método?</em> Para poder aplicar éste método de búsqueda <strong>es necesario que el arreglo esté ordenado</strong>; posteriormente, se aplica el siguiente algoritmo: se ubica el elemento de la mitad del arreglo, entonces, si el número que se está buscando dentro del arreglo es menor al número de la mitad, se busca el número de la mitad entre el inicio del y la mitad del mismo, y así­ hasta encontrar el elemento deseado.</p>
<p style="text-align: justify;">Por ejemplo, suponiendo que tenemos un  arreglo con los siguientes valores:</p>
<p style="text-align: justify;"><code>2, 4, 5 , 6, 8, 9, 10, 12, 24, 34, 46, 56, 60, 67, 78, 89, 90</code></p>
<p style="text-align: justify;">&#8230;y queremos buscar el valor 10; tenemos que, el elemento de la mitad contiene el valor 24. Puesto que 24 &gt; 10, buscamos el valor intermedio entre el principio del arreglo y la mitad del mismo, esto es 8. Puesto que 8 &lt; 10, buscamos el valor intermedio entre 8 y la mitad del arreglo (24), esto es 10. Así­, con tan solo 3 bucles, hemos conseguido el valor buscado.</p>
<p style="text-align: justify;">Vamos con el código del programa, que nos sacará de toda duda:</p>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2008/11/busquedabinaria.png"  /></p>
<p><span id="more-2259"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
using System.Drawing;
using System.Windows.Forms;
public class EjemploBusquedaBinaria : Form
{
  private Label labelSolicitar;
  private TextBox cajaEntrada;
  private Label labelResultado;
  private Label labelMostrar;
  private Label labelSalida;
  private Button botonBuscar;
  int[] a = { 0, 2, 4, 6, 8, 10, 12, 14, 16,
              18, 20, 22, 24, 26, 28 };
  public EjemploBusquedaBinaria(){
     InitializeComponent();
  }
  private void InitializeComponent() {
     this.labelMostrar = new Label();
     this.labelResultado = new Label();
     this.cajaEntrada = new TextBox();
     this.labelSolicitar = new Label();
     this.botonBuscar = new Button();
     this.labelSalida = new Label();
     this.SuspendLayout();
     //
     // labelMostrar
     //
     this.labelMostrar.Location = new System.Drawing.Point(261, 8);
     this.labelMostrar.Name = &quot;labelMostrar&quot;;
     this.labelMostrar.Size = new System.Drawing.Size(152, 20);
     this.labelMostrar.TabIndex = 3;
     //
     // labelResultado
     //
     this.labelResultado.Location = new System.Drawing.Point(213, 8);
     this.labelResultado.Name = &quot;labelResultado&quot;;
     this.labelResultado.Size = new System.Drawing.Size(50, 16);
     this.labelResultado.TabIndex = 2;
     this.labelResultado.Text = &quot;Resultado:&quot;;
     //
     // cajaEntrada
     //
     this.cajaEntrada.Location = new System.Drawing.Point(99, 8);
     this.cajaEntrada.Name = &quot;cajaEntrada&quot;;
     this.cajaEntrada.TabIndex = 1;
     this.cajaEntrada.Text = &quot;&quot;;
     //
     // labelSolicitar
     //
     this.labelSolicitar.Location = new System.Drawing.Point(27, 8);
     this.labelSolicitar.Name = &quot;labelSolicitar&quot;;
     this.labelSolicitar.Size = new System.Drawing.Size(56, 16);
     this.labelSolicitar.TabIndex = 0;
     this.labelSolicitar.Text = &quot;Digite el dato&quot;;
     //
     // botonBuscar
     //
     this.botonBuscar.Location = new System.Drawing.Point(152, 40);
     this.botonBuscar.Name = &quot;botonBuscar&quot;;
     this.botonBuscar.Size = new System.Drawing.Size(136, 24);
     this.botonBuscar.TabIndex = 5;
     this.botonBuscar.Text = &quot;Buscar dato&quot;;
     this.botonBuscar.Click += new System.EventHandler(this.botonBuscar_Click);
     //
     // labelSalida
     //
     this.labelSalida.Font = new System.Drawing.Font(&quot;Courier New&quot;, 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
     this.labelSalida.Location = new System.Drawing.Point(10, 80);
     this.labelSalida.Name = &quot;labelSalida&quot;;
     this.labelSalida.Size = new System.Drawing.Size(420, 72);
     this.labelSalida.TabIndex = 4;
     //
     // EjemploBusquedaBinaria
     //
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(440, 157);
     this.Controls.AddRange(new Control[] {
            this.botonBuscar,
            this.labelSalida,
            this.labelMostrar,
            this.labelResultado,
            this.cajaEntrada,
            this.labelSolicitar});
     this.Name = &quot;EjemploBusquedaBinaria&quot;;
     this.Text = &quot;Busqueda Binaria&quot;;
     this.ResumeLayout(false);
  }
  static void Main() {
     Application.Run( new EjemploBusquedaBinaria() );
  }
  private void botonBuscar_Click( object sender,
     System.EventArgs e )
  {
     int valorBuscar = Int32.Parse( cajaEntrada.Text );
     // iniciar los datos de salida
     labelSalida.Text = &quot;Portions of array searched\n&quot;;
     // realizar busqueda binaria
     int elemento = Buscar( a, valorBuscar );
     if ( elemento != -1 )
        labelMostrar.Text = &quot;Valor encontrado en indice &quot; +
           elemento;
     else
        labelMostrar.Text = &quot;Valor no encontrado&quot;;
  } // fin botonBuscar_Click
  // buscar mediante metodo binario
  public int Buscar( int[] array, int dato ) {
     int bajo = 0;
     int alto = array.Length - 1;
     int medio;
     while ( bajo &lt;= alto ) {
        medio = ( bajo + alto ) / 2;
        // el siguiente método nos muestra la porción del
        // arreglo donde se está llevando a cabo la busqueda
        // del dato en cada iteración del bucle
        construirSalida( a, bajo, medio, alto );
        if ( dato == array[ medio ] )   // si se encuentra el valor
           return medio;
        else if ( dato &lt; array[ medio ] )
           alto = medio - 1;   // buscar en la mitad más baja
        else
           bajo = medio + 1;   // buscar en la mitad más alta
     } // fin de la busqueda binaria
     return -1;  // dato no encontrado
  } // fin del metodo Buscar
  public void construirSalida(
     int[] array, int bajo, int mid, int alto ) {
     for ( int i = 0; i &lt; array.Length; i++ ) {
        if ( i &lt; bajo || i &gt; alto )
           labelSalida.Text += &quot;    &quot;;
        // marcar el elemento de la mitad en la salida
        else if ( i == mid )
           labelSalida.Text +=
              array[ i ].ToString( &quot;00&quot; ) + &quot;* &quot;;
        else
           labelSalida.Text +=
              array[ i ].ToString( &quot;00&quot; ) + &quot;  &quot;;
     }
     labelSalida.Text += &quot;\n&quot;;
  } // fin de construirSalida
} // fin de la clase EjemploBusquedaBinaria</pre>
<p><a class="tooltip descargacodigo" title="Búsqueda Binaria en C Sharp::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Busqueda+Binaria+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/ejemplo-localizacion-binaria-c-sharp/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Cambiar canales de audio de estéreo a mono [ffmpeg]</title>
		<link>http://casidiablo.net/convertir-audio-estereo-mono-ffmpeg/</link>
		<comments>http://casidiablo.net/convertir-audio-estereo-mono-ffmpeg/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 14:53:28 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[convertir]]></category>
		<category><![CDATA[estereo]]></category>
		<category><![CDATA[mono]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=1869</guid>
		<description><![CDATA[ffmpeg además te permite cambiar el número de canales de salida de un archivo de audio. Supongamos entonces que tenemos una canción en MP3 en estéreo, y deseamos pasarla a mono, basta con ejecutar este comando: ffmpeg -i estereo.mp3 -ac 1 mono.mp3 Explicación y aclaración&#8230; -i estereo.mp3, indica el archivo de entrada -ac 1, indica [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fconvertir-audio-estereo-mono-ffmpeg%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Cambiar%20canales%20de%20audio%20de%20est%C3%A9reo%20a%20mono%20%5Bffmpeg%5D%22%20%7D);"></div>
<p style="text-align: center;"><img class="aligncenter" src="http://casidiablo.net/wordpress/wp-content/uploads/2008/10/estereo-mono.png" alt="" /></p>
<p style="text-align: justify;"><code>ffmpeg</code> además te permite cambiar el número de canales de salida de un archivo de audio. Supongamos entonces que tenemos una canción en MP3 en estéreo, y deseamos pasarla a mono, basta con ejecutar este comando:</p>
<div class="consola">ffmpeg -i estereo.mp3 -ac 1 mono.mp3</div>
<h3>Explicación y aclaración&#8230;</h3>
<ul>
<li style="text-align: justify;">-i estereo.mp3, indica el archivo de entrada</li>
<li style="text-align: justify;">-ac 1, indica que el número de <strong>c</strong>anales de <strong>a</strong>udio del archivo resultantes será uno, o sea mono</li>
<li style="text-align: justify;"><strong>NO es posible pasar de mono a estereo</strong>: cuando decimos que el sonido es mono, estamos diciendo que se SUMARON el canal derecho y el canal izquierdo: M = L + R, <em>donde M es mono, L es el canal izquierdo y R el canal derecho</em>. Y bien, no soy un experto en matemáticas, pero si quisieramos pasar de mono a estéreo deberíamos conocer almenos dos datos por separado, cosa que no sabemos puesto que solo disponemos de un canal (una variable).<br />
Lo explico mas que nada porque hay gente que ha tratado de contradecirme; si estoy equivocado, que alguien me lo haga saber.</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/convertir-audio-estereo-mono-ffmpeg/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Números aleatorios en C#</title>
		<link>http://casidiablo.net/numeros-random-c-sharp/</link>
		<comments>http://casidiablo.net/numeros-random-c-sharp/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 17:02:52 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[juegos]]></category>
		<category><![CDATA[monodevelop]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=1143</guid>
		<description><![CDATA[La generación de números aleatoreos es una de las prácticas más importantes en cualquier lenguaje de programación, sobre todo cuando deseamos desarrollar juegos, por ejemplo. Para usar números aleatorios en C# podemos utilizar la clase Random del namespace System, de la siguiente manera: El método Next de la clase Random genera y devuelve un número [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fnumeros-random-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22N%C3%BAmeros%20aleatorios%20en%20C%23%22%20%7D);"></div>
<p>La generación de números aleatoreos es una de las prácticas más importantes en cualquier lenguaje de programación, sobre todo cuando deseamos desarrollar juegos, por ejemplo. Para usar números aleatorios en <a href="http://casidiablo.net/c-y-net/">C#</a> podemos utilizar la clase <strong>Random</strong> del namespace <strong>System</strong>, de la siguiente manera:</p>
<pre class="brush: csharp; title: ; notranslate">Random objeto = new Random();
int numero = objeto.Next();</pre>
<p>El método Next de la clase Random genera y devuelve un número aleatorio entre 0 y la constante <strong>Int32.MaxValue</strong> (2,147,483,647). El número es generado después de (como decía mi profesora de matemáticas) <em>complejos procesos matemáticos</em>, y como en casi todos los lenguajes necesitan de una semilla (seed) para ser generados, que por defecto es la hora del sistema.</p>
<p>Aún así, muchas veces necesitamos que el número sea generado en un rango específico de valores. Por ejemplo, para una aplicación que simule el lanzamiento de un dado de seis caras necesitamos generar números entre 1 y 6. Para lograr esto, el método <strong>Next</strong> puede recibir además un entero que indica el rango máximo del número aleatorio. Por ejemplo, el código:</p>
<pre class="brush: csharp; title: ; notranslate">Random objeto = new Random();
int numero = objeto.Next(6);</pre>
<p>generaría un número aleatorio entre 0 y 7 (pero no 6), es decir, seis posibles números. Pero, si desearamos algún rango más exacto, podríamos hacer algo como:</p>
<pre class="brush: csharp; title: ; notranslate">Random objeto = new Random();
int numero = objeto.Next(1, 7);</pre>
<p>lo que generaría números entre 1 y 7 (pero no 7), de nuevo seis números posibles.</p>
<h3>Ejemplo completo&#8230;</h3>
<p>En el siguiente ejemplo se utilizará la clase <strong>Random</strong> para generar una serie de números aleatorios cada vez que se presiona un botón:</p>
<p style="text-align: center;"><img class="aligncenter" title="pantallazo numero aleatorio" src="http://casidiablo.net/wordpress/wp-content/uploads/2008/07/pantallazo-numero-aleatorio.png" alt="pantallazo numero aleatorio" /></p>
<p>El código lo pongo para su descarga abajo, ya que lo hice con <a href="http://casidiablo.net/aplicaciones-con-gui-en-net-%c2%bfgtk-o-windows-forms/">Gtk# usando MonoDevelop</a>, y sería engorroso poner todo el código. Así que solo pondré la parte del código que nos interesa:</p>
<pre class="brush: csharp; title: ; notranslate">    private Random obj = new Random();
    //Método ejecutado al presionar el botón
    protected virtual void generar_Click (object sender, System.EventArgs e)
    {
        etiqueta.Text = &quot;&quot;;
        for(int i = 0; i &lt; 4 ; i++)
        {
            for(int j = 0; j &lt; 4 ; j++)
                etiqueta.Text += obj.Next(1, 10) +&quot;\t\t&quot;;
            etiqueta.Text += &quot;\n\n&quot;;
        }
    }</pre>
<h3>Enlaces y descargas</h3>
<ul>
<li><a href="http://casidiablo.net/descargar/Numeros+Aleatorios+C+Sharp" class="tooltip" title="Proyecto para MonoDevelop">Descargar código fuente del ejemplo (usando Gtk#)</a></li>
<li><a href="http://casidiablo.net/descargar/RandomInt" class="tooltip" title="Proyecto para VisualStudio">Descargar proyecto similar en inglés (usando Windows Forms)</a></li>
<li><a href="http://casidiablo.net/aplicaciones-con-gui-en-net-%c2%bfgtk-o-windows-forms/" class="tooltip" title="¿Tienes dudas al elegir? Consulta!">Aplicaciones con GUI en .NET: ¿Gtk# o Windows Forms?</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/numeros-random-c-sharp/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Un Linuxero probando Windows</title>
		<link>http://casidiablo.net/un-linuxero-probando-windows/</link>
		<comments>http://casidiablo.net/un-linuxero-probando-windows/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 12:38:50 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mono]]></category>

		<guid isPermaLink="false">http://www.casidiablo.net/un-linuxero-probando-windows/</guid>
		<description><![CDATA[Tomado de: MonoNeurona Generalmente tenemos que chutarnos revisiones de los quejiques usuarios de Windows que intentan instalar Linux, muchas de las ventajas que provienen de Windows se deben más al hecho de que ha estado más tiempo en el mercado que una excelencia intrínseca del sistema operativo. ¿Pero qué pasaría si Linux fuese el SO [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fun-linuxero-probando-windows%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Un%20Linuxero%20probando%20Windows%22%20%7D);"></div>
<p><strong>Tomado de: <a href="http://www.mononeurona.org/news/display/1833">MonoNeurona</a></strong></p>
<p>Generalmente tenemos que chutarnos revisiones de los quejiques usuarios de Windows que intentan instalar Linux, muchas de las ventajas que provienen de Windows se deben más al hecho de que ha estado más tiempo en el mercado que una excelencia intrínseca del sistema operativo. ¿Pero qué pasaría si Linux fuese el SO dominante y un linuxero intentáse usar Windows? Esta sería una evaluación:</p>
<p>Por estos días tranquilos de fin de año he decidido darle un vistazo a ese nuevo sistema operativo de nombre poco original sobre el cual la gente está hablando, &#8220;Windows&#8221;, de la empresa Microsoft de Oregon. Alguien me pasó un CD y he intentado instalarlo en el equipo de mi oficina, una Pentium IV HT con 512 en RAM y disco duro SATA de 160 GB.</p>
<p>Lo primero que me provocó confusión es que no hay un Windows sino muchos, hay uno que se llama &#8220;XP&#8221;, uno &#8220;2003&#8243; y otro &#8220;Vista&#8221; al parecer esté último es el más moderno y el que intenté instalar. Existe un Windows &#8220;ME&#8221; que parece es una distribución diferente a la de Microsoft y que al parecer no funcionó bien porque ya nadie lo usa.</p>
<p>Lo primero que debo decir es que este sistema operativo &#8220;Vista&#8221;, es que es enorme. Mi equipo usa SUSE 10 maravillosamente rápido pero &#8220;Vista&#8221; tardó más de una hora en instalarse. Luego de la instalación básica, que fue bastante sencilla, pude ver el escritorio de Vista, el cual es muy limitado pues sólo tiene un escritoio de modo que uno no puede dividir las aplicaciones y todas se amontonan en el único escritorio, algo que no se antoja muy práctico. No sé quien tuvo la absurda idea de colocar por default el menú de inicio y la barra de tareas en la zona inferior de la pantalla , lo cual es absurdo pues el menú de todos los programas y los botones de las ventanas están en la parte superior y uno tiene que estar bajando cientos de veces el cursor del mouse por todo lo alto de la pantalla, algo sin duda molesto. Afortunadamente Vista permite mover el panel a la parte superior, donde debe estar.<span id="more-923"></span></p>
<p>En Windows tuve serios problemas para echar a andar varias secciones de mi hardware, en Windows no hay módulos del kernel sino algo que Microsoft llama &#8220;driver&#8221; y que debe bajarse de cada fabricante de hardware por separado buscando el modelo del dispositivo en los portales ¿cómo demonios esperan que un usuario normal haga eso?</p>
<p>Vista es muy lento y muestra algunas pantallas de errores asi que para ser justos lo quité y usé la versión XP, la cual me dicen es más rápida que &#8220;Vista&#8221; pero entonces ¿porqué venden Vista?</p>
<p>La distribución XP (también hecha por Microsoft) es más ligera y rápida que Vista aunque presentó el mismo problema de los &#8220;drivers&#8221;, tuve que estar tres horas buscando en el sitio de Intel y AMD para activar mi tarjeta ATI y mi Wireless Intel Pro. Cada vez que uno instala un &#8220;driver&#8221;, Windows absurdamente pide reiniciar TODO el sistema, no encontré la manera de hacer que los demonios se reiniciarán por separado como cualquiera podría suponer de un SO moderno. Dudo mucho que un usuario promedio pueda configurar un escritorio en XP y Microsoft está muy lejos de ofrecer un sistema amigable para el usuario de todos los días.</p>
<p>Luego de tener por fin mi escritorio listo pude navegar usando IE7, el navegador de Microsoft que si bien es rápido no permite gestionar las descargas ni integrar los RSS ni crear bookmarks usando el &#8220;arrastrar y soltar&#8221;. Afortunadamente existe Firefox para este SO.</p>
<p>Lo más desalentador de esta distribución es la pobreza de su software, posee un Player Multimedia, WMP9 se llama, pero no ejecuta archivos Ogg ni Flac, algo básico en estos días. Su cliente de mensajería &#8220;Messenger&#8221; sólo permite conectarse a la red de Microsoft, lo que lo hace bastante impráctico. Su manejador de textos WordPad es casi una broma al igual que su &#8220;editor&#8221; bitap y no tiene hoja de cálculo ni editor de vectores ni paquete de presentaciones.</p>
<p>Un Windowsero me dice que hay que hay una suite de oficina que vende la misma Microsoft y que existen un paquete llamado PhotoShow que se parece al Gimp pero que hay que pagar por ambos ¡mil dólares! La misma persona me dice que necesito un &#8220;antivirus&#8221;, y es que me explicaron que el algoritmo de manejo de memoria de Windows no incluye ningún gestionador de identificadores lo que hace que cualquier instrucción que se lea del disco puede tomar control del sistema. Por supuesto que al principio no creí en esto, ¡¡estamos el el siglo XXI!! Pero leyendo la propia página de Microsoft me neteró que es cierto y que debo comprar un &#8220;antivirus&#8221; por otros 100 dólares. Increíble.</p>
<p>Para no acabar con las sorpresas me enteró que el antivirus consume hasta el 30% de las capacidades del procesador y la RAM, de modo que una tercera parte del sistema se desperdicia para subsanar errores de diseño de Microsoft y encima uno debe de pagarlo.</p>
<p><strong>Conclusiones:</strong> No es de sorprender que Windows sólo sea usado por un grupo de entusiastas marginales, se trata de un sistema operativo tosco, poco integrado, inseguro y encima costoso. Microsoft está aún muy lejos de poder ofrecer una verdadera alternativa a la potencia, estabilidad y seguridad de los sistema Linux. Si hablamos en la diferencia de precios la brecha se vuelve aún más grande. No puedo imaginar una razón por la cual alguien dejé Linux por el tortuoso (y lento) camino de Windows.</p>
<p>Una nota aparte es el pobre despliegue de fuentes de Windows, tanto en vista como en XP las letras se ven con &#8220;rebaba&#8221; y la falta de nitidez es inaceptable para un SO que pretenda ser moderno.</p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/un-linuxero-probando-windows/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Señales Geeks</title>
		<link>http://casidiablo.net/senales-geeks/</link>
		<comments>http://casidiablo.net/senales-geeks/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 01:19:31 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[off-topic]]></category>
		<category><![CDATA[mono]]></category>

		<guid isPermaLink="false">http://www.casidiablo.net/senales-geeks/</guid>
		<description><![CDATA[There are just some of the gang sings implemented by leet h4x0rz Via &#124; MonoNeurona]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fsenales-geeks%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Se%C3%B1ales%20Geeks%22%20%7D);"></div>
<p style="text-align: center;"><a href="http://i270.photobucket.com/albums/jj96/Casidiablo/aarkerio_1240.jpg"><img class="aligncenter" src="http://i270.photobucket.com/albums/jj96/Casidiablo/aarkerio_1240.jpg" alt="imagen" width="500" height="738" /></a></p>
<p>There are just some of the gang sings implemented by leet <a href="http://www.urbandictionary.com/define.php?term=h4x0rz">h4x0rz</a></p>
<p>Via | <a href="http://www.mononeurona.org/news/display/2274">MonoNeurona</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/senales-geeks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WinForms 2.0 para Mono</title>
		<link>http://casidiablo.net/winforms-20-para-mono/</link>
		<comments>http://casidiablo.net/winforms-20-para-mono/#comments</comments>
		<pubDate>Wed, 14 May 2008 18:38:59 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[mono]]></category>

		<guid isPermaLink="false">http://www.casidiablo.net/wordpress/index.php/2008/05/14/winforms-20-para-mono/</guid>
		<description><![CDATA[Me entero en Barrapunto que el desarrollo de WinForms 2.0 para Mono ya se ha completado y que los 12,776 métodos que constituyen su API pública son exactamente los mismos que los de .NET. El toolkit está compuesto por 115.000 líneas de código fuente y ha costado 4 años de desarrollo (desde el 8 de [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fwinforms-20-para-mono%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22WinForms%202.0%20para%20Mono%22%20%7D);"></div>
<p>Me entero en Barrapunto que <em><a href="http://tirania.org/blog/archive/2008/May-13.html">el desarrollo de WinForms 2.0 para Mono ya se ha completado</a> y que los 12,776 métodos que constituyen su API pública son exactamente los mismos que los de .NET. El </em><em>toolkit está compuesto por 115.000 líneas de código fuente y ha costado 4 años de desarrollo (desde el 8 de julio de 2004). Actualmente están soportados los </em><em>backends para X11, OSX y Win32. WinForms 2.0 era la última pieza del puzzle que había que completar antes de la publicación de Mono 2.0.</em></p>
<p>Sin duda una excelente noticia para el mundo del software libre, y para la gente que está pensando en migrar las aplicaciones que usen WindowsForms a entornos libres.</p>
<p><strong>Relacionadas:</strong></p>
<ul>
<li><a href="http://www.casidiablo.net/wordpress/index.php/2008/05/05/aplicaciones-con-gui-en-net-%c2%bfgtk-o-windows-forms/"> Aplicaciones con GUI en .NET: ¿Gtk# o Windows Forms?		</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/winforms-20-para-mono/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Links interesantes de la semana&#8230;</title>
		<link>http://casidiablo.net/links-interesantes-de-la-semana/</link>
		<comments>http://casidiablo.net/links-interesantes-de-la-semana/#comments</comments>
		<pubDate>Wed, 07 May 2008 21:02:29 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[noticias]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[software libre]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.casidiablo.net/wordpress/index.php/2008/05/07/links-interesantes-de-la-semana/</guid>
		<description><![CDATA[Y de hace ya un tiempo En orden cronológico: Como cambiar la clave de root en Mysql Compiz-check: Comprueba si puedes ejecutar Compiz en tu PC Comandos utiles para Ubuntu Consejos para optimizar bases de datos MySQL Ship it de Fedora Corre Ubuntu mobile desde tu PC de escritorio La mejor PHP Cheat Sheet El [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Flinks-interesantes-de-la-semana%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Links%20interesantes%20de%20la%20semana...%22%20%7D);"></div>
<p>Y de hace ya un tiempo <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  En orden cronológico:</p>
<ul>
<li><a href="http://www.techno.mayix.net/2008/04/13/como-cambiar-la-clave-de-root-en-mysql/">Como cambiar la clave </a><a href="http://eveliotc.wordpress.com/2008/05/04/mysql-recuperar-contrasena-del-root/">de root en Mysql</a></li>
<li><a href="http://www.maty1206linuxeando.com/?p=1016">Compiz-check: Comprueba si puedes ejecutar Compiz en tu PC</a></li>
<li><a href="http://gndx.org/?p=249">Comandos utiles para Ubuntu</a></li>
<li><a href="http://www.kabytes.com/programacion/consejos-para-optimizar-bases-de-datos-mysql/">Consejos para optimizar bases de datos MySQL</a></li>
<li><a href="http://www.durmiendoafuera.com/ship-it-de-fedora/">Ship it de Fedora</a></li>
<li><a href="http://www.blux20.com/2008/05/corre-ubuntu-mobile-desde-tu-pc-de-escritorio/">Corre Ubuntu mobile desde tu PC de escritorio</a></li>
<li><a href="http://www.kabytes.com/general/la-mejor-php-cheat-sheet/">La mejor PHP Cheat Sheet</a></li>
<li><a href="http://mundogeek.net/archivos/2008/05/06/el-tutorial-de-python-en-pdf/">El tutorial de Python en PDF</a></li>
<li><a href="http://albertjh.cymaho.com/?p=409">Como conectar a Java y MySQL (NetBeans)</a></li>
<li><a href="http://picandocodigo.net/index.php/2008/05/07/el-resultado-del-proyecto-indiana-open-solaris-200805/">El resultado del Proyecto Indiana: Open Solaris 2008.05</a></li>
</ul>
<h3>Podcasts&#8230;</h3>
<ul>
<li><a href="http://www.linpodcast.emnhome.com/?p=65">Linpodcast 03 &#8211; 02</a></li>
<li><a href="http://linpodcast.com/mrcomputer1/?p=27">El podcast de mrcomputer 4</a></li>
<li><a href="http://www.linuxhispano.net/podcast/?p=34">#014 &#8211; El podcast de Linux Hispano</a></li>
<li><a href="http://javaposse.com/index.php?post_id=335433#">Java Posse #184 &#8211; Newscast for May 2nd 2008</a></li>
<li><a href="http://www.linuxactionshow.com/?p=182">Season 8, Episode 7 &#8211; Slightly Delayed</a></li>
<li><a href="http://www.pinguinos.org.mx/index.php?id=71">Pingüinos en el Alambre</a></li>
<li><a href="http://www.earthmusicnetwork.com/opsl/?p=41">OPSL 30 &#8211; Seguridad, VirtualBox, Compilando Mono y otras cosas</a></li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/links-interesantes-de-la-semana/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aplicaciones con GUI en .NET: ¿Gtk# o Windows Forms?</title>
		<link>http://casidiablo.net/aplicaciones-con-gui-en-net-%c2%bfgtk-o-windows-forms/</link>
		<comments>http://casidiablo.net/aplicaciones-con-gui-en-net-%c2%bfgtk-o-windows-forms/#comments</comments>
		<pubDate>Mon, 05 May 2008 20:03:51 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[artículos]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[monodevelop]]></category>

		<guid isPermaLink="false">http://www.casidiablo.net/wordpress/index.php/2008/05/05/aplicaciones-con-gui-en-net-%c2%bfgtk-o-windows-forms/</guid>
		<description><![CDATA[Hace tiempo discutía con algunas personas la mejor manera de usar Mono tanto en el escritorio Linux como en Windows. Me refiero al momento de escoger entre Windows Forms y Gtk#, para desarrollar aplicaciones con interfaz gráfica. Personalmente pienso que la mejor opción es, inclinándome hacia el lado del software libre, usar Mono + Gtk#. [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Faplicaciones-con-gui-en-net-%2525c2%2525bfgtk-o-windows-forms%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Aplicaciones%20con%20GUI%20en%20.NET%3A%20%C2%BFGtk%23%20o%20Windows%20Forms%3F%22%20%7D);"></div>
<p><img border="0" width="600" src="http://i270.photobucket.com/albums/jj96/Casidiablo/gtk-mono.png" height="455" /></p>
<p>Hace tiempo discutía con algunas personas la <em>mejor manera de usar Mono</em> tanto en el escritorio <a href="http://www.casidiablo.net/wordpress/index.php/category/linux/">Linux</a> como en Windows. Me refiero al momento de escoger entre <a href="http://en.wikipedia.org/wiki/Windows_Forms" title="Read at the Wikipedia ;)">Windows Forms</a> y <a href="http://en.wikipedia.org/wiki/Gtk_Sharp" title="Read at the Wikipedia ;)">Gtk#</a>, para desarrollar aplicaciones con interfaz gráfica. Personalmente pienso que <strong>la mejor opción es, inclinándome hacia el lado del <a href="http://www.casidiablo.net/wordpress/index.php/category/software-libre/">software libre</a>, usar <a href="http://www.casidiablo.net/wordpress/index.php/2007/12/10/acerca-de-mono/">Mono</a> + <a href="http://en.wikipedia.org/wiki/Gtk_Sharp" title="Read at the Wikipedia ;)">Gtk#</a></strong>. Claro, eso también depende de tus gustos como desarrollador y, más importante aún, de las necesidades del proyecto a realizar.</p>
<p>Lo que quiero enseñarles en esta entrada es <em>cómo se pueden tomar diferentes caminos</em>, y aclarar algunas dudas que me han planteado ciertos lectores. Siendo así, vamos a tomar como ejemplo a dos programas sencillos: el primero usando <a href="http://en.wikipedia.org/wiki/Gtk_Sharp" title="Read at the Wikipedia ;)">Gtk#</a> y corriendo tanto en <a href="http://www.casidiablo.net/wordpress/index.php/category/linux/">Linux</a> como Windows, y el otro usando <a href="http://en.wikipedia.org/wiki/Windows_Forms" title="Read at the Wikipedia ;)">Windows Forms</a> corriendo tanto en Windows como <a href="http://www.casidiablo.net/wordpress/index.php/category/linux/">Linux</a>.</p>
<h3>Desarrollando y ejecutando aplicaciones Gtk# y Windows Forms usando Mono</h3>
<p>Antes de comenzar con los ejercicios, veamos qué necesitamos para desarrollar y ejecutar aplicaciones que usen <a href="http://en.wikipedia.org/wiki/Gtk_Sharp" title="Read at the Wikipedia ;)">Gtk#</a> y <a href="http://en.wikipedia.org/wiki/Windows_Forms" title="Read at the Wikipedia ;)">Windows Forms</a>. Es necesario (obviamente) tener dicho framework instalado; afortunadamente, la mayoría de las distribuciones Gnu/Linux actuales tienen los paquetes necesarios en los repositorios, e incluso vienen con lo necesario para ejecutar aplicaciones desarrolladas con <a href="http://www.casidiablo.net/wordpress/index.php/2007/12/10/acerca-de-mono/">Mono</a> (como <a href="http://www.gnome.org/projects/tomboy/">Tomboy</a>, <a href="http://f-spot.org/Main_Page">Fspot</a> o <a href="http://banshee-project.org/Main_Page">Banshee</a>). <em>Para compilar aplicaciones C# para mono es necesario utilizar el <a href="http://www.mono-project.com/CSharp_Compiler">CSharp Compiler</a> (<code>cms</code>)</em>.</p>
<p>También, es posible <a href="http://www.go-mono.com/mono-downloads/download.html">descargar mono</a> para los más importantes sistemas operativos, incluyendo por supuesto sistemas Microsoft Windows. Para tal caso es posible descargar una versión completa (<a href="http://www.casidiablo.net/wordpress/index.php/2007/12/10/acerca-de-mono/">Mono</a> + <a href="http://en.wikipedia.org/wiki/Gtk_Sharp" title="Read at the Wikipedia ;)">Gtk#</a> + XSP), o tan solo el intérprete + <a href="http://en.wikipedia.org/wiki/Gtk_Sharp" title="Read at the Wikipedia ;)">Gtk#</a> para un <em>Framework .NET</em> ya instalado sobre el ordenador.</p>
<h3>Código del programa que usa Gtk#</h3>
<p><span id="more-890"></span><br />
//Ejemplo GTK (EjemploGtk.cs)<br />
using Gtk;<br />
using System;<br />
class EjemploGtk {<br />
	static void Main()<br />
	{<br />
		Application.Init ();<br />
		//Crear el boton<br />
		Button btn = new Button (&#8220;Hola monito!&#8221;);<br />
		//Asignar un evento al evento Clic del boton<br />
		btn.Clicked += new EventHandler (hola);<br />
		//Crear el objeto ventana<br />
		Window ventana = new Window (&#8220;Lindo primate!&#8221;);<br />
		//Asignar un metodo al evento Cerrar ventan<br />
		ventana.DeleteEvent += new DeleteEventHandler (cerrar_ventana);<br />
		//Asigna el ancho y alto de la ventana<br />
		ventana.DefaultWidth = 200;<br />
        ventana.DefaultHeight = 60;<br />
		//Anyadir el boton a la ventana<br />
		ventana.Add (btn);<br />
		//Mostrar la ventana<br />
		ventana.ShowAll ();<br />
		//Ejecutar la aplicacion<br />
		Application.Run ();<br />
	}<br />
	static void cerrar_ventana (object obj, DeleteEventArgs args)<br />
	{<br />
		Application.Quit ();<br />
	}<br />
	static void hola (object obj, EventArgs args)<br />
	{<br />
		Console.WriteLine(&#8220;Lindo monito!&#8221;);<br />
		Application.Quit ();<br />
	}<br />
}</p>
<p>Para compilarlo y ejecutarlo puedes usar los siguientes comandos:</p>
<p class="consola">mcs -pkg:gtk-sharp-2.0 EjemploGtk.cs<br />
mono EjemploGtk.exe</p>
<p>El resultado es el mismo tanto en Linux como en Windows:</p>
<p style="text-align: center"><img width="259" src="http://i270.photobucket.com/albums/jj96/Casidiablo/gtk-linux.png" alt="gtk sobre linux" height="91" title="gtk sobre linux" /> <img width="208" src="http://i270.photobucket.com/albums/jj96/Casidiablo/gtk-win.png" alt="gtk-sharp sobre windows" height="94" title="gtk-sharp sobre windows" /></p>
<h3>Código del programa que usa Windows Forms</h3>
<p>Este programa hace exactamente lo mismo que el anterior, pero esta vez usando Windows Forms para la interfaz gráfica:</p>
<p>//Ejemplo Windows Forms (EjemploWinForms.cs)<br />
using System.Drawing;<br />
using System.Windows.Forms;<br />
using System;<br />
class EjemploWinForms : Form{<br />
	static void Main(){<br />
		Application.Run(new EjemploWinForms());<br />
	}<br />
	public EjemploWinForms() {<br />
		//Crear e iniciar el boton, y sus propiedades<br />
		Button boton = new Button();<br />
		boton.Location = new Point(0, -1);<br />
		boton.Name = &#8220;boton&#8221;;<br />
		boton.Size = new System.Drawing.Size(193, 60);<br />
		boton.TabIndex = 0;<br />
		boton.Text = &#8220;Botoncito&#8221;;<br />
		//Asignar un evento al evento Clic del boton<br />
		boton.Click += new System.EventHandler(hola);<br />
		//Indicar el tamanyo de la ventana<br />
		ClientSize = new System.Drawing.Size(193, 60);<br />
		//Anyadir el boton<br />
		Controls.Add(boton);<br />
		Text = &#8220;Ventanita&#8221;;<br />
		ResumeLayout(false);<br />
	}<br />
	private void hola(object sender, EventArgs e) {<br />
		Console.WriteLine(&#8220;Un mensajito!&#8221;);<br />
		Close ();<br />
	}<br />
}</p>
<p>Para compilarlo y ejecutarlo puedes usar los siguientes comandos:</p>
<p class="consola">mcs -r:System.Drawing.dll,System.Windows.Forms.dll EjemploWinForms.cs<br />
mono EjemploWindowsForms.exe</p>
<p>El resultado es el mismo tanto en Linux como en Windows:</p>
<p style="text-align: center"><img width="199" src="http://i270.photobucket.com/albums/jj96/Casidiablo/winforms-linux.png" alt="windows forms sobre linux" height="92" title="windows forms sobre linux" /> <img width="208" src="http://i270.photobucket.com/albums/jj96/Casidiablo/winforms-win.png" alt="windows forms sobre windows" height="94" title="windows forms sobre windows" /></p>
<h3>Consideraciones a tener en cuenta</h3>
<p>Al momento de desarrollar aplicaciones con GUIs en C# de manera rápida, tenemos basicamente dos opciones:</p>
<ul>
<li>Podemos <strong>usar Monodevelop que incluye un editor de interfaces gráficas</strong> basado en Stetic y que por supuesto desarrolla dichas interfaces bajo <a href="http://en.wikipedia.org/wiki/Gtk_Sharp" title="Read at the Wikipedia ;)">Gtk#</a>.</li>
<li>O usar el editor de interfaces de Microsoft Visual Studio que, aunque no es libre, he de reconocer que es bastante bueno y completo. En este caso las aplicaciones correrían usando Windows Forms.</li>
</ul>
<p>Por supuesto, si deseamos usar Mono como plataforma de desarrollo no vale la pena usar herramientas Microsoft. De hecho, opino que el framework de Mono incluye librerías para ejecutar aplicaciones que usen Windows Forms, no con el fin de desarrollar aplicaciones que usen dichas librerías, sino para facilitar la migración de proyectos existentes hacia Mono.</p>
<h3>Enlaces interesantes</h3>
<ul>
<li><a href="http://www.mono-project.com/">Página oficial del proyecto Mono</a></li>
<li><a href="http://www.monodevelop.com/">Página oficial de Monodevelop</a></li>
<li><a href="http://http://www.casidiablo.net/wordpress/index.php/c-y-net/">Ejemplos de programación C#</a></li>
</ul>
<p><a href="http://www.casidiablo.net/codigos/C_Sharp/Ejemplos_Gtk_WinForms_Mono.zip" title="Descargar código fuente!" class="descargacodigo">Descargar código fuente de los ejemplos</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/aplicaciones-con-gui-en-net-%c2%bfgtk-o-windows-forms/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
		</item>
	</channel>
</rss>

