Rarezas y cosas que no sabías de JavaScript

Si eres programador seguro que alguna vez has utilizado JavaScript, aunque sea para pequeñas funciones o mini proyectos. Lo que puede que no sepas es que hay ciertos comportamientos que te podrían resultar extraños o que no son intuitivos para los desarrolladores.

Este sería un ejemplo de lo que os hablo:
'1' + 1 --> "11"
'1' - 1 --> 0

JavaScript. Extraño y hermoso al mismo tiempo, es seguramente el lenguaje de programación que habría inventado Pablo Picasso.

Nulo es un objeto

Empecemos con una de las peculiaridades más conocidas de JavaScript: la naturaleza de null. Aunque null debería representar la ausencia total de valor, en JavaScript se identifica como un objeto, lo que genera cierta confusión. Es contradictorio, ¿verdad? ¿Cómo puede null ser un objeto cuando su propósito es justamente representar la ausencia de cualquier valor significativo? Sin embargo, así es como funciona JavaScript. Aquí tienes la prueba:

A pesar de que null se clasifica como un objeto, no se considera una instancia de ningún objeto. En JavaScript, los valores son instancias de objetos base; por ejemplo, cada número es una instancia del objeto Number, y cada objeto es una instancia del objeto Object. Afortunadamente, en este caso, la lógica se mantiene: dado que null representa la ausencia de valor, no puede ser una instancia de nada. Por eso, la siguiente evaluación es falsa:

NaN es un número

Si ya el null te empezaba a romper la cabeza, el NaN te la va a terminar de romper del todo.  NaN, proviene del acrónimo en inglés «Not a Number» (en español: no es un número). Esto debería hacerte pensar que si comprobamos el tipo «typeof NaN«, nos debería indicar que no es un número, pero no es así. Aquí el ejemplo:

Además, NaN no se considera ni siquiera igual a sí mismo. De hecho no NaN es igual a nada . La única forma de confirmar que algo es NaN a través de la función isNaN().

Un array sin claves es FALSE

Esta es la comprobación que se puede hacer para demostrar el concepto:

new Array() == false  –> Esto da como resultado true

Para entender lo que sucede aquí, es crucial familiarizarse con los conceptos de «verdad» y «falsedad» en JavaScript. Estos términos se refieren a cómo ciertos valores se comportan como verdaderos o falsos en contextos booleanos, algo que puede resultar confuso, especialmente si tienes experiencia en lógica formal o filosofía.

He leído varias explicaciones sobre qué significan estos términos, y la que considero más clara es esta: en JavaScript, cada valor no booleano tiene una propiedad booleana implícita que se activa cuando se le pide que se comporte como un booleano. Esto ocurre, por ejemplo, cuando comparas ese valor con un booleano.

Dado que no se pueden comparar directamente manzanas con peras, cuando JavaScript necesita comparar valores de diferentes tipos de datos, primero los «convierte» a un tipo de dato común. Valores como false, 0, null, undefined, cadenas vacías y NaN se convierten en false, pero solo dentro de la expresión en cuestión. Aquí tienes un ejemplo:

var someVar = 0;
alert(someVar == false); // se evalúa como true

En este caso, estamos comparando el número 0 con el booleano false. Dado que estos tipos de datos son incompatibles, JavaScript convierte internamente 0 a su equivalente booleano, que es false.

Quizás hayas notado que no mencioné las matrices vacías en la lista de valores «falsos» anterior. Las matrices vacías son casos curiosos: en realidad, se evalúan como verdaderas, pero cuando se comparan con un booleano, se comportan como si fueran falsas. ¿Confuso? Con razón. Aquí tienes otro ejemplo:

var someVar = []; // array vacío
alert(someVar == false); // se evalúa como true
if (someVar) alert('hello'); // se ejecuta el alert, así que someVar se evalúa como true

Para evitar este tipo de conversiones automáticas, puedes utilizar el operador de comparación estricta (===), que compara tanto el valor como el tipo de dato, a diferencia de ==, que solo compara valores. Así:

var someVar = 0;
alert(someVar == false); // se evalúa como true – cero es un valor falso
alert(someVar === false); // se evalúa como false – cero es un número, no un booleano

