25 nov 2008

Youtube panoramico





Todos los cambios que hemos visto últimamente en Youtube parecen ir orientados en una misma dirección: la profesionalización del contenido. Esto no implica que lo que ha hecho realmente famoso al sitio, la posibilidad de subir cualquier vídeo vaya a desaparecer.

Pero Youtube necesita encontrar fuentes de ingresos adicionales, y el contenido profesional es una de las pocas maneras que tienen de monetizar el sitio. Así, no es de extrañar que tras el aumento de resolución ahora hayan modificado el diseño de la página para adaptarlo a contenido panorámico.
El ancho estándar se ha subido hasta los 960 píxeles para permitir la visualización de vídeos en formato panorámico, una opción casi imprescindible para películas, pero que también toma mucha fuerza para contenido amateur, ya que muchas cámaras de fotos y vídeo ya ofrecen este formato.

Los vídeos que ya estaban en el sistema se continuarán viendo bien, aunque tendrán unas barras negras laterales para compensar el formato 4:3 estándar. De momento, el código que ofrecen para incrustar vídeos en otras páginas no está en formato panorámico, aunque imagino que será cuestión de tiempo el cambiarlo.

Para aprovechar, os dejo con una de las actuaciones que hicieron en Youtube Live, el evento con el que el sitio de vídeos ha empezado a probar el videostreaming.

Facebook, quiere comprar a Twitter



Nuestros amigos de El Blog Salmón se hacen eco de la noticia de que las altas esferas de Facebook y Twitter se reunieron para intentar hacer un trato por el cual Facebook compraría Twitter por 500 millones de dólares. Quizás os parezca mucho o quizás poco, pero el caso es que es una cantidad tremenda para un servicio el cual aún no se sabe muy bien como rentabilizar.

Obviando temas económicos, analicemos un poco lo que podría haber supuesto esta compra, que finalmente no fue. Twitter se puede integrar en Facebook de una manera más o menos sencilla, actualizando nuestro mensaje de estado cada vez que actualizamos nuestro Twitter. Esto no tiene mucho misterio y realmente tampoco creo que Twitter en Facebook sirva para mucho más.

Entonces, ¿para que quiere Facebook a los usuarios de Twitter? Bueno, está claro que Facebook tenía planes ocultos para sacar partido de esta plataforma de microblogging, porque sino nadie invierte 500 millones de dolares en una plataforma así. Aunque quizás oculto no sea la palabra correcta, pero está claro que pretendía sacar dinero de todos nosotros.

Se me ocurre, por ejemplo, utilizar a sus patrocinadores en Facebook para adornar nuestros perfiles de Twitter, hacer estadísticas de uso y usarlas para su bien en Facebook y un millón de posibilidades más que seguro que tenían guardadas en la manga. Aunque lo que más me preocupa es el hecho de que unieran nuestras cuentas en una sola.

Normalmente uno se registra en Facebook con su nombre real, agrega a amigos, compañeros de trabajo, gente que conoce por internet o a quien le de la gana. Sin embargo hay un pequeño sector que prefiere mantener en el anonimato su perfil internetero, y quizás no le interese que su primo el del pueblo o su compañero gracioso de trabajo sepa que tiene un Twitter que actualiza cada cinco minutos, porque probablemente ni si quiera entienda lo que es un Twitter.

Y está claro que si en Facebook y Twitter estamos registrados con la misma cuenta de correo, era cuestión de tiempo que esto hubiera ocurrido, aunque supongo que nos hubieran permitido separar las cuentas y no mostrar nuestras actualizaciones, pero apuesto a que lo hubieran hecho de la manera más rebuscada posible.

De todas formas todo esto eran simples conjeturas ya que, finalmente y como ya he comentado, la transacción no se realizó ya que Facebook pretendía pagar una parte en dinero (del de verdad) y el resto en acciones de Facebook.

Vía | El Blog Salmón

Minime, minimiza todas las ventanas en una



Cuando usamos el ordenador durante largas horas es muy habitual que tengamos en la barra de herramientas un sin fin de ventanas abiertas. Así, como comprenderéis, es imposible organizarse, localizar la ventana que buscamos y al fin y al cabo trabajar de una manera eficiente. Siempre podemos recurrir al Alt + Tab, que en Windows Vista es mucho más útil que en XP, pero aún así sigue siendo un descontrol.

