JASoft.org

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

MENÚ - JASoft: JM Alarcón

JavaScript: por qué obtengo fechas diferentes por consola y por pantalla

Hoy una curiosidad rápida y simple pero puede que de interés, surgida a partir de la pregunta de un alumno y que tiene que ver con la manera de gestionar la misma información que tienen los navegadores dependiendo de si se hace en la interfaz de usuario o en la consola, la cual además puede variar de un navegador a otro. Tiene poca incidencia práctica, pero puede ser interesante... [Más]

Expresión regular para detectar caracteres repetidos

Las expresiones regulares son uno de los mejores inventos de la historia de la programación. Yo las uso para todo. El problema de las expresiones regulares es que, aunque lo básico es sencillo, pueden llegar a ser muy fastidiadas. Hay algunas que, para calcularlas, de entrada pueden parecer muy simples pero que te puede llevar horas dar con ellas. Son casi un lenguaje de programación en si mismas 😊 Otra cosa que hay que saber es que Internet está lleno de páginas con información equivocada o directamente errónea sobre expresiones regulares. En este post analizo detalladamente la construcción de una expresión regular que parece sencilla de entrada, pero que requiere dominar varias cosas importantes que no son tan evidentes para la mayoría. [Más]

visibilityEvents.js: detectar cuándo un elemento se muestra o se oculta en una página

Una cuestión que puede resultar muy útil en una página o aplicación web es la posibilidad de detectar cuándo aparece o desaparece de la pantalla un elemento determinado debido a las acciones del usuario. Por ejemplo, si desaparece una pieza de información importante porque el usuario hace scroll moviendo los contenidos, podemos sacar una nota resumen, recordatorio o acceso directo para ir verla de nuevo, y ocultarlo de nuevo cuando vuelva a aparecer. Cosas por el estilo. Esta funcionalidad no se incluye nativamente en HTML/JavaScript. He desarrollado una biblitoeca JavaScript que añade eventos a la página para detectar los cambios de visibilidad de cualquier elemento. [Más]

TRUCO - Depuración con Chrome: convertir archivos JavaScript en "cajas negras" para evitar depurarlos

Cuando estamos depurando paso a paso, poniendo puntos de interrupción en ciertas líneas para luego ir ejecutando el código instrucción por instrucción, no tiene mucho sentido que, de repente, se nos abra el código fuente de algunas bibliotecas estándar que están muy probadas y son robustas (jQuery, lodash, Angular, Vue...), pues no vamos a depurarlo. Y mucho menos si lo estamos usando ya minimizado y listo para producción, puesto que encima no veremos gran cosa tampoco. Vamos a ver cómo hacer que el depurador de Chrome se salte archivos completos que no nos interesa depurar, ahorrando tiempo y ganando productividad. [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]

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]

Minimizar y ofuscar JavaScript desde el menú contextual del Explorador de Windows

En este artículo vemos la manera de poder utilizar Uglify-JS para poder minimizar y también ofuscar el código fuente JavaScript, tanto desde la línea de comandos, como de manera mucho más cómoda usando un menú contextual desde el explorador de archivos de Windows, solo cuando lo pulses con la tecla de mayúsculas apretada, para que no moleste en el día a día. Además de explicar cómo montarlo "a mano", también se entrega un archivo para incorporar esta opción automáticamente. [Más]

La dificultad para entender las variables con referencias a objetos

Por lo que veo en las dudas de mis cursos y atendiendo consultas de la comunidad, a muchos programadores inexpertos les cuesta de entrada ver la diferencia entre paso por referencia y valor de parámetros de funciones, pero también la diferencia entre una variable, un valor y una referencia a un objeto. Esto suele pasar tanto en JavaScript como en otros lenguajes. Veamos un caso típico que genera dudas... Si consideramos este código:function modificaObjeto(obj2){ obj2.nombre = "Objeto"; obj2.valor = 5; } var obj = { nombre: "Pepe", valor: 0 }; modificaObjeto(obj); Lo que hacemos es pasar un objeto a la función, y a través del parámetro de ésta modificamos el objeto en si. Si ahora mostramos ese objeto en la consola veremos que se han modificado sus propiedades, como era de esperar, y que el nombre es "Objeto" y el valor es 5. Es decir, hemos modificado sus valores originales porque hemos cambiado el objeto en sí al que apunta la variable, pero no a donde apunt... [Más]

Midiendo el rendimiento de nuestro código JavaScript de manera sencilla desde la consola

Hace unas semanas os contaba un truco poco conocido pero muy útil para mostrar datos de modo tabular por la consola durante una sesión de depuración con JavaScript. Hoy traigo un par de trucos más del mismo estilo que estoy seguro de que no son demasiado conocidos tampoco.Cronometrar códigoUna necesidad habitual es medir el tiempo transcurrido al ejecutar determinado código, por ejemplo para tratar de ver cuál de dos estrategias diferentes de código es la más rápida con un número grande de datos o cosas por el estilo.Una forma habitual de hacerlo es guardar la fecha y hora actuales en una variable antes y después de la ejecución, y luego mostrar por consola la diferencia en milisegundos entre ambas. Sin embargo existe una forma mucho mejor que es utilizar los métodos console.time() y console.timeEnd().Estos métodos de la consola toman como parámetro el nombre de un contador, de modo que además podemos utilizar más de uno al mismo tiempo, midiendo incluso tiempos en paralelo si fuera ne... [Más]