Este tema es extenso y recomiendo investigar más sobre la coerción de datos, que, aunque no es un concepto exclusivo de JavaScript, es especialmente relevante en este lenguaje. Si te interesa profundizar en cómo JavaScript maneja estas comparaciones internamente, te sugiero consultar la sección 11.9.3 de la especificación ECMA-262.

 

Diferencia entre Webhooks y APIs

Imagina que estás en una entrevista de trabajo y te preguntan: «¿Podrías explicar la diferencia entre Webhooks y APIs?». Pues hoy te traigo la respuesta a esa pregunta.

API (interfaz de programación de aplicaciones)

Piense en una API como un menú en un restaurante. Tú (el cliente) miras el menú y eliges lo que quieres comer. El camarero (API) toma tu pedido y te trae la comida (dato o servicio) que solicitaste. Es como si pidieras cosas cuando estés listo.

Webhook

Ahora imagina que estás en un restaurante mágico y la comida (datos) llega a tu mesa tan pronto como está lista sin que tengas que pedirla. La cocina (el otro sistema) envía los platos a tu mesa (tu aplicación) cuando están listos. No es necesario que preguntes por cada plato, simplemente aparece cuando está listo.

Entonces, con las API, puedes solicitar cosas cuando las quieres y con los webhooks, las cosas llegan automáticamente cuando están listas. Es como una experiencia de restaurante basada en un menú versus un restaurante que sabe exactamente lo quetú quieres y lo sirve sin que tengas la necesidad de pedirlo.

Uso en el mundo real de API y Webhooks

API (Interfaces de programación de aplicaciones):

  1. Integración de redes sociales: cuando inicias sesión en un sitio web usando tu cuenta de Facebook o Google, las API están en juego. Estas plataformas proporcionan API que permiten que aplicaciones de terceros accedan a los datos del usuario de forma segura.
  2. Pasarelas de pago: servicios como PayPal o Stripe utilizan API para permitir que los sitios web y las aplicaciones procesen pagos en línea.
  3. Aplicaciones meteorológicas: las aplicaciones que proporcionan actualizaciones meteorológicas en tiempo real suelen utilizar API de servicios meteorológicos para buscar y mostrar la información más reciente.
  4. Mapas y servicios de ubicación: aplicaciones como Google Maps utilizan API para proporcionar servicios de mapas y basados ​​en la ubicación.

Webhooks:

  1. Notificaciones en aplicaciones de chat: cuando recibe notificaciones en tiempo real en una aplicación de chat como Slack o Microsoft Teams, a menudo se facilita a través de webhooks.
  2. Actualizaciones de comercio electrónico: en las plataformas de compras en línea, los webhooks pueden activar actualizaciones como confirmaciones de pedidos, notificaciones de envío y cambios de inventario en tiempo real.
  3. Monitoreo y alertas: las herramientas de monitoreo de sistemas a menudo utilizan webhooks para notificar inmediatamente a los administradores o equipos cuando se detecta un problema o anomalía.
  4. Automatización en marketing: los webhooks se utilizan comúnmente en plataformas de automatización de marketing. Por ejemplo, cuando un cliente potencial completa un formulario en un sitio web, un webhook puede desencadenar acciones como enviar correos electrónicos de confirmación o actualizar un sistema CRM.

Algunos Términos de Ciberseguridad Interesantes

