One place for hosting & domains

      través

      Cuatro métodos para realizar búsqueda a través de matrices en JavaScript


      En JavaScript, hay muchas maneras útiles de encontrar elementos en matrices. Siempre puede recurrir al bucle básico for, pero con ES6+ hay muchos métodos para recorrer la matriz y encontrar lo que necesita con facilidad.

      Con tantos métodos diferentes, ¿cuál se debería utilizar y en qué caso? Por ejemplo, al realizar una búsqueda en una matriz, ¿quiere saber si un elemento específico está en la matriz? ¿Necesita el índice del elemento o el elemento en sí?

      Con cada método diferente que cubriremos, es importante comprender que todos estos métodos están integrados en Array.prototype. Eso significa que simplemente necesita encadenarlos a cualquier matriz con notación de punto. Esto también significa que estos métodos no están disponibles en objetos o cualquier otra cosa que no sean matrices (aunque hay superposición con cadenas).

      Observemos los siguientes métodos de matriz:

      includes

      const alligator = ["thick scales", 80, "4 foot tail", "rounded snout"];
      
      alligator.includes("thick scales"); // returns true
      

      El método .includes() devuelve un valor booleano y es ideal para indicarle si un elemento existe o no en una matriz. Da una simple respuesta de verdadero true o falso false. Esta es la sintaxis básica:

      arr.includes(valueToFind, [fromIndex]);
      

      Como ve en nuestro ejemplo, solo obtuvimos un parámetro: valueToFind. Este es el valor que debe coincidir en la matriz. El valor opcional fromIndex es un número que indica qué índice debería comenzar a buscar (por defecto es 0, por lo que realiza una búsqueda en toda la matriz). Por lo tanto, dado que en nuestro ejemplo el elemento ‘thick scales’ está en el índice 0, lo siguiente sería falso: alligator.includes('thick scales', 1); ya que comienza a buscar desde el índice 1 en adelante.

      Ahora, hay algunas cosas importantes a tener en cuenta. Este método .includes() utiliza una comparación estricta. Eso significa que, del ejemplo anterior, lo siguiente debería devolver falso: alligator.includes('80'); eso se debe a que aunque 80 == '80' es verdadero, 80 === '80' es falso: diferentes tipos no pasarán la comparación estricta.

      find

      ¿Cuál es la diferencia entre los métodos .find() e includes()? Si en nuestro ejemplo solo cambiamos el texto “includes” por “find”, obtendremos este error:

      Uncaught TypeError: thick scales is not a function
      

      Eso se debe a que el método find requiere una función para ser aprobado. Esto se debe a que el método find no usa solo el operador de comparación simple como en el caso del método “includes()”. En vez de eso, pasará cada elemento a su función y verá si devuelve verdadero o falso. Aunque esto funcione: alligator.find(() => 'thick scales');, probablemente sea recomendable poner su propio operador de comparación en la función para que devuelva cualquier valor relevante.

      const alligator = ["thick scales", 80, "4 foot tail", "rounded snout"];
      
      alligator.find(el => el.length < 12); // returns '4 foot tail'
      

      Esta sencilla función en nuestro método find busca cada elemento de la matriz, con el alias de ‘el’ que se le asigne y se detiene cuando encuentra el primero que sea verdadero. En nuestro caso, verdadero tiene una propiedad de longitud inferior a 12 (los números no tienen una propiedad de longitud). Por supuesto, puede hacer que esta función sea tan compleja como sea necesario, haciendo que su condición de verdadero se ajuste a sus necesidades.

      Observe también que esto no devolvió true. El método find no devuelve un booleano, pero en vez de eso devuelve el primer elemento que coincida. Si no hay un elemento que coincida, ya que no hay nada que cumpla con los criterios definidos en su función, devolverá undefined. También tenga en cuenta que devuelve solo la primera coincidencia, por lo que si hay más de un elemento en la matriz que cumpla con los criterios, solo obtendrá la primera de ellas. En nuestro ejemplo, si hubiera otra cadena de longitud inferior a 12 después de ‘4 foot tall’, no cambiaría nuestro resultado.

      En nuestro ejemplo, solo usamos la devolución de llamada con un parámetro. También puede añadir parámetros para hacer referencia al índice del elemento actual. Otro parámetro puede ser toda la matriz por sí misma, pero se usa de manera muy poco frecuente. Aquí hay un ejemplo usando el índice:

      alligator.find((el, idx) => typeof el === "string" && idx === 2); // returns '4 foot tall'
      

      Sabemos que en nuestra matriz, hay 3 elementos diferentes que cumplen la primera condición (typeof el === ‘string’). Si esa fuera nuestra única condición, devolverá la primera, ‘thick scales’. Pero la diferencia es que solo uno tiene el índice de 2, es decir ‘4 foot tall’.

      Hablando de índices, un método de matriz similar es .findIndex(). Este método también recibe una función, pero como se podrá imaginar, devuelve el índice del elemento que coincida en vez del elemento en sí.

      indexOf

      const alligator = ["thick scales", 80, "4 foot tail", "rounded snout"];
      
      alligator.indexOf("rounded snout"); // returns 3
      

      Al igual que el método .includes(), .indexOf() utiliza una comparación estricta, no una función como en el caso del método .find(). Pero, a diferencia de includes(), devuelve el índice del elemento, en vez de un booleano. También puede indicar a partir de qué índice en la matriz comenzar a buscar.

      indexOf() es un método muy útil. Es rápido y fácil, puede decirle dónde se encuentra el elemento en la matriz y puede indicar si dicho elemento existe. ¿Cómo le indica si el elemento existe? Básicamente, podemos saber que el elemento existe si devuelve un número positivo y si devuelve -1, indicaría que el elemento no existe.

      alligator.indexOf("soft and fluffy"); // returns -1
      alligator.indexOf(80); // returns 1
      alligator.indexOf(80, 2); // returns -1
      

      Como se puede ver, si bien podríamos usar los métodos find() o findIndex() para darnos la misma información, en este método se escribe mucho menos. No tenemos que escribir una función para realizar la comparación, ya que ya está dentro del método indexOf.

      Al igual que los demás métodos, indexOf() también devuelve el índice del primer elemento que encuentra. JavaScript nos proporciona un método de matriz alternativo .lastIndexOf(). Como se podrá imaginar, este método hace lo mismo que indexOf(), pero a partir del último índice de la matriz y funciona al revés. También puede especificar un segundo parámetro, pero recuerde que los índices no cambian solo por el hecho de usar un método diferente.

      const alligator = ["thick scales", 80, "4 foot tail", "rounded snout", 80];
      
      alligator.indexOf(80); // returns 1
      alligator.lastIndexOf(80); // returns 4
      alligator.indexOf(80, 2); // returns 4
      alligator.lastIndexOf(80, 4); // returns 4
      alligator.lastIndexOf(80, 3); // returns 1
      

      Bonus: filter

      const alligator = ["thick scales", 80, "4 foot tail", "rounded snout", 80];
      
      alligator.filter(el => el === 80); //returns [80, 80]
      

      El método filter() es como el método find(), en el sentido de que requiere una función pasada y una condición para lo que se devolverá. La principal diferencia es que filter() siempre devuelve una matriz, incluso si solo hay un elemento que coincida. Pero devolverá todos los elementos que coincidan, mientras que find() solo devuelve la primera coincidencia.

      Lo importante de filter es que devuelve todos los elementos que coinciden con sus criterios. Podría ser mi punto de vista, pero uno se podría confundir pensando “estos son los elementos que quiero filtrar out”, cuando realmente está indicando los elementos que desea filtrar in.

      Conclusión

      El método que me parece más sencillo de utilizar al realizar una búsqueda es el método find(), pero, como podrá ver, en realidad depende de su caso.

      • ¿Solo necesita saber si existe? Utilice .includes().
      • ¿Necesita obtener el elemento en sí? Utilice .find() o .filter() para buscar varios elementos.
      • ¿Necesita encontrar el índice del elemento? Utilice .indexOf() o findIndex() para realizar una búsqueda más compleja.

      Las matrices en los ejemplos presentados aquí fueron muy sencillas. Es posible que se encuentre con una matriz de objetos. A continuación, presentamos algunos ejemplos básicos para navegar por la jungla de objetos anidados:

      const jungle = [
        { name: "frog", threat: 0 },
        { name: "monkey", threat: 5 },
        { name: "gorilla", threat: 8 },
        { name: "lion", threat: 10 }
      ];
      
      // break the object down in order to use .includes() or .indexOf()
      const names = jungle.map(el => el.name); // returns ['frog', 'monkey', 'gorilla', 'lion']
      console.log(names.includes("gorilla")); // returns true
      console.log(names.indexOf("lion")); // returns 3 - which corresponds correctly assuming no sorting was done
      
      // methods we can do on the array of objects
      console.log(jungle.find(el => el.threat == 5)); // returns object - {name: "monkey", threat: 5}
      console.log(jungle.filter(el => el.threat > 5)); // returns array - [{name: "gorilla", threat: 8}, {name: 'lion', threat: 10}]
      



      Source link

      Cómo configurar Jupyter Notebook con Python 3 en Ubuntu 20.04 y conectar a través de los túneles SSH


      Introducción

      Jupyter Notebook es una aplicación web de código abierto que le permite crear y compartir código interactivo, visualizaciones y mucho más. Esta herramienta puede utilizarse con varios lenguajes de programación, como Python, Julia, R, Haskell y Ruby. A menudo se utiliza para trabajar con datos, modelos estadísticos, y aprendizaje automático.

      Jupyter Notebooks (o simplemente “Notebooks”) es un conjunto de documentos producidos por la aplicación Jupyter Notebook, la cual contiene tanto elementos de código informático como de texto enriquecido (párrafos, ecuaciones, cifras y enlaces, entre otros) que ayudan a presentar y compartir la investigación que puede reproducirse. Por tanto, puede ser una herramienta excelente para las presentaciones basadas en datos o basadas en programación, o como herramienta de enseñanza.

      Este tutorial mostrará cómo configurar Jupyter Notebook para que se ejecute desde un servidor Ubuntu 20.04, y demostrará cómo conectar y usar Notebook desde un equipo local a través de la tunelación. Al final de esta guía, podrá ejecutar código de Python 3 usando un Jupyter Notebook en ejecución en un servidor remoto.

      Requisitos previos

      Para completar esta guía, debe disponer de una instancia de servidor de Ubuntu 20.04 nueva con un firewall básico y un usuario no root con privilegios sudo configurados. Puede aprender a configurar esto en nuestro tutorial de configuración inicial para servidores.

      Paso 1: Configurar Python

      Para iniciar el proceso, instalaremos las dependencias que necesitamos para nuestro entorno de programación de Python desde los repositorios de Ubuntu. Ubuntu 20.04 viene preinstalado con Python 3. Usaremos el pip del administrador de paquetes de Python para instalar componentes adicionales un poco más tarde.

      Necesitaremos primero actualizar el índice de paquetes local apt y luego descargaremos e instalaremos los paquetes:

      A continuación, instale pip y los archivos de encabezado de Python, utilizados por algunas dependencias de Jupyter:

      • sudo apt install python3-pip python3-dev

      Ahora podemos proceder a configurar un entorno virtual de Python en el que instalaremos Jupyter.

      Paso 2: Crear un entorno virtual de Python para Jupyter

      Ahora Python 3, sus archivos de encabezado y pip están listos para comenzar, podemos crear un entorno virtual de Python para administrar nuestros proyectos. Instalaremos Jupyter en este entorno virtual.

      Para ello, primero necesitaremos acceso al comando virtualenv, que podemos instalar con pip.

      Actualice pip e instale el paquete escribiendo lo siguiente:

      • sudo -H pip3 install --upgrade pip
      • sudo -H pip3 install virtualenv

      El indicador -H garantiza que la política de seguridad defina la variable de entorno home como el directorio de inicio del usuario de destino.

      Con virtualenv ya instalado, podemos comenzar a crear nuestro entorno. Cree un directorio en el que podamos guardar los archivos de nuestro proyecto y posiciónese en él: Daremos a este directorio el nombre my_project_dir, pero deberá usar un nombre que sea significativo para usted y para el trabajo que está desarrolle.

      • mkdir ~/my_project_dir
      • cd ~/my_project_dir

      En el directorio del proyecto, crearemos un entorno virtual de Python. A los efectos de este tutorial, le daremos el nombre my_project_env, pero debería asignarle uno que se relacione con su proyecto.

      • virtualenv my_project_env

      Con esto, se creará un directorio llamado my_project_env dentro de su directorio my_project_dir. Dentro de este, se instalarán una versión local de Python y una versión local de pip. Podemos usar esto para instalar y configurar un entorno aislado de Python para Jupyter.

      Antes de instalar Jupyter, debemos activar el entorno virtual. Puede hacerlo escribiendo lo siguiente:

      • source my_project_env/bin/activate

      Su línea de comandos cambiará para indicar que ahora realizará operaciones en un entorno virtual de Python. Su línea de comandos ahora leerá algo como esto: (my_project_env)user@host:~/my_project_dir$.

      En este momento, está listo para instalar Jupyter en este entorno virtual.

      Paso 3: Instalar Jupyter

      Una vez activado su entorno virtual, instale Jupyter con la instancia local de pip.

      Nota: Cuando se active el entorno virtual (cuando (my_project_env) se encuentre al inicio de su línea de comandos), use pip en lugar de pip3, incluso si emplea Python 3. La copia del entorno virtual de la herramienta siempre se llama pip, independientemente de la versión de Python.

      En este punto, habrá instalado con éxito todo el software necesario para ejecutar Jupyter. Ahora podremos iniciar el servidor de Notebook.

      Paso 4: Ejecutar Jupyter Notebook

      Ya dispone de todo lo que necesita para ejecutar Jupyter Notebook. Para ejecutarlo, introduzca el siguiente comando:

      Se mostrará un registro de las actividades de Jupyter Notebook en el terminal. Cuando se ejecuta Jupyter Notebook, este funciona en un número de puerto específico. Normalmente, el primer notebook que ejecute usará el puerto 8888. Para verificar el número de puerto específico en el que se ejecuta Jupyter Notebook, consulte el resultado del comando utilizado para iniciarlo:

      Output

      [I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret [I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir [I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at: [I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72 [I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser. [C 21:23:21.361 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

      Si ejecuta Jupyter Notebook en una computadora local (no en un servidor), puede dirigirse a la URL que se muestra para conectarse a Jupyter Notebook. Si ejecuta Jupyter Notebook en un servidor, deberá establecer conexión con este usando túneles SSH como se indica en la siguiente sección.

      En este punto, podrá mantener la conexión SSH abierta y Jupyter Notebook en ejecución, o bien cerrar la aplicación y volver a ejecutarla una vez que configure los túneles SSH. Optaremos por detener el proceso de Jupyter Notebook. Lo ejecutaremos de nuevo una vez que configuremos los túneles SSH. Para detener el proceso de Jupyter Notebook, presione CTRL+C, escriba Y y luego presione ENTER para confirmar. Se mostrará el siguiente resultado:

      Output

      [C 21:28:28.512 NotebookApp] Shutdown confirmed [I 21:28:28.512 NotebookApp] Shutting down 0 kernels

      A continuación, configuraremos un túnel SSH para poder acceder al Notebook.

      Paso 5: Establecer conexión con el servidor usando túneles SSH

      En esta sección, mostraremos cómo establecer una conexión con la interfaz web de Jupyter Notebook usando túneles SSH. Debido a que Jupyter Notebook se ejecutará en un puerto específico en el servidor (como el :8888 y el :8889, entre otros), los túneles SSH le permiten establecer conexión con el puerto del servidor de forma segura.

      En los dos apartados siguientes, se describe la forma de crear un túnel SSH desde 1) un Mac o Linux y 2) Windows. Consulte el apartado que corresponda a su computadora local.

      Túeneles SSH con una Mac o Linux

      Si está usando un equipo local Mac o Linux, los pasos para crear el túnel SSH son similares a usar SSH para iniciar sesión en su servidor remoto, excepto que hay parámetros adicionales en el comando ssh. En este apartado, se describirán los parámetros adicionales necesarios en el comando ssh para implementar un túnel con éxito.

      Esta implementación es posible ejecutando el siguiente comando SSH en una nueva ventana del terminal local:

      • ssh -L 8888:localhost:8888 your_server_username@your_server_ip

      El comando ssh abre una conexión SSH, pero -L especifica que se debe reenviar el puerto determinado en el host local (cliente) al host y puerto determinados en el lado remoto (servidor). Esto significa que todo lo que está en ejecución en el segundo número de puerto (por ejemplo 8888) en el servidor aparecerá en el primer número de puerto (por ejemplo 8888) en su computadora local.

      Cambie de forma opcional el puerto 8888 por uno que elija para evitar usar un puerto ya utilizado por otro proceso.

      server_username es su nombre de usuario (por ejemplo sammy) en el servidor que creó y your_server_ip es la dirección IP de su servidor.

      Por ejemplo, para el nombre de usuario sammy y la dirección del servidor 203.0.113.0, el comando sería el siguiente:

      • ssh -L 8888:localhost:8888 sammy@203.0.113.0

      Si no se produce ningún error después de ejecutar el comando ssh -L, podrá desplazarse a su entorno de programación y ejecutar Jupyter Notebook:

      Verá un resultado con una URL. Desde un navegador web en su máquina local, abra la interfaz web de Jupyter Notebook con la URL que comienza con http://localhost:8888. Asegúrese de que el número de token esté incluido o ingrese la cadena de número de token cuando se solicite en http://localhost:8888.

      Túneles SSH con Windows y Putty

      Si usa Windows, puede crear un túnel SSH usando Putty.

      Primero, ingrese la dirección URL o IP del servidor como el nombre de host, como se muestra:

      Establecer el nombre de host para el túnel SSH

      A continuación, haga clic en SSH en la parte inferior del panel izquierdo, para expandir el menú, y luego en Tunnels. Introduzca el número del puerto local que quiera usar para acceder a Jupyter en su máquina local. Seleccione 8000, o un número mayor, para evitar los puertos utilizados por otros servicios y fije el destino en localhost:8888, donde :8888 sea el número del puerto en el que se ejecute Jupyter Notebook.

      Luego, haga clic en el botón Add. Deberían aparecer los puertos en la lista de Forwarded ports:

      Lista de Forwarded ports

      Por último, haga clic en el botón Open para establecer conexión con el servidor a través de SSH y crear un túnel entre los puertos deseados. Diríjase a http://localhost:8000 (o cualquier puerto que haya elegido) en un navegador web para conectarse al Jupyter Notebook que funciona en el servidor. Asegúrese de que el número de token esté incluido, o ingrese la cadena de número de token cuando se solicite en http://localhost:8000.

      Paso 6: Usar Jupyter Notebook

      Esta sección repasa el uso básico de Jupyter Notebook. Si Jupyter Notebook aún no está en ejecución, inícielo con el comando jupyter notebook.

      Con esto, debería establecer conexión con este usando un navegador web. Jupyter Notebook es una herramienta muy poderosa que dispone de muchas características. En esta sección se mostrarán algunas de las características básicas para que comience a usar Notebook. Jupyter Notebook mostrará todos los archivos y las carpetas en el directorio desde el que se ejecuta. Por ello, cuando trabaje en un proyecto asegúrese de iniciarlo desde el directorio del proyecto.

      Para crear un nuevo archivo de Notebook, seleccione New > Python 3 en el menú desplegable que se encuentra en la parte superior derecha:

      Crear un nuevo notebook de Python 3

      Con esto se abrirá un Notebook. Ahora podemos ejecutar el código de Python en la celda o cambiar la celda a lenguaje de marcado. Por ejemplo, cambie la primera celda para aceptar el lenguaje de marcado haciendo clic en Cell > Cell Type > Markdown en la barra de navegación de la parte superior. Con esto, podremos escribir notas usando el lenguaje de marcado e incluso incluir ecuaciones escritas en LaTeX disponiéndolas entre los símbolos de $$. Por ejemplo, escriba lo siguiente en la celda después del cambio a lenguaje de marcado:

      # First Equation
      
      Let us now implement the following equation:
      $$ y = x^2$$
      
      where $x = 2$
      

      Para convertir el marcado en texto con formato, pulse las teclas CTRL y ENTER. Debería obtener un resultado similar al siguiente:

      Resultados de lenguaje de marcado

      Puede utilizar las celdas de lenguaje de marcado para crear notas y documentar su código. Implementaremos esa ecuación e imprimiremos el resultado. Haga clic en la celda superior, luego pulse las teclas ALT y ENTER juntas para añadir una celda debajo. Introduzca el siguiente código en la nueva celda.

      x = 2
      y = x**2
      print(y)
      

      Para ejecutar el código, presione CTRL+ENTER. Obtendrá los siguientes resultados:

      Resultado de la primera ecuación

      Ahora podrá importar módulos y usar el Notebook como lo haría con cualquier otro entorno de desarrollo de Python.

      Conclusión

      ¡Felicitaciones! Ahora debería poder escribir código y notas de Python que puedan reproducirse en lenguaje de marcado usando Jupyter Notebook. Si desea acceder a una visita rápida de Jupyter Notebook desde la interfaz, seleccione Help > User Interface Tour en el menú de navegación superior para obtener más información.

      A partir de aquí, puede iniciar un proyecto de análisis y visualización de datos leyendo Análisis y visualización de datos con pandas y Jupyter Notebook en Python 3.



      Source link

      Cómo usar Visual Studio Code para desarrollo remoto a través del complemento Remote-SSH


      Introducción

      Visual Studio Code es un entorno de desarrollo integrado (IDE) popular para desarrolladores. Su gran selección de complementos, su diseño minimalista y la compatibilidad con diferentes plataformas hacen que sea una excelente opción para desarrolladores de todos los niveles. Este tutorial se centra en el uso del complemento Remote-SSH para habilitar el desarrollo remoto de software. Con este complemento, puede editar archivos en su estación de trabajo local y, a la vez, llevar adelante tareas de desarrollo como la ejecución de programas, pruebas de unidad o análisis estáticos en un servidor remoto.

      Hay muchas razones por las cuales esto puede ser beneficioso. Por ejemplo, es posible que tenga una estación de trabajo de Windows y desee realizar desarrollos con Windows, y que su código eventualmente funcione en Linux. Puede necesitar más memoria RAM o potencia de procesamiento que la que tiene su equipo actual, o querer mantener el código fuera de su equipo personal debido a una política empresarial o al deseo de mantener su estación de trabajo libre.

      A través de este tutorial, habilitará el complemento Remote-SSH, configurará Visual Studio Code para ejecutar código en el servidor remoto y ejecutará código desde su instalación local de Visual Studio Code en el servidor remoto.

      Requisitos previos

      Para seguir esta guía, necesitará lo siguiente:

      • Un equipo de desarrollo local con Windows, macOSX o Linux. Este tutorial no se aplica a dispositivos Chrome OS.
      • Visual Studio Code; puede descargarlo e instalarlo desde el sitio web oficial.
      • Un par de claves SSH generadas:
      • Un servidor Ubuntu 18.04 configurado siguiendo la guía de configuración inicial del servidor Ubuntu 18.04, incluyendo un usuario sudo no root y un firewall.

      Paso 1: Instalar el complemento Remote-SSH

      En el Mercado de extensiones, puede descargar extensiones compatibles y de terceros para diferentes herramientas y lenguajes de programación. Aquí buscará e instalará el complemento Remote-SSH.

      En el lado izquierdo del IDE hay una fila vertical de cinco iconos. El icono inferior (diseño de cuatro cuadrados en forma de cuadro, cuyo cuadrado superior derecho está apartado) es el del Mercado de extensiones:

      Ubicación del icono del Mercado de extensiones

      También puede acceder a esta sección pulsando Ctrl+Shift+X. Al abrir esta página, verá los complementos sugeridos para la descarga e instalación.

      Una vez que abra el Mercado de extensiones, escriba Remote-SSH en la barra de búsqueda de extensiones. Cuando encuentre el complemento, selecciónelo y luego haga clic en el botón verde Install para instalar la extensión.

      Búsqueda del complemento Remote-SSH

      La extensión quedará instalada. A continuación, configurará la extensión para poder establecer conexión con su servidor.

      Paso 2: Configurar el complemento Remote-SSH y establecer conexión con su servidor

      Ahora que instaló el complemento, puede configurarlo para establecer conexión con un servidor. Para hacerlo, necesitará la siguiente información:

      • El IP o el nombre de host del servidor.
      • El nombre de usuario con el que se conectará.
      • La clave privada que usará para autenticar su usuario.

      Usará esta información para crear un archivo de configuración de SSH que Visual Studio Code pueda usar para establecer una conexión SSH con el servidor, y así sincronizar archivos y ejecutar código en representación de usted. Creará esta configuración usando Visual Studio Code.

      Ahora que instaló el complemento Remote-SSH, verá un pequeño cuadro verde en la esquina inferior izquierda de la interfaz de Visual Studio Code. Si posa el mouse sobre el cuadro, se abrirá un elemento emergente con la leyenda Open a remote window. El botón tiene un signo “mayor que” ligeramente por debajo de un signo “menor que”, ><, como se muestra en la siguiente imagen:

      Botón verde de abrir una ventana remota de la IU

      Haga clic en el botón. Se mostrará un cuadro de diálogo en la parte superior central. Seleccione Remote-SSH: Open Configurar File… de la lista:

      Selección de configuración de SSH en la IU

      En el siguiente mensaje, se le preguntará qué archivo de configuración desea abrir. Si usa Windows, verá dos ubicaciones: una en su directorio personal de usuario y otra en el lugar de instalación de SSH. Al configurar el servidor, debe usar el archivo que se encuentra en el directorio de su usuario.

      Seleccione el archivo. Su editor abrirá el archivo config. Añada el siguiente código al archivo para definir la conexión con su servidor y sustituya las secciones resaltadas por la información de su servidor:

      config

      Host my_remote_server
          HostName your_server_ip_or_hostname
          User sammy
          IdentityFile /location/of/your/private/key
      

      Así es como funciona este archivo de configuración:

      • Host: especifica un nombre para su host. Esto le permite usar un nombre o una abreviatura en lugar de la dirección IP o el nombre de host completos cuando establezca conexión con el servidor.
      • HostName: nombre de host real del servidor, que es una dirección IP o un nombre de dominio plenamente cualificado.
      • User: usuario que desea usar para establecer conexión.
      • IdentityFile: ruta a su clave SSH privada. En los sistemas Mac y Linux, la encontrará en su directorio de inicio, en un directorio .ssh oculto que por lo general lleva el nombre id_rsa. Si usa Windows, habrá especificado una ubicación para guardar este archivo cuando lo creó usando putty-gen.

      Especifique los valores correspondientes en su archivo y guárdelo.

      De esta manera, Visual Studio Code quedará configurado y listo para establecer conexión con su servidor. Haga clic en el botón verde Open a remote window, en la esquina inferior izquierda, y seleccione Remote-SSH: Connect to host…

      Establecer conexión con el servidor desde Visual Studio Code

      Una vez que lo haga, todos los servidores disponibles y configurados se mostrarán en el menú desplegable. Seleccione el servidor con el que desea establecer conexión en esta lista.

      Si es la primera vez que establece conexión con el servidor desde su equipo, es probable que se muestre un cuadro de diálogo de verificación de la huella digital SSH, como el que aparece en la siguiente imagen:

      Confirmar su huella digital SSH

      Esto sirve para verificar que se establezca conexión con el servidor que desea. Puede hacerlo iniciando sesión en su servidor y ejecutando ssh-keygen -l -f /etc/ssh/ssh_host_key.pub para ver la huella digital del servidor. Si esta huella es la misma que la que se muestra en Visual Studio Code, efectivamente estará estableciendo conexión con el servidor que desea. Por lo tanto, podrá hacer clic en Continue.

      Visual Studio Code abre una nueva ventana por defecto cuando se realiza una nueva conexión. Se abrirá una ventana nueva con la pantalla de bienvenida. Si la conexión se estableció de forma correcta, verá SSH: your_ip_address_or_hostname en el cuadro verde de la esquina inferior izquierda. Esto significa que Visual Studio Code está conectado y se comunica con su servidor remoto.

      Conexión correcta de SSH

      Ahora que estableció la conexión, podrá ejecutar comandos y códigos desde su editor.

      Paso 3: Ejecutar código en el servidor remoto

      Ahora que el complemento Remote-SSH está configurado, es el momento de ejecutar código en su equipo remoto. Abra una ventana de terminal seleccionando Terminal, en la barra de navegación situada en la parte superior de la ventana de Visual Studio, y haciendo clic en New Terminal. También puede abrir una terminal presionando CTRL+Shift+`. La terminal que se abre corresponde a su servidor remoto, no a su equipo local.

      Cuando se abra la terminal, ejecute el siguiente comando para ver la dirección IP de su servidor y verificar que esté conectado a su servidor remoto:

      Verá el siguiente resultado en su terminal:

      Output

      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 16:cb:05:5b:30:f1 brd ff:ff:ff:ff:ff:ff inet your_server_ip brd your_broadcast_address scope global eth0 valid_lft forever preferred_lft forever ...

      Para probar la capacidad de ejecutar código de forma remota, cree un nuevo archivo de Python denominado hello.py en su editor. Cuando establezca conexión con su servidor remoto, todos los archivos creados a través de Visual Studio Code se guardarán en ese servidor, no en su equipo local.

      Añada el siguiente contenido al archivo:

      hello.py

      print("Hello Sammy!")
      

      Para ejecutar este programa en su servidor, abra una terminal en Visual Studio Code desde el menú de navegación o mediante la secuencia de teclas CTRL+Shift+`. Debido a que esta sesión de la terminal está conectada a su servidor remoto, debe implementar el siguiente comando en la terminal para ejecutar su programa hello.py:

      Se mostrará el resultado de su programa.

      Ejecutar su script de Python

      También puede ejecutar el archivo desde el menú contextual Debug seleccionando Run without Debugging.

      Nota: Si instaló extensiones de desarrollo en Visual Studio Code, como la de Python, deberá volver a instalarlas en su servidor a través del Mercado de extensiones. Si instaló estos complementos en Visual Studio Code previamente, cuando los vuelva a buscar, en la sección del Mercado se mostrará el mensaje Install on SSH: hostname. Siempre preste atención al contexto de desarrollo en el que se encuentre, ya que en él Visual Studio Code instalará sus complementos y creará sus archivos. Si intenta ejecutar su código sin haber instalado estos complementos, en la esquina inferior derecha de la pantalla se mostrarán cuadros de diálogo de error en los que se solicitará instalarlos en su servidor remoto. Una vez que los instale, es probable que deba volver a cargar Visual Studio Code. Cuando vuelva a iniciarlo, seguirá trabajando en el servidor remoto sin necesidad de volver a establecer conexión manualmente.

      Conclusión

      De esta manera, habrá configurado Visual Studio Code para realizar tareas de desarrollo en un servidor remoto con SSH. La ejecución remota con un IDE proporciona muchos beneficios. Entre ellos, la capacidad de probar rápidamente la forma en que su código se ejecuta en distintos sistemas operativos y con diferentes especificaciones de hardware. Mientras disponga de una conexión a Internet, podrá conectarse a su servidor y trabajar en su código desde cualquier computadora además de realizar tareas de desarrollo usando un entorno de Linux aun cuando Windows sea su sistema operativo principal.



      Source link