Publicado el Dejar un comentario

Javascript: instrucciones let y const.

Las instrucciones “let” y “const” son usadas en el lenguaje javascript para definir o declarar variables en un programa, pero se comportan de manera diferente. El código puede ser ejecutado en línea en algún sitio que lo permita como puede ser jsbin.

Instrucción let.

La instrucción “let” fue introducida en la version ES6 de Javascript. Sirve para declarar variables. Tiene las siguientes características:

  • Una variable declarada con “let” no puede ser vuelta a declarar en un mismo bloque.
  • Si una variable se define con “let”, debe ser declarada antes de usarse.
  • Las variables definidas con “let” tienen alcance de bloque.

Veamos algunos ejemplos de uso de “let”. El texto después de los dos diagonales (//) en el código muestra la respuesta que nos mostraría la consola:

/* Definición de variables con let */
let numero = 10;
let letra = 'a', letra2 = 'b';

console.log(numero); // 10
console.log(letra); // "a"
console.log(letra2); // "b"
/*
Variable declarada con let no puede ser vuelta a declarar con let
en un mismo bloque
*/
let precio = 10.00;
let precio = 20.00; //Error

/*
La segunda definición de la variable "precio" arrojaría el siguiente error:
"SyntaxError: Identifier 'precio' has already been declared"
*/
/*
Variable declarada con let si puede ser vuelta a declarar con let
en otro bloque y cada una conservará su valor.
*/
let precio = 10.00;
{
	let precio = 20.00; 
	console.log(precio); // 20
}
console.log(precio); // 10
/*
No se puede usar la variable antes de ser declarada con let.
*/
precio = 10.00; // Error
let precio = 15.00;

/*
La primera definición de precio sin let arrojaría el siguiente error:
"ReferenceError: Cannot access 'precio' before initialization"
*/
/*
Variable definida con let, sólo es válida en su bloque o
subbloques.
*/
let externo = 'externo';
{
  let interno = 'interno';
  {
    let interno2 = 'interno2';
    console.log(externo); // "externo"
    console.log(interno); // "interno"
    console.log(interno2); // "interno2"
  }
  console.log(externo); // "externo"
  console.log(interno); // "interno"
  console.log(interno2); // Error
}

/*
Al querer mostrar la variable "interno2" fuera del bloque del que se 
definió marcaría el siguiente error de variable no definida:
"ReferenceError: interno2 is not defined"
*/

Instrucción const.

La instrucción “const”, al igual que “let”, fue introducida en la versión ES6 de Javascript. Sirve para declarar o definir una variable cuyo valor no queremos que cambie. Tiene las siguientes características:

  • Variables definidas con “const” no pueden ser redeclaradas en un mismo bloque.
  • La variable declarada con “const” no puede ser reasignada.
  • El alcance de una variable definida con “const” es de bloque.

Enseguida veremos códigos de ejemplo de su uso:

/*
Variables declaradas con const no puedes ser redeclaradas en 
un mismo bloque.
*/

const numero = 10;
const numero = 30; // Error

/*
La última linea marcaría error. Marcaría que la variable 
numero ya fue definida o declarada:
"SyntaxError: Identifier 'numero' has already been declared"
*/
/*
Variables declaradas con const pueden ser redeclaradas en 
bloques distintos.
*/
const numero = 10;
{
  const numero = 20;
  console.log(numero); // 20
}
console.log(numero); // 10
/*
Variables declaradas con const no pueden ser reasignadas, 
es decir volverles a asignar un valor.
*/

const numero = 10;
numero = numero + 1; // Error

/*
Al queres asignarle un valor a la variable declarada con 
const marcaría que no s epuede asignar valor a una 
variable constante:
"TypeError: Assignment to constant variable." 
*/	
/*
Variable definida con const, sólo es válida en su bloque o
subbloques.
*/
const externo = 'externo';
{
  const interno = 'interno';
  {
    const interno2 = 'interno2';
    console.log(externo); // "externo"
    console.log(interno); // "interno"
    console.log(interno2); // "interno2"
  }
  console.log(externo); // "externo"
  console.log(interno); // "interno"
  console.log(interno2); // Error
}

/*
La última linea del código marcaría que la constante interno2 
no está definida porque está fuera del bloque en que se definió:
"ReferenceError: interno2 is not defined" 
*/	

Cuando una variable tipo objeto o arreglo (array) es definido con “const”, no puede ser reasignada, sin embargo los valores de los elementos que contiene el arreglo o las propiedades del objeto si pueden ser cambiados.

/*
Cuando una variable tipo arreglo es definida con const no puede ser
reasignada, sin embargo su contenido puede ser cambiado.
*/

const numeros = [1, 2, 3];
console.log(numeros);
numeros[0] = 5;
console.log(numeros);

/*
Cuando una variable tipo objeto es definida con const no puede ser
reasignada, sin embargo sus propiedades pueden ser cambiadas.
*/

const carro = {marca: 'Kia', color: 'gris', modelo: 2021};
console.log(carro);
carro.color = 'rojo'
console.log(carro);

/*
El código anterior arrojaría los siguientes resultados:

[1, 2, 3]
[5, 2, 3]
[object Object] {
  color: "gris",
  marca: "Kia",
  modelo: 2021
}
[object Object] {
  color: "rojo",
  marca: "Kia",
  modelo: 2021
}

*/

Se sugiere utilizar const cuando se definen funciones, objetos, arreglos y expresiones regulares.

Espero y esta entrada les sea útil. Cualquier observación o duda, déjalo en los comentarios. ¡Hasta pronto!

Publicado el Dejar un comentario

Windows 10. Activar El Cliente SSH.

cliente ssh

Las nuevas versiones de Windows 10 cuentan ya con un Cliente SSH. ¿Pero qué es un Cliente SSH? Un “Cliente SSH” es un programa o aplicación que se ejecuta en tu equipo y que implementa el protocolo SSH para hacer conexiones seguras a servicios en una red.

SSH, “Secure Shell” en inglés o algo así como “Intérprete de Comandos Seguro” en español, es un protocolo de comunicación seguro que nos permite acceder a servicios en una red de forma segura ya que la información viaja “cifrada”, es decir, en forma no legible para los humanos. El cifrado de la información sirve para que la información que enviamos a través de la red como nuestro usuario y contraseña, no pueda ser leída por otros usuarios dentro de la misma red.

En los equipos con sistema operativo Linux o Unix es muy común que por defecto cuenten tanto con un cliente SSH como con un servidor SSH. Con la era de los servicios en la “nube” y el internet, el sistema operativo Windows 10 ya incluye tanto con un cliente como con un servidor SSH, sin embargo no están habilitados por defecto. En la siguiente sección vamos a ver como habilitar el cliente SSH.

Habilitar el Cliente SSH en Windows 10.

Al parecer en las primeras versiones de Windows 10 no traían el cliente SSH, sin embargo las nuevas actualizaciones y versiones si la incluyen. Asegúrate de haber instalado las últimas actualizaciones antes de proceder.

  1. Presiona las teclas “Windows” + “I” (i mayúscula) para acceder a la menú de “Configuración” de Windows.
Menú de configuración de Windows 10.

2. En el menú de “Configuración” selecciona “Aplicaciones”, encerrado con rojo en la imagen anterior.

3. Aparece la ventana de “Aplicaciones y características”. Selecciona la liga “Características opcionales”.

“Características opcionales” en “Aplicaciones y características”.

4. Aparece la ventana “Características opcionales”. Presione el botón “Agregar una característica”.

“Agregar una característica” de Windows 10.

5. Aparecerá la ventana “Agregar una característica opcional”. Ahí , en el cuadro de texto de búsqueda “Buscar una característica opcional disponible” o “Encuentra una característica opcional disponible” , escriba las palabras “Cliente OpenSSH” o sólo “OpenSSH”.

Buscar característica opcional.

6. En la lista que aparecerá en la parte de abajo, marque el cuadro al lado de la opción “Cliente OpenSSH” o “Cliente de OpenSSH” y oprima el botón Instalar.

7. Iniciará la instalación del Cliente OpenSSH. Puede tardar un poco. Espere hasta que la etiqueta “Instalando” cambie a “Instalado” y la barra, en este caso gris, se torne azul completamente.

Instalando Cliente OpenSSH.

8. Una vez instalado, cierre la ventana de “Configuración” de Windows.

9. Para comprobar que fue instalado correctamente, abra una ventana “Símbolo del sistema” y escriba “ssh” y presione la tecla “Intro”. Deberá aparecer un mensaje como se muestra en la imagen siguiente.

Probando el cliente SSH.

Espero y les sea útil. ¡Hasta la próxima!

Publicado el Dejar un comentario

SQL Básico. Consultando varias tablas: Left Join.

En la sección anterior vimos la cláusula INNER JOIN que combina dos tablas por un campo en común. En sesta sección veremos el uso de la cláusula LEFT JOIN para encontrar filas de una tabla que no tengan filas coincidentes en otra con la que se relaciona.

Revisa la estructura de las tablas “Artist” que contiene datos de los artistas y la tabla “Album” que contienen datos de los álbumes que han hecho los artistas.

Estructura de la tabla “Artist”.
Estructura de la tabla “Album”.

Como puedes observar, ambas tablas se relacionan por el campo o columna “ArtistId”. En la tabla “Artist” este campo es su identificador o llave primaria (“primary key” en inglés) , mientras que en la tabla “Album” la misma columna se le conoce como “llave foránea” (“foreign key” en inglés). Las llaves foráneas de una tabla “apuntan” a las llaves primarias de otras tablas. En la sección pasada vimos estos casos y relacionamos o combinamos las tablas por este tipo de columnas.

Antes de entrar de lleno al la cláusula LEFT JOIN vamos a unir ambas tablas con la cláusula INNER JOIN para destacar que cuando usamos INNER JOIN sólo obtenemos las filas de ambas tablas que tienen relación. Escribe y ejecuta la siguiente sentencia SQL:

“Inner Join” entre “Artist” y “Album”.

La consulta anterior combina o une las tablas “Artist” y “Album” mediante la columna “ArtistId” de ambas tablas siempre y cuando sus valores coincidan o sean iguales. Al final ordena los resultados por la columna “ArtistId” de “Artist”. Obtenemos 347 filas.

Deslízate hacia adelante en los resultados hasta que encuentres los registros que se muestran en la imagen anterior que muestra la consulta y los resultados. Aunque los resultados están ordenados por el identificador de la tabla “Artist”, de menor a mayor, vemos que los valores no son consecutivos, los encerrados en con rojo en la imagen. Del identificador 24 se “salta” al 27, del 27 se “salta” al 36 y así. ¿Por qué existen esos saltos? ¿No existen filas con esos identificadores en la tabla “Artist”? Estas preguntas las contestaremos con la siguiente consulta, escríbela y ejecútala:

“Left Join” entre “Artist” y “Album”.

Ahora unimos ambas tablas con la cláusula LEFT JOIN y usamos la misma condición en su cláusula ON. Conservamos el orden por la columna identificador de la tabla “Artist”. Si observas ahora el resultado nos arroja más filas, 418, a diferencia de cuando aplicamos el INNER JOIN que arrojó 347.

Deslízate hacia abajo en los resultados hasta ubicarte en las filas marcadas con rojo en la imagen de los resultados de la consulta que hicimos con INNER JOIN.

Resultados del “Left Join”.

Puedes observar que si existen filas en la tabla “Artist” con los valores 25, 26, 28 al 36, etc. en su columna “ArtistId” que no aparecieron en la consulta INNER JOIN que ejecutamos. También observa que las columnas de los resultados que pertenecen a la tabla “Album” no tienen valores, es decir tienen valores nulos (“NULL”). Estas columnas aparecen marcadas con rojo en la imagen.

Aquí radica la diferencia entre la cláusula INNER JOIN y LEFT JOIN, que aunque las dos unen o combinan dos tablas, INNER JOIN sólo mostrará las filas que cumplan con la condición especificada en su cláusula ON mientras que LEFT JOIN, como su nombre lo indica, mostrará todas las filas de la tabla que se encuentre a la izquierda (“left” en inglés”) cumpla o no cumpla con la condición de su cláusula ON. Si las filas de la tabla a la izquierda no tienen coincidencia con alguna fila de la tabla a la derecha de la cláusula LEFT JOIN, de todas forma aparecerán en los resultados de la consulta y las columnas pertenecientes a la tabla a la izquierda de la cláusula se rellenarán con valores nulos como observamos.

Conociendo el comportamiento de la cláusula LEFT JOIN, queremos encontrar aquellos artistas que no tenga un álbum de música asociado, es decir, las filas en la tabla “Artist” que el valor de su identificador, columna “ArtistId”, no se encuentre en la tabla “Album”. Escribe y ejecuta la siguiente sentencia SQL:

Mostrando artistas sin álbum.

Observa que a la consulta original le agregamos la cláusula WHERE para que sólo nos muestre en los resultados las filas que regrese con valor nulo en la columna “al.AlbumId”. Esto lo logramos comparando dicha columna con el operador “IS NULL”.

El operador “IS NULL” es usado cuando queremos sabe si el valor de un campo no tiene valor o esta nulo. No use el operador de comparación “=” (igual) con valores nulos.

Tomamos la columna identificador de “Album” ya que las columnas que son identificadores o llaves primarias, nunca tienen valor nulo.

Existen 71 artistas o filas que no tienen un álbum asociado en la base de datos. Como ejercicio, modifica la consulta para que sólo muestre las columnas de la tabla “Artist” ya que como vemos en los resultados de la consulta anterior las columnas de la tabla “Album” tienen todas valores nulos. ¡Hasta pronto!

IR A LA PAGINA DEL CURSO.