El otro día hablamos de los «Tipos de Virus que pueden Dañar tu Ordenador«, hoy toca aprender varios términos que nos ayudarán a comprender merjor la ciberseguridad.

  • Exploit: Se basa en aprovechar vulnerabilidades en sistemas o aplicaciones para lograr un comportamiento no autorizado. En sí, un exploit es un software, un fragmento de datos o una secuencia de comandos que aprovecha un error o una vulnerabilidad de una aplicación o sistema para provocar un comportamiento involuntario o imprevisto.
  • Buffer Overflow: Error en la programación que permite copiar gran cantidad de datos en un área de memoria más pequeña que los datos insertados. Los bytes sobrantes se almacenan en zonas de memoria adyacentes, sobrescribiendo su contenido original, que probablemente pertenecían a datos o código almacenados en memoria. Se puede utilizar esta vulnerabilidad para ejecutar código no autorizado.
  • Sniffing: Ciberataque utilizado para poder escuchar todo lo que sucede dentro de una red. Se suele utilizar para obtener información sensible como usuarios y contraseñas u otros datos confidenciales. Más información relacionada: Enlace.
  • Shellcode: Conjunto de órdenes  que suelen ser inyectadas en la pila de ejecución de un programa para conseguir que la máquina en la que reside se ejecute cierta acción escogida por el atacante. Relacionado con el Buffer Overflow y Exploit.
  • Rootkit: Software malicioso diseñado para darle a un hacker la capacidad de introducirse en un dispositivo y hacerse con el control del mismo. Su objetivo es que el malware no sea detectado durante el mayor tiempo posible para seguir teniendo acceso al sistema.
  • Fuzzing: Técnica de prueba de seguridad que consiste en enviar datos aleatorios, manipulados o maliciosos a una aplicación o sistema con el objetivo de descubrir vulnerabilidades. Está técnica fue desarrollada por el científico Barton Miller para determinar si los puntos débiles de un programa implican un riesgo de seguridad en software o en sistemas de ordenadores.

Poco a poco iremos comentando nuevos términos.

Tipos de Virus que pueden Dañar tu Ordenador

A continuación vamos a hablar de los virus más famosos y populares que pueden dañar tu ordenador y dejarte sin tus datos más valiosos e incluso algo peor.

  • Spyware: Recopila información que hay en tu dispositivo sin que el usuario sea consciente de nada. Más información relacionada: Enlace.
  • Ransomware: Bloquea el equipo y cifra los datos exigiendo un rescate (normalmente monetario) para devolver el acceso a la información. (Más información)
  • Adware: Muestra anuncios no deseados en cualquier interfaz de un ordenado u otro dispositivo.
  • Keylogger: Registra las pulsaciones de teclas que hagas para obtener información confidencia. Aquí tenéis un ejemplo: Enlace.
  • Troyano: Software que se hace pasar por legítimo solo para dañar sistemas.
  • Gusanos: Programas que se propagan sin archivos ejecutables, especialmente peligrosos en redes empresariales interconectadas.
  • Botnets: Infetan dispositivos y les controlan para realizar otros ataques, normalmente DDoS.
  • Malvertising: Anuncios que al darles clic infectan tu ordenador con malware.

¿Cómo funcionan los permisos en Linux?

En Linux, cuando se crea un archivo o directorio, se le asignan automáticamente ciertos permisos. Estos permisos se dividen en tres grupos: el usuario que creó el archivo (propietario), el grupo propietario del archivo (que puede incluir varios usuarios), y otros usuarios que no pertenecen al grupo propietario.

Los permisos se clasifican en lectura (r, read), escritura (w, write) y ejecución (x, execute). El permiso de lectura (r) permite ver el contenido de un archivo o directorio, mientras que el permiso de escritura (w) permite modificar el contenido de un archivo o directorio. El permiso de ejecución (x) convierte un archivo en ejecutable o, en el caso de directorios, permite acceder a ellos y usar comandos como cd.

Entonces, ¿cómo podemos verificar qué permisos están activos en un archivo? Realmente es algo tan sencillo como movernos con el comando cd al directorio que queramos y hacer un ls -l. Además podemos utilizar los comandos «chmod» y «chown» para cambiar los permisos y los dueños de los ficheros.

Por aquí os dejo un ejemplo de las combinaciones de permisos que se pueden tener:

¡Ciberacoso: Qué es y Cómo Protegerte y Protegerte a tí y a los Demás!

¿Sabías que el 37% de los jóvenes ha experimentado ciberacoso en algún momento? En la era digital, el acoso ha encontrado nuevas formas de afectar nuestras vidas. Pero ¡no te preocupes! Aquí te dejo una guía rápida para entender y combatir el ciberacoso.

¿Qué es el ciberacoso?

El ciberacoso es cualquier forma de acoso o bullying que ocurre a través de dispositivos digitales como teléfonos móviles, computadoras y tabletas. Esto puede incluir mensajes dañinos, rumores en redes sociales, y compartir imágenes o videos sin consentimiento. Es un problema serio que afecta a personas de todas las edades, pero con el que se debe tener especial precaución en niños y adolescentes.

