Monthly Archives: January 2010

Aplicar formatos condicionales a numeros con string.Format

.NET

Esto es algo que descubrí hoy referente a formateo de números en .NET y que por más simple que parezca, tiene mucha utilidad, ya que puede reducir un bloque de 3 o 6 líneas de código, a una sola línea.

En lugar de necesitar varios if’s para evaluar el valor del número que vamos a formatear y poder determinar el formato que se va a aplicar (desplegar el número entre paréntesis si es negativo, desplegar la palabra Cero si el número es 0, etc), se puede hacer todo el una sola línea, ya que el metodo ToString() permite formatos condicionales de 2 o 3 condiciones…es decir, podemos hacer esto:


const string formato = "000;(##);Cero";

 Console.WriteLine(7.ToString(formato)); // va a desplegar "007"
 Console.WriteLine((-5).ToString(formato)); // va a desplegar "(5)"
 Console.WriteLine(0.ToString(formato)); // va a desplegar "Cero"

Formatos condicionales en .NET usando ToString()

Formatos condicionales en .NET usando ToString()

El formato entonces es:  “positivo;negativo;cero”.

También es posible especificar solo el formato positivo y negativo.

Espero les sirva.

Usar el operator ternario de C# con nullables

.NET

.NET

Todos los días se aprende algo…

Desde hace mucho tenemos disponible el operador ternario (o condicional) en C#, también conocido como el operador “?“.

El operador ternario sirve para regresar/usar uno de dos posibles valores, dependiendo de una condición boleana.

La estructura es:

condicion-boleana ? valor-si-se-cumple : valor-si-no-se-cumple

Es decir, permite reducir de esto:


int? myVar; //variable int nullable

if(string.IsNullOrEmpty(textbox1.Text))

{ myVar = null; }

else

{ myVar = Convert.ToInt32(textbox1.Text); }

a esto:


myVar =string.IsNullOrEmpty(textbox1.Text) ? null : Convert.ToInt32(textbox1.Text);

Y uno esperaría que el código del segundo bloque compile, pero no es así. En lugar de que funcione, el compilador nos marca el siguiente error:

Type of conditional expression cannot be determined because there is no implicit conversion between ‘<null>’ and ‘int’

Yo llevaba años usando el operador ternario y siempre me pareció ilógico que no se permitiera esto. Y probablemente fue más ilógico el hecho de nunca haber googleado como solucionar esto..ya que la solución es simple.


myVar =string.IsNullOrEmpty(textbox1.Text) ? (int?)null : Convert.ToInt32(textbox1.Text);

o


myVar =string.IsNullOrEmpty(textbox1.Text) ? null : (int?)Convert.ToInt32(textbox1.Text);

Simple…el compilador tenía razon. No hay una conversión implícita entre null e int, pero sí entre null y Nullable<int> (a.k.a. int?). Casteando cualquiera de los lados de la expresión, va a compilar sin problemas.

Espero les sirva.

God Mode (O Modo Dios) en Windows 7, Vista y Server 2008

El God Mode (o Modo Dios) en Windows 7, se logra simplemente agregando un nuevo folder en el Desktop y poniendole como nombre:

GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}

Una vez que hagamos eso, inmediatamente aparecera en el desktop un shortcut que se verá asi:

God Mode en Windows 7

God Mode en Windows 7

Al dar doble click sobre el ícono, abrirá una pantalla que nos da acceso a 278 configuraciones específicas de Windows 7, divididas en 46 categorías. El siguiente es solo un screenshot de algunas de las categorías y los settings que podemos alterar, desde un solo lugar:

Algunas configuraciones disponibles en el God Mode en Windows 7

Algunas configuraciones disponibles en el God Mode en Windows 7

Funciona en Windows 7, Windows Vista y Windows Server 2008, PERO, al parecer las ediciones de 64 bits de Vista y 2008 Server presentan problemas a la hora de agregar el shortcut, así que no es recomendable probarlos. El God Mode funciona bien en 32 bits para los 3 sistemas operativos y Windows 7 64 bits.

Definitivamente a mi me servirá la próxima vez que esté intentando ayudar a alguien a reconfigurar algo de su máquina, especialmente por telefono…..tener todos los settings en el mismo lugar evita el típico: “Entra a esta categoría, dime si ves este icono, etc..”.

Espero les sirva.

Los DNS de Google dan problemas al jugar en Xbox Live

Google

Google

Primer post del 2010.

Hace poco, Google hizo publico un servicio de DNS gratuito. Los DNS son los servidores que resuelven/transforman los nombres de dominio de internet como www.google.com, a una dirección IP (en formato 127.0.0.1, por ejemplo).

La mayoria de la gente no se preocupa por cuál DNS está usando, porque generalmente el proveedor de servicios de Internet determina unos servidores por default. Sin embargo, cada quién puede cambiarlos en la interfase de administración de su modem.

Con este servicio, Google tiene como objetivo ayudar a la gente a que su navegación por internet sea más rápida, asumiendo que sus servidores de DNS pueden realizar las resoluciones de nombre de dominio más rapido que la mayoría de los servidores DNS que existen.

Si quieren comprobarlo, existe una herramienta llamada namebench, que ayuda a determinar cuales servidores DNS son los más óptimos para nuestro uso.

Y después de todo este rollo, la razón por la que escribo esto es porque hace unas horas, modifiqué mi configuración para utilizar los servidores DNS de Google y empecé a tener problemas al estar jugando en Xbox Live.

Jugué unos 5 o 6 juegos de Halo 3 en Live, y durante cada juego perdí la conexión por unos 30 segundos, unas 2 o 3 veces. El juego se reestablece, pero con obvia desventaja. Incluso al final de un juego, la pantalla se quedó trabada con el clásico mensaje de “Connecting to new host..” como por 3 minutos y tuve que apagar el Xbox.

Seguiré haciendo experimentos y actualizaré este post, pero quería publicar esta información por si alguien más está teniendo problemas.

 Scroll to top