Con Minime podremos minimizar todas las ventanas que queramos en la bandeja de sistema, todas reunidas en un mismo icono. Para hacer esto simplemente debemos irnos a la ventana actica que queremos minimizar con este método y pulsar SHIFT + CTRL + Z y automáticamente desaparecerá de nuestra vista.

Para recuperar las ventanas minimizadas simplemente pinchamos con el botón izquiero del ratón en el icono de Minime que aparece en la bandeja de sistema y nos mostrará una lista con todas. Tenemos dos opciones, o bien pinchamos en la que queremos abrir o bien le damos a Show All que nos restaurará todas las que tenemos abiertas.

Minime tiene varias cosas buenas, la primera es que no requiere instalación, la segunda es que es muy ligera y la tercera es que funciona perfectamente. Está en inglés, eso si, pero la verdad es que para tres opciones que tiene tampoco es que el idioma sea un impedimento. Minime es completamente gratuito y funciona bajo Windows.

Descarga | Minime

21 nov 2008

Apple lanza la actualizacion 2.2 del Iphone




Apple dio a conocer un fuerte actualización para el iPhone el jueves por la noche.
La actualización de software 2.2 está disponible a través de iTunes, y es lleno de
lotes de objetos valiosos. Apple publicó su actualización de software 2.1 en septiembre.
Algunos de los aspectos más destacados del centro de la actualización en el GPS y Google Maps. Para
ejemplo, la versión 2.2 incluye Google Street View en Google Maps, que
permite a los usuarios ver una de 360 grados vista de los lugares tomadas con cámaras
montado en los coches de Google. Asimismo, añadió caminar direcciones en Google Maps
con información sobre el transporte público se detiene.
Además, el iPhone puede ahora descargar podcasts por aire mediante un
Wi-Fi o red 3G. Anteriormente, los usuarios tienen que descargar podcasts en
iTunes en sus ordenadores y, a continuación, sincronizar sus archivos. Ahora los usuarios pueden iPhone
También desactivar la auto-corrección en el teclado virtual, que debe
es decir, una buena alternativa para permitir que el iPhone de adivinar lo que estás
tratando de tipo.
Otras mejoras incluyen una corrección de error previsto e-mail de obtención,
la mejora de la estabilidad y el rendimiento para el navegador Web Safari, la mejora de
teléfono de calidad para reducir la interrupción de llamadas (¡Hurra!), y la mejora de sonido
calidad visual en los mensajes de correo de voz.
Sin embargo, todavía hay muchas cosas que faltan - por ejemplo, corte y
pegar. Y el iPhone todavía no es compatible con mensajería MMS ni
tienen GPS paso a paso las direcciones.

Contacto

Para mayor información, comentarios privados y/o sugerencias escribeme con gusto de solucionare tus inconvenientes, estamos para servirte

correo:arnoldgm@gmail.com
Cel:+57 3118935645
Bogotá,Colombia

Buenos sitios para matar tiempo




Es un sitio web que se encarga de recopilar imagenes, notas, videos, y otros sitios de la Red, que no sirven para nada o no merecen ser destacados por curiosos o chistosos.
STUMBLEUPON












Es un 'joda' total este sitio como diría el Bananero, personaje central de este sitio lleno de videos de parodias musicales y cinematograficas, asi como de animaciones de alto contenino sexual.




El Bananero (+18)

'Morro', el antivirus gratuito de Microsoft



Un ratón de la compañía informática.
Lo lanzará en la segunda mitad de 2009.
El 30 de junio dejará de vender su servicio de protección 'OneCare'.
Será compatible con Windows XP, Windows Vista y Windows 7.
Minuteca todo sobre: Microsoft
Microsoft anunció este miércoles en un comunicado que, a partir de la segunda mitad de 2009, aproximadamente, lanzará un antivirus gratuito para proteger a los usuarios frente a virus, spyware, rootkits, troyanos y otras amenazas.

El programa, que se llamará 'Morro' en castellano, será compatible con Windows XP, Windows Vista y Windows 7, los sistemas operativos más usados del mundo.

Protegeremos a más consumidores con la solución gratuita

Asimismo, el gigante informático ha anunciado que el 30 de junio del próximo año dejará de vender su servicio de protección informática, 'Windows Live OneCare', que fue lanzado en mayo del 2006 y que, sin embargo, no tiene ni el 2% del mercado de seguridad.

