<?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 Hispano &#187; .net</title> <atom:link href="http://www.linuxhispano.net/etiqueta/net/feed/" rel="self" type="application/rss+xml" /><link>http://www.linuxhispano.net</link> <description>Noticias, tira, podcast, juegos, Linux y software libre</description> <lastBuildDate>Fri, 10 Feb 2012 14:00:58 +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>Diferencias entre un servicio de alojamiento con Linux y otro con Windows</title><link>http://www.linuxhispano.net/2012/01/02/diferencias-entre-un-servicio-de-alojamiento-con-linux-y-otro-con-windows/</link> <comments>http://www.linuxhispano.net/2012/01/02/diferencias-entre-un-servicio-de-alojamiento-con-linux-y-otro-con-windows/#comments</comments> <pubDate>Mon, 02 Jan 2012 18:28:45 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Noticias]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[asp]]></category> <category><![CDATA[hosting]]></category> <category><![CDATA[iis]]></category> <category><![CDATA[linux+]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[php]]></category> <category><![CDATA[servidor]]></category> <category><![CDATA[windows]]></category> <category><![CDATA[windows server]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=8758</guid> <description><![CDATA[En muchas ocasiones cuando contratamos un plan de hosting, no nos fijamos en uno de los detalles más importantes, el sistema operativo sobre el que va a estar ejecutando el servidor que nos provea de alojamiento web y otras muchas &#8230; <a
href="http://www.linuxhispano.net/2012/01/02/diferencias-entre-un-servicio-de-alojamiento-con-linux-y-otro-con-windows/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>En muchas ocasiones cuando contratamos un plan de hosting, no nos fijamos en uno de los detalles más importantes, el sistema operativo sobre el que va a estar ejecutando el servidor que nos provea de alojamiento web y otras muchas funciones. Aparte de otras alternativas que existen derivadas de sistemas como la familia BSD, las empresas que proporcionan hosting suelen decantarse mayoritariamente por dos sistemas operativos, GNU/Linux y Windows. Sin tener estadísticas fiables, no puedo decir a ciencia cierta que la mayoría usan GNU/Linux, aunque dando una paseo por la red, podemos hacernos una idea de que sí puede ser cierta dicha afirmación. También podremos ver bastantes empresas de hosting que ofrecen planes basados en servidores de Microsoft, por lo que en este artículo veremos en qué influye como clientes de un servicio de alojamiento web, que elijamos uno u otro sistema.</p><h2>Introducción</h2><p>Como en otros tantos aspectos de las nuevas tecnologías, en el mercado del hosting, tenemos varias posibilidades en cuanto a sistema operativo se refiere. Las dos mayoritarias a día de hoy, GNU/Linux y <a
href="http://www.linuxhispano.net/etiqueta/windows/" target="_blank">Microsoft Windows</a>, se reparten una gran cuota de mercado lo que no quiere decir que no existan otras alternativas, como por ejemplo servidores basados en NetBSD o FreeBSD. En este artículo veremos desde el punto de vista de cliente de una empresa de hosting, qué puede hacer que nos decantemos entre una u otra opción.</p><p><span
id="more-8758"></span></p><p>A priori, cualquier linuxero (entre los que me incluyo) no pensaría en ningún momento en usar un servidor basado en Internet Information Services (el servidor web de Microsoft) sobre un Microsoft Windows Server 2008. Sin embargo, os puedo asegurar que hay circunstancias en las que no sólo es recomendable usar esta opción, sino necesario. De todas maneras si nosotros somos los que elegimos la tecnología a usar y no nos imponen ciertas restricciones (si estamos trabajando para alguien) un poco “especiales”, en líneas generales podríamos decir que la mejor opción es usar GNU/Linux.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2012/01/logo_windows_server.jpg" class="broken_link"><img
class="aligncenter" title="logo_windows_server" src="http://www.linuxhispano.net/wp-content/uploads/2012/01/logo_windows_server.jpg" alt="Logo Windows Sever 2008" width="440" height="330" /></a></p><p>Veamos a continuación, desglosados un poco más los detalles que pueden hacer que nos decantemos por una alternativa o por otra.</p><h2>Precio</h2><p>Puesto que a la hora de la verdad en todo lo referente a negocios privados, el aspecto más determinante de todos es el presupuesto, comencemos por el precio medio de los hosting. Dado que para poder tener un servidor corriendo bajo Microsoft Windows Server 2003 o 2008, hace falta pagar una licencia comercial y a un precio que no es bajo ni mucho menos, los hosting que ofrecen sistemas <a
href="http://www.linuxhispano.net/etiqueta/windows/" target="_blank">Windows</a> suelen ser más caros que los basados en GNU/Linux. Antes de seguir me gustaría aclarar que hay muchas empresas que venden hosting con las dos posibildiades y uno a la hora de contratarlo, elige cuál le interesa.</p><p>Siguiendo con el tema económico, hay que contar que en un servicio de hosting, el precio que se paga por un sistema o por otro, no es sólo la licencia del sistema operativo en sí. Hay muchos factores aparte como por ejemplo, el coste del soporte, el gasto energético o la necesidad de comprar licencias de terceros programas, entre otras.</p><p>El coste del soporte era una de las excusas esgrimidas por Microsoft sobre el coste real de mantener un servidor en GNU/Linux, porque afirmaban que el soporte era bastante más caro que en GNU/Linux. Sin embargo, debido a la mayor automatización de muchos procesos en GNU/Linux y lo que es más importante, a su mayor difusión, cada vez el soporte es más barato y fácil para este sistema.</p><p>En cuanto a los otros factores que hemos también mencionado, el gasto de energía y la necesidad de comprar licencias a terceros, decir de la primera que para ver un consumo de energía real habría que hacer una serie de test y benchamarks con mucha exactitud para poder emitir un juicio objetivo. En el segundo caso, en el de comprar software de terceros, en <a
href="http://www.linuxhispano.net/etiqueta/windows/" target="_blank">Windows</a> suele ser más frecuente esta necesidad, aunque en GNU/Linux también puede darse este caso y por supuesto, en ambos se puede utilizar software libre para satisfacer muchas necesidades.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2012/01/fundacion_apache.gif" class="broken_link"><img
class="aligncenter size-full wp-image-8775" title="fundacion_apache" src="http://www.linuxhispano.net/wp-content/uploads/2012/01/fundacion_apache.gif" alt="Logo Apache" width="356" height="107" /></a></p><h2>Seguridad</h2><p>Se ha hablado tantísimo de este aspecto, comparando además a <a
href="http://www.linuxhispano.net/etiqueta/windows/" target="_blank">Windows</a> y a Linux, que creo que no es necesario dar mucha información. La seguridad de los sistemas GNU/Linux está más que contrastada, más aún en ambientes de hosting; y además la facilidad de actualización que tiene el software instalado en este sistema hace que ante cualquier versión nueva que tape algún agujero, la actualización sea rápida y no haya de por medio problemas como obligar a reiniciar el servidor.</p><p>Este y otros muchos detalles, provenientes de un sistema que nació en un ambiente profesional, hacen de GNU/Linux el ganador por diferencia de este apartado.</p><h2>Eficiencia</h2><p>Este aspecto depende mucho del hardware que se use en la máquina en la que resida el servidor así como de la línea que tenga contratado con su ISP (proveedor de servicios de Internet) nuestro servicio de hosting. A priori puede que GNU/Linux distribuya mejor la carga de trabajo que <a
href="http://www.linuxhispano.net/etiqueta/windows/" target="_blank">Microsoft Windows</a>, pero es un aspecto que más que preocuparnos a nosotros que somos los que contratamos el host debe preocuparle al que ofrece el servicio.</p><p>También es verdad que cada vez son más las aplicaciones web basadas en tecnologías no tan eficientes como PHP, por ejemplo Ruby On Rails o Python (bastante más eficiente que Ruby pero aún así más lento que PHP) con Django o Turbo Gears; que requieren una mayor cantidad de recursos.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2012/01/logo_internet_information_services.png"><img
class="aligncenter size-full wp-image-8777" title="logo_internet_information_services" src="http://www.linuxhispano.net/wp-content/uploads/2012/01/logo_internet_information_services.png" alt="Logo Intenet Information Services" width="160" height="76" /></a></p><h2>Posibilidades y necesidades específicas</h2><p>En este punto es donde quizás nos tengamos que decantar por una solución Microsoft Windows por obligaciones de los requisitos. Imaginemos que necesitamos usar por obligación una base de datos SQL Server, de Microsoft. Ante este caso, dado que este sistema gestor de base de datos sólo ejecuta en el sistema operativo de Microsoft, estaremos obligados a usar un host con Windows Server que ofrezca esta posibilidad. También es verdad que éste no suele ser el caso más común, por fortuna, y que para muchísimas otras circunstancias, la solución correcta es Linux, por razones casi idénticas. Por ejemplo, a día de hoy, es difícil encontrar un sistema basado en <a
href="http://www.linuxhispano.net/etiqueta/windows/" target="_blank">Windows</a> que ofrezca soporte para ejecutar aplicaciones web implementadas con Ruby o Python, dos tecnologías en alza.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2012/01/tux-servidor.jpg" class="broken_link"><img
class="aligncenter size-full wp-image-8778" title="tux-servidor" src="http://www.linuxhispano.net/wp-content/uploads/2012/01/tux-servidor.jpg" alt="Tux Servidor" width="200" height="230" /></a></p><p>Por lo tanto en este apartado, dependiendo de nuestro caso deberemos elegir una plataforma u otra, aunque como repito en la mayor parte de los casos el resultado es favorable para GNU/Linux. De hecho, en mi caso personal, por ejemplo, nunca elegiría trabajar con ASP.NET y SQL Server, por ejemplo, pudiendo trabajar con tecnologías libres que cubren las mismas necesidades ya que además de resultarme más barato, dispongo de una cantidad de documentación y soporte mucho mayor (aparte de que las tecnologías de Microsoft no son código abierto). Sin embargo, si tenemos un encargo profesional y por razones ajenas a nosotros hay que utilizar dichas tecnologías, tendremos que dencantarnos por un host con Windows Server.</p><h2>Adaptabilidad</h2><p>Normalmente, las tecnologías libres suelen estar mejor estandarizadas que sus equivalentes propietarias, por lo que de cara a migrar datos de un sistema gestor de base de datos a otro distinto, o a la hora de cambiar el servidor, si estamos operando con un host que trabaje con GNU/Linux, posiblemente se nos presenten menos problemas.</p><h2>Futuro</h2><p>Tanto el soporte como las nuevas versiones de software, están prácticamente aseguradas en los dos sistemas. Los costes de actualización de una versión a otra en el caso de software privado, no os repercutirán demasiado, dado que al igual que el coste de la licencia, estos son gastos que paga la empresa a la que contratamos. Por esta razón suelen ser más caros los servicios de host basados en sistemas <a
href="http://www.linuxhispano.net/etiqueta/windows/" target="_blank">Windows</a>. Aparte de eso, aunque este es un tema importante a la hora de elegir un servicio de host, el asegurarnos que el software está siempre actualizado y alejado de posibles vulnerabilidades, no existen diferencias de un sistema a otro.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2012/01/logo_mysql.jpg" class="broken_link"><img
class="aligncenter size-full wp-image-8779" title="logo_mysql" src="http://www.linuxhispano.net/wp-content/uploads/2012/01/logo_mysql.jpg" alt="Logo MySQL" width="399" height="291" /></a></p><h2>Conclusiones</h2><p>A lo largo del artículo, habréis observado que para la mayor parte de las necesidades, excepto para las que necesitan expresamente ciertas tecnologías como .NET, podemos usar GNU/Linux por multitud de razones. Comenzando por el precio, terminando en la seguridad y pasando por variedad de otros aspectos como por ejemplo la capacidad de adaptación, GNU/Linux suele ser el más idóneo o en casos extraños, estar al nivel de su rival. También es cierto que como digo haya aplicaciones que por cuestiones de los requisitos necesiten sistemas <a
href="http://www.linuxhispano.net/etiqueta/windows/" target="_blank">Windows</a> o en todo caso ejecuten con Mono (no os lo recomiendo si vais a usarlo como un sistema en producción y no en pruebas o de uso personal). En un futuro, también habrá que tener en cuenta aspectos como la virtualización en servidores, tecnología bastante avanzada ya pero que no se ofrece en muchos servicios de host.</p><p>Elegido el sistema, tenéis que elegir la empresa de hosting que contratar. En otros artículos os contarán mejor cómo seleccionar a dicha empresa de entre todas las que se ofertan en la red, pero como primer paso os recomiendo no comprobar sólo la cantidad de servicios que ofrecen, sino la calidad de los mismos.</p><p>Por último, os dejo unos cuantos enlaces en la sección “En la red”, de servidores web disponibles para GNU/Linux y un poco más de información para que leáis en la red sobre las versiones de servidor de Microsoft Windows y el servidor web que usan, Internet Information Services.</p> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2012/01/02/diferencias-entre-un-servicio-de-alojamiento-con-linux-y-otro-con-windows/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Comprobar de qué tipo es una variable u objeto en C#</title><link>http://www.linuxhispano.net/2011/10/31/comprobar-de-que-tipo-es-una-variable-u-objeto-en-c/</link> <comments>http://www.linuxhispano.net/2011/10/31/comprobar-de-que-tipo-es-una-variable-u-objeto-en-c/#comments</comments> <pubDate>Mon, 31 Oct 2011 14:03:44 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Tutoriales]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[c]]></category> <category><![CDATA[c sharp]]></category> <category><![CDATA[carácter]]></category> <category><![CDATA[char]]></category> <category><![CDATA[curso]]></category> <category><![CDATA[dato]]></category> <category><![CDATA[decimal]]></category> <category><![CDATA[entero]]></category> <category><![CDATA[float]]></category> <category><![CDATA[flotante]]></category> <category><![CDATA[linux+]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[monodevelop]]></category> <category><![CDATA[número]]></category> <category><![CDATA[objeto]]></category> <category><![CDATA[programación]]></category> <category><![CDATA[single]]></category> <category><![CDATA[tipo]]></category> <category><![CDATA[unicode]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=8073</guid> <description><![CDATA[Cuando tenemos un objeto de tipo genérico Object en C#, podemos hacer con él las operaciones básicas de cada objeto pero en ocasiones, necesitaremos convertirlo en un objeto menos abstracto para poder hacer operaciones más concretas. Aunque esta entrada no &#8230; <a
href="http://www.linuxhispano.net/2011/10/31/comprobar-de-que-tipo-es-una-variable-u-objeto-en-c/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Cuando tenemos un objeto de tipo genérico <a
target="_blank" href="http://msdn.microsoft.com/es-es/library/system.object(v=vs.80).aspx" target="_blank">Object</a> en C#, podemos hacer con él las operaciones básicas de cada objeto pero en ocasiones, necesitaremos convertirlo en un objeto menos abstracto para poder hacer operaciones más concretas.</p><p>Aunque esta entrada no forma parte del <a
href="http://www.linuxhispano.net/cursos/curso-c-con-mono/" target="_blank">curso de Mono</a>, sí está muy relacionada con <a
href="http://www.linuxhispano.net/2010/10/29/curso-c-con-mono-tipos-de-datos-y-uso-de-referencias/" target="_blank">esta entrega dedicada a tipos de datos</a>.</p><p>Si tenemos una variable u objeto y no sabemos su tipo con seguridad, disponemos de dos métodos que usaremos para ver cuál es realmente el tipo del mismo. Veamos:</p><ul><li><a
target="_blank" href="http://msdn.microsoft.com/es-es/library/system.object.gettype.aspx" target="_blank">getType()</a>: obtiene el tipo de la instancia actual</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.type.gettype.aspx" target="_blank">Type.GetType(&#8220;tipo de objeto&#8221;)</a>: lo usamos para obtener una referencia con la que comparar</li></ul><p>Por ejemplo, ¿cómo saber si el objeto &#8220;auxiliar&#8221; es un entero con signo de 32 bits (el entero más estándar, el que usamos al poner <em>int </em>simplemente)?</p><p><span
id="more-8073"></span></p><pre>if(auxiliar.GetType() == Type.GetType("System.Int32"))
   return true;