Cuando el acoso ocurre en línea, la víctima puede sentirse atacada en todas partes, incluso en su propio hogar. Puede parecer que no hay escapatoria. Las consecuencias pueden ser duraderas y afectar a la víctima de diversas maneras:

  • Mentalmente: La víctima puede sentirse preocupada, avergonzada, estúpida e incluso asustada o enfadada.
  • Emocionalmente: Puede experimentar vergüenza y perder interés en actividades que antes disfrutaba.
  • Físicamente: La víctima puede sentirse fatigada debido a la pérdida de sueño y sufrir dolores de estómago y de cabeza.

El ciberacoso puede afectarnos de muchas formas. Sin embargo, es posible superarlo y recuperar la confianza en nosotros mismos y la salud.

Cómo Protegerte y Proteger a los Demás

Si piensas que te están acosando, lo primero que debes hacer es buscar ayuda de alguien en quien confíes, por ejemplo tu padre o tu madre, un familiar cercano u otro adulto de confianza. En la escuela puedes hablar con un consejero, el entrenador deportivo o tu maestro(a) favorito(a), ya sea online o en persona. Y si no te sientes cómodo(a) hablando con alguien que conoces, comunícate con una línea telefónica de ayuda en tu país para que puedas hablar con un consejero profesional.

Estas serían las medidas a tomar más importantes:

  • Configura tu privacidad: Asegúrate de que tus perfiles en redes sociales tengan configuraciones de privacidad estrictas. Solo permite que personas de confianza vean tus publicaciones.
  • No respondas: Si eres víctima de ciberacoso, evita responder a los mensajes ofensivos. Responder puede empeorar la situación.
  • Guarda evidencia: Mantén registros de cualquier incidente de ciberacoso. Capturas de pantalla y mensajes guardados pueden ser útiles si decides denunciar.
  • Bloquea y reporta: Usa las funciones de bloqueo y reporte que ofrecen la mayoría de las plataformas sociales. Esto puede detener al acosador y alertar a los administradores del sitio. Las empresas de redes sociales tienen la obligación de velar por la seguridad de sus usuarios.
  • Habla con alguien de confianza: No enfrentes el ciberacoso solo. Habla con amigos, familiares o un profesional de la salud mental.
  • Educa a los demás: Si ves a alguien que lo está cometiendo explícale que no es un comportamiento correcto e intenta apoyar y ayudar a la víctima. Informa a tus amigos y familiares sobre los riesgos del ciberacoso y cómo protegerse. ¡La educación es nuestra mejor defensa!

El ciberacoso no es un juego, y todos tenemos un papel en la lucha contra él. Comparte esta publicación para ayudar a difundir la conciencia y proteger a nuestra comunidad en línea. ¡Juntos podemos hacer la diferencia!

Codificación, cifrado y tokenización.

La codificación, el cifrado y la tokenización son tres procesos distintos que manejan los datos de diferentes maneras con diversos fines, como la transmisión de datos, la seguridad y el cumplimiento de las normativas. En los diseños de sistemas, tenemos que seleccionar el enfoque correcto para el manejo de información sensible.

Codificación

La codificación convierte los datos a un formato diferente utilizando un esquema que se puede invertir fácilmente. Algunos ejemplos son la codificación Base64, que codifica datos binarios en caracteres ASCII, lo que facilita la transmisión de datos a través de medios diseñados para tratar datos textuales. La codificación no sirve para proteger los datos. Los datos codificados pueden descodificarse fácilmente utilizando el mismo esquema sin necesidad de una clave.

Cifrado

El cifrado implica algoritmos complejos que utilizan claves para transformar los datos. El cifrado puede ser simétrico (utilizando la misma clave para cifrar y descifrar) o asimétrico (utilizando una clave pública para cifrar y una clave privada para descifrar).

El cifrado está diseñado para proteger la confidencialidad de los datos transformando los datos legibles (texto plano) en un formato ilegible (texto cifrado) mediante un algoritmo y una clave secreta. Sólo quien tenga la clave correcta puede descifrar y acceder a los datos originales.

Tokenización

La tokenización es el proceso de sustituir datos sensibles por marcadores de posición no sensibles llamados tokens. La correspondencia entre los datos originales y el token se almacena de forma segura en una bóveda de tokens. Estos tokens pueden utilizarse en varios sistemas y procesos sin exponer los datos originales, lo que reduce el riesgo de filtración de datos.

