
En VB clásico había dos funciones muy prácticas para muchos cometidos que permitían obtener el código ASCII de un caracter y viceversa, a partir de un código ASCII sacar el caracter que le correspondía. estas funciones se llamaban Asc y Chr respectivamente.
En C# no existen como tales, pero son muy fáciles de simular igualmente, así:
///Hace falta poner using System.Text al principio para estapublic static int Asc(string s) { return Encoding.ASCII.GetBytes(s)[0]; }
public static char Chr(int c) { return Convert.ToChar(c); }
Es algo muy sencillo pero que puede resultar útil a los programadores principiantes de C# que viene de VB6.
Tags: Programación
274e045f-78c0-434c-8c47-237fd1d4eee6|1|5.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

Otro detalle sencillo pero interesante, del estilo del que comentaba ayer, que me ha surgido últimamente.
Si codificas desde ASP una cadena como URL (es decir, sustituyes los caracteres no ASCII por su representación en forma '%CC', siendo CC el código que lo representa) obtienes cadenas que puedes pasar por GET a un navegador sin problemas de mala codificación de caracteres. Esta es la teoría. En la práctica depende.
El otro día estaba llamando desde ASP 3.0 clásico a una página escrita en ASP.NET 1.1 a la que le paaba desde ASP3 un parámetro con un texto mediante GET. Al recoger el valor del parámetro en la página ASPX los caracteres especiales, cómo tildes o 'eñes' desaparecían o estaban cambiados y eso que antes de hacer la llamada a la ASPX codificaba con Server.URLEncode la cadena que estaba pasando. Era raro, porque en ASPX lo único que hacía era leer el valor del primer parámetro del Querystring.
Usando un decompilador vi que lo que ocurría es que ASPX decodifica los parámet...
[Más]
Tags: Programación
2d4dc912-5cf9-45b3-a39f-0f764bbdb90a|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

Estos días he tenido quye trabajar un poco con cadenas que representaban números hexadecimales y, la verdad, en C# la cosa no es tan intuitiva cómo solía ser con VB y sucedáneos (VBA, VBScript...). De todos modos no es nada complicado tampoco, sólo algo menos intuitivo.
Para facilitar las cosas he escrito un par de funciones sencillitas que permiten transformar una cadena representando un número hexadecimal en número en base decimal (en un entero, claro), y viceversa: cómo expresar un decimal en formato hexadecimal de texto.
public static long HexToInt(string sHexVal) { return Int64.Parse(sHexVal, NumberStyles.HexNumber); }
public static string IntToHex(long num) { return String.Format("{0:x}", num).ToUpper(); }
Son sencillas pero a más de uno le evitarán romperse el coco unos minutos buscando cómo conseguirlo ;-)
Tags: Programación
a3c55750-890e-4521-807c-65608c6a45ec|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

Microsoft ha anunciado que ha bautizado la próxima versión de su sistema operativo, hasta ahora conocida con el nombre de Longhorn, como Windows Vista. ¿¿¿No os parece un nombre horrible????El lanzamiento de la versión definitiva se producirá en la segunda mitad de 2006, cinco años después del XP, lo que supone el mayor lapso entre lanzamientos del sistema operativo.
Windows Vista (para mi seguirá siendo Longhorn) será la versión doméstica. Existirá una versión para servidores que saldrá al mercado en principio en 2007 y no llevará el nombre de Vista sino que seguirá la convención de Windows Server (o sea que será Windows Server 2007 o así).
¡Estoy espeluznado!. Aparte de por el nombre horrible, porque aún lo acaban de anunciar hace unas horas y en Wikipedia ya tienen un dossier actualizado sobre el sistema. Es increible. De hecho todo ese enorme texto lo han escrito entre ayer y hoy. Deebe de ser peña pagada por Microsoft, digo yo ;-)
En http://www.vistawindows.us/ se puede ver u...
[Más]
Tags: Mundo TIC
0e143c74-86bb-4a61-a1dc-7e4d1bdc742e|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

