JASoft.org

Expresiones $ en ASP.NET 2.0

Expresiones $ en ASP.NET 2.0
Una de las nuevas características de ASP.NET 2.0 destinadas a reducir la cantidad de código de nuestros desarrollos son las expresiones de tipo $. Éstas nos permiten obtener directamente ciertos valores y funcionalidades desde dentro de la definición de la página, sin necesidad de escribir códigopara ello. Su sintaxis es análogo a la siguiente: <%$ Expresion:Accion %> El uso típico de este tipo de expresiones es el de obtener directamente valores desde el archivo de configuración (web.config) y asignarlas directamente a propiedades de controles de la interfaz de usuario. Por ejemplo: <asp:Label Runat="server"  Text="<%$ AppSettings:NombreEmpresa %>" muestra el valor asignado al parámetro "NombreEmpresa" dentro de la configuración de la aplicación en web.config (<AppSettings/>). También se pueden obtener valores de cadenas de conexión (ej: <%$ ConnectionStrings:MiConexion %>, ya que ahora hay una sección específica para ellas) o cosas que no ti... [Más]

Un añadido a mi post sobre estilos visuales de Windows XP

Un añadido a mi post sobre estilos visuales de Windows XP
Si sigues mi blog habitualmente puede que recuerdes un par de "post" que hice hace unos meses en los que explicaba la manera de habilitar los estilos visuales de Windows XP en las aplicaciones de Windows para conseguir un aspecto más moderno. La activación pasa ineludiblemente por el uso del método estático EnableVisualStyles de la clase Application combinado con la propiedad FlatStyle de los distintos controles. Aunque esto funciona de maravilla en Windows XP hay un problema cuando la misma apliación se intenta ejecutar en sistemas operativos más antiguos en los que no esté presente la biblioteca responsable del efecto (uxtheme.dll). En .NET 2.0 han tenido en cuenta esta particularidad y la aplicación se degrada de maravilla, pero en .NET 1.x las aplicaciones rompen, lo cual no es muy recomendable ¿verdad?. Bueno, la solución es bastante sencilla ya que basta con comprobar en que versión de Windows se ejecuta la aplicación antes de establecer la propiedad EnableVisualStyles, así: ... [Más]

Refactorización de código con Visual Studio 2005

Refactorización de código con Visual Studio 2005
Una de las cosas nuevas que ha incorporado el entorno de Visual Studio es la posibilidad de refactorizar nuestro código para hacerlo más legible, mejorar su encapsulación y reutilización, etc... El concepto es muy sencillo: se trata de escribir de nuevo un mismo código pero utilizando una estrategia diferente. Aunque no hayas oído la palabreja "Refactoring" en tu vida lo has hecho miles de veces seguro: desde cambiar el nombre de un método en TODO tu proyecto, hasta cambiar el ámbito de una variable para tener acceso a ella desde más sitios. Es muy sencillo refactorizar, sólo que hasta ahora en Visual Studio era una tarea tediosa y propensa a errores ya que normalmente utilizábamos la opción de buscar y reemplazar, cruzábamos los dedos para que no nos hubiésemos pasado de la raya sustituyendo y dábamos a F5 para comprobarlo viendo si todo compilaba de nuevo ;-) Las opciones añadidas a VS2005 no es que sean espectaculares pero son un buen comienzo y desde luego nos van a hacer la vi... [Más]

Códigos ASCII y caracteres en C#

Códigos ASCII y caracteres en C#
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.

Diferencias de codificación de URLs entre ASP y ASP.NET

Diferencias de codificación de URLs entre ASP y ASP.NET
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]

Trabajo con Hexadecimales

Trabajo con Hexadecimales
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 ;-)

Cómo obtener una lista de servidores SQL disponibles

Cómo obtener una lista de servidores SQL disponibles
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]

Probar servicios web desde equipos remotos en ASP.NET 1.1 o superior

Probar servicios web desde equipos remotos en ASP.NET 1.1 o superior
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]

Cómo detectar la existencia de conectividad de red (entre otras cosas)

Cómo detectar la existencia de conectividad de red (entre otras cosas)
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]

Visual Basic 1.0 se desarrolló en la India

Visual Basic 1.0 se desarrolló en la India
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..

Este soy yo y este es mi blog técnico, dedicado al software y a la programación.

¡Sígueme en Twitter!

Mis otros blogs

- JM Alarcón @ campusMVP.es
Contenido técnico en español orientado a desarrolladores
- JMAlarcon.es
Blog personal no técnico: sociedad, innovación, empresa...

Krasis

- campusMVP.es:
Los mejores cursos online de programación en español

- SELF LMS:
La plataforma de elearning más potente del mercado.

Histórico