JASoft.org

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

MENÚ - JASoft: JM Alarcón

Pregunta típica: Cómo hacer que funcione un botón al pulsar ENTER en una página ASPX

Las páginas ASPX funcionan mediante la inclusión de un formulario único que contiene todo los controles de la página y que, al enviarlo, actualiza ciertos parámetros para mantener el ViewState, saber qué control ha provocado un evento, etc... El funcionamiento basado en un formulario provoca algunos comportamientos indeseados. Por ejemplo, los cuadros de texto, por defecto, cuando tienen el foco (porque estás escribiendo en ellos) provocan el envío automático del formulario si pulsas ENTER. Si tienes el típico cuadro de búsqueda con un botón o un formulario de recogida de datos con un botón de enviar, al pulsar ENTER conseguirás que se envíe la página pero al no haber pulsado sobre el botón no se detectará el evento correspondiente y por lo tanto no se ejecutará el código del eento click de éste. El resultado es que no se actualiza correctamente la página y simplemente volvemos a tener la misma página exactamente igual y la búsqueda no funciona o los datos no se almacenan. Seguro que... [Más]

Noticia del mes: Reflector pasa a manos de una empresa privada

Cualquier programador .NET que se precie conoce, usa constantemente y adora la herramienta Reflector de Lutz Roeder. se trata sin duda de una de las herramientas más potentes y útiles con las que podemos contar. Lo que habré aprendido yo usándola :-) El caso es que Reflector ha sido siempre el proyecto personal del bueno de Lutz, que lo ponía disposición de todo el mundo gratuitamente en su Web, para el bien de la humanidad. El hecho de no cobrar un duro es digno de admirar pues, desde mi punto de vista, Lutz podría ser multimillonario si se le diera por cobrar aunque fuera únicamente 4 o 5 euros por cada descarga. Yo pagaría sin duda unos cuantos más si los pidiera. Pero hasta ahora eso no ha ocurrido. Por este motivo me sobresalté al recibir esta misma noche un correo electrónico de Lutz en el que anunciaba que había llegado un acuerdo con la empresa Redgate, muy conocida sobre todo por sus excelentes herramientas para SQL server, en virtud del cual esta empresa pasaba ... [Más]

Hackeando un NAS Lacie o de como cualquier chorrada puede comprometer la seguridad de un sistema

El otro día os hablaba de un problemilla con un NAS que tenemos y alguno me ha comentado que cómo podía hacer para lanzar la línea de comandos ya que este tipo de sistema vienen completamente cerrados a cal y canto. Voy a explicar cómo hackearlo y veremos que esta es la prueba evidente de que cualquier chorrada por pequeña que sea puede ser un agujero de seguridad. Resulta que en efecto el NAS viene completamente "capado". Lleva Windows XP Embedded y te deja acceder a través de Terminal Server pero te saca una interfaz muy restringida de administración que la verdad no merece la pena puesto que desde la interfaz web que trae se pueden hacer más cosas aún. Esta interfaz reducida tiene el aspecto de una página Web y es en realidad una pequeña aplicación ejecutable que es lo único que se ejecuta al arrancar. no tienes acceso a minimizarla, ni al escritorio, ni responde a las teclas rápidas de sacar el explorador (Windows + E), ni nada similar. Pero sí hay una tecla rápida que responde: C... [Más]

Truco: cómo borrar todas las subcarpetas de una carpeta excepto unas cuantas

Borrar carpetas o archivos puede parecer una trivialidad y lo es en la mayoría de los casos. Como casi todo en la vida la cosa se complica con los grandes números. Si tenemos que borrar una gran carpeta con miles de archivos y muchos gigas de tamaño la cosa llevará tiempo y además se necesita tener bastante espacio libre en disco para hacerlo (el porqué de esto lo desconozco. Parece una paradoja pero es así). Hoy me he encontrado en un atolladero así. Un pequeño NAS que tenemos en el DataCenter para hacer algunas copias de seguridad estaba repleto. En una carpeta conflictiva en concreto había unas 150 subcarpetas cada una de ellas con varios gigas, y miles de archivos y una estructura compleja de varias decenas de subcarpetas. Necesitaba borrar la mayor parte de ellas para hacer espacio (ya no se necesitaban) pero no lo podía conseguir desde el explorador de Windows. El proceso de todas formas iba a durar mucho tiempo. ¿Cómo puedo automatizar esto? El mayor problema además es que no t... [Más]

Consolidación de Scripts para mejora de rendimiento

Una de las mejoras sencillas y poco llamativas en primera instancia que ha incluido el Service Pack 1 de .NET 3.5 y Visual Studio 2008 es la consolidación de Scripts. Sin embargo es algo interesante que conviene conocer. Se trata básicamente de evitar que el navegador tenga que descargar multitud de pequeños archivos de Script desde el servidor, sustituyéndolos de manera automática por una sola descarga combonada, que es más eficiente y rápida como demostraré enseguida. Es la típica característica que va a pasar inadvertida para la mayoría de los programadores Web pero que es interesante, y por eso me ha apetecido contarla en detalle aquí. Para ello he desarrollado un ejemplo muy simple pero que da una idea de la utilidad de esta característica. En el siguiente vídeo muestro cómo funciona la consolidación de Scripts mediante las nuevas etiquetas CompositeScript. También muestro un control desconocido pero interesante y pensado para ayudarnos a trabajar con esta característica: el co... [Más]

¿Qué hay de nuevo en el Service Pack 1 de .NET 3.5 y de Visual Studio 2008?

Como ya habréis visto anunciado en muchos sitios, desde hoy está disponible el Serive Pack 1 de Visual Studio 2008, que incluye muchas nvedades. Las principales a destacar son las siguientes: Plataforma .NET Mejoras de rendimiento de entre el 25 y el 40% en aplicaciones WPF. Y sin tener que cambiar ni una sola línea de código. Nuevos sistemas de acceso a datos: Entity Framework y Data Services, así como soporte para las nuevas características de SQL Server 2008. Algunas mejoras en WCF. Visual Studio 2008: Soporte para SQL Server 2008 (salido la semana pasada) Mejores diseñadores de WPF. Diseñadores para acceso a datos con Entity Framework. Mejoras en Team Foundation Server relacionadas con el control de versiones, control de items de trabajo y migración desde Source Safe entre otras. Cabe destacar una gran mejora de rendimiento en servidores de TFS con gran cantidad de proyectos, tanto en el servidor como en el cliente. En cuanto a lo que a mi me interesa, ... [Más]

Windows Media Player: Solucionar los problemas de canciones entrecortadas y tiempos de inicio eternos en Vista

¿Has experimentado problemas al reproducir audio con Windows Vista? Por ejemplo: cuando cambias de canción o comienzas a reproducir una, tarda varios segundos en empezar mientras pone "Cambiando medio". O por ejemplo: justo antes de terminar una canción (en el 90% más o menos) de repente durante un par de segundos la canción se oye entrecortada. Bueno, esto es lo que me pasaba a mi hasta hace poco. El motivo es, por lo visto, que mi tarjeta de sonido no es la bomba precisamente (es un portatil orientado a empresa) y sus controladores no son totalmente compatibles con la nueva pila de sonido de Windows Vista. Al parecer es un problema común según he podido constatar hablando con algunos amiguetes. Resulta que Vista incluye una nueva pila de procesamiento de sonido que nos permite obtener por software algunas características interesantes, y en concreto unas cuantas mejoras de sonido. Puedes verlas yendo a Panel de Control·Sonido y viendo las propiedades de los altavoces: Si te inter... [Más]

SQL Server Compact 2008 SP1 Referencia Completa

SQL Server dispone de una versión embebida que es tan interesante como desconocida y poco utilizada. Se trata de SQL Server Compact Edition. La mayor parte de la gente la desecha como opción porque la asocia con crear aplicaciones para dispositivos móviles (como PDAs o teléfonos), pero lo cierto es que tiene una cantidad espectacular de aplicaciones en entornos de escritorio. Para empezar esta versión ligera de SQL Server es gratuita y compatible con su hermano mayor, con multitud de características avanzadas como SGBD. No necesita tener instalado un servicio permanentemente en ejecución en el sistema y es extremadamente ligera (tanto que puedes usarla en un teléfono, así que eso lo dice todo). Una de las características más interesantes es la de todas las opciones de sincronización que ofrece, que nos permiten replicar y mantener en sincronismo datos entre sistemas homogéneos, por lo que la hace ideal para aplicaciones que deban trabajar conectadas de forma no permanente y para almac... [Más]

Ya está disponible la versión definitva de SQL Server 2008

Desde ayer los suscriptores de MSDN y Technet ya puede descargarse la versión definitiva de SQL Server 2008. Se trata de una gran noticia :-) Si eres suscriptor, ahí te dejo los enlaces: Edition Language Download Location SQL Server 2008 Developer (x86, x64, ia64) English MSDN Subscriber Downloads MSDN Top Subscriber Downloads SQL Server 2008 Enterprise (x86, x64, ia64) English MSDN Subscriber Downloads MSDN Top Subscriber Downloads TechNet Subscriber Downloads TechNet Top Subscriber Downloads SQL Server 2008 Standard (x86, x64) English MSDN Subscriber Downloads MSDN Top Subscriber Downloads TechNet Subscriber Downloads TechNet Top Subscriber Downloads SQL Server 2008 Web (x86, x64) English MSDN Subscriber Downloads MSDN Top Subscriber Downloads TechNet Subscriber Downloads TechNet Top Subscriber Downloads SQL Server 2008 Workgroup (x86, x64) English MSDN Subscriber Downloads MSDN Top Subscriber... [Más]

Cómo detectar su nuestra página dispone de un ScriptManager o no

Hay veces que necesitaremos usar programáticamente un ScriptManager dentro de una página, por ejemplo para añadir dinámicamente referencias a Scripts o a servicios Web o WCF. Para ello deberemos automatizar el control ScriptManager que toda página AJAX debe tener, pero ¿qué pasa si no existe ese control? Para asegurarnos de que el control está añadido a la página y que podemos utilizarlo podemos emplear el método estático GetCurrent de la clase ScriptManager para verificar su existencia, así: public static bool IsScriptManagerPresent(Page p) { ScriptManager Smgr = ScriptManager.GetCurrent(p); return (Smgr != null); } Con esta sencilla función podremos averiguar si hay un Scriptmanager presente o no. Es interesante notar que este método funciona y devuelve el valor correcto incluso cuando el ScriptManager no está presente en la página actual sino en la página plantilla (Master Page) que la contiene. No obstante es importante darse cuenta de que en ese caso devovlerá true i... [Más]