La tokenización se utiliza a menudo para proteger la información de tarjetas de crédito, números de identificación personal y otros datos sensibles. La tokenización es altamente segura, ya que los tokens no contienen ninguna parte de los datos originales y, por lo tanto, no pueden ser objeto de ingeniería inversa para revelar los datos originales. Es especialmente útil para cumplir normativas como PCI DSS.

¿Qué Son las VPN y Por Qué Necesitas una para Navegar Seguro?

¿Alguna vez te has preguntado si hay una forma mágica de hacer que tu vida en línea sea más segura y privada? ¡Pues la hay! La respuesta es una VPN, y en este post, te vamos a enseñar todo lo que necesitas saber sobre estas maravillas tecnológicas. Así que, siéntate, relájate y prepárate para descubrir cómo una VPN puede convertirse en tu mejor aliada digital.

Comencemos explicando lo que es una VPN. VPN son las siglas de «Virtual Private Network» o Red Privada Virtual en español. Básicamente, una VPN es un servicio que crea una conexión segura y encriptada entre tu dispositivo (puede ser un ordenador, móvil o tablet) y un servidor remoto que gestiona la VPN. Esto hace que todos los datos que se envían y reciben a través de tu dispositivo sean encriptados y, por tanto, mucho más difíciles de interceptar por terceros. De esta forma al acceder a cualquier sitio web, tu dispositivo primero se conecta a el servidor VPN y después es este el que accede al sitio indicado. Como el servidor VPN está en una red confiable y la conexión entre él y tu dispositivo está cifrada, la conexión es más segura.

¿Cómo Funciona una VPN?

Cuando te conectas a internet sin una VPN, tu conexión es directa: tu dispositivo se comunica con los sitios web o servicios que visitas, y esos sitios pueden ver tu dirección IP y potencialmente otros datos personales. Con una VPN, tu conexión pasa primero por un servidor seguro antes de llegar al destino final. Esto tiene varios efectos importantes:

  • Encriptación: Los datos se cifran, lo que significa que incluso si alguien logra interceptar tu conexión entre tu dispositivo y la VPN, no podrá leer la información transmitida.
  • Privacidad: Tu dirección IP real se oculta. En lugar de mostrar tu ubicación real, el sitio web que visitas verá la dirección IP del servidor VPN, protegiendo así tu identidad y ubicación.
  • Acceso a Contenidos Restringidos: Puedes acceder a contenido que puede estar bloqueado en tu región geográfica, como ciertos servicios de streaming o sitios web censurados. Si el servidor VPN está en una región que tiene acceso a ciertas web a las que tu no tienes acceso, podrás acceder a ellas sin problema.

¿Por Qué Necesitas una VPN?

Existen varias razones clave por las cuales deberías considerar usar una VPN:

  • Protección en Redes Públicas: Cuando te conectas a una red Wi-Fi pública, como en cafeterías, aeropuertos, hoteles,etc., tu conexión es vulnerable a ataques de ciberdelincuentes. Una VPN asegura tu conexión, protegiendo tus datos personales y financieros dentro de esa red pública, ya que viajan cifrados.
  • Evitar la Censura y la Vigilancia: En algunos países, el acceso a internet está estrictamente controlado y ciertos sitios web están bloqueados. Una VPN te permite eludir estas restricciones y acceder a internet libremente.
  • Seguridad en el Trabajo Remoto: Si trabajas desde casa o viajas frecuentemente por trabajo, una VPN puede proteger tus comunicaciones y garantizar que los datos sensibles de la empresa permanezcan seguros.
  • Ahorro de Dinero: En algunos casos, los precios de los vuelos, hoteles y otros servicios varían según tu ubicación. Usar una VPN puede ayudarte a obtener mejores ofertas al cambiar virtualmente tu ubicación.
  • Privacidad: Los proveedores de servicios de internet (ISP) pueden rastrear tu actividad en línea y vender esa información a anunciantes. Con una VPN, tu actividad se vuelve anónima y no pueden rastrear lo que haces en línea.

