JASoft.org

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

MENÚ - JASoft: JM Alarcón

Mi Visual Studio no sincroniza el archivo actual en el Explorador de Soluciones

Una cosa muy útil cuando estamos programando con Visual Studio es que, si tienes varios archivos de código abiertos a la vez, cuando cambias de uno a otro se seleccione dicho archivo en el explorador de soluciones.De ese modo, al cambiar de archivo, sabes exactamente en qué proyecto concreto y en qué parte del proyecto estás en cada momento. Esto es especialmente útil en desarrollos grandes, formados quizá por decenas de proyectos y cientos o miles de archivos de código.En Visual Studio 2010 esto era así por defecto (y si no me equivoco ni siquiera lo podrías cambiar). En versiones más recientes de Visual Studio como Visual Studio 2013 o 2015, esto no es así. Por defecto, cuando abres un archivo no se selecciona automáticamente en el explorador de soluciones.En proyectos pequeños esto no tiene importancia, pero en proyectos grandes es un fastidio (o al menos a mi me lo parece).¿Cómo puedes hacer que se sincronice lo que estás viendo con el Explorador de Soluciones?Muy fácil. Es solo sa... [Más]

TRUCO: Hacer "bundling" de archivos JavaScript o CSS sin necesidad de herramientas externas

Este es un truco rápido pero muy útil para programadores Front-End que trabajan con HTML, CSS y JavaScript.Como todo el mundo sabe (o debería saber), con HTTP 1.1 cada petición que se envía al servidor añade "peso" a la carga total de la página porque se debe abrir una nueva conexión, se deben enviar las cabeceras y recibirlas, hay un máximo de conexiones abiertas a la vez, etc... Por ello, si la página incluye por ejemplo 10 archivos .css que en conjunto pesan 250KB, su descarga va a tardar más que si descargásemos ese mismo contenido exactamente, con el mismo peso, pero en un solo archivo .css.Esto no ocurre con la nueva versión HTTP 2, pero no siempre está disponible todavía.Como en una aplicación o en una página web cada milisegundo cuenta, se suelen utilizar dos técnicas habitualmente para disminuir el efecto de tener varios archivos y disminuir su peso:"Bundling" o empaquetamiento: consiste en combinar varios archivos dentro de uno solo para que, aunque ocupen lo mismo, puedan de... [Más]

No me aparece el DataContext en un LinqDataSource

Linq to SQL es una tecnología precursora del actual Entity Framework que fue pionera en sacar partido a Linq para crear un ORM fácil de utilizar con esta tecnología. Su principal limitación es que solo funciona con SQL Server y que los "mapeos" deben ser 1 a 1 con las tablas (una tabla = 1 clase). Sin embargo es tremendamente fácil de usar y tiene un diseñador visual muy efectivo, por lo que a mucha gente (incluyéndome yo mismo) nos gusta mucho y es válido para la mayor parte de las situaciones si trabajas con el gestor de datos de Microsoft.En ASP.NET Web Forms (otra tecnología ahora en retroceso pero tremendamente efectiva para ciertos tipos de aplicaciones Web, como por ejemplo las orientadas a gestión) se incluye un control para acceso visual a datos llamado LinqDataSource que está especialmente diseñado para trabajar con esta tecnología. Este control combinado con los diferentes controles enlazados a datos (y especialmente los ListView y DataPager) permite crear interfaces web ori... [Más]

A mi tablet con un Atom Z3735F Baytrail no le dura la batería ni un día: ¿Cómo solucionarlo?

Si tienes un tablet con Windows 10 y un procesador Intel Atom Z3735F QuadCore de tipo "Baytrail", probablemente tienes un problema con tu dispositivo: la batería en reposo apenas te dura un día, ¿verdad?. En un tablet lo que haces normalmente es, tras haberlo utilizado, pulsas el botón de encendido/apagado y éste se pone en un estado de baja energía que apenas consume y que te permite acceder de nuevo a él instantáneamente. El problema con este tipo de tablets, por otro lado tan comunes, es que existe un problema de gestión de energía que hace que cuando apagas la pantalla en realidad el equipo no entre en modo de baja energía, sino que se queda trabajando de la manera habitual solo que con la pantalla apagada. Esto se traduce en un consumo energético muy alto porque todos los sistemas están funcionando con normalidad, por lo que al final el nivel de la batería baja a toda velocidad y c... [Más]

Cómo obtener una referencia al ámbito global en cualquier entorno JavaScript (HTML, Node.js, Windows Scripting Host...)

El ámbito global de JavaScript es el ámbito superior en el que se definen las variables y que contiene algunas de las funcionalidades globales del entorno de ejecución. Se trata de un objeto especial que: Siempre está disponible Se llama de manera implícita, es decir, no es necesario mencionar su nombre explícitamente para usar sus métodos o propiedades, al contrario que con cualquier otro objeto. Según indica el estándar ECMAScript, este objeto global no dispone de constructor ni de prototipo y no se puede invocar como una función al igual que el resto de los objetos. Si en un fragmento de código JavaScript definimos una variable o una función como estas fuera de todo contexto, o sea, para simplificar, sin ser dentro de una función): var miVar = 0; function sumar(a, b) { return a+b; } Lo que estamos haciendo es crear sendos miembros en el objeto global, que es el que constituye ... [Más]