En su comunicado, Microsoft afirma que “el número de personas que no tienen antivirus o no lo mantienen actualizado supera el 50% en los mercados desarrollados y es peor en los mercados emergentes”.

En este sentido, la compañía afirma que dejarán de vender 'OneCare' porque protegerán "a más consumidores con la solución gratuita”. Por otra parte, ha afirmado que los que quieran más características que las que ofrezca 'Morro' tendrán a su disposición alternativas de terceros.

Los analistas señalan que Microsoft intentará con esta jugada acabar con la aventajada posición de dos expertos en el campo de la seguridad que dominan sin preocupación el sector: McAfee y Symantec.

Lively by Google no más ..




Que Google es una compañía que suele hacer las cosas muy bien es algo que seguramente poca gente podría llegar a negar, pero como empresa también puede tener errores. Y eso es lo que parece que le ha pasado con Lively, porque después de unos escasos cuatro meses Google ha decidido acabar con este servicio.

En el momento del lanzamiento de Lively mi compañero Alexliam ya se aventuró a preguntar si a Google se le había pasado el arroz o llegaba a tiempo, y como se puede ver, llegó tarde. Con esta noticia (y la poca repercusión de Orkut) podemos llegar a la conclusión de que a Google de momento, no se le acaban de dar bien las redes sociales.

Es desde el blog oficial de Google donde se anunció a los usuarios de Lively que a partir del 31 de Diciembre de este año se apagarán los servidores de este servicio. En este mismo comunicado se dice también que la decisión ha sido dura y que se hace para enfocar sus máximos recursos a otros proyectos más beneficiosos, como podrían ser las búsquedas o los anuncios publicitarios.

Personalmente creo que el servicio no ha funcionado como ellos esperaban y como se dice popularmente: “Una retirada a tiempo es una victoria”. Desde el mismo blog se anima a todos los usuarios que vayan haciendo videos y capturas de sus habitaciones (rooms) para conservar un recuerdo.


Vía | Blog Oficial de Google
En VidaExtra | Google dice adios a Lively
Sitio Oficial | Lively

MiniTube videos en tu lista de reproducción




Si montamos una fiesta en casa lo más normal es que pongamos música para alegrar el ambiente. Lo ideal sería, además, que la música fuera acompañada del correspondiente vídeo y, si tenemos un proyector, ponerlo todo a gran tamaño. Existen diversas herramientas para crear listas de reproducción, como Mixtube, pero, ¿qué pasa si ya tenemos la lista?

MiniTube es un plugin para Winamp que nos busca en Youtube el vídeo correspondiente a cada una de las canciones que tengamos en la lista de reproducción, convirtiéndola de una lista de música a una lista de vídeos.
Aunque dispone de una opción para sincronizar la imagen de los vídeos con la música en local, lo más práctico será indicarle que reproduzca el sonido de los vídeos, así todo estará sincronizado, a pesar de que podemos perder algo de calidad.

Como opciones adicionales nos ofrece la posibilidad de escoger entre la versión en alta calidad o en calidad normal, mostrar los vídeos en pantalla completa y saltarse las canciones para las que no se encuentre ningún vídeo.

El pluginMiniTube es gratuito y, evidentemente, requiere de Winamp para funcionar.


Via | http://www.ghacks.net

20 nov 2008

Documentos a distancia




¿Quién iba a decirnos, años atrás, que gracias a Internet, podíamos desarrollar los contenidos de un mismo documento de texto de manera colaborativa y a distancia? Pues eso es básicamente lo que nos permite EtherPad, una nueva herramienta que, sin necesidad de registro, podemos redactar un mismo documento entre varios usuarios a distancia, pudiendo visualizar las modificaciones en tiempo real.

Para ello basta con que pulsemos el botón “New Pad”, lo que nos llevará a nuestro nuevo espacio de trabajo. Este espacio de trabajo dispondrá de su propia URL, con lo que ya corresponde a nosotros compartir dicha URL por cualquier medio propio o mediante el envío de las invitaciones por correo electrónico.
Conforme se vayan incorporando el resto de usuarios, nosotros podremos ir viéndolos a través del primer módulo que tenemos en la columna de la derecha, desde donde cualquiera de nosotros podemos cambiar nuestro propio nombre y asignándonos un color identificativo. Pero la columna de la derecha también dispone de un sencillo chat, de un historial de revisiones, que podemos guardar y restablecer en cualquier momento, de la activación/desactivación de una serie de opciones, y del envío del feedback para los desarrolladores de EtherPad.

