JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Volta: desarrollo de aplicaciones Web usando sólo los materiales que tienes en la habitación

Ese es el original eslógan de la nueva herramienta de desarrollo Web salida de los laboratorios de Windows Live y de Microsoft Research. Se trata de Microsoft Volta, una serie de extensiones y bibliotecas para Visual Studio 2008, presentada oficialmente hace 4 días. La novedad de este interesante proyecto es que permite desarrollar aplicaciones Web sin importarnos si su funcionalidad se va a ejecutar en el cliente (navegador) o en el servidor. Nosotros desarrollamos y es más tarde, antes del despliegue, cuando decidimos de qué forma distribuimos todas las capas de la aplicación. Así, podemos decidir que una determinada funcionalidad se ejecute en el servidor por ser más compleja y con menos necesidad de inmediatez, mientras qeu por otro lado indicamos que una página completa (toda su funcionalidad) se ejecute en el cliente. Para ello programamos todo en el lenguaje .NET que queramos (C#, VB.NET, JScript o, yo que sé, PHP) y sólo tenemos que marcar las clases que hemos creado con un at... [Más]

Cómo insertar valores aleatorios en una base de datos SQL Server

Esta parece fácil pero no lo es tanto. Imagínate que tienes que meter valores aleatorios dentro de un campo de una tabla para todos los registros de ésta. Por ejemplo, le vamos a asignar un número aleatorio como pin de acceso inicial a cada usuario de nuestra base de datos y éste debe estar entre 1 y 100.000 (Vale, el ejemplo es un poco chorrada, pero se capta la idea). Queremos actualizar los miles de registros de nuestra base de datos y asegurarnos de que cada uno recibe un valor aleatorio en el campo correspondiente. Lo primero que salta a la mente para intentar es esto: UPDATE Usuarios Set pin = Round(((100000) * Rand() + 1 Es decir, usamos la función RAND para obtener un valor aleatorio dentro del rango especificado. Parece correcto ¿no? Si lo ejecutamos nos llevaremos una sorpresa: todos los registros se quedan con el mismo valor. :-( Pero ¿no era aleatorio?. Sí. El problemilla es que RAND se evalúa sólo una vez para el proceso completo, y se inserta sólo un valor. No nos ... [Más]

Nuevos algoritmos criptográficos en "Orcas"

Desde siempre soy un gran aficionado a la criptografía, y en mi opinión Whitfield Diffie se merece el premio Nobel de matemáticas por su contribución a la humanidad :-) El caso es que en .NET hay un gran soporte criptográfico, tanto en código manejado, como haciendo uso de la API de criptografía del sistema operativo. Sobre todo en .NET 2.0, porque en .NET 1.x había bastantes carencias en cuanto al manejo de algoritmos de clave pública basados en certificados (lo sufrí enun proyecto a base de bien). En .NET 3.5, o la versión de la plataforma que saldrá conorcas dentro de unos meses, el soporte de criptografía se ha mejorado mucho. En concreto se han centrado en ofrecer todos los algoritmos conocidos como Suite B, de la NSA. Esta suite contempla una serie de algoritmos avanzados de seguridad exigidos por el Estado USA e implica ofrecer soporte para AES, SHA-256 y SHA-384 (ya los ofrecía) y una serie de algoritmos criptográficos de curvas elípticas que se han tenido que incorporar (E... [Más]

Ejecutar código con todos los permisos desde un recurso de red

Esta pregunta ha surgido en uno de los cursos de campusMVP que imparto y me ha parecido interesante comentarla aquí. Resulta que un alumno tenía un ejecutable que, entre otras cosas, necesitaba escribir una serie de registros en un inofensivo archivo de texto. Al ejecutar la aplicación en local todo iba perfectamente, pero al hacerlo cuando el .exe estaba en una unidad de red compartida o en una carpeta remota el programa, lógicamente, le rompía con un error de falta de permisos. El motivo de que no funcione el código en estas circunstancias es que, al ejecutarlo desde la Red, el ejecutable cae bajo el conjunto de permisos "LocalIntranet" que es mucho más recortado que el conjunto normal que se aplica a los ejecutables .NET y que se llama "FullTrust". Lo primero que se debería hacer es declarar los permisos que el código necesita para que al menos el runtime pueda saber qué necesita esos permisos antes de "petar", nada más intentar ejecutarla. De este modo si se ejeucta sin los per... [Más]

Permitir la validación de un control con los validadores estándar de ASP.NET

Tal y como prometí en un anterior post, voy a explicar cómo podemos conseguir que un control sea utilizable directamente por los controles de validación estándar que vienen con ASP.NET. Ciertos controles Web (por ejemplo el control Calendar) no permiten su uso combinado con los controles de validación (estilo RequiredFieldValidator, RangeValidator, etc...), lo cual es una lástima porque para poder validar su contenido tenemos que construir nuestro propio control de validación (en fin...) o bien usar eventos de servidor para poder validarlos. Una de las ventajas de los controles de validación de ASP.NET es que ya realizan una validación en el cliente además de la que se hace en el servidor después, lo que ahorra tiempo y agiliza mucho la interfaz. Además están integrados en la validación de la página y permiten comprobar la propiedad IsValid de ésta antes de continuar con suprocesamiento, algo muy útil también. Por otro lado es muy habitual combinar diversos controles Web con una prop... [Más]

Búsquedas directas desde la barra de IE

Si sigues normalmente este blog recordarás que hace unos días expliqué como integrar tu buscador o índice con las búsquedas de Open Search y también con la barra de búsquedas de Internet Explorer 7. Para ello se usaba el estándar Open search. En aquella ocasión comenté que existía la posibilidad de hacer que IE realizara búsquedas en nuestro buscador directamente desde la barra de direcciones. Vamos a explicar ahora como conseguirlo... La idea es que teclees por ejemplo (en el caso de nuestro buscador www.pandeo.com): PANDEO empresa arquitectura y que realice automáticamente la búsqueda de esos dos términos en el buscador Pandeo.com. Para conseguirlo lo único que necesitamos es introducir una clave en el registro. Ejecuta regedit.exe para editar el registro y vete a la rama: HKCU\Software\Microsoft\Internet Explorer\SearchURL En ella deberás crear un nuevo nodo (clave) con el nombre del comando que quieres usar, en este caso PANDEO. En el valor por defecto de este nodo debes i... [Más]

¿Tienes un buscador en tu portal? Esto te puede interesar...

Hace unos días me pregunté por curiosidad cómo se podría añadir un determinado buscador a la nueva barra de búsqueda de Internet Explorer 7. Sí, esa que le han copiado descaradamente a Firefox (con la que estos chicos Open Source ganan más de 80 millones de dólares al año) y que, realmente, no sirve de mucho pues puedes hacer las búsquedas igual desde la propia línea de direcciones. El caso es que me llamaba la atención puesto que, si te fijas, puedes hacer que aparezca más de un buscador en ella, aparte del que trae por  defecto (Live Search). En Krasis hace unos años creamos un índice/buscador especializado en ingeniería llamado Pandeo.com cuyo nombre hace honor a un efecto de resistencia de materiales por el que las columnas esbeltas sometidas a compresión pueden llegar, curiosamente, a estar sometidas a flexión y combarse. Pandeo.com Se trata más de una prueba de concepto y un proyecto de I+D interno que de un producto propiamente dicho, aunque sí que lo hemos licenciad... [Más]

Componentes duales para Windows y la Web

¿Cómo puedo construir un componente o una biblioteca de clases que me sirva indistintamente para Windows Forms y para ASP.NET si debo usar características específicas de cada entorno? Expresado con otras palabras: ¿Cómo puedo saber si mi componente está siendo usado desde una aplicación de Windows Forms o de ASP.NET? Respuesta: verifica el valor de HttpContext.Current. Si es null (Nothing en VB) es que estás en un entorno no-web, y estarás bajo ASP.NET en caso contrario. Es un truco sencillo pero que a alguno puede que le resulte útil si se lo había planteado para algún componente propio.

Estadísticas de consultas SQL Server desde ADO.NET 2.0

La clase SqlConnection de ADO.NET 2.0 posee una característica que puede resultar de utilidad en cuertas ocasiones y que permite obtener información estadística sobre las consultas realizadas, de manera muy similar a la que ofrece el Analizador de consultas de SQL Server 2000 o el Management Studio de SQL Server 2005 (si bien no son las mismas). Esta característica es muy fácil de gestionar gracias a la propiedad StatisticsEnabled de la clase SqlConnection, que sirve como es obvio para habilitar la recogida de estadísticas de las consultas lanzadas a través del objeto SqlConnection instanciado para la ocasión. Una vez habilitadas las estadísticas se obtienen mediante el método RetrieveStatistics de la misma clase. Éste devuelve un objeto que implementa la interfaz IDictionary, aunque en realidad un poco de reflexión revela que realmente lo que se obtiene es un HashTable, así que es muy fácil de manejar (ahora lo veremos). El método UpdateStatistics las actualiza al momento actual.... [Más]