Diferencia entre ICollection e IList en C#

Los elementos dentro de un ICollection (para ser más exactos, los elementos dentro de una clase que implemente una interfaz ICollection) no tienen un orden específico. En un momento pueden estar ordenados de una manera, y en otro, sin alguna razón aparente, ordenados de otra forma.

En cambio, los elementos de un IList si tienen un orden establecido y relevante, como un arreglo. Esto permite agregar elementos en una ubicación específica. Además, los elementos van a permanecer en la posición asignada hasta que decidamos moverlos.

Además de estas dos interfaces, existe también IDictionary, que exitiende a ICollection. Este permite almacenar parejas de elementos (clave, valor), similar a como lo hace un diccionario de palabras (cada palabra tiene un significado). Al igual que en el ICollection, estos elementos no tienen un orden específico.

Ubuntu 8.10 (Intrepid Ibex) liberado

Hoy ha sido liberada la nueva versión de Ubuntu. Tanto la versión de escritorio como la de servidor trae mejoras muy interesantes.

Algunas de las mejoras hechas en Desktop Edition:

  • Soporte para la tecnología 3G (internet celular).
  • Copiar Ubuntu desde USB.
  • Sesión de invitado.

Y algunas otras en Server Edition:

  • Nuevos perfiles de instalación (Tomcat Java Server y Virtualization Host).
  • Incorporación del comando service de las distribuciones basadas en RedHat.
  • JeOS es ahora una opción en el momento de la instalación.
  • Mejoras en el aspecto de virtualización.

Utilizar varias versiones del Internet Explorer a la vez

¿Por qué quisiera alguien en su sano juicio, tener más de una versión del infame Internet Explorer instalada en su PC, e incluso, corriendo simultáneamente?

Bueno, la única razón válida que se me ocurre es por lo que yo mismo hago esto: Probar los websites que desarrollo en los navegadores más utilizados actualmente (para mal de todos), IE 6 e IE 7. Si todos decidieran utilizar un navegador de verdad como Firefox u Opera, por mencionar dos, la vida de los diseñadores web sería más fácil y la de los internautas, más segura y placentera.

Existen por lo menos dos programas que permiten tener instaladas varias versiones del IE (por ejemplo, IE4.01, IE5.01, IE5.5, IE6, IE7, IE8) simultáneamente:

  • MultipleIEs: La última versión que he probado no puede ser instalada en Windows Vista, solo en XP. Permite utilizar IE3, IE4.01, IE5.01, IE5.5, IE6 e IE7.
  • IETester: Todavía está en una fase alpha de desarrollo, por lo que tiene algunas limitaciones que probablemente se vayan corrigiendo. Funciona con Windows XP y Vista (IE7+ instalado de preferencia), y permite utilizar IE8 beta2, IE7, IE6, IE5.5.

No las he probado extensivamente, pero como actualmente mi máquina principal tiene Vista, el IETester ha pasado mi elección obligada.

Obtener el MimeType de un archivo desde C#

No he encontrado una manera directa de hacerlo, pero encontré esta función que busca la extensión del archivo en el registro de windows y si está registrada, obtiene su tipo mime.

private string getMimeType(string fileName)
{
    string mimeType = "application/unknown";
    string ext = System.IO.Path.GetExtension(fileName).ToLower();
    Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);
    if (regKey != null && regKey.GetValue("Content Type") != null)
        mimeType = regKey.GetValue("Content Type").ToString();
    return mimeType;
}

Aún no la pruebo, pero según loque leí, funciona bien. Los post originales están acá y acá.

Alternativa al WinZip

Actualmente, trabajar con archivos comprimidos es pan de cada día; ¿cuántos de los archivos que descargamos de la web están en algún formato como zip o rar ó incluso en el menos conocido (para aquellos que solo trabajan en Windows) pero más eficiente tar.gz? ¿y cuántos de esos archivos son manejados por el famoso WinZip?

Aquellos que alguna vez hemos usado dicho programa, recordaremos la pantalla inicial donde se informa que estamos trabajando con una versión de evaluación. Luego de algunos miles de clics en esa pantalla, decidí buscar otro programa similar, pero que fuera gratuito. Lo que encontré es aún mejor.

7-Zip es un programa Open Source, que podemos descargar gratuitamente desde acá. Comprime y descomprime archivos como zip, gzip, el propio 7z (que tiene un ratio de compresión mejor que la mayoría de formatos conocidos, como vemos en su página oficial), entre otros. Además de descomprimir archivos rar, cab, iso, lzh…

Entonces, ¿qué ventajas tenemos con el 7-Zip? Primero, es gratuito y Open Source (si queremos, podemos ver y modificar el código fuente, aunque muchos puedan no saber que es esto). Segundo, podemos trabajar con gran variedad de formatos como rar.

Tras descargar e instalar el 7-Zip en nuestra PC, es recomendable hacerle una pequeña modificación a la configuración del programa para convertirlo en el predeterminado para abrir archivos comprimidos.

Primero abrimos el programa desde el menú Inicio. Una vez dentro, nos dirigimos al menú Tool/Options. Vemos que en la pestaña System podemos escoger que archivos queremos asociar al programa. Terminada la selección, le damos clic a OK y listo.

Ahora, cada vez que hagamos doble clic en un archivo con alguna de las extensiones que escogimos, nos abrirá el 7-Zip.

Para comprimir un archivo o un directorio, basta hacer clic derecho sobre él, escoger el menú 7-Zip/Add to [nombre].zip. Ojo que también tiene la opción de Add to [nombre].7z, que creará un archivo comprimido con el formato 7z (menos común). Si vamos a compartir el archivo con otra persona, es preferible utilizar el formato zip, pero si es para uso personal, les recomiendo el 7z ya que tiene una mejor tasa de compresión.

De igual manera, para descomprimir un archivo, escogemos la opción (en el menú al hacer clic derecho sobre él), 7-Zip/Extract Here o mejor aún, 7-Zip/Extract to [nombre]/, que nos creará un directorio con el mismo nombre del archivo, y colocará ahí el contenido.

Gimp 2.6 liberado e instalado en Ubuntu 8.04

Hace unos días salió la versión 2.6 de Gimp (un programa Open Source de edición de imágenes, similar al Photoshop) que incorporá muchos cambios. Aún no se encuentra en los repositorios oficiales de Ubuntu, pero ya es posible instalarlo de una manera sencilla tal como lo muestran acá, ya sea desde consola o desde el administrador de paquetes Synaptic.