else
   return false;</pre><p>Al igual que con enteros, podemos hacer la comprobación para cualquier tipo:</p><ul><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.boolean.aspx" target="_blank">Boolean</a>: valor booleano</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.byte.aspx" target="_blank">Byte</a>: ocho bits sin signo</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.char.aspx" target="_blank">Char</a>: carácter UNICODE</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.datetime.aspx" target="_blank">DateTime</a>: fecha con tiempo</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.decimal.aspx" target="_blank">Decimal</a>: número decimal</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.double.aspx" target="_blank">Double</a>: pnto flotante de precisión doble</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.int16.aspx" target="_blank">Int16</a>: entero con signo de 16 bits</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.int32.aspx" target="_blank">Int32</a>: ídem pero de 32 bits</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.int64.aspx" target="_blank">Int64</a>: ídem pero de 64 bits</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.sbyte.aspx" target="_blank">SByte</a>:  8 bits con signo</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.single.aspx" target="_blank">Single</a>: punto flotante de precisión simple</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.uint16.aspx" target="_blank">UInt16</a>: entero sin signo de 16 bits</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.uint32.aspx" target="_blank">UInt32</a>: ídem pero de 32 bits</li><li><a
target="_blank" href="http://msdn.microsoft.com/en-us/library/system.uint64.aspx" target="_blank">UInt64</a>: ídem pero de 64 bits</li></ul> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2011/10/31/comprobar-de-que-tipo-es-una-variable-u-objeto-en-c/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Curso C# con Mono – Tratamiento de excepciones</title><link>http://www.linuxhispano.net/2010/12/23/curso-c-con-mono-%e2%80%93-tratamiento-de-excepciones/</link> <comments>http://www.linuxhispano.net/2010/12/23/curso-c-con-mono-%e2%80%93-tratamiento-de-excepciones/#comments</comments> <pubDate>Thu, 23 Dec 2010 16:46:15 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Tutoriales]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[c]]></category> <category><![CDATA[c sharp]]></category> <category><![CDATA[curso]]></category> <category><![CDATA[excepción]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[mono develop]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=4760</guid> <description><![CDATA[Una característica común a este tipo de lenguajes de alto nivel, es la presencia del manejo de excepciones. ¿Qué es una excepción? Una excepción es una situación anormal que se da a lo largo de la ejecución del programa. El &#8230; <a
href="http://www.linuxhispano.net/2010/12/23/curso-c-con-mono-%e2%80%93-tratamiento-de-excepciones/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Una característica común a este tipo de lenguajes de alto nivel, es la presencia del <a
target="_blank" href="http://es.wikipedia.org/wiki/Manejo_de_excepciones" target="_blank">manejo de excepciones</a>.</p><p><strong>¿Qué es una excepción? </strong></p><p>Una excepción es una situación anormal que se da a lo largo de la ejecución del programa. El manejador de la excepción, es una estructura de control que permite ejecutar un código de acuerdo a esa situación anormal de forma controlada.</p><p><strong>¿Qué tipo de acciones se suelen realizar? </strong></p><p>Por un lado tenemos acciones de tipo terminación. En lugar de aparecer un mensaje de error del sistema operativo, el programa mismo lo emite informando de qué va a terminar su ejecución.</p><p>Por otro lado, tenemos manejadores que modifican el comportamiento del programa en cierto momento. Para este tipo de acciones, podríamos decir que las excepciones representan más una forma de control del flujo que un recurso de emergencia.</p><p><strong>¿Qué otros mecanismos existen para esta misma problemática?</strong></p><p>Ejemplos típicos de excepciones son:</p><ul><li>Cuando tratamos de dividir entre cero</li><li>Cuando tratamos de llamar a un método de una instancia que es nula</li><li>Cuando tratamos de convertir una cadena en número y la cadena no tiene formato numérico</li></ul><p>Y así podríamos seguir un largo etcétera de posibles excepciones. Como comprobaréis todas estas excepciones, podrían comprobarse como se hace en lenguajes que no tienen este mecanismo: <strong>mediante condicionales cada vez que hay una operación que pueda sufrir error</strong>. ¿Por qué es mejor usar excepciones?</p><p><strong>Ventajas de las excepciones</strong></p><p>¿Para qué complicarnos la vida con un nuevo concepto si podemos usar directamente comprobaciones?</p><ol><li>Separar el código principal del programa, del tratamiento de errores</li><li>Propagar el error en la pila de ejecución, de forma</li><li>Agrupar y clasificar los errores</li></ol><p><strong>¿Cómo detectar y tratar una excepción con Mono y C#?</strong></p><p>Para detectar una excepción en C# usamos la siguiente estructura (veámoslo con un ejemplo):</p><pre name="code" class="c-sharp">int a = 1;
int b = 0;
try{
	int c = a / b; // zona protegida
}catch(DivideByZeroException exc){
	Console.Write("Ha intentado dividir desde cero"); // código a ejecutar
}</pre><p>Como véis, estamos hablando directamente de la excepción de división entre cero. Si queremos controlar cualquier tipo de excepción, sólo tendremos que usar en lugar de <em>DivideByZeroException</em>,<em> </em>la clase de excepciones de la que heredan todas las demás, <em>Exception</em>. También podremos combinarlas, de forma que podamos atender a cierto tipo de excepciones y a cualquier otra que no hayamos controlado.</p><p>Veamos un caso de control para un tipo de excepción concreta (la de formato incorrecto) y el control para cualquier otro caso:</p><pre name="code" class="c-sharp">string cadena = "2a";
try{
	int valor = int.Parse(cadena);
}catch(FormatException exc){
	Console.Write("Ha ocurrido una excepción por el formato del fichero. Detalles:\n" + exc.Message);
}catch(Exception exc){
	Console.Write("Ha ocurrido otro tipo de error. Detalles:\n" + exc.Message);
}</pre><p><strong>Entregas anteriores</strong></p><ul><li><a
href="http://www.linuxhispano.net/2010/12/11/curso-c-con-mono-conversion-de-tipos-e-informacion-cultural/" target="_blank">Curso C# con Mono – Conversión de tipos e información cultural</a></li><li><a
href="http://www.linuxhispano.net/2010/12/04/curso-c-con-mono-%E2%80%93-declaracion-de-clases-y-estructuras/" target="_blank">Curso C# con Mono – Declaración de clases y estructuras</a></li><li><a
href="http://www.linuxhispano.net/2010/11/19/curso-c-con-mono-%E2%80%93-espacio-de-nombres-y-regiones/" target="_blank">Curso C# con Mono – Espacio de nombres y regiones</a></li><li><a
href="http://www.linuxhispano.net/2010/11/15/curso-c-con-mono-%E2%80%93-ensamblados/" target="_blank">Curso C# con Mono – Ensamblados</a></li><li><a
title="Enlace a Curso C# con Mono – Variables y constantes" rel="bookmark" href="http://www.linuxhispano.net/2010/11/02/curso-c-con-mono-%e2%80%93-variables-y-constantes/">Curso C# con Mono – Variables y constantes</a></li><li><a
title="Enlace a Curso C# con Mono – Tipos de datos y uso de referencias" rel="bookmark" href="http://www.linuxhispano.net/2010/10/29/curso-c-con-mono-tipos-de-datos-y-uso-de-referencias/">Curso C# con Mono – Tipos de datos y uso de referencias</a></li><li><a
title="Enlace a Curso C# con Mono – ¡Hola Mundo!" rel="bookmark" href="http://www.linuxhispano.net/2010/10/21/curso-c-con-mono-%c2%a1hola-mundo/">Curso C# con Mono – ¡Hola Mundo!</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/12/23/curso-c-con-mono-%e2%80%93-tratamiento-de-excepciones/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Curso C# con Mono &#8211; Conversión de tipos e información cultural</title><link>http://www.linuxhispano.net/2010/12/11/curso-c-con-mono-conversion-de-tipos-e-informacion-cultural/</link> <comments>http://www.linuxhispano.net/2010/12/11/curso-c-con-mono-conversion-de-tipos-e-informacion-cultural/#comments</comments> <pubDate>Sat, 11 Dec 2010 13:04:56 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Tutoriales]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[c]]></category> <category><![CDATA[c sharp]]></category> <category><![CDATA[conversión]]></category> <category><![CDATA[cultural]]></category> <category><![CDATA[icaza]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[parse]]></category> <category><![CDATA[tipos]]></category> <category><![CDATA[tostring]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=4538</guid> <description><![CDATA[Cuando estamos trabajando con diferentes tipos de datos, siempre conviene conocer los mecanismos para convertir un tipo de datos en otros. Si a eso le sumamos, que podamos hacer aplicaciones en las que se trabaje introduciendo datos siguiente el formalismo &#8230; <a
href="http://www.linuxhispano.net/2010/12/11/curso-c-con-mono-conversion-de-tipos-e-informacion-cultural/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Cuando estamos trabajando con diferentes tipos de datos, siempre conviene conocer los mecanismos para convertir un tipo de datos en otros. Si a eso le sumamos, que podamos hacer aplicaciones en las que se trabaje introduciendo datos siguiente el formalismo español (comas para separar decimales, puntos para separar miles) o viceversa (podéis ver un mapa de dónde se usa cada <a
target="_blank" href="http://es.wikipedia.org/wiki/Separador_decimal" target="_blank">separador decimal aquí</a>).</p><p>Esto es lo que se llama la <a
target="_blank" href="http://www.go-mono.com/docs/monodoc.ashx?link=T%3aSystem.Globalization.CultureInfo%2f*" target="_blank">información cultural, </a>que se sitúa dentro del ensamblado: <em>System.Globalization</em>, y que aparte de en este tema es conveniente conocer para otras tareas.</p><p><strong>Casting</strong></p><p>Es la forma más simple de hacer una conversión de datos. Está directamente heredada de C y puede ser implícita (si no se especifica) o explícita (cuando sí lo hacemos). Tiene grandes limitaciones porque básicamente sólo permite no convertir, sino camuflar, para una instrucción en concreto el tipo de dato.</p><p>Veamos un ejemplo:</p><pre name="code" class="c-sharp">int i = 10;
float f = 0;
f = i;  // conversión implícita
f = 0.5F;
i = (int)f;  // conversión explícita. Existe pérdida de información, los decimales</pre><p><strong>Métodos ToString</strong></p><p>Al igual que en otros muchos lenguajes de programación, a este nivel de abstracción, existe un método <strong>ToString</strong>, definido en cada clase, que convierte cualquier objeto en una cadena. Si tenemos un entero que tiene dentro el valor 1, devolverá una cadena &#8220;1&#8243;; igualmente pasará  con un decimal, pero aquí es donde entra la información cultural en juego. Si tenemos la cultura predefinida como la española, mostrará comas y punto de acuerdo a nuestra forma de hacerlo, si definimos otra cultura predefinida, el comportamiento cambiará conforme a eso. También podemos cambiar de forma puntual la cultura predefinida para un punto en concreto.</p><p>Veamos ejemplos de uso avanzado de ToString usando especificadores, para mostrar el mismo número por pantalla con decimales, sin ellos, en formato moneda, con porcentaje&#8230;</p><pre name="code" class="c-sharp">decimal valor = 16325.62m;
string especificador;
// Sin especificador
Console.WriteLine("Sin el especificador tenemos el valor: " + valor.ToString());
// Especificador numérico estándar
especificador = "G";
Console.WriteLine("Con el especificador: " + especificador + " tenemos el valor: " + valor.ToString(especificador));
// Muestra: 16325,62
especificador = "C";
Console.WriteLine("Con el especificador: " + especificador + " tenemos el valor: " + valor.ToString(especificador));
// Muestra: 16.325,62€
especificador = "E04";
Console.WriteLine("Con el especificador: " + especificador + " tenemos el valor: " + valor.ToString(especificador));
// Muestra: 1,6326E+004
especificador = "F";
Console.WriteLine("Con el especificador: " + especificador + " tenemos el valor: " + valor.ToString(especificador));
// Muestra: 16325,62
especificador = "N";
Console.WriteLine("Con el especificador: " + especificador + " tenemos el valor: " + valor.ToString(especificador));
// Muestra: 16.325,62
especificador = "P";
Console.WriteLine("Con el especificador: " + especificador + " tenemos el valor: " + valor.ToString(especificador));
// Muestra: 1.632.562,00%</pre><p>Veamos un ejemplo de uso con <strong>información cultural</strong> (<em>CultureInfo</em>):</p><pre name="code" class="c-sharp">System.Globalization.CultureInfo culture  = new System.Globalization.CultureInfo("EN-us");
Console.WriteLine("Cambiando a cultura de inglés de Estados Unidos tenemos: " + valor.ToString(culture.NumberFormat));
// Muestra: 16325.62</pre><p>Existen objetos, que a pesar de tener un método de este tipo, la cadena que devuelven no contiene prácticamente nada de la información del objeto. Por ejemplo, si tenemos un DataTable y le invocamos el método ToString, probablemente la salida sea sólo que es una instancia del tipo de objeto DataTable.</p><p><strong>Métodos Parse</strong></p><p>Podríamos decir que las funciones <strong>Parse</strong>, son la funciones inversas a los métodos <strong>ToString</strong>. A diferencia de los primeros, de una cadena, son capaces de leer su contenido y plasmarlo en un tipo de dato concreto, por ejemplo, de cadena a entero.</p><p>En C existían unas cuantas funciones que hacían esa misma labor: <a
target="_blank" href="http://es.answers.yahoo.com/question/index?qid=20080505160846AA6vT1W" target="_blank">atoi, atol&#8230;</a>. Además de ser <strong>verdaderamente útiles en interfaces gráficos y web</strong>,<strong> </strong>recordad que los datos que introducen los usuarios suelen venir en formato cadena, por la propia constitución de este tipo de interfaces.</p><p>Además son verdaderamente útiles cuando tratamos con tipos de datos a los que no podemos hacer <em>casting</em> directamente, ya que la solución más práctica es hacer un <strong>ToString</strong> seguido de un <strong>Parse</strong>.</p><p>Veamos ejemplos:</p><pre name="code" class="c-sharp">string valor = "1";
int a = int.Parse(a);
Console.WriteLine("El valor de a es: " a.ToString());</pre><p>Como podréis imaginar, si queremos pasar datos decimales con comas y puntos de tal manera o de tal otra, también deberemos usar en este punto la información cultural.</p><p>Nos vemos en la próxima entrega.</p><p><strong>Entregas anteriores</strong></p><ul><li><a
href="http://www.linuxhispano.net/2010/12/04/curso-c-con-mono-%E2%80%93-declaracion-de-clases-y-estructuras/" target="_blank">Curso C# con Mono &#8211; Declaración de clases y estructuras</a></li><li><a
href="http://www.linuxhispano.net/2010/11/19/curso-c-con-mono-%E2%80%93-espacio-de-nombres-y-regiones/" target="_blank">Curso C# con Mono – Espacio de nombres y regiones</a></li><li><a
href="http://www.linuxhispano.net/2010/11/15/curso-c-con-mono-%E2%80%93-ensamblados/" target="_blank">Curso C# con Mono – Ensamblados</a></li><li><a
title="Enlace a Curso C# con Mono – Variables y constantes" rel="bookmark" href="http://www.linuxhispano.net/2010/11/02/curso-c-con-mono-%e2%80%93-variables-y-constantes/">Curso C# con Mono – Variables y constantes</a></li><li><a
title="Enlace a Curso C# con Mono – Tipos de datos y uso de referencias" rel="bookmark" href="http://www.linuxhispano.net/2010/10/29/curso-c-con-mono-tipos-de-datos-y-uso-de-referencias/">Curso C# con Mono – Tipos de datos y uso de referencias</a></li><li><a
title="Enlace a Curso C# con Mono – ¡Hola Mundo!" rel="bookmark" href="http://www.linuxhispano.net/2010/10/21/curso-c-con-mono-%c2%a1hola-mundo/">Curso C# con Mono – ¡Hola Mundo!</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/12/11/curso-c-con-mono-conversion-de-tipos-e-informacion-cultural/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Curso C# con Mono – Ensamblados</title><link>http://www.linuxhispano.net/2010/11/15/curso-c-con-mono-%e2%80%93-ensamblados/</link> <comments>http://www.linuxhispano.net/2010/11/15/curso-c-con-mono-%e2%80%93-ensamblados/#comments</comments> <pubDate>Mon, 15 Nov 2010 14:22:48 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Noticias]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[c]]></category> <category><![CDATA[ensamblado]]></category> <category><![CDATA[espacio de nombres]]></category> <category><![CDATA[mono]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=3975</guid> <description><![CDATA[En todas las tecnologías de este tipo, existen mecanismos para proveer al usuario de métodos que permitan incorporar funcionalidades de ficheros externos. Ésto, unido a la orientación a objetos, crea un problema: cómo organizar y referenciar todas las clases (ya &#8230; <a
href="http://www.linuxhispano.net/2010/11/15/curso-c-con-mono-%e2%80%93-ensamblados/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>En todas las tecnologías de este tipo, existen mecanismos para proveer al usuario de métodos que permitan incorporar funcionalidades de ficheros externos. Ésto, unido a la orientación a objetos, crea un problema: cómo organizar y referenciar todas las clases (ya hablaremos de clases más profundamente), de una forma sencilla y que no dé lugar a incoherencias.</p><p><strong>Ensamblados</strong></p><p>Para resolver este problema, la estructura en Mono (y en .NET) los ensamblados. Éstos pueden ser tanto ejecutables (con extensión .exe), como de librería (con extensión .dll). Ambas extensiones son una herencia de las tecnologías Microsoft desde los tiempos del <a
target="_blank" href="http://es.wikipedia.org/wiki/MS-DOS" target="_blank">MS-DOS</a>. Los ensamblados son ficheros en donde se encuentran, compiladas en su lenguaje intermedio, una serie de clases.</p><div
id="attachment_4150" class="wp-caption aligncenter" style="width: 175px"><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/11/estructura_assemblie.gif"><img
class="size-full wp-image-4150" title="estructura_assemblie" src="http://www.linuxhispano.net/wp-content/uploads/2010/11/estructura_assemblie.gif" alt="" width="165" height="206" /></a><p
class="wp-caption-text">Estructura básica de un ensamblado</p></div><p>Los ensamblados más básicos están instalados en el sistema nada más instalar Mono. El sistema que se encarga de organizarlos y evitar problemas de versionado (la propia arquitectura de los ensamblados está orientada a evitar problemas como <a
target="_blank" href="http://es.wikipedia.org/wiki/DLL_Hell" target="_blank">el infierno de las DLL</a>) es el llamado <a
target="_blank" href="http://www.mono-project.com/Assemblies_and_the_GAC" target="_blank">GAC, </a><em><a
target="_blank" href="http://www.mono-project.com/Assemblies_and_the_GAC" target="_blank">The Global Assemblie Cache</a> </em>(la caché global de ensamblados).</p><p>Cuando un proyecto Mono hace referencia a un ensamblado busca en tres partes:</p><ol><li>Primero, en la localización del ensamblado (en la misma ruta)</li><li>Segundo en la ruta definida por la variable de entorno MONO_PATH</li><li>Finalmente, pide al GAC el ensamblado si no lo ha encontrado por lo métodos anteriores</li></ol><p><strong>¿Cómo referenciar ensamblados desde nuestro proyecto con MonoDevelop?</strong></p><p>Ya que conocemos, aunque sea por encima, cómo se organizan las librerías y clases y en Mono, lo siguiente es poner esto que acabamos de explicar en práctica.</p><p>Cuando creamos un proyecto en MonoDevelop, de forma automática se añaden los ensamblados básicos para lo que busquemos: proyecto en consola, con GTK#&#8230;</p><p>Sin embargo, si necesitamos incluir más ensamblados deberemos hacerlo de forma manual. ¿Dónde? En la parte izquierda de nuestra pantalla, tenemos la estructura de la solución. Dentro de ella, tras el nombre, dentro del árbol, hay un nivel que pone: <strong>Referencias</strong>, hacemos clic derecho sobre él y elegimos <strong>Editar referencias&#8230;</strong>.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/11/editar_referencias.jpg"><img
class="aligncenter size-full wp-image-4146" title="editar_referencias" src="http://www.linuxhispano.net/wp-content/uploads/2010/11/editar_referencias.jpg" alt="" width="500" height="461" /></a></p><p>Se nos abre un diálogo como el que acabamos de mostrar. Se nos presentan tres pestañas:</p><ul><li>Paquetes: Todos los ensamblados que maneja el GAC</li><li>Proyectos: Ensamblados de otros proyectos</li><li>Ensamblados .NET: Cualquier ensamblado en dll o exe que tengamos, podemos unirlo y empezar a trabajar con él</li></ul><p>En la siguiente entrega hablaremos de los espacios de nombres y de cómo llamar a las funcionalidades y cómo se estructuran en el código a través de los <strong>espacios de nombres</strong>.</p><p>Entregas anteriores:</p><ul><li><a
title="Enlace a Curso C# con Mono – Variables y constantes" rel="bookmark" href="http://www.linuxhispano.net/2010/11/02/curso-c-con-mono-%e2%80%93-variables-y-constantes/">Curso C# con Mono – Variables y constantes</a></li><li><a
title="Enlace a Curso C# con Mono – Tipos de datos y uso de referencias" rel="bookmark" href="http://www.linuxhispano.net/2010/10/29/curso-c-con-mono-tipos-de-datos-y-uso-de-referencias/">Curso C# con Mono – Tipos de datos y uso de referencias</a></li><li><a
title="Enlace a Curso C# con Mono – ¡Hola Mundo!" rel="bookmark" href="http://www.linuxhispano.net/2010/10/21/curso-c-con-mono-%c2%a1hola-mundo/">Curso C# con Mono – ¡Hola Mundo!</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/11/15/curso-c-con-mono-%e2%80%93-ensamblados/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Microsoft libera el lenguaje F#</title><link>http://www.linuxhispano.net/2010/11/10/microsoft-libera-el-lenguaje-f/</link> <comments>http://www.linuxhispano.net/2010/11/10/microsoft-libera-el-lenguaje-f/#comments</comments> <pubDate>Wed, 10 Nov 2010 16:34:45 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Noticias]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[apache]]></category> <category><![CDATA[f#]]></category> <category><![CDATA[microsoft]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=4058</guid> <description><![CDATA[Antes de nada os preguntaréis cuál lenguaje es ese tal F# o F Sharp, como podéis ver en al Wikipedia, se trata de un lenguaje nacido al abrigo de la plataforma .NET de Microsoft, cuyo diseño está basado en lenguajes &#8230; <a
href="http://www.linuxhispano.net/2010/11/10/microsoft-libera-el-lenguaje-f/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Antes de nada os preguntaréis cuál lenguaje es ese tal <a
target="_blank" href="http://en.wikipedia.org/wiki/F_Sharp_(programming_language)" target="_blank">F# o F Sharp</a>, como podéis ver en al <a
target="_blank" href="http://es.wikipedia.org/wiki/Wikipedia:Portada" target="_blank">Wikipedia</a>, se trata de un lenguaje nacido al abrigo de la plataforma .NET de Microsoft, cuyo diseño está basado en lenguajes como <a
target="_blank" href="http://www.linuxhispano.net/2010/10/21/curso-c-con-mono-%C2%A1hola-mundo/" target="_blank">C#</a>, <a
href="http://es.wikipedia.org/wiki/Haskell" target="_blank">Haskell</a> y <a
target="_blank" href="http://es.wikipedia.org/wiki/Caml" target="_blank">Caml</a>. Como podéis ver en el ranking de <a
target="_blank" href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" target="_blank">Tiobe</a>, es un lenguaje poco popular (está en el tramos de lenguajes sin clasificar por encima del puesto 50).</p><p><strong>¿Por qué hablamos hoy de él?</strong> Porque Microsoft ha decidido liberarlo bajo una licencia Apache y está disponible dentro de <a
target="_blank" href="http://www.codeplex.com/" target="_blank">Codeplex</a> (el repositorio de la empresa de Redmond para proyectos de código abierto) el código del compilador y las librerías básicas del lenguaje.</p><p><strong>¿Por qué comento esto?</strong> Porque de un tiempo para acá, estoy comprobando que Microsoft se está portando con la Comunidad mejor que otras empresas que en otros tiempos eran más aliadas del código libre como Oracle y Apple.</p><p>Estoy bastante <strong>asustado </strong>por el futuro de Java, MySQL y OpenOffice; pero noticias como ésta, aunque sean granos de arena en el desierto, son positivas.</p><p>Un par de ejemplos de F# antes de terminar:</p><pre class="f-sharp">(* Esto es un comentario *)
(* Ejemplo de típico ¡Hola Mundo! *)
printfn "Hello World!"</pre><p>Y una recursividad básica para calcular el factorial:</p><pre class="f-sharp">let rec factorial n =
    match n with
    | 0 -&gt; 1
    | _ -&gt; n * factorial (n - 1)</pre>]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/11/10/microsoft-libera-el-lenguaje-f/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Curso C# con Mono &#8211; Tipos de datos y uso de referencias</title><link>http://www.linuxhispano.net/2010/10/29/curso-c-con-mono-tipos-de-datos-y-uso-de-referencias/</link> <comments>http://www.linuxhispano.net/2010/10/29/curso-c-con-mono-tipos-de-datos-y-uso-de-referencias/#comments</comments> <pubDate>Fri, 29 Oct 2010 16:13:23 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Tutoriales]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[c sharp]]></category> <category><![CDATA[condicional]]></category> <category><![CDATA[curso]]></category> <category><![CDATA[iterador]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[operador]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=3933</guid> <description><![CDATA[Seguimos el curso de C# con Mono profundizando algo más en el lenguaje. Si la semana pasada hablábamos de cómo poner todo en marcha y ejecutar el típico ¡Hola Mundo! esta semana veremos cómo tratar con condicionales, iteradores y operadores. &#8230; <a