Pero es la columna de la izquierda nuestro área de trabajo, donde en tiempo real y de manera colaborativa, podemos ir introduciendo, modificando o borrando líneas de textos, ya sea para redactar un documento o incluso el desarrollo de cualquier código javascript, siendo el resaltado de la sintaxis una de las opciones que podemos activar desde la columna de la derecha.

Y como siempre, iremos guardando cada revisión, pudiendo acceder a ellas en cualquier momento que queramos ir hacia atrás. Me da a mí que podemos utilizarlo para más funciones, como para hacer la lista de la compra entre todos, o cualquier cosa que a nosotros se nos ocurra.

Vía | MakeUseOf
Enlace | EtherPad

Sistemas operativos portatiles Opciones



Con la aparición y el éxito de las netbooks los sistemas operativos “portátiles” que entran en un pendrive de no más de 2GB empezaron a aparecer masivamente (anteriormente existían pero no con tanto furor).

Algunos ya tienen un éxito bastante considerable porque las distribuciones originales en las que están basados ya son mundialmente conocidos (como es el caso, por ejemplo, de Xubuntu).

Este post lo encontré en Lifehacker y, como me pareció súper interesante y muchísimas personas en la red no leen inglés (y las que sí prefieren hacerlo en su idioma) decidí traducirlo para que los lectores de ALT1040 puedan disfrutarlo y, si les parece, llegar a probar alguno de estos OS completamente gratuitos y que pueden usar en cualquier ordenador con sólo tener encima su datatraveler.

Damn Small Linux 4.4.6

Este pequeño es conocido por ser increíblemente liviano y eficiente. Tiene una versión vieja del kernel de Linux que será genial si tienes un ordenador con hardware un poco desactualizado pero no tanto si utilizas uno de última generación.

Requerimientos mínimos de sistema: Procesador Intel 486 con 24MB de RAM (¿todavía existen esas computadoras?)
Peso del OS: 50MB
Booteo: 23.1 segundos
Características: Firefox, Dillo y muchísimas aplicaciones a las que podrás acceder con un solo click (al presionar el botón derecho del mouse se abrirá un menú con todas ellas).
¿Qué necesita mejoras?: La detección de hardware es bastante pobre y para hacer que todo funcione como es debido te puede costar un poco. Los menúes pueden ser un poco complicados de navegar.
¿A quiénes les gustará?: A todos aquellos que tengan viejo hardware y que se sientan cómodos con las terminales y líneas de comando.



http://www.damnsmalllinux.org/










Puppy Linux 4.1

Este es un sistema realmente liviano que pero si tienes más de 25MB de RAM te permitirá correrlo desde ahí por lo que podrás seguir trabajando perfectamente si sacas tu pendrive.

Requerimientos mínimos de sistema: Pentium 166MMX con 128MB RAM.
Peso del OS: 94MB
Booteo: 32 segundos después de la configuración inicial que tarda un poco más.
Características: Wizard que permitirá a –casi- cualquiera estar online en cuestión de minutos, soporta sistemas de audio propietarios y permite grabar discos Blu-ray en el primer booteo. Todas las herramientas necesarias para navegar correctamente y trabajar sin problemas.
¿Qué necesita mejoras?: En el primer booteo, sin la configuración adecuada, muchos formatos de videos pueden no reproducir correctamente. Los menúes son también complicados.
¿A quiénes les gustará?: A todos aquellos que quieran dedicar un pendrive a trabajar y tener un escritorio persistente.



http://www.puppylinux.org/











Xubuntu 8.04

Este es básicamente un sistema operativo basado en Ubuntu pero para correr el entorno gráfico Xfce.

