JASoft.org

El operador doble interrogación en C#

El operador doble interrogación en C#
Los tipos anulables en .NET 2.0 son una interesante característica a la que se le puede sacar bastante partido, como ya expliqué en su momento. Quiero comentar ahora una cosa que se me pasó entonces: el operador doble interrogante (??), el cual es además muy poco conocido. Dado que los tipos anulables pueden contener un valor o un nulo debemos realizar continuamente comprobaciones en el código para ver si tenemos nulos o no, algo así (ej.): int? num1 = 5; //En la realidad lo obtendríamos de una BD o algo asíint num2;if (num1 == null)   num2 = 0;else   num2 = num1; Lo cual es sencillo pero es un rollo de escribir si hay que hacerlo continuamente. Claro que podemos reducir el código usando el operador ? de toda la vida de C#: int? num1 = 5;int num2 = (num1==null)?0:num1; Es idéntico, más reducido, pero tampoco es mejore mucho la legibilidad ¿verdad? Bien, C# nos ofrece el operador ?? que hace exactamente lo mismo que lo anterior y tiene las virtudes de ser ... [Más]

Cambio del directorio de compilación temporal de ASP.NET

Cambio del directorio de compilación temporal de ASP.NET
He leído esto en algún sitio recientemente y me ha llamado mucho la atención porque no lo sabía. Resulta que es posible cambiar la carpeta en la que ASP.NET 2.0 compila las aplicaciones y genera todos sus ensamblados. Para ello basta con indicarlo en web.config dentro del nodo 'compilation' usando el atributo 'tempDirectory', así: <compilation tempDirectory="C:\Temporales"/> Muy sencillo. Igual te puede resultar útil en alguna ocasión.

Cómo usar la administración Web integrada en ASP.NET en aplicaciones de producción

Cómo usar la administración Web integrada en ASP.NET en aplicaciones de producción
Una cuestión muy celebrada de ASP.NET 2.0 es que no es necesario "currarse" desde cero toda la funcionalidad de autenticación, autorización, etc... ya que gracias a las nuevas API basadas en proveedores para Membership y Roles junto con los controles de Login (que incluyen interfaces de usuario para casi todo lo que necesitemos desde autentiación hasta creación de usuarios, etc..) incorporados a la versión 2.0 apenas será necesario escribir código nunca. El caso es que desde Visual Studio todo es muy fácil: basta con ir al menú "Sitio web·Administración de sitio Web" y nos aparece el flamante diálogo que vemos en la figura: (pulsa para ver en tamaño real) El caso es que con él configuramos todos los aspectos de nuestra aplicación relacionados con la seguridad: desde los proveedores que usaremos, pasando por los permisos de las carpetas y llegando a la definición de los primeros usuarios. Todo ello se guarda por defecto en una base de datos SQL Server creada para la ocasión y qu... [Más]

Cómo mezclar varios lenguajes de programación en una aplicación ASP.NET 2.0

Cómo mezclar varios lenguajes de programación en una aplicación ASP.NET 2.0
Una de las cosas más reseñadas de ASP.NET 2.0 es que es capaz de gestionar páginas ASPX creadas en diferentes lenguajes todas al mismo tiempo. Es decir, puedes tener una página o un control escritos en C# y mezclarlos con otros escritos en VB.NET o J# sin problema. Incluso puedes depurarlos todos juntos desde Visual Studio, saltando sin problemas de un lenguaje a otro. Ahora bien, desde mi punto de vista esto no es demasiado interesante. Es raro que reutilices una página de una aplicación a otra y si escribes una aplicación completa desde cero normalmente lo haces en el mismo lenguaje. Hombre, pensando en equipos de desarrollo donde varios programadores contribuyen al mismo proyecto y trabajan en lenguajes distintos es muy interesante, pero vamos... Normalmente lo que compartes entre aplicaciones son controles o bibliotecas de funciones, las cuales normalmente deberías compilar en sus propios ensamblados y listo. Ya no tendrías que mezclar lenguajes ahí. Otra posibilidad es que teng... [Más]

Una manera mejor de persistir el ViewState

Una manera mejor de persistir el ViewState
Siguiendo a mi post anterior, vamos a ver una técnica alternativa para conseguir la persistencia del ViewState en sesión. La anterior técnica, nativa de ASP.NET 2.0 adolecía de varios problemillas, los más importantes son: 1.- No eliminaba del todo el ViewState, sólo una parte del mismo. En formularios Web con muchos controles el tamaño del ViewState sigue siendo considerable, si bien se reduce bastante. 2.- Sólo funciona en ASP.NET 2.0, pero no en versiones anteriores. Voy a explicar a continuación una técnica alternativa que elimina estos problemas y tiene algunas ventajas a mayores. Para conseguir manejar a nuestro antojo el ViewState podemos sobrescribir dos métodos importantes de la página: SavePageStateToPersistenceMedium y LoadPageStateFromPersistenceMedium. Como se deduce de su propio nombre estos métodos se llaman automáticamente por la infraestructura de páginas A... [Más]

Cómo persisitir el ViewState en una variable de sesión en ASP.NET 2.0

