JASoft.org

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

MENÚ - JASoft: JM Alarcón

Cómo abrir archivos .rdlc con Visual Studio 2017

Los archivos con extensión .rdlc son archivos de informes creados por Visual Studio y contienen la definición de un informe. Gracias a estos archivos y a los visores de informes para Windows Forms y Web Forms era muy sencillo crear y desplegar informes en nuestras aplicaciones. Antiguamente, a partir de Visual Studio 2005, se incluía de serie con Visual Studio un diseñador para este tipo de informes, pero posteriormente, desde VS2013, se dejó de incluir por defecto este diseñador. En VS2013 y VS2015 llegaba con editar la instalación de Visual Studio y elegir la opción de instalar las herramientas de datos de SQL Server (que no se instalaban por defecto) para volver a tenerlo disponible. Sin embargo en Visual Studio 2017 no viene incluido en el paquete de manera alguna. Te cometo cómo editarlos con VS2017 y como solucionar un problema que dan cuando los vas a grabar. [Más]

JavaScript tiene dos valores para el número cero, y no son iguales aunque lo parezcan

Pues sí: aunque estamos acostumbrados a pensar que en JavaScript tenemos un valor para el número 0 y este es el único que hay, en realidad es interesante conocer qué existen dos valores diferentes para el número 0 y que no son el mismo ni se obtienen de la misma manera. De hecho esto ocurre en la mayor parte de los lenguajes de programación ya que utilizan el estándar IEEE 745 para representar números, por lo que se comportan de la misma manera. En la práctica pocas veces veremos que este hecho nos impacte pero, aparte de ser un tema muy interesante, en algunas aplicaciones y algoritmos (sobre todo si involucran a las matemáticas) es importante conocer esta distinción. Te la cuenta en este artículo que pensé en escribir muy rápido pero al final se ha ido extendiendo más de la cuenta, como siempre 😉 [Más]

La relación entre atributos HTML y propiedades JavaScript

Cuando uno programa para la Web en la parte Front-End tiene muy interiorizados algunos conceptos que no siempre son correctos. Una confusión habitual (o al menos algo que no siempre se tiene claro) es la relación que existe entre los atributos de las etiquetas HTML y las propiedades de los objetos del DOM que representan a dichas etiquetas, a las que accedemos desde JavaScript. Muchas veces se piensa que existe una relación directa y bidireccional entre ellas, de modo que si cambias una propiedad se está cambiando el atributo y viceversa. Y aunque esto es cierto en algunos casos, existen otras casuísticas que pueden complicarte la vida si no las tienes en cuenta. Vamos a verlo... [Más]

Cómo habilitar el arranque desde un USB en un portátil Asus Zenbook (y otros)

Desde hace ya unos años, muchos de los ordenadores nuevos vienen con sistemas de protección para que un usuario con poca experiencia no pueda cometer alguna insensatez metiendo una llave USB que encuentren por ahí. Vamos, que vienen "capados" de modo que no te permiten arrancar desde un USB. Es más, la mayoría ya no te dejan instalar otro sistema operativo directamente (olvídate, por defecto, de instalar Linux, por ejemplo). Pasa en los chipsets basados en UEFI en lugar de en la tradicional BIOS, que ahora mismo es lo que se impone, condenando a las BIOS a la desaparición. En este post te cuento cómo puedes saltarte esta protección (bajo tu responsabilidad) para poder arrancar con una llave USB e instalar otro sistema operativo diferente al que trae de serie (generalmente Windows 10 Home). Para mi ejemplo lo hago con un Asus Zenbook, pero debería ser algo muy similar en cualquier portátil moderno. [Más]

Servir sitios y aplicaciones web en Azure usando un archivo ZIP (Run From Package)

Desde hace poco tiempo existe una nueva opción para desplegar aplicaciones Web en Azure y que, como no tiene una interfaz de usuario específica en el portal, ha pasado muy inadvertida: ejecutar una aplicación web directamente desde un archivo ZIP remoto. Este modo de despliegue es muy interesante y presenta algunas ventajas muy importantes, así como algún inconveniente. En este artículo te cuento cómo funciona, sus ventajas e inconvenientes, cómo ponerlo en marcha y remato con un vídeo en el que montamos en tiempo real una pequeña aplicación con este sistema. ¡Allá vamos! [Más]

Diferentes configuraciones en Visual Studio para generar diferentes ediciones de una aplicación

Si desarrollamos una aplicación con .NET que se comercializa en distintas ediciones (por ejemplo Standard y Professional), cada una de las cuales ofrece diferentes capacidades/características y diferentes precios, es interesante poder generar físicamente distintos .exe o .dll para cada edición. Por ejemplo, MiSuperApp-Standard.exe y MiSuperApp-PRO.exe. ¿Cómo podemos conseguir esto y que además cada una sea diferente, pero sin tener que duplicar el código? Pues eso es precisamente lo que te voy a explicar en este artículo... [Más]

Cómo postear a Instagram desde el ordenador

Una de las redes sociales que más me gustan en la actualidad es Instagram. Bien porque las has pasado allí desde una cámara profesional, bien porque las has creado con Photoshop o similar, etc... Aunque Instagram tiene una versión web que puedes usar desde un navegador moderno cualquiera, solo te permite ver los posts, comentar y poco más. No permite enviar fotografías desde el ordenador. En este post un poco off-topic, te cuento cómo puedes hacer para poder enviar fotografías desde tu navegador a Instagram sin tener que pasar por el móvil. [Más]

Funciones reguladoras en JavaScript: cómo limitar el número de veces que se puede llamar a una función cada segundo (throttling y debouncing)

En muchas ocasiones tenemos la necesidad de ejecutar en una aplicación la misma función JavaScript muchas veces seguidas, incluso sin pretenderlo. Por ejemplo un evento costoso que repinta un canvas a medida que redimensionamos la pantalla o que hace llamadas AJAX cuando un usuario teclea en un cuadro de texto. Pueden provocar muchas llamadas innecesarias y sería muy útil poder limitar el número máximo de veces que permitimos hacer una llamada a ciertas funciones. Para conseguirlo puedes crear un método regulador. Es lo que vamos a ver en este artículo. [Más]

Copiado de texto al portapapeles con JavaScript - API Asíncrona

El mes pasado os hablaba aquí de una manera sencilla y soportada por todos los navegadores para acceder al portapapeles desde código JavaScript en el navegador. Es un método simple pero un poco engorroso de implementar, puesto que hay que seleccionar rangos en la página para poder copiar su contenido. Además, su implementación varía ligeramente de un navegador a otro porque no está estandarizada. Otra pega importante que tiene el método "clásico" es que es síncrono. Para solucionar todos estos problemas la W3C ha creado la Async Clipboard API. A continuación te cuento cómo sacarle partido. [Más]

CSS: Cómo igualar la altura de dos cajas flotadas para que sean iguales

Imagina que tienes una maquetación básica de un sitio web que tiene una estructura típica: cabecera, cuerpo con dos secciones (lateral y principal) y pie. Para maquetar esto tenemos infinidad de posibilidades, pero supongamos que hemos utilizado cajas flotadas (con float) para definir la sección central, donde está la barra de navegación lateral y el contenido principal de la página. Un efecto negativo habitual de maquetar de esta manera es que si las dos cajas que están una al lado de la otra tienen contenidos muy diferentes en tamaño (lo más habitual de hecho) no tienen la misma altura y quedan descompensadas, creando un efecto muy feo. Te explico cómo solucionarlo usando CSS y un poco de imaginación. [Más]