Requerimientos mínimos de sistema: Procesador Pentium con 128MB de RAM para la versión live (192MB para instalarlo).
Peso del OS: 544MB
Booteo: 48.4 segundos
Características: Todas las aplicaciones que vienen por default en Ubuntu (que son todas las necesarias). Puedes cambiar entre Gnome y KDE cuando quieras. Y lo puedes instalar a través de Windows sin ningún tipo de problema a través de Wubi. La configuración de WiFi es realmente simple y soporta el manejo de archivos en sistema NTFS.
¿Qué necesita mejoras?: Los sistemas con poca RAM tendrán un sistema lento a la hora de abrir muchas aplicaciones al mismo tiempo y no permite guardar los cambios (osea que cada vez que reinicies perderás tus datos). Sólo lo usaría si TODOS mis datos estuvieran en la nube.
¿A quiénes les gustará?: Todos los que hayan probado Ubuntu y les haya gustado se enamorarán.



http://www.xubuntu.org/











Fedora 9 Live

Este es, lógicamente, el sistema live de Fedora Project lo que te permitirá tener uno de las distribuciones más famosas al alcance de tu USB.

Requerimientos mínimos de sistema: Pentium II (400MHz) con 256MB de RAM.
Peso del OS: 725MB
Booteo: 45.5 segundos
Características: Soporta hardware de PowerPC. Tiene un sistema llamado “persistent overlay” que es muy potente a la hora de almacenar archivos.
¿Qué necesita mejoras?: No tiene capacidad de leer sistemas de archivos NTFS y sistemas propietarios de archivos media. Algunas veces se cuelga cuando tratas de entrar a las aplicaciones del sistema.
¿A quiénes les gustará?: Todos los que tengan suficiente poder en la computadora, un pendrive con el suficiente espacio y un Gnome actualizado.

Probé durante un tiempo Xubuntu (lo tuve instalado y por eso lo terminé usando en otros ordenadores a través del USB) y me pareció genial. Sobre todo porque cada vez que me conectaba a una computadora diferente no tenía absolutamente ningún problema a la hora de poder conectarme a internet (que en muchos casos es realmente problemático). Además tenía todas las herramientas tanto para navegar como para hacer mis tareas de trabaja básicas (y no tan básicas también).



http://fedoraproject.org/



Fuente:
http://lifehacker.com/5069054/battle-of-the-thumb-drive-linux-systems

Metodos Genericos C#


Los métodos genéricos son interesantes herramientas que están con nosotros desde los tiempos del .NET Framework 2.0 y pueden resultarnos muy útiles de cara a la construcción de frameworks o librerías reutilizables.

Podríamos considerar que un método genérico es a un método tradicional lo que una clase genérica a una tradicional; por tanto, se trata de un mecanismo de definición de métodos con tipos parametrizados, que nos ofrece la potencia del tipado fuerte en sus parámetros y devoluciones aun sin conocer los tipos concretos que utilizaremos al invocarlos.

Vamos a profundizar en el tema desarrollando un ejemplo, a través del cual podremos comprender por qué los métodos genéricos pueden sernos muy útiles para solucionar determinado tipo de problemas, y describiremos ciertos aspectos, como las restricciones o la inferencia, que nos ayudarán a sacarles mucho jugo.

Escenario de partida

Como sabemos, los métodos tradicionales trabajan con parámetros y retornos fuertemente tipados, es decir, en todo momento conocemos los tipos concretos de los argumentos que recibimos y de los valores que devolvemos. Por ejemplo, en el siguiente código, vemos que el método Maximo, cuya misión es obvia, recibe dos valores integer y retorna un valor del mismo tipo:
public int Maximo(int uno, int otro)
{
if (uno > otro) return uno;
return otro;
}

Hasta ahí, todo correcto. Sin embargo, está claro que retornar el máximo de dos valores es una operación que podría ser aplicada a más tipos, prácticamente a todos los que pudieran ser comparados. Si quisiéramos generalizar este método y hacerlo accesible para otros tipos, se nos podrían ocurrir al menos dos formas de hacerlo.

La primera sería realizar un buen puñado de sobrecargas del método para intentar cubrir todos los casos que se nos puedan dar:
public int Maximo(int uno, int otro) { ... }
public long Maximo(long uno, long otro) { ... }
public string Maximo(string uno, string otro) { ... }
public float Maximo(float uno, float otro) { ... }
// Hasta que te aburras...

Obviamente, sería un trabajo demasiado duro para nosotros, desarrolladores perezosos como somos. Además, según Murphy, por más sobrecargas que creáramos seguro que siempre nos faltaría al menos una: justo la que vamos a necesitar ;-).

