Lo mejor de mi RSS del 10 al 16 de noviembre de 2014: razones para elegir WordPress y .NET

Esta semana ha sido un tanto afortunada para el software libre, aunque a muchos aún reticentes con Microsoft no les termine de gustar, no dejará de ser una buena noticia que una plataforma tecnológica del tamaño y la importancia de .NET hayan sido liberadas por Microsoft, en un movimiento inédito y que hace unos años era totalmente impensable. Parece que la actitud de Satya Nadella es diferente a la de Ballmer, y no sólo porque sea amante del código abierto, sino por cómo se mueve el mercado, creo que están en el buen camino. read more

Leer más » 1 Comentario

Microsoft libera .NET

dotnet_logo

Después de muchísimos años la tecnología .NET de Microsoft es de código abierto bajo la licencia MIT.

Los tres principales componentes que se liberan son: NET Framework Libraries, .NET Core Framework Libraries y la máquina virtual RyuJit00.

El sueño de Miguel de Icaza se ha visto cumplido. Seguro que mi amigo y compañero de Linux Hispano Carazo (autor además del curso C# con Mono) estará encantado de la noticia.

Enlace oficial: .NET Foundation.
Repositorio oficial: .NET Foundation Github. read more

Leer más » 1 Comentario

.NET

Leer más » 2 Comentarios

Diferencias entre un servicio de alojamiento con Linux y otro con Windows

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.

Introducción

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 Microsoft Windows, 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.

Leer más » 6 Comentarios

Comprobar de qué tipo es una variable u objeto en C#

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 forma parte del curso de Mono, sí está muy relacionada con esta entrega dedicada a tipos de datos.

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:

Por ejemplo, ¿cómo saber si el objeto “auxiliar” es un entero con signo de 32 bits (el entero más estándar, el que usamos al poner int simplemente)?

Leer más » 4 Comentarios

Curso C# con Mono – Tratamiento de excepciones

Una característica común a este tipo de lenguajes de alto nivel, es la presencia del manejo de excepciones. read more

Leer más » 5 Comentarios

Curso C# con Mono – Conversión de tipos e información cultural

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 separador decimal aquí).

Esto es lo que se llama la información cultural, que se sitúa dentro del ensamblado: System.Globalization, y que aparte de en este tema es conveniente conocer para otras tareas.

Casting

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.

Veamos un ejemplo:

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

Métodos ToString

Al igual que en otros muchos lenguajes de programación, a este nivel de abstracción, existe un método ToString, definido en cada clase, que convierte cualquier objeto en una cadena. Si tenemos un entero que tiene dentro el valor 1, devolverá una cadena “1”; 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.

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…

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% read more

Leer más » 6 Comentarios

Curso C# con Mono – Ensamblados

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.

Ensamblados

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 MS-DOS. Los ensamblados son ficheros en donde se encuentran, compiladas en su lenguaje intermedio, una serie de clases. read more

Leer más » 5 Comentarios

Microsoft libera el lenguaje F#

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 como C#, Haskell y Caml. Como podéis ver en el ranking de Tiobe, es un lenguaje poco popular (está en el tramos de lenguajes sin clasificar por encima del puesto 50). read more

Leer más » 6 Comentarios

Curso C# con Mono – Tipos de datos y uso de referencias

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.

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.

Introducción

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:

  • El carácter por defecto, char, es UNICODE. Es decir no ocupa 8 bits, sino 16, y puede manejar todo tipo de símbolos (acentos, eñes, etc) por defecto.
  • Si vienes de C y buscas utilizar enteros: 0 y distinto de 0 (falso o verdadero), el tipo bool es la herramienta para hacerlo.
  • Además de los tipos de datos de C# al completo, siempre podrás almacenar en variables referencias a objetos, vectores, etc. o incluso a tipos de datos básicos.

Para pasar referencias a funciones de tipos de datos básicos usamos las palabra claves out y ref (ahora veremos el uso de ambas). Esta es una diferencia relevante con Java, donde las variables de tipos de datos básicos se pasan siempre por valor.

Dualidad objeto/tipo de dato

Al igual que ocurre en Java, los tipos de datos básicos corresponden en realidad a clases. Por ejemplo, el tipo de dato float es en realidad una abreviatura para instanciar la clase System.Single.

Veamos un ejemplo:

float a;
System.Single b = new System.Single();

Estamos declarando, dos variables para almacenar valores en punto flotante de precisión simple de formas. La variable a la declaramos al estilo C y la variable en realidad representa a una instancia de la clase System.Single.

Si dentro de los using tenemos declarado el espacio de nombres System, se puede hacer directamente: Single b = new Single().

Utilización del parámetro out

Veamos directamente sobre un ejemplo el uso del parámetro out. 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.

Veamos el código:

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;
}

Dentro de la función probarOut no hemos intentado leer las variables porque no sería posible. Si queremos hacerlo, de forma similar a lo que haríamos con & en C, debemos usar ref.

El parámetro out se usa en algunas funciones de conversión de datos, por ejemplo, TryParse.

Utilización del parámetro ref

Para terminar con este artículo, veremos el uso de la palabra reservada ref. 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.

Veamos el código:

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; } read more

Leer más » 9 Comentarios

SharpDevelop, el IDE libre para .NET cumple 10 años

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 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 Visual Studio.

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… la situación es dramática. read more

Leer más » 6 Comentarios

Cómo ejecutar programas implementados en .NET en Linux con Mono

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 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. read more

Leer más » 14 Comentarios

Empezar a desarrollar aplicaciones web con Mono

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 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 post, lo que seguro que tanto vosotros como los motores de búsqueda lo agradeceréis. read more

Leer más » 3 Comentarios

Reorganiza tu código en regiones con C# y MonoDevelop

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 en C# y utilizando el IDE MonoDevelop 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.

Las palabras clave son: #region y #endregion 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: read more

Leer más » 8 Comentarios

IronPython, una implementación de Python para Mono/.NET

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 vídeo de Miguel de Icaza, comprobé que el padre de Gnome también hablaba de esta misma posibilidad.

Pasado el tiempo y como veo que es un tema que puede interesar a muchos os presento a IronPython.

¿Qué es IronPython? read more

Leer más » 4 Comentarios