Con la plataforma .NET 2.0 es muy fácil obtener una lista con los servidores SQL Server que están disponibles en nuestra red. Antes era muy complicado porque había que recurrir COM Interop y a ODBC para poder hacer uso de las poco conocidas funciones disponibles para ello (vea por ejemplo este artículo en CodeProject).
Ahora es muy fácil, pues basta con usar la nueva clase SqlDataSourceEnumerator. Este enumerador dispone de un método llamado GetDataSources que devuelve una tabla con los datos de las instancias de SQL Server detectadas en la red local. La tabla dispone de cuatro campos (o columnas) que son los siguientes:
ServerName: el nombre del servidor SQL
InstanceName: el nombre de la instancia detectada.
Version: el número de versión de la instancia detectada.
IsClustered: indica si el servidor detectado forma parte de algún cluster.
Un ejemplo de uso sería el siguiente:
SqlDataSourceEnumerator Descubridor_de_sql = SqlDataSourceEnumerator.Instance; ...
[Más]
Tags: Programación
628b9258-2d0d-488d-a860-acea9d67129c|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

Cuando creas un servicio Web con ASP.NET y te conectas a su .ASMX con un navegador te aparece una lista de métodos dentro de una bonita página generada automáticamente al vuelo por ASP.NET para la ocasión.
Si estamos accediendo en local, al pulsar sobre cualquiera de estos métodos si éste tiene parámetros simples (cadenas, números y cosas fáciles de meter en un formulario Web) se nos permite probar directamente el servicio sin necesidad de un programa cliente, lo cual es muy útil para depurarlos y probarlos en una instalación o incluso en medio del desarrollo.
En ASP.NET 1.0 se podía hacer esto tanto en local como en remoto pero en la versión 1.1 cambiaron el comportamiento y por seguridad sólo se puede probar en local, obteniendo un mensaje si lo hacemos en remoto.
Sin embargo puede ser muy útil probarlo en remoto si detectamos problemas desde un cliente. Podemos habilitarlo con tan sólo añadir estas líneas al archivo web.config del servicio Web en el servidor:
<system.web>...
[Más]
Tags: Programación
0003ab04-e807-413b-b561-02d42db08b09|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

Esto lo he sacado de la lista de correo de la Universidad (no voy a decir de cual), y me ha parecido buenísimo (cosa rara viniendo de esa lista, así que doble mérito). No sé de donde ha salido pero lo pongo aquí para referencia y comentarios :-)
El test del disparate
Por David Bravo
Aprende a interpretar correctamente el Código Penal siguiendo la lógica aplicada por la industria y que considera que la reproducción, distribución y comunicación pública de obras intelectuales que te den cualquier beneficio o utilidad es delictiva. Para ello practica con este sencillo test...
Siguiendo la interpretación que hace la industria del artículo 270 del Código Penal, elija cuál es la acción considerada de mayor gravedad:
PREGUNTA:
(a) Juan fotocopia una página de un libro.
(b) Juan le da un par de puñetazos a su amigo por recomendarle ir a ver la película “Los Ángeles de Charlie”.
RES...
[Más]
Tags: Off-Topic
be53e05a-ce3a-452d-a766-da88b059e00c|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

En un anterior post, demostré con un sencillo ejemplo el uso del nuevo espacio de nombres de .NET 2.0 llamado NetworkInformation creando un ejemplo de utilidad para hacer Ping síncrono a otras máquinas de manera sencilla.
He seguido jugueteando con él un rato y en esta ocasión voy a mostrar cómo usarlo para verificar si existe o no conectividad en alguna de las tarjetas de red disponibles en el equipo. Se trata de una tarea extremadamente sencilla ya que basta con escribir:
bool disponible = NetworkInterface.GetIsNetworkAvailable();
¡Listo! Con que cualquier adaptador de red disponga de conectividad devolverá true.
Lo interesante sin embargo es poder detectar de inmediato los cambios de conectividad cuando se produzcan, de modo que en una comunicación podamos responder a la caida de la red así como a su restablecimiento.
Una primera forma de hacerlo "a lo bestia" sería usar un temporizador para que compruebe la información anterior cada segundo o así. Esto, aparte de ser inefic...
[Más]
Tags: Programación
45aa6f3e-5b84-4dbd-b8c8-e9981da54129|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

Leyendo el blog de Curt Monash en ComputerWorld me he encontrado con una curiosidad que, a mi por lo menos, me ha sorprendido mucho... y es que al parecer la primera versión de VB la creó una conocida empresa de servicios profesionales de la India, y no Microsoft.
Puedes leer el texto completo en Microsoft = biggest R&D outsourcer of all..
Tags: Mundo TIC, Programación
8a8778a1-0aa8-4459-9ca7-af0ce2ca5d9a|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