Cómo persisitir el ViewState en una variable de sesión en ASP.NET 2.0
El ViewState de una página ASP.NET 2.0 es lo que permite la "magia" de los PostBack. Se trata de un campo oculto que se envía con el formulario que introduce ASP.NET en todas las páginas ASPX y contiene información sobre el estado de los controles de la misma. A partir de él se recupera dicho estado y parece que la página funciona como un formulario de escritorio tradicional. El caso es que si tenemos muchos controles este ViewState puede llegar a ocupar mucho y eso hace que cada PostBack al servidor sea muy lento y se empiece a notar demasiado. En casos un poco extremos podemos tratar de minimizar este trasiego de información entre cliente y servidor persistiendo el ViewState en otro lugar en lugar de en un campo oculto de la página. Para ello ASP.NET 2.0 ofrece "de serie" un objeto especial llamado SessionPageStatePersister que permite conseguir precisamente ese efecto y qeu el ViewState se conserve en la memoria del servidor. Para ello lo único que hay que hacer es sobreescribir ... [Más]

Problemas al descargar archivos desde IIS 6.0 con Internet Explorer

Problemas al descargar archivos desde IIS 6.0 con Internet Explorer
Este es un tema que me traía de cabeza durante varios días y que no lograba solucionar. Resulta que hemos colocado una aplicación Web en un servidor Windows 2003 de un cliente. En el directorio raíz de la aplicaicón había un par de archivos .exe que estaban ahí para ser descargados desde un enlace directo. Al intentar descargarlos desde Internet Explorer se quedaba el diálogo "flipado" mientras ponía "Obteniendo información del archivo...", y la descarga no comenzaba jamás. La configuración del servidor no tenía nada raro. Sólo lo habitual en un IIS, así que no encontraba explicación. Además ocurría en TODOS los IE y en todas sus versiones (incluyendo la última que acaba de salir, la 7), así que no era un problema puntual por un index.dat corrupto o cosas típivcas similares. Un verdadero misterio. El misterio aumentaba cuando veías que con otros navegadores (por ejemplo Firefox) los archivos bajaban sin problemas y se guardaban. Incluso si veías el tráfico que se generaba con un mon... [Más]

Cómo preservar la batería del portátil si lo usas mucho más en casa que por ahí...

Cómo preservar la batería del portátil si lo usas mucho más en casa que por ahí...
Bueno, esto tiene más bien poco que ver con la programación pero lo comento porque a alguno quizá le resulte interesante. Yo uso mucho mi portatil, casi a diario. Lo que ocurre es que la mayor parte del tiempo lo hago con él enchufado a la corriente, esté en casa o de viaje (ya que lo enchufas en la oficina del cliente o lo que sea). Eso sí, la mayor parte de las veces lo uso enchufado en mi propia casa. El problema de esto es que acabas con la batería lentamente. Al cabo de unos meses notas como va perdiendo algo de capacidad y un par de años después la cosa es bastante grave. Las baterías son caras, pero ese no es fundamentalmente el problema. El verdadero problema es que, dependiendo de la marca y modelo del portátil, dos años despues de comprarlo puede resutlar muy dificil o imposible encontrar una batería que le valga, ya que o hay estándar alguno para las mismas y los fabricantes son bastante "cabrones" con estos temas y así se aseguran de que cambias el portátil. La solución:... [Más]

Función genérica para conversión entre tipos

Función genérica para conversión entre tipos
La versión 2.0 de la plataforma .NET permite crear métodos y clases genéricas que trabajen de la misma manera, independientemente del tipo que utilicen para la operación. Puedes leer la introducción al tema que escribí hace ya un par de años (¡como pasa el tiempo!) con las primeras betas de .NET 2.0 en mi post: "Tipos Genéricos en .NET 2.0". El otro día me preguntaron cómo se podía hacer una función que sirviera para transformar de forma genérica entre dos tipos de datos. Es decir, una a la que le pasases una variable de un valor o una referencia de un determinado tipo y que devolviera el mismo valor pero con un tipo de dato diferente. En realidad ya existe una función similar desde la primera versión de .NET, y es el método ChangeType de la clase Convert. Este método tiene varias sobrecargas pero la que se usa más habitualmente toma como primer parámetro un valor a convertir y como segundo una definición de tipo al que deseamos convertir el anterior. Así, por ejemplo, para cambiar d... [Más]

¡Hay que ver qué cara tienen algunos!

¡Hay que ver qué cara tienen algunos!
Acabo de leer esto en el Blog de George Ou y he flipado. Resulta que algunos de los iPods de Apple que se vendieron en septiembre llevaban dentro un ejecutable con un virus que ha infectado a algunos usuarios. Resulta que Apple en lugar de simplemente matar a su proveedor y entonar públicamente el mea culpa han publicado en su web una nota que, con un par de huevos, dice literalmente: "As you might imagine, we are upset at Windows for not being more hardy against such viruses, and even more upset with ourselves for not catching it." Para el que no sepa inglés la traduzco: "Como puedes imaginar, estamos disgustados con Windows por no ser más resistente contra los virus como este, y más disgustados con nosotros mismos por que se nos haya pasado" Es decir, "Vale reconocemos que hemos metido la pata, pero claro es que Windows no resiste bien los virus". ¡No me digas que no es indignante! Y encima el archivo en el que está la nota de prensa se llama "Windows virus", no "iPod Virus... [Más]

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