Otra posibilidad sería intentar generalizar utilizando las propiedades de la herencia. Es decir, si asumimos que tanto los valores de entrada del método como su retorno son del tipo base object, aparentemente tendríamos el tema resuelto. Lamentablemente, al finalizar nuestra implementación nos daríamos cuenta de que no es posible hacer comparaciones entre dos object's, por lo que, o bien incluimos en el cuerpo del método código para comprobar que ambos sean comparables (consultando si implementan IComparable), o bien elevamos el listón de entrada a nuestro método, así:
public object Maximo(IComparable uno, object otro)
{
if (uno.CompareTo(otro) > 0) return uno;
return otro;
}

Pero efectivamente, como ya habréis notado, esto tampoco sería una solución válida para nuestro caso. En primer lugar, el hecho de que ambos parámetros sean object o IComparable no asegura en ningún momento que sean del mismo tipo, por lo que podría invocar el método enviándole, por ejemplo, un string y un int, lo que provocaría un error en tiempo de ejecución. Y aunque es cierto que podríamos incluir código que comprobara que ambos tipos son compatibles, ¿no tendríais la sensación de estar llevando a tiempo de ejecución problemática de tipado que bien podría solucionarse en compilación?
El método genérico

Fijaos que lo que andamos buscando es simplemente alguna forma de representar en el código una idea conceptualmente tan sencilla como: "mi método va a recibir dos objetos de un tipo cualquiera T, que implemente IComparable, y va a retornar el que sea mayor de ellos". En este momento es cuando los métodos genéricos acuden en nuestro auxilio, permitiendo definir ese concepto como sigue:
public T Maximo(T uno, T otro) where T: IComparable
{
if (uno.CompareTo(otro) > 0) return uno;
return otro;
}

En el código anterior, podemos distinguir el parámetro genérico T encerrado entre ángulos "<" y ">", justo después del nombre del método y antes de comenzar a describir los parámetros. Es la forma de indicar que Maximo es genérico y operará sobre un tipo cualquiera al que llamaremos T; lo de usar esta letra es pura convención, podríamos llamarlo de cualquier forma (por ejemplo MiTipo Maximo(MiTipo uno, MiTipo otro)), aunque ceñirse a las convenciones de codificación es normalmente una buena idea.

A continuación, podemos observar que los dos parámetros de entrada son del tipo T, así como el retorno de la función. Si no lo ves claro, sustituye mentalmente la letra T por int (por ejemplo) y seguro que mejora la cosa.

Lógicamente, estos métodos pueden presentar un número indeterminado de parámetros genéricos, como en el siguiente ejemplo:
public TResult MiMetodo(T1 param1, T2 param2)
{
// ... cuerpo del método
}

Restricciones en parámetros genéricos

Retomemos un momento el código de nuestro método genérico Maximo:
public T Maximo(T uno, T otro) where T: IComparable
{
if (uno.CompareTo(otro) > 0) return uno;
return otro;
}

Vamos a centrarnos ahora en la porción final de la firma del método anterior, donde encontramos el código where T: IComparable. Se trata de una restricción mediante la cual estamos indicando al compilador que el tipo T podrá ser cualquiera, siempre que implementente el interfaz IComparable, lo que nos permitirá realizar la comparación.

Existen varios tipos de restricciones que podemos utilizar para limitar los tipos permitidos para nuestros métodos parametrizables:
where T: struct, indica que el argumento debe ser un tipo valor.
where T: class, indica que T debe ser un tipo referencia.
where T: new(), fuerza a que el tipo T disponga de un constructor público sin parámetros; es útil cuando desde dentro del método se pretende instanciar un objeto del mismo.
where T: nombredeclase, indica que el argumento debe heredar o ser de dicho tipo.
where T: nombredeinterfaz, el argumento deberá implementar el interfaz indicado.
where T1: T2, indica que el argumento T1 debe ser igual o heredar del tipo, también argumento del método, T2.
Un último detalle relativo a esto: a un mismo parámetro se pueden aplicar varias restricciones, en cuyo caso se separarán por comas, como aparece en el siguiente ejemplo:
public TResult MiMetodo(T1 param1, T2 param2)
where TResult: IEnumerable
where T1: new(), IComparable
where T2: IComparable, ICloneable
{
// ... cuerpo del método
}