href="http://www.linuxhispano.net/2010/10/29/curso-c-con-mono-tipos-de-datos-y-uso-de-referencias/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Seguimos el curso de C# con Mono profundizando algo más en el lenguaje. Si la semana pasada hablábamos de cómo poner todo en marcha y ejecutar el típico <a
href="http://www.linuxhispano.net/2010/10/21/curso-c-con-mono-%c2%a1hola-mundo/" target="_blank">¡Hola Mundo!</a> esta semana veremos cómo tratar con condicionales, iteradores y operadores.</p><p>La idea de este curso no es hablar de qué es una iteración, ni siquiera profundizar en los aspectos más detallados del uso; sino dar unos conceptos breves pero importantes, para que podáis profundizar vosotros mismos.</p><p><strong>Introducción</strong></p><p><strong> </strong>Al igual que en todos los lenguajes en C# existen los tipos de datos. Se tratan de una forma muy similar a Java y como nota destacable sólo comentaré que:</p><ul><li>El carácter por defecto, <em>char</em>, es UNICODE. Es decir no ocupa 8 bits, sino 16, y puede manejar todo tipo de símbolos (acentos, eñes, etc) por defecto.</li><li>Si vienes de C y buscas utilizar enteros: 0 y distinto de 0 (falso o verdadero), el tipo <em>bool </em>es la herramienta para hacerlo.</li><li>Además de los tipos de datos de C# al completo, siempre podrás almacenar en variables referencias a objetos, vectores, etc. o <strong>incluso a tipos de datos básicos</strong>.</li></ul><p>Para pasar referencias a funciones de tipos de datos básicos usamos las palabra claves <em>out </em>y <em>ref </em>(ahora veremos el uso de ambas). Esta <strong>es una diferencia relevante con Java</strong>, donde las variables de tipos de datos básicos se pasan siempre por valor.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/10/Duke_Int_Float_Char.gif"><img
class="aligncenter size-full wp-image-3951" title="Duke_Int_Float_Char" src="http://www.linuxhispano.net/wp-content/uploads/2010/10/Duke_Int_Float_Char.gif" alt="" width="442" height="425" /></a></p><p><strong>Dualidad objeto/tipo de dato</strong></p><p>Al igual que ocurre en Java, los tipos de datos básicos corresponden en realidad a clases. Por ejemplo, el tipo de dato <em>float </em>es en realidad una abreviatura para instanciar la clase <em>System.Single</em>.</p><p>Veamos un ejemplo:</p><pre class="c-sharp" name="code">float a;
System.Single b = new System.Single();</pre><p>Estamos declarando, dos variables para almacenar valores en punto flotante de precisión simple de formas. La variable <em>a </em>la declaramos al estilo C y la variable <em>b</em> en realidad representa a una instancia de la clase <em>System.Single</em>.</p><p>Si dentro de los <em>using </em>tenemos declarado el espacio de nombres <em>System</em>, se puede hacer directamente: <em>Single b = new Single()</em>.</p><p><strong>Utilización del parámetro <em>out</em></strong></p><p>Veamos directamente sobre un ejemplo el uso del parámetro <em>out</em>. Inicializaremos dos variables a 0, llamaremos a una función donde variaremos su valor. Tras la asignación volvemos a leer el valor de las variables y comprobamos que han cambiado.</p><p>Veamos el código:</p><pre class="c-sharp" name="code">public static void Main (string[] args)
{
	int a = 0;
	int b = 0;
	Console.WriteLine("Valor de: a = {0}, b = {1}
        antes de llamar a la función", a, b);
	probarOut(out a,out b);
	Console.WriteLine("Valor de: a = {0}, b = {1}
        tras llamar a la función", a, b);
}
public static void probarOut(out int a, out int b)
{
	a = 100;
	b = 200;
}</pre><p>Dentro de la función <em>probarOut</em> no hemos intentado leer las variables porque no sería posible. Si queremos hacerlo, de forma similar a lo que haríamos con<em> &amp;</em> en C, debemos usar <em>ref</em>.</p><p>El parámetro <em>out </em>se usa en algunas funciones de conversión de datos, por ejemplo, <em>TryParse</em>.</p><p><strong>Utilización del parámetro <em>ref</em></strong></p><p>Para terminar con este artículo, veremos el uso de la palabra reservada <em>ref</em>. Haremos una función que intercambie el valor de dos enteros. Previamente los inicializaremos, los imprimimos por pantalla y tras comprobar la llamada a la función, volvemos a imprimir por pantalla para comprobar que su valor ha cambiado.</p><p>Veamos el código:</p><pre class="c-sharp" name="code">public static void Main (string[] args)
{
	int a = 1;
	int b = 2;
	Console.WriteLine("Valor de: a = {0}, b = {1}
        antes de llamar a la función", a, b);
	intercambiar(ref a, ref b);
	Console.WriteLine("Valor de: a = {0}, b = {1}
        tras llamar a la función", a, b);
}
public static void intercambiar(ref int a, ref int b)
{
	int tmp = b;
	b = a;
	a = tmp;
}</pre><p>Como veréis, los mecanismos de referencias en C# son mucho más naturales que en Java. Si queremos pasar una referencia de un tipo de dato básico en Java, debemos usar mecanismos como las llamadas: AtomicReference.</p><p>Ya sabéis que cuando se trata de objetos que no son tipos de datos básicos, no hay problema.</p><p><strong>Entregas previas:</strong></p><ul><li><a
href="http://www.linuxhispano.net/2010/10/21/curso-c-con-mono-%c2%a1hola-mundo/" target="_blank">¡Hola Mundo!</a></li></ul> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/10/29/curso-c-con-mono-tipos-de-datos-y-uso-de-referencias/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>SharpDevelop, el IDE libre para .NET cumple 10 años</title><link>http://www.linuxhispano.net/2010/09/13/sharpdevelop-el-ide-libre-para-net-cumple-10-anos/</link> <comments>http://www.linuxhispano.net/2010/09/13/sharpdevelop-el-ide-libre-para-net-cumple-10-anos/#comments</comments> <pubDate>Mon, 13 Sep 2010 11:34:02 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Noticias]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[c]]></category> <category><![CDATA[mnno]]></category> <category><![CDATA[sharpdevelop]]></category> <category><![CDATA[visual studio]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=3522</guid> <description><![CDATA[Hace 10 años nacía SharpDevelop y con él la posibilidad de poder desarrollar aplicaciones .NET para sistemas Windows en un entorno libre. Pero, ¿por qué hablamos de programas relacionados con Windows y .NET en este blog? Muy sencillo, hasta la &#8230; <a
href="http://www.linuxhispano.net/2010/09/13/sharpdevelop-el-ide-libre-para-net-cumple-10-anos/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><a
target="_blank" href="http://community.sharpdevelop.net/blogs/christophwille/archive/2010/09/11/happy-anniversary-10-years-of-sharpdevelop.aspx" target="_blank">Hace 10 años nacía SharpDevelop</a> y con él la posibilidad de poder desarrollar aplicaciones .NET para sistemas Windows en un entorno libre. Pero, ¿por qué hablamos de programas relacionados con Windows y .NET en este blog? Muy sencillo, hasta la llegada de este proyecto, para desarrollar con esta tecnología de forma más o menos efectiva hacía falta utilizar alguna de las versiones de <a
target="_blank" href="http://es.wikipedia.org/wiki/Microsoft_Visual_Studio" target="_blank">Visual Studio</a>.</p><p>Puesto que el poder de Microsoft en el mercado de escritorio es innegable, muchos de nosotros, nos veíamos abocados a desarrollar con esta herramienta por desgracia para todos, ya que si al pseudo-monopolio le sumas por un lado tecnología de desarrollo, por el otro el sistema operativo y encima le sumas el entorno de desarrollo&#8230; la situación es dramática.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/09/sharp-develop.jpg"><img
class="aligncenter size-full wp-image-3526" title="sharp develop" src="http://www.linuxhispano.net/wp-content/uploads/2010/09/sharp-develop.jpg" alt="" width="250" height="249" /></a></p><p>Muchos me comentaréis que hay otras tecnologías que sustituyen muy bien el conjunto formado por .NET en Windows como por ejemplo Java (incluso en Windows). Sin embargo, hay situaciones en las que es imposible buscar alternativa: ya sea por factores técnicos o por obligaciones de superiores.</p><p><strong>¿La solución?</strong></p><p>La solución a este problema es usar un entorno libre. El entorno, <a
target="_blank" href="http://es.wikipedia.org/wiki/SharpDevelop" target="_blank">SharpDevelop</a> no tiene mucho que envidiar a Visual Studio y cada año crece y mejora. Con él podemos hacer cualquier aplicación de escritorio de una forma cómoda, gráfica y efectiva, sin tener que usar el IDE de Microsoft. Además se nos abren posibilidades gracias a su integración con otras tecnologías libres como <a
href="http://www.linuxhispano.net/2010/03/18/ironpython-una-implementacion-de-python-para-mono-net/" target="_blank">IronPython</a> y está muy relacionado con <a
href="http://www.linuxhispano.net/etiqueta/mono/" target="_blank">el proyecto Mono</a>.</p><p>El software libre tiene que avanzar en todos los terrenos y nada mejor que hacerlo en pleno territorio enemigo y conseguir quitarle cuota de mercado a unos de los buques insignia de <a
target="_blank" href="http://maps.google.es/maps?f=q&amp;source=s_q&amp;hl=es&amp;q=Microsoft,&amp;sll=47.639593,-122.128444&amp;sspn=0.004533,0.008272&amp;ie=UTF8&amp;t=h&amp;radius=0.23&amp;split=1&amp;rq=1&amp;ev=zi&amp;hq=Microsoft,&amp;hnear=&amp;ll=47.639528,-122.128444&amp;spn=0.004533,0.008272&amp;z=17&amp;iwloc=A" target="_blank">la compañía de Redmond</a>, Visual Studio (que por cierto, es un gran producto&#8230; pero no es libre). Por cierto, <a
target="_blank" href="http://www.sharpdevelop.net/opensource/sd/" target="_blank">el enlace a la página de SharpDevelop donde podéis descargarlo es éste</a>.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/09/TeaserSharpDevelop2OnVista.png"><img
class="aligncenter size-full wp-image-3528" title="TeaserSharpDevelop2OnVista" src="http://www.linuxhispano.net/wp-content/uploads/2010/09/TeaserSharpDevelop2OnVista.png" alt="" width="600" height="457" /></a></p> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/09/13/sharpdevelop-el-ide-libre-para-net-cumple-10-anos/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Cómo ejecutar programas implementados en .NET en Linux con Mono</title><link>http://www.linuxhispano.net/2010/08/04/como-ejecutar-programas-implementados-en-net-en-linux-con-mono/</link> <comments>http://www.linuxhispano.net/2010/08/04/como-ejecutar-programas-implementados-en-net-en-linux-con-mono/#comments</comments> <pubDate>Wed, 04 Aug 2010 11:37:25 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Noticias]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[windows]]></category> <category><![CDATA[wine]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=3044</guid> <description><![CDATA[Introducción Cuando el otro día hablábamos de cómo ejecutar un programa Windows sobre Linux con Wine, nos preguntaron por los programas que están implementados con .NET, que por cierto cada día son más en plataformas Windows. Desde estas líneas os &#8230; <a
href="http://www.linuxhispano.net/2010/08/04/como-ejecutar-programas-implementados-en-net-en-linux-con-mono/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><strong>Introducción</strong></p><p>Cuando el otro día hablábamos de cómo ejecutar <a
href="http://www.linuxhispano.net/2010/07/30/ejecutar-un-programa-windows-en-ubuntu-con-wine/" target="_blank">un programa Windows sobre Linux con Wine</a>, nos preguntaron por los programas que están implementados con .NET, que por cierto cada día son más en plataformas Windows.</p><p>Desde estas líneas os recuerdo que al igual que Java, .NET es una plataforma pensada para tener un carácter multiplataforma (aunque en la realidad el grado de compatibilidad es mucho menor) por lo que con una máquina virtual que soporte la ejecución de dicho programa a priori no habría problema.</p><p>¿Existe un entorno de ejecución de .NET en Linux? Sí que existe, es Software Libre y es uno de los proyectos libres que más me interesan (por suerte o por desgracia trabajo a diario con entornos .NET en mi trabajo). Hablamos del <a
target="_blank" href="http://es.wikipedia.org/wiki/Proyecto_Mono" target="_blank">Proyecto Mono</a> y he de deciros que es uno de los proyectos más polémicos de todo el universo libre por razones de cercanía a Microsoft.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/08/miguel_de_icaza_mono_linuxhispano.jpg"><img
class="aligncenter size-full wp-image-3079" title="miguel_de_icaza_mono_linuxhispano" src="http://www.linuxhispano.net/wp-content/uploads/2010/08/miguel_de_icaza_mono_linuxhispano-e1280921820922.jpg" alt="" width="500" height="375" /></a></p><p><strong>Ejecución</strong></p><p><span
style="color: #000000;">Un ejecutable creado con .NET para plataformas de escritorio podemos ejecutarlo directamente desde la consola con la siguiente orden:</span></p><p><em>$ mono fichero.exe</em></p><p>Tendremos que tener instalado el entorno de ejecución de Mono (normalmente llamado <em>mono-runtime </em>si queréis buscarlo en vuestro gestor de paquetes).</p><p>Es muy posible que el instalador del programa que queremos ejecutar no esté implementado en Mono, por lo que habría que seguir dos pasos:</p><ol><li><a
href="http://www.linuxhispano.net/2010/07/30/ejecutar-un-programa-windows-en-ubuntu-con-wine/" target="_blank">Ejecutar el instalador con Wine</a></li><li>Buscar la ruta dónde se ha instalado y ejecutarlo con Mono. Os doy un consejo, mirar en vuestro directorio <em>home </em>la carpeta &#8220;.wine&#8221;, dentro de ella &#8220;drive_c&#8221; y ahí &#8220;Archivos de programa&#8221;, al más puro estilo Windows.</li></ol><p><span
style="font-family: 'Helvetica Neue', Arial, Helvetica, 'Nimbus Sans L', sans-serif; line-height: 24px; font-size: 16px;">En ese directorio: <em>$HOME/.wine/drive_c </em>tendréis una emulación del disco principal del sistema <em>imitado </em>por Wine.</span></p><ol></ol> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/08/04/como-ejecutar-programas-implementados-en-net-en-linux-con-mono/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>Empezar a desarrollar aplicaciones web con Mono</title><link>http://www.linuxhispano.net/2010/06/14/introduccion-al-desarrollo-de-aplicaciones-web-con-mono/</link> <comments>http://www.linuxhispano.net/2010/06/14/introduccion-al-desarrollo-de-aplicaciones-web-con-mono/#comments</comments> <pubDate>Mon, 14 Jun 2010 15:20:56 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Tutoriales]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[apache]]></category> <category><![CDATA[asp.net]]></category> <category><![CDATA[c]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[xsp]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=2678</guid> <description><![CDATA[Hace ya unos cuantos meses escribí para Linux+ un artículo sobre esto que os comento hoy, una introducción al desarrollo de aplicaciones web con Mono. Concretamente fue en el número de febrero. Ha pasado el tiempo y la editorial ha &#8230; <a
href="http://www.linuxhispano.net/2010/06/14/introduccion-al-desarrollo-de-aplicaciones-web-con-mono/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/06/Introducción-al-desarrollo-de-aplicaciones-web-con-Mono.jpg"><img
class="aligncenter size-full wp-image-2683" title="Introducción-al-desarrollo-de-aplicaciones-web-con-Mono" src="http://www.linuxhispano.net/wp-content/uploads/2010/06/Introducción-al-desarrollo-de-aplicaciones-web-con-Mono.jpg" alt="" width="300" height="219" /></a></p><p>Hace ya unos cuantos meses escribí para <a
target="_blank" href="http://lpmagazine.org/es/magazine/980-sdl-interfaces-graficas-de-usuario" target="_blank">Linux+</a> un artículo sobre esto que os comento hoy, una introducción al desarrollo de aplicaciones web con Mono. Concretamente fue en <a
href="http://www.linuxhispano.net/2010/02/02/revista-digital-linux-de-febrero-lista-para-descarga-gratuita/" target="_blank">el número de febrero</a>. Ha pasado el tiempo y la editorial ha tornado sus miras hacia un entorno más abierto. Primero fue el lanzamiento de la revista en formato PDF y de distribución gratuita (antes era de papel y costaba unos cuantos euros) y ahora han lanzado un blog, llamado Revista Linux, donde irán publicando los artículos más relevantes de la revista en formato <em>post</em>, lo que seguro que tanto vosotros como los motores de búsqueda lo agradeceréis.</p><p>Uno de los primeros artículos que han publicado es este que os comento, aquí tenéis el enlace al mismo y un desglose de su contenido.</p><p><strong>Introducción al desarrollo de aplicaciones web con Mono</strong></p><ol><li>Introducción</li><li>Preparación e instalación<ol><li>XSP</li><li>Apache con mod_mono<ol><li>Instalación</li><li>Prueba</li><li>Eliminación de un sitio</li></ol></li></ol></li><li>Ejemplos de interacción con MySQL<ol><li>Instalación de la base de datos y creación de los datos de ejemplo</li><li>Descarga y activación del conector</li><li>Código del ejemplo y archivo de configuración</li><li>Aplicando estilos</li></ol></li><li>Conclusiones</li></ol> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/06/14/introduccion-al-desarrollo-de-aplicaciones-web-con-mono/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Reorganiza tu código en regiones con C# y MonoDevelop</title><link>http://www.linuxhispano.net/2010/04/27/reorganiza-tu-codigo-en-regiones-con-c-y-monodevelop/</link> <comments>http://www.linuxhispano.net/2010/04/27/reorganiza-tu-codigo-en-regiones-con-c-y-monodevelop/#comments</comments> <pubDate>Tue, 27 Apr 2010 12:51:04 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Noticias]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[c_sharp]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[programación]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=2228</guid> <description><![CDATA[La posibilidad de poder dividir el código por regiones cuando empieza a adquirir cientos o miles de líneas es algo que los comentarios de toda la vida no llegan a conseguir con especial claridad. Las soluciones varían entre lenguajes pero &#8230; <a
href="http://www.linuxhispano.net/2010/04/27/reorganiza-tu-codigo-en-regiones-con-c-y-monodevelop/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>La posibilidad de poder dividir el código por regiones cuando empieza a adquirir cientos o miles de líneas es algo que los comentarios <em>de toda la vida </em>no llegan a conseguir con especial claridad. Las soluciones varían entre lenguajes pero en <a
target="_blank" href="http://es.wikipedia.org/wiki/C_Sharp" target="_blank">C#</a> y utilizando el IDE <a
target="_blank" href="http://es.wikipedia.org/wiki/MonoDevelop" target="_blank">MonoDevelop</a> una de las mejores opciones es dividir el código en regiones de forma que el propio IDE nos lo muestre contraído o expandido en función a lo que nos interese.</p><p>Las palabras clave son: <em>#region</em> y <em>#endregion</em> para indicar el comienzo y el fin de la región, respectivamente. Podéis ver el resultado en las siguientes imágenes, como podéis apreciar MonoDevelop te genera un extracto del contenido de la región:</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/04/region_extendida_linuxhispano.jpg"><img
class="aligncenter size-full wp-image-2258" title="region_extendida_linuxhispano" src="http://www.linuxhispano.net/wp-content/uploads/2010/04/region_extendida_linuxhispano.jpg" alt="" width="561" height="227" /></a></p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/04/region_concentrada_linuxhispano1.jpg"><img
class="aligncenter size-full wp-image-2261" title="region_concentrada_linuxhispano" src="http://www.linuxhispano.net/wp-content/uploads/2010/04/region_concentrada_linuxhispano1.jpg" alt="" width="560" height="167" /></a></p> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/04/27/reorganiza-tu-codigo-en-regiones-con-c-y-monodevelop/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>IronPython, una implementación de Python para Mono/.NET</title><link>http://www.linuxhispano.net/2010/03/18/ironpython-una-implementacion-de-python-para-mono-net/</link> <comments>http://www.linuxhispano.net/2010/03/18/ironpython-una-implementacion-de-python-para-mono-net/#comments</comments> <pubDate>Thu, 18 Mar 2010 16:46:02 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Noticias]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[boo]]></category> <category><![CDATA[ironpython]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[python]]></category> <category><![CDATA[sharpdevelop]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=1981</guid> <description><![CDATA[Debido a que utilizo SharpDevelop, software libre para desarrollo .NET en plataformas Windows, en el trabajo hace tiempo ya descubrí que existía la posibilidad de hacer desarrollos para el intérprete de .NET/Mono en lenguaje Python. Posteriormente, hace no mucho viendo un &#8230; <a
href="http://www.linuxhispano.net/2010/03/18/ironpython-una-implementacion-de-python-para-mono-net/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/03/ironpython-logo-linuxhispano.png"><img
class="aligncenter size-full wp-image-1984" title="ironpython-logo-linuxhispano" src="http://www.linuxhispano.net/wp-content/uploads/2010/03/ironpython-logo-linuxhispano.png" alt="" width="202" height="50" /></a></p><p>Debido a que utilizo <a
target="_blank" href="http://es.wikipedia.org/wiki/SharpDevelop" target="_blank">SharpDevelop</a>, software libre para desarrollo .NET en plataformas Windows, en el trabajo hace tiempo ya descubrí que existía la posibilidad de hacer desarrollos para el intérprete de .NET/Mono en lenguaje <a
target="_blank" href="http://es.wikipedia.org/wiki/Python" target="_blank">Python</a>. Posteriormente, hace no mucho viendo <a
target="_blank" href="http://www.vivalinux.com.ar/articulos/videos-miguel-de-icaza" target="_blank">un vídeo de Miguel de Icaza</a>, comprobé que el padre de Gnome también hablaba de esta misma posibilidad.</p><p>Pasado el tiempo y como veo que es un tema que puede interesar a muchos os presento a <strong><a
target="_blank" href="http://es.wikipedia.org/wiki/IronPython" target="_blank">IronPython</a></strong>.</p><p><strong>¿Qué es IronPython?</strong></p><p><strong></strong>Es una implementación del intérprete de <a
target="_blank" href="http://es.wikipedia.org/wiki/Python" target="_blank">Python</a> sobre en entorno de trabajo de .NET/Mono de forma que podemos compilar código <a
target="_blank" href="http://es.wikipedia.org/wiki/Python" target="_blank">Python</a> a código intermedio CLI de entornos .NET/Mono con las ventajas que puede traernos ésto en entornos Windows.</p><p><strong>Boo</strong></p><p>Los que estéis metido dentro del mundo del software libre en plataformas Windows y sobre todo en el mundo del Proyecto Mono, conoceréis a <a
target="_blank" href="http://es.wikipedia.org/wiki/Boo_(programaci%C3%B3n)" target="_blank">Boo</a>. <a
target="_blank" href="http://es.wikipedia.org/wiki/Boo_(programaci%C3%B3n)" target="_blank">Boo</a> es un lenguaje de programación de la familia .NET/Mono con una sintaxis muy parecida a Python pero que no llega a ser exactamente igual. El desarrollador de <a
target="_blank" href="http://es.wikipedia.org/wiki/Python" target="_blank">Python</a> se sentirá cómodo con Boo pero no llegará a poder compilar ni interpretar su código <a
target="_blank" href="http://es.wikipedia.org/wiki/Python" target="_blank">Python</a> directamente.</p><p><strong>IronPython</strong></p><p>Con <a
target="_blank" href="http://es.wikipedia.org/wiki/IronPython" target="_blank">IronPython</a> este problema no existe porque de hecho se pueden incluso compilar paquetes de <a
target="_blank" href="http://es.wikipedia.org/wiki/Python" target="_blank">Python</a>, tal como pude leer <a
target="_blank" href="http://community.sharpdevelop.net/blogs/mattward/archive/2010/03/16/CompilingPythonPackagesWithIronPython.aspx" target="_blank">hace dos días en el blog oficial de desarrollo de SharpDevelop</a>. Las ventajas de usar <a
target="_blank" href="http://es.wikipedia.org/wiki/IronPython" target="_blank">IronPython</a> son muchas y todo el que esté obligado a desarrollar en Windows por cualquier razón lo debería contemplar como una opción.</p><p>Aparte de las ventajas y de la facilidad que nos transmite Python tenemos a nuestra disposición las bibliotecas propias de .NET con las ventajas de integración y facilidad de desarrollo que esto supone en los sistemas de la factoría de Redmond.</p><p>Os dejo <a
target="_blank" href="http://ironpython.net/" target="_blank">un enlace a la web oficial de IronPython</a> y os invito a que probéis esta tecnología con el IDE libre para .NET/Mono en Windows, <a
target="_blank" href="http://es.wikipedia.org/wiki/SharpDevelop" target="_blank">SharpDevelop</a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/03/18/ironpython-una-implementacion-de-python-para-mono-net/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Instalar el conector de MySQL sobre Mono</title><link>http://www.linuxhispano.net/2010/02/05/howto-instalar-el-conector-de-mysql-sobre-mono-con-ado-net/</link> <comments>http://www.linuxhispano.net/2010/02/05/howto-instalar-el-conector-de-mysql-sobre-mono-con-ado-net/#comments</comments> <pubDate>Fri, 05 Feb 2010 09:46:40 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Tutoriales]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[ado.net]]></category> <category><![CDATA[como]]></category> <category><![CDATA[howto]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[mysql]]></category> <category><![CDATA[tip]]></category> <category><![CDATA[tutorial]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=1470</guid> <description><![CDATA[Introducción Ya que no hay demasiado documentación de Mono en la red y creo que es una alternativa muy válida para muchos proyectos, voy a seguir publicando más tutoriales y tips sobre este tema. Mi intención hoy es comentar cómo &#8230; <a
href="http://www.linuxhispano.net/2010/02/05/howto-instalar-el-conector-de-mysql-sobre-mono-con-ado-net/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/02/MonoDevelopLogo.png"><img
class="aligncenter size-full wp-image-1602" title="MonoDevelopLogo" src="http://www.linuxhispano.net/wp-content/uploads/2010/02/MonoDevelopLogo.png" alt="" width="256" height="256" /></a></p><p><strong>Introducción</strong></p><p>Ya que no hay demasiado documentación de Mono en la red y creo que es una alternativa muy válida para muchos proyectos, voy a seguir publicando <a
href="http://www.linuxhispano.net/etiqueta/mono/" target="_blank">más tutoriales y tips sobre este tema</a>.</p><p>Mi intención hoy es <strong>comentar cómo referenciar el conector de </strong><a
target="_blank" href="http://es.wikipedia.org/wiki/MySQL" target="_blank"><strong>MySQL</strong></a><strong> dentro de un proyecto de </strong><a
target="_blank" href="http://es.wikipedia.org/wiki/Proyecto_Mono" target="_blank"><strong>Mono</strong></a><strong> con </strong><a
target="_blank" href="http://es.wikipedia.org/wiki/MonoDevelop" target="_blank"><strong>MonoDevelop</strong></a>, de forma que podamos <strong>utilizarlo </strong>con la arquitectura y las funcionalidades de <a
target="_blank" href="http://es.wikipedia.org/wiki/ADO.NET" target="_blank"><strong>ADO.NET</strong></a> para manejar datos con<strong> un servidor</strong> de base de datos <a
target="_blank" href="http://es.wikipedia.org/wiki/MySQL" target="_blank"><strong>MySQL</strong></a>. El conector os valdrá tanto para aplicaciones web como locales.</p><p>Si no conocéis <a
target="_blank" href="http://es.wikipedia.org/wiki/ADO.NET" target="_blank">ADO.NET</a> os recomiendo que os leáis el artículo al que os referencio de la Wikipedia porque realmente es una arquitectura muy útil para el manejo de datos, aunque los más puristas la rechazarán por venir de <a
target="_blank" href="http://es.wikipedia.org/wiki/Microsoft" target="_blank">Microsoft</a>.</p><p><strong>Instalación</strong></p><p>Lo primero será estar seguros de que tenemos instalados <a
target="_blank" href="http://es.wikipedia.org/wiki/Proyecto_Mono" target="_blank">Mono</a>, <a
target="_blank" href="http://es.wikipedia.org/wiki/MonoDevelop" target="_blank">MonoDevelop</a> y que tenemos a nuestro alcance un servidor de <a
target="_blank" href="http://es.wikipedia.org/wiki/MySQL" target="_blank">MySQL</a> al que conectarnos. Si no lo tenéis instalados podéis instarlo prácticamente seguro desde vuestro gestor de paquetes y en todo caso, desde la web oficial del <a
target="_blank" href="http://www.mono-project.com/Main_Page" target="_blank">Proyecto Mono</a>. Una vez hecho esto descargaremos el conector <a
target="_blank" href="http://dev.mysql.com/downloads/connector/net/." target="_blank">desde este enlace en la web de MySQL</a>. Elegimos la plataforma: &#8220;.NET &amp; Mono&#8221;. Se os descargará un fichero <em>dll </em>con los ensamblados correspondientes.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/02/monomysql-3.png"><img
class="aligncenter size-full wp-image-1608" title="monomysql-3" src="http://www.linuxhispano.net/wp-content/uploads/2010/02/monomysql-3.png" alt="" width="500" height="459" /></a></p><p><strong>Referencia dentro de un proyecto</strong></p><p>Ahora nos dirigimos a Mono Develop y creamos una solución nueva (da igual si de consola o GTK#). Al crearse la solución nos dirigimos a las <strong>Referencias</strong> del proyecto y desde allí importamos el ensamblado. Para ello seleccionáis  “Editar referencias&#8230;”. De las tres opciones que aparecen en el diálogo entramos en “Ensamblado .NET”, elegimos el fichero dll que acabamos de descargar y lo añadimos.</p><p><strong>Prueba</strong></p><p>Para terminar vamos a probar que todo está bien. En el <em>Main.cs </em>vamos a implementar el típico ¡Hola Mundo!, añadiéndole al comienzo una referencia al conector. Si compila correctamente hemos llegado a nuestro objetivo.</p><pre name="code" class="c-sharp">
using System;
using MySql.Data.MySqlClient;
namespace ejemplo_mono_ado
{
	class MainClass
	{
		public static void Main(string[] args)
		{
			Console.WriteLine("Hello World!");
		}
	}
}
</pre><p>En un futuro post explicaré más sobre el uso y la potencia de esta herramienta.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/02/mono-300x210.jpg"><img
class="aligncenter size-full wp-image-1609" title="mono-300x210" src="http://www.linuxhispano.net/wp-content/uploads/2010/02/mono-300x210.jpg" alt="" width="300" height="210" /></a></p> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/02/05/howto-instalar-el-conector-de-mysql-sobre-mono-con-ado-net/feed/</wfw:commentRss> <slash:comments>10</slash:comments> </item> <item><title>Instalar y configurar Apache como servidor de ASP.NET con Mono</title><link>http://www.linuxhispano.net/2010/01/25/apache-como-servidor-de-asp-net-con-mono/</link> <comments>http://www.linuxhispano.net/2010/01/25/apache-como-servidor-de-asp-net-con-mono/#comments</comments> <pubDate>Mon, 25 Jan 2010 16:22:23 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Tutoriales]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[apache]]></category> <category><![CDATA[aplicación web]]></category> <category><![CDATA[asp.net]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[programación]]></category> <category><![CDATA[tutorial]]></category> <category><![CDATA[xsp]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=1378</guid> <description><![CDATA[Si hace unos días hablábamos de la posibilidad de ejecutar aplicaciones ASP.NET en nuestro equipo Linux con XSP, hoy traemos la que podría ser la segunda parte de ese artículo: hacer esto mismo pero con Apache y mod_mono. ¿Por qué &#8230; <a
href="http://www.linuxhispano.net/2010/01/25/apache-como-servidor-de-asp-net-con-mono/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Si hace unos días hablábamos de la posibilidad de <a
target="_blank" href="http://www.linuxhispano.net/2010/01/07/xsp-un-servidor-para-aplicaciones-asp-net-en-linux/" target="_blank">ejecutar aplicaciones ASP.NET en nuestro equipo Linux con XSP</a>, hoy traemos la que podría ser la segunda parte de ese artículo: hacer esto mismo pero con <a
href="http://es.wikipedia.org/wiki/Servidor_HTTP_Apache" target="_blank">Apache</a> y <a
target="_blank" href="http://en.wikipedia.org/wiki/Mod_mono" target="_blank">mod_mono</a>.</p><p
style="text-align: center;"><a
target="_blank" style="text-decoration: none;" href="http://www.apache.org/"><img
class="aligncenter size-full wp-image-1416" title="logo_apache" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/logo_apache.gif" alt="" width="356" height="107" /></a></p><p><strong>¿Por qué escoger este binomio en lugar de XSP? </strong>La respuesta es fácil: XSP es un servidor de pruebas, no de producción y si queremos tener un servicio o aplicación web ejecutando de forma <em>decente </em>en producción, mejor utilizar <a
target="_blank" href="http://es.wikipedia.org/wiki/Servidor_HTTP_Apache" target="_blank">Apache</a> y <a
target="_blank" href="http://en.wikipedia.org/wiki/Mod_mono" target="_blank">mod_mono</a>. Las razones no son sólo por la escalabilidad y eficiencia que permite <a
target="_blank" href="http://es.wikipedia.org/wiki/Servidor_HTTP_Apache" target="_blank">Apache</a>, sino que están relacionadas por la seguridad que provee el servidor más utilizado a nivel mundial y por la gran variedad de opciones que nos ofrece.</p><p>De todas maneras sigo pensando que al igual que el servidor de pruebas de <a
target="_blank" href="http://es.wikipedia.org/wiki/Django" target="_blank">Django</a> es útil para las pruebas, <a
target="_blank" href="http://www.linuxhispano.net/2010/01/07/xsp-un-servidor-para-aplicaciones-asp-net-en-linux/" target="_blank">XSP</a> es un buen servidor de pruebas para practicar con nuestro PC cuando estemos aprendiendo <a
href="http://es.wikipedia.org/wiki/ASP.NET" target="_blank">ASP.NET</a>. Cuando la aplicación se hace compleja y sobre todo queramos pasarla a producción, Apache.</p><p><strong>Instalación y configuración</strong></p><p><strong> </strong></p><div
id="_mcePaste"><ol><li><strong>Instalamos</strong>:<ol><li><strong>Apache 2</strong> (si utilizáis sistema de paquetería será algo así como <em>apache2</em>).</li><li>Módulo para <strong>multiproceso</strong>:<em> apache2-mpm-worker</em>.</li><li><strong>Módulo de Mono</strong>: <em>libapache2-mod-mono.</em></li><li><em><span
style="font-style: normal;"><strong>Interfaz entre Mono y servidor</strong>: <em>mono-apache-server.</em></span></em></li></ol></li><li><strong>Reiniciamos el servicio</strong> de Apache para que recargue la configuración: <em>sudo /etc/init.d/apache2 restart</em></li><li><em><span
style="font-style: normal;"><strong>Activamos el módulo</strong> (a2enmod significa</span> apache2 enable module<span
style="font-style: normal;">): </span>sudo a2enmod mod_mono</em></li><li><em><span
style="font-style: normal;"><strong>Vemos </strong></span><span
style="font-style: normal;"><strong> qué versión de ASP.NET está activada</strong> (lo recomendable es que sea la 2 y no la 1). Para comprobarlo nos dirigimos a: </span>/etc/apache2/mods-available <span
style="font-style: normal;">y vemos el fichero</span><span
style="font-style: normal;"> </span>mod_mono.conf<span
style="font-style: normal;">, debería estar así (comentada con # la primera):</span><span
style="font-style: normal;"><br
/> <em> #Include /etc/mono-server/mono-server-hosts.conf<br
/> Include /etc/mono-server2/mono-server2-hosts.conf</em></span></em></li></ol><p>En definitiva, una forma simple de tener un servidor ASP.NET corriendo en nuestro equipo Linux, con software libre y en sólo cuatro pasos. Para tenerlo perfectamente preparado para producción, deberéis de tener en cuenta algunos detalles más propios de Apache, pero la parte específica de Mono es ésta.</p><p>Ya me contaréis vuestras impresiones con esta tecnología.</p><p><em>Parece que la noticia ha gustado y lo han colgado de <a
target="_blank" href="http://www.meneame.net/" target="_blank">Menéame</a>. Si queréis ya sabéis: <a
target="_blank" href="http://www.meneame.net/story/apache-como-servidor-asp.net-mono" target="_blank">menead</a>.</em></p><p><a
target="_blank" href="http://www.mono-project.com/Main_Page"><img
class="aligncenter" title="Logo Proyecto Mono" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/mono.png" alt="Logo Proyecto Mono" width="277" height="298" /></a></p></div> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/01/25/apache-como-servidor-de-asp-net-con-mono/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Instalar y configurar XSP, un servidor para aplicaciones ASP.NET en Linux</title><link>http://www.linuxhispano.net/2010/01/07/xsp-un-servidor-para-aplicaciones-asp-net-en-linux/</link> <comments>http://www.linuxhispano.net/2010/01/07/xsp-un-servidor-para-aplicaciones-asp-net-en-linux/#comments</comments> <pubDate>Thu, 07 Jan 2010 01:07:44 +0000</pubDate> <dc:creator>F. Javier Carazo Gil</dc:creator> <category><![CDATA[Tutoriales]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[aplicación web]]></category> <category><![CDATA[asp.net]]></category> <category><![CDATA[linux+]]></category> <category><![CDATA[mono]]></category> <category><![CDATA[xsp]]></category> <guid
isPermaLink="false">http://www.linuxhispano.net/?p=1256</guid> <description><![CDATA[Debido a mis circunstancias laborales, trabajo muy frecuentemente con la plataforma .NET en entornos Windows y la verdad es que creo que la tecnología .NET de Microsoft es de lo mejor que ha salido de Redmond en mucho tiempo. Nada &#8230; <a
href="http://www.linuxhispano.net/2010/01/07/xsp-un-servidor-para-aplicaciones-asp-net-en-linux/">Continuar leyendo <span
class="meta-nav">&#8594;</span></a>]]></description> <content:encoded><![CDATA[<p>Debido a mis circunstancias laborales, trabajo muy frecuentemente con la plataforma .NET en entornos Windows y la verdad es que creo que <a
target="_blank" href="http://es.wikipedia.org/wiki/Microsoft_.NET" target="_blank">la tecnología .NET de Microsoft</a> es de lo mejor que ha salido de Redmond en mucho tiempo. Nada que ver con las anteriores tecnologías que nada tenían que ver entre sí y que eran objetivamente malas tanto para el desarrollador como para el usuario final. Hablo de <a
target="_blank" href="http://es.wikipedia.org/wiki/Visual_Basic" target="_blank">Visual Basic</a>, <a
target="_blank" href="http://es.wikipedia.org/wiki/Active_Server_Pages" target="_blank">ASP</a> o <a
target="_blank" href="http://es.wikipedia.org/wiki/Visual_C++" target="_blank">Visual C++</a>, junto con las <a
target="_blank" href="http://es.wikipedia.org/wiki/MFC" target="_blank">Microsoft Foundation Classes</a> y compañía.</p><p><a
href="http://www.linuxhispano.net/wp-content/uploads/2010/01/mono.png"><img
class="aligncenter size-full wp-image-1257" title="mono" src="http://www.linuxhispano.net/wp-content/uploads/2010/01/mono.png" alt="" width="277" height="298" /></a></p><p>Como consecuencia de esto que os cuento, desde siempre he tenido un interés especial por poder crear mis desarrollos utilizando esta tecnología en Linux. El <a
target="_blank" href="http://es.wikipedia.org/wiki/Proyecto_Mono" target="_blank">Proyecto Mono</a> proporciona prácticamente todas las posibilidades de la plataforma, con software libre y para todo tipo de entornos y sistemas (cierto es que está verde en algunas parte pero por lo general está muy depurado y tiene muchas posibilidades).</p><p>Bueno a lo que íbamos. Entre las posibilidades del <a
target="_blank" href="http://es.wikipedia.org/wiki/Proyecto_Mono" target="_blank">Proyecto Mono</a> también se encuentra la creación y ejecución de aplicaciones web. Para ello nos proporciona un servidor ligero escrito en C# (aunque a algunos ambos términos a la vez le resulten opuestos) llamado XSP y que para pequeñas aplicaciones de producción y para desarrollo es muy válido. Para aplicaciones de más tamaño, recomiendo utilizar <a
target="_blank" href="http://es.wikipedia.org/wiki/Servidor_HTTP_Apache" target="_blank">Apache</a> con <a
target="_blank" href="http://en.wikipedia.org/wiki/Mod_mono" target="_blank">mod_mono</a>.</p><p><strong>¿Cómo instalar y configurar XSP?</strong></p><p>Siempre tendréis la opción de descargar del SVN la última versión estable, pero os recomiendo instalarlo mediante vuestro gestor de paquetería. El paquete en cuestión se llamará, dependiendo del repositorio, <strong>mono-xsp o mono-xsp2 </strong>(en caso de estar disponibles ambos, elegid el que soporta ASP.NET 2, es decir, mono-xsp2).</p><p>Una vez hecho esto poco más hay que hacer. Lo mejor es descargarse el paquete con los ejemplos, su nombre será algo así como: <strong>asp.net2-examples</strong>. Tras instalarlo ya podéis probar</p><ol><li>Antes de nada deberéis moveros al directorio de los ejemplos: <em>/usr/share/asp.net2-demos/</em></li><li>Arrancamos el servidor: <em>xsp2</em></li><li>Introducimos en nuestro navegador la siguiente dirección (puerto 8080 de nuestro equipo): <em><a
target="_blank" href="http://localhost:8080/">http://localhost:8080</a>.</em></li><li>Veremos los ejemplos. A partir de ahí&#8230; ya tenéis camino libre para desarrollar aplicaciones ASP.NET con Linux.</li></ol><p>Parece que el post <strong>ha aparecido en </strong><a
target="_blank" href="http://meneame.net/" target="_blank"><strong>Menéame</strong></a><strong>. Si os ha gustado ya sabéis, </strong><a
target="_blank" href="http://meneame.net/story/xsp-servidor-para-aplicaciones-asp.net-linux" target="_blank"><strong>menearla</strong></a>.</p> ]]></content:encoded> <wfw:commentRss>http://www.linuxhispano.net/2010/01/07/xsp-un-servidor-para-aplicaciones-asp-net-en-linux/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> </channel> </rss>