Cuando definimos un campo (normalmente una clave primaria) de una tabla de base de datos como Autonumérico lo que estamos indicando es que, el propio gestor dedatos, al introducir un nuevo registro en la tabla generará un valor consecutivo para la secuencia, aislándonos del problema que representaría el tener que hacerlo nosotros mismos (transacciones, bloqueos, etc...).
Una vez insertado el registro en la mayor parte de las ocasiones es necesario averiguar qué valor se ha generado. Los SGBD más importantes del mercado ofrecen una forma sencilla de obtener este dato, aislándonos del hecho que desde que lo hayamos generado hasta que lo consultemos (dentro de la misma conexión) éste ya puede haber aumentado (en una inserción paralela de otra conexión).
La forma de obtener esta información es la siguiente:
· SQL Server 2000 o superior:
SELECT SCOPE_IDENTITY()
en SQL 7.0 y anteriores era SELECT IDENTITY() que aún funciona, pero que devuelve el último autonumérico generado en cualqui...
[Más]
Tags: Programación
816ceff0-93f7-47bf-81e0-1a6271283fcb|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

He de confesarlo, no lo sabía, pero es que aunque uso mucho el teclado miro poco para la pantalla y se me había pasado este detalle.
Sin embargo hoy, leyende un artículo de Coding4fun, lo comentaba el autor y me he fijado.
En los entornos multi-documento co pestañas para pasar de unos a otros se usa CTRL+TAB. Yo lo hago continuamente. En Visual Studio 2005 han ido un paso más allá y si pulsas esa combinación aparece un diálogo como este:
Mantén CTRL pulsado y con TAB puedes ir variando la posición dentro de la lista de archivos en la que estás. Con las teclas del cursor podrás moverte de una lista a otra. Puedes moverte por los archivos o por las herramientas que tengas abiertas, obteniendo información en la parte inferior.
En la versión en castellano de la Beta 2 el texto es demasiado largo y se solapa (míralo en la figura). Ya lo he notificado y supongo que lo solucionarán.
En fin, una chorradilla pero que denota calidad y me ha parecido chulísima.
Tags: Programación
66659f45-5d5b-4426-90ae-e232a1974d41|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

.NET 2.0 dispone de un nuevo espacio de nombres pensado específicamente para crear aplicaciones de diagnóstico de redes. Se trata de System.Net.NetworkInformation.
En él encontramos clases para obtener información sobre las interfaces de red de un equipo, información trasegada por la red, recibir notificaciones (por ejemplo de que se ha modificado la dirección de una tarjeta), etc... Es muy interesante echarle un vistazo.
A mi me ha gustado, para hacer un primer ejemplo, la clase Ping, que permite (claro está) hacer un "ping" ICMP a cualquier nodo de una red. Permite hacerlo de forma síncrona o asíncrona. En la versión anterior de la plataforma había que hacerlo "a pelo" y era bastante complicado. Ahora es sencillísimo.
Por ejemplo, el siguiente código realiza cuatro pings a Google y devuelve los resultados de cada petición.
using System.Net;using System.Net.NetworkInformation;
IPAddress ip = IPAddress.Parse("66.249.87.104"); //GooglePing ping = new Ping();for (int i = 0; i < ...
[Más]
Tags: Programación
b32b2b54-9237-4189-a476-6ca3d55a28a1|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04

En mi anterior post comentaba que los menús de aplicaciones escritas para Smartphone con la .NET Compact Framework tienen una serie de limitaciones entre las cuales se incluye la de que es "imposible" ocultarlos.
Tal y como mencioné entonces, Microsoft recomienda deshabilitarlos y quitarles el texto. En este post precedente hice un ejemplo con una clase nueva para menús ocultables que seguía la recomendación de Microsoft. El resultado es bastante feo como se veía en las figuras y, la verdad, a mi no me convence en absoluto.
Así, me planteé como tarea de entretenimiento para cuando tuviese un rato libre el crear un nuevo tipo de menú que sea ocultable de verdad.
La primera idea que tuve fue recurrir a la API del sistema con Interop y utilizar algunas funciones nativas de manejo de menús pero se convierte en un lío demasiado gordo porque la clase MenuItem ni siquiera ofrece forma directa de averiguar el manejador del menú que gestiona.
La idea que he seguido al final es mucho más se...
[Más]
Tags: Programación
d4f9af89-3044-4a87-a389-ff0c46b74b3a|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04