Sobre el último punto de «Privacidad» es importante indicar que esa privacidad que consigues con respecto a los proveedores de internet, la pierdes con respecto a los gestores de la VPN. Es decir, al encriptar los datos entre tu dispositivo y el servidor VPN cualquier persona o servicio que esté entre medias esa conexión, no podrá ver lo que haces ni a que te estas conectando. Pero ese cifrado existe entre tú y la VPN, por lo que el servidor de la VPN descifra esa conexión antes de llamar al servicio que sea preciso. Es por esto que es importante elegir bien el servidor de VPN al que nos conectamos y qué hacen con nuestros datos. En mi opinión, la mejor VPN es la que configuras tú mismo, aunque no siempre es posible.

Consideraciones al Elegir una VPN

No todas las VPN son iguales, y es importante elegir una que se adapte a tus necesidades y cuyas condiciones de uso nos aseguren, entre otras cosas la privacidad de nuestros datos. Aquí hay algunos factores a considerar:

  • Política de No Registros: Asegúrate de que el proveedor no guarde registros de tu actividad en línea.
  • Velocidad de Conexión: Algunas VPN pueden ralentizar tu conexión a internet. Opta por un servicio conocido por sus altas velocidades.
  • Compatibilidad: Verifica que la VPN sea compatible con todos tus dispositivos.
  • Seguridad y Encriptación: Asegúrate de que utilice protocolos de seguridad avanzados.
  • Ubicación de los Servidores: Cuantos más servidores tenga en diferentes países, mejor será tu acceso a contenido global.

En resumen, una VPN es una herramienta esencial para proteger tu privacidad y seguridad en línea. Ya sea que estés navegando por la web en casa, usando una red Wi-Fi pública o accediendo a contenido desde el extranjero, una VPN puede brindarte la tranquilidad de saber que tus datos están seguros y que tu actividad en línea es privada. No obstante, como en casi todas las medidas de seguridad, una VPN no garantiza la seguridad total en la red y deberemos escoger la VPN con precaución e implementar más medidas aparte de esta.

¿Ya estás usando una VPN? ¿Cuál ha sido tu experiencia?

¿Quieres ser programador y no sabes por dónde empezar?

¿Quieres ser programador y no sabes por dónde empezar? Hoy os traigo una guía donde podrás escoger el leguaje que quieres aprender o la categoría.

La web se llama roadmap.sh, puedes entrar aquí: https://roadmap.sh/. Esta plataforma proporciona rutas de aprendizaje detalladas y visuales, diseñadas para ayudarte a aprender de manera estructurada y eficiente.

Cada ruta está cuidadosamente organizada para proporcionar un enfoque paso a paso, asegurando que los estudiantes adquieran las habilidades necesarias en el orden más lógico y efectivo.

Además de ser una guía gratuita sobre los pasos a dar en el proceso de aprendizaje, tendrás guías para tópicos de la programación y vídeos explicatorios.

La nueva funcionalidad de Windows 11 que está oculta y poca gente conoce

Microsoft ha añadido una nueva función a Windows 11 que permite finalizar tareas directamente desde la barra de tareas, sin tener que acceder al administrador de tareas. Por defecto está desactivada, pero en este artículo te enseñamos a utilizarla.

Esta opción es muy útil para programas que tienen muchas ventanas con el mismo nombre y que en el administrador de tareas puede ser difícil encontrar cuál es la que quieres «Finalizar». De esta forma podrás seleccionar solo uno de los procesos y no todo el programa en caso de querer hacerlo.

Cuando seleccionas esta opción, se utiliza la función de finalización de tareas del Administrador de tareas para finalizar el proceso de esa aplicación específica. Esto te permite cerrar la aplicación sin abrir el Administrador de tareas. Microsoft también ha modificado la lógica de finalización de tareas de la barra de tareas para permitir que la función funcione sin problemas incluso cuando una aplicación falla con un cuadro de diálogo que dice «no responde».

Pasos

Para activarlo o desactivarlo, pruebe estos pasos:

  1. Abra la aplicación Configuración en su dispositivo Windows 11.
  2. Vaya a Sistema y luego a Para desarrolladores (o programadores).
  3. Busque la opción Finalizar tarea y cámbiela a Activado .
  4. Una vez habilitada esta configuración, puede finalizar tareas fácilmente haciendo clic derecho en el ícono de la aplicación en la barra de tareas y seleccionando «Finalizar tarea».