En cualquier caso, las restricciones no son obligatorias. De hecho, sólo debemos utilizarlas cuando necesitemos restringir los tipos permitidos como parámetros genéricos, como en el ejemplo del método Maximo, donde es la única forma que tenemos de asegurarnos que las instancias que nos lleguen en los parámetros puedan ser comparables.
Uso de métodos genéricos

A estas alturas ya sabemos, más o menos, cómo se define un método genérico, pero nos falta aún conocer cómo podemos consumirlos, es decir, invocarlos desde nuestras aplicaciones. Aunque puede intuirse, la llamada a los métodos genéricos debe incluir tanto la tradicional lista de parámetros del método como los tipos que lo concretan. Vemos unos ejemplos:
string mazinger = Maximo("Mazinger", "Afrodita");
int i99 = Maximo(2, 99);

Una interesantísima característica de la invocación de estos métodos es la capacidad del compilador para inferir, en muchos casos, los tipos que debe utilizar como parámetros genéricos, evitándonos tener que indicarlos de forma expresa. El siguiente código, totalmente equivalente al anterior, aprovecha esta característica:
string mazinger = Maximo("Mazinger", "Afrodita");
int i99 = Maximo(2, 99);

El compilador deduce el tipo del método genérico a partir de los que estamos utilizando en la lista de parámetros. Por ejemplo, en el primer caso, dado que los dos parámetros son string, puede llegar a la conclusión de que el método tiene una signatura equivalente a string Maximo(string, string), que coincide con la definición del genérico.

Otro ejemplo de método genérico

Veamos un ejemplo un poco más complejo. El método CreaLista, aplicable a cualquier clase, retorna una lista genérica (List) del tipo parametrizado del método, que rellena inicialmente con los argumentos (variables) que se le suministra:
public List CreaLista(params T[] pars)
{
List list = new List();
foreach (T elem in pars)
{
list.Add(elem);
}
return list;
}

// ...
// Uso:
List nums = CreaLista(1, 2, 3, 4, 6, 7);
List noms = CreaLista("Pepe", "Juan", "Luis");

Otros ejemplos de uso, ahora beneficiándonos de la inferencia de tipos:
List nums = CreaLista(1, 2, 3, 4, 6, 7);
List noms = CreaLista("Pepe", "Juan", "Luis");

// Incluso con tipos anónimos de C# 3.0:
var p = CreaLista(
new { X = 1, Y = 2 },
new { X = 3, Y = 4 }
);
Console.WriteLine(p[1].Y); // Pinta "4"

En resumen, se trata de una característica de la plataforma .NET, reflejada en lenguajes como C# y VB.Net, que está siendo ampliamiente utilizada en las últimas incorporaciones al framework, y a la que hay que habituarse para poder trabajar eficientemente con ellas.

Publicado en: VariableNotFound

Gmail temas para tu correo + personalizado




Los desarrolladores de Google demuestran ser incansables lanzando otra nueva característica para Gmail: temas personalizados. No solo nos dejarán elegir los colores de nuestra bandeja de entrada, sino que tendremos más de 30 temas diferentes con imágenes y estilos muy distintos al actual. Entre ellos, algunos son dinámicos, por ejemplo hay uno que cambia de fondo y color dependiendo del tiempo que haga en tu ciudad; otro está tematizado con naturaleza y se modifica a lo largo del tiempo; también podremos disponer de temas con “simpáticos muñecos” e incluso de un tema con el estilo de Google Chrome. Sí, ya podías probar alguno de ellos con extensiones y estilos de usuario, pero ahora están directamente integrados.

Si todavía no puedes verlo en la pestaña Temas en las Opciones, no te preocupes, ya que van a tardar un par de días en activarlo para todas las cuentas. Sin duda llevamos un año movido para Gmail, ya que constantemente ha ido mejorando y añadiendo nuevas funcionalidades. Y aunque la competencia está mejorando poco a poco, no nos queda otra que rendirnos a Gmail y aceptar que está en una liga diferente, es imposible seguir su ritmo.

Lamentablemente no me han activado todavía esta característica, así que no puedo decir con seguridad cómo es su experiencia, pero pinta genial. Si tampoco has sido uno de los afortunados, a continuación puedes probar un aperitivo, una vista previa de 15 temas (dale a Leer más):

Para profundizar mas del tema

Blog Oficial de Gmail