Módulo para notificaciones web desde el navegador con HTML5

Estos días he estado creando un módulo JavaScript para facilitar el uso de las notificaciones del navegador usando la API estándar "Web Notifications" del World Wide Web Consortium (W3C). La idea es poder mostrar notificaciones nativas al usuario (de las que aparecen al lado del reloj en Windows, por ejemplo) pero desde aplicaciones web. Por ejemplo, cuando llega un nuevo correo (como hace GMail), o cualquier otra circunstancia que necesitemos notificar en segundo plano al usuario, pero desde el navegador. Actualmente el único navegador que NO las soporta es Internet Explorer / Edge, y no parece que tengan intención de soportarlas tampoco, pero en todos los demás funcionarán sin problemas. En su día escribí un artículo explicando con detalle cómo utilizarlas "a pelo", sin usar ninguna biblioteca intermedia. Esto es una especie de continuación. Lo que he hecho es crear una biblioteca que, en mi opini&... [Más]

La extraña cabecera "Upgrade-Insecure-Requests" y cómo gestionarla en el servidor

Como todo programador web que se precie, más temprano que tarde acabarás por utilizar el inspector de tráfico de Google Chrome o cualquier otro analizador de protocolos como por ejemplo el magnífico Fiddler. Estas utilidades sirven para inspeccionar todo el tráfico web saliente y poder ver exactamente qué datos se intercambian, poder modificar peticiones y respuestas, etc... lo cual es de gran ayuda para depurar las aplicaciones Web.Si inspeccionas tráfico generado por Google Chrome verás una cabecera muy rara en casi todas las peticiones dirigidas a través de HTTP:¿Qué es esta cabecera "Upgrade-Insecure-Requests"?Se trata de la implementación en Chrome de la especificación del mismo nombre creada por el World Wide Web Consortium (W3C). Se trata de un mecanismo que trata de generar conexiones más seguras para los usuarios.Así, cuando un navegador u otro cliente Web se conecta a un canal que no considera suficientemente seguro, puede solicitar al servidor un cambio a un protocolo más se... [Más]

TRUCO: Reproducir automáticamente un vídeo HTML5 desde un determinado punto

Para reproducir un vídeo (o audio) de forma nativa desde una página Web lo único que tenemos que hacer es usar una etiqueta <video>, y si el elemento multimedia está en un formato apropiado se reproducirá sin problemas: <video src="miVideo.mp4" autoplay controls> </video> Esto es solo rascar la superficie, pero lo pongo solo para situarnos.Si necesitamos reproducir el archivo, no desde el principio sino desde una posición posterior, normalmente deberíamos recurrir a un poco de código JavaScript para establecer el punto actual con la propiedad currentTime del objeto correspondiente.Lo que ya no es tan conocido es que en la mayor parte de los navegadores (todos excepto Internet Explorer), es posible conseguir ese efecto simplemente añadiendo un parámetro a la URL que indica dónde está almacenado el vídeo. Este parámetro es #t=. Por ejemplo, si el vídeo anterior lo incluimos de esta manera:<video src="miVideo.mp4#t=90" autoplay controls> </video> El víde... [Más]

Cómo cambiar el orden de los algoritmos criptográficos de SSL en Windows Server / IIS

Hace poco veíamos cómo solicitar un certificado digital para SSL usando un algoritmo de hash moderno, y no el que se usa por defecto en IIS.En esta ocasión vamos a ver cómo podemos modificar en Windows Server, y por lo tanto en Internet Information Server, el orden de preferencia de los diferentes conjuntos de algoritmos de cifrado disponibles. De este modo nos cerciorarnos de que los más modernos y seguros van primero en la lista y por lo tanto se les da preferencia a la hora de cifrar las comunicaciones, obteniendo un servidor más seguro.La cosa es bastante sencilla. Sólo hay que saber en dónde tocar.Lo primero que tenemos que hacer es abrir el editor de políticas de seguridad local del servidor. Para ello puedes intentar escribir:gpedit.smcen una línea de comandos o en el diálogo de ejecutar (Windows+R), pero lo más probable es que te aparezca este mensaje:El motivo es que necesitas usar una cuenta con privilegios elevados para poder cambiar los ajustes de seguridad. Así que lo mejo... [Más]

Cómo solicitar certificados con SHA-2 en lugar de SHA-1 en IIS y Windows Server 2008

Dentro de las tareas criptográficas necesarias para realizar comunicaciones seguras están los algoritmos de resumen digital o hashing. Uno de los más utilizados desde hace varios lustros es el algoritmo SHA-1. El problema es que este algoritmo ha sido ya vapuleado por algunos expertos en seguridad a partir de 2004, y hoy en día se considera inseguro, por lo que la mayor parte de fabricantes de navegadores y otros sistemas han anunciado que irán dejando de soportarlo paulatinamente: Microsoft Google Mozilla Lo que hay que hacer es utilizar SHA-2 en cualquiera de sus 6 variantes, y más en concreto se suele utilizar SHA-256. El consenso general es que a partir del día 1 de Enero de 2017 los navegadores que se encuentran con una conexión segura SSL basada en el algoritmo SHA-1 pasarán a considerarla insegura y mostrarán un aviso de seguridad. Es más, hoy en día esto ya está ocurriendo pues... [Más]