One place for hosting & domains

      Cómo instalar y usar Docker en Debian 9


      finid escribió una versión anterior de este tutorial.

      Introducción

      Docker es una aplicación que simplifica el proceso de administración de procesos de aplicación en contenedores. Los contenedores le permiten ejecutar sus aplicaciones en procesos con aislamiento de recursos. Son similares a las máquinas virtuales, pero los contenedores son más portátiles, más flexibles con los recursos y más dependientes del sistema operativo host.

      Para hallar una introducción detallada a los distintos componentes de un contenedor de Docker, consulte El ecosistema de Docker: Introducción a los componentes comunes.

      A través de este tutorial, instalará y usará Docker Community Edition (CE) en Debian 9. Instalará el propio Docker, trabajará con contenedores e imágenes, e introducirá una imagen en un repositorio Docker.

      Requisitos previos

      Para completar este tutorial, necesitará lo siguiente:

      Paso 1: Instalar Docker

      Es posible que la versión del paquete de instalación de Docker disponible en el repositorio oficial de Debian no sea la más reciente. Para asegurarnos de contar con la versión más reciente, instalaremos Docker desde el repositorio oficial de Docker. Para hacerlo, agregaremos una nueva fuente de paquetes y la clave GPG de Docker para garantizar que las descargas sean válidas, y luego instalaremos el paquete.

      Primero, actualice su lista de paquetes existente:

      A continuación, instale algunos paquetes de requisitos previos que permitan a apt usar paquetes a través de HTTPS:

      • sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

      Luego, añada la clave de GPG para el repositorio oficial de Docker en su sistema:

      • curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

      Agregue el repositorio de Docker a las fuentes de APT:

      • sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

      A continuación, actualice el paquete de base de datos con los paquetes de Docker del repositorio recién agregado:

      Asegúrese de estar a punto de realizar la instalación desde el repositorio de Docker en lugar del repositorio predeterminado de Debian:

      • apt-cache policy docker-ce

      Si bien el número de versión de Docker puede ser distinto, verá un resultado como el siguiente:

      Output of apt-cache policy docker-ce

      docker-ce:
        Installed: (none)
        Candidate: 18.06.1~ce~3-0~debian
        Version table:
           18.06.1~ce~3-0~debian 500
              500 https://download.docker.com/linux/debian stretch/stable amd64 Packages
      

      Observe que docker-ce no está instalado, pero la opción más viable para la instalación es del repositorio de Docker para Debian 9 (stretch).

      Por último, instale Docker:

      • sudo apt install docker-ce

      Con esto, Docker quedará instalado, el demonio se iniciará y el proceso se habilitará para ejecutarse en el inicio. Compruebe que funcione:

      • sudo systemctl status docker

      El resultado debe ser similar al siguiente, y mostrar que el servicio está activo y en ejecución:

      Output

      ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-07-05 15:08:39 UTC; 2min 55s ago Docs: https://docs.docker.com Main PID: 21319 (dockerd) CGroup: /system.slice/docker.service ├─21319 /usr/bin/dockerd -H fd:// └─21326 docker-containerd --config /var/run/docker/containerd/containerd.toml

      La instalación de Docker ahora le proporcionará no solo el servicio de Docker (demonio) sino también la utilidad de línea de comandos docker o el cliente de Docker. Más adelante, exploraremos la forma de usar el comando docker en este tutorial.

      Paso 2 : Ejecutar el comando Docker sin sudo (opcional)

      Por defecto, el comando docker solo puede ser ejecutado por el usuario root o un usuario del grupo docker, que se crea automáticamente durante el proceso de instalación de Docker. Si intenta ejecutar el comando docker sin sudo como prefijo o sin formar parte del grupo docker, obtendrá un resultado como este:

      Output

      docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'.

      Si desea evitar escribir sudo al ejecutar el comando docker, agregue su nombre de usuario al grupo docker:

      • sudo usermod -aG docker ${USER}

      Para aplicar la nueva membresía de grupo, cierre la sesión del servidor y vuelva a iniciarla o escriba lo siguiente:

      Para continuar, se le solicitará ingresar la contraseña de su usuario.

      Confirme que ahora su usuario se agregó al grupo docker escribiendo lo siguiente:

      Output

      sammy sudo docker

      Si debe agregar al grupo docker un usuario con el que no inició sesión, declare dicho nombre de usuario de forma explícita usando lo siguiente:

      • sudo usermod -aG docker username

      Para el resto de este artículo, se supone que ejecutará el comando docker como usuario del grupo docker. Si elige no hacerlo, incluya sudo al principio de los comandos.

      A continuación, exploremos el comando docker.

      Paso 3: Usar el comando docker

      El uso de docker consiste en pasar a este una cadena de opciones y comandos seguida de argumentos. La sintaxis adopta esta forma:

      • docker [option] [command] [arguments]

      Para ver todos los subcomandos disponibles, escriba lo siguiente:

      A partir de Docker 18, en la lista completa de subcomandos disponibles se incluye lo siguiente:

      Output

      attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes

      Si desea ver las opciones disponibles para un comando específico, escriba lo siguiente:

      • docker docker-subcommand --help

      Para ver información sobre Docker relacionada con todo el sistema, utilice lo siguiente:

      Exploremos algunos de estos comandos. Comenzaremos trabajando con imágenes.

      Paso 4: Trabajar con imágenes de Docker

      Los contenedores de Docker se construyen con imágenes de Docker. Por defecto, Docker obtiene estas imágenes de Docker Hub, un registro de Docker gestionado por Docker, la empresa responsable del proyecto Docker. Cualquiera puede alojar sus imágenes en Docker Hub, de modo que la mayoría de las aplicaciones y las distribuciones de Linux que necesitará tendrán imágenes alojadas allí.

      Para verificar si puede acceder a imágenes y descargarlas de Docker Hub, escriba lo siguiente:

      El resultado indicará que Docker funciona de forma correcta:

      Output

      Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9db2ca6ccae0: Pull complete Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ...

      Inicialmente, Docker no pudo encontrar la imagen de hello-world a nivel local. Por ello la descargó de Docker Hub, el repositorio predeterminado. Una vez que se descargó la imagen, Docker creó un contenedor a partir de ella y de la aplicación dentro del contenedor ejecutado, y mostró el mensaje.

      Puede buscar imágenes disponibles en Docker Hub usando el comando docker con el subcomando search. Por ejemplo, para buscar la imagen de Ubuntu, escriba lo siguiente:

      El script rastreará Docker Hub y mostrará una lista de todas las imágenes cuyo nombre coincida con la cadena de búsqueda. En este caso, el resultado será similar a lo siguiente:

      Output

      NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating sys… 8320 [OK] dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 214 [OK] rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 170 [OK] consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 128 [OK] ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 95 [OK] ubuntu-upstart Upstart is an event-based replacement for th… 88 [OK] neurodebian NeuroDebian provides neuroscience research s… 53 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 43 [OK] ubuntu-debootstrap debootstrap --variant=minbase --components=m… 39 [OK] nuagebec/ubuntu Simple always updated Ubuntu docker images w… 23 [OK] tutum/ubuntu Simple Ubuntu docker images with SSH access 18 i386/ubuntu Ubuntu is a Debian-based Linux operating sys… 13 1and1internet/ubuntu-16-apache-php-7.0 ubuntu-16-apache-php-7.0 12 [OK] ppc64le/ubuntu Ubuntu is a Debian-based Linux operating sys… 12 eclipse/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 6 [OK] darksheer/ubuntu Base Ubuntu Image -- Updated hourly 4 [OK] codenvy/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 4 [OK] 1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4 ubuntu-16-nginx-php-5.6-wordpress-4 3 [OK] pivotaldata/ubuntu A quick freshening-up of the base Ubuntu doc… 2 1and1internet/ubuntu-16-sshd ubuntu-16-sshd 1 [OK] ossobv/ubuntu Custom ubuntu image from scratch (based on o… 0 smartentry/ubuntu ubuntu with smartentry 0 [OK] 1and1internet/ubuntu-16-healthcheck ubuntu-16-healthcheck 0 [OK] pivotaldata/ubuntu-gpdb-dev Ubuntu images for GPDB development 0 paasmule/bosh-tools-ubuntu Ubuntu based bosh-cli 0 [OK] ...

      En la columna de OFFICIAL,** OK** indica una imagen creada y avalada por la empresa responsable del proyecto. Una vez que identifique la imagen que desearía usar, puede descargarla a su computadora usando el subcomando pull.

      Ejecute el siguiente comando para descargar la imagen oficial de ubuntu a su ordenador:

      Verá el siguiente resultado:

      Output

      Using default tag: latest latest: Pulling from library/ubuntu 6b98dfc16071: Pull complete 4001a1209541: Pull complete 6319fc68c576: Pull complete b24603670dc3: Pull complete 97f170c87c6f: Pull complete Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d Status: Downloaded newer image for ubuntu:latest

      Una vez descargada una imagen, puede ejecutar un contenedor usando la imagen descargada con el subcomando run. Como pudo ver en el ejemplo de hello-world, si no se descargó una imagen al ejecutarse docker con el subcomando run, el cliente de Docker descargará primero la imagen y luego ejecutará un contenedor utilizándola.

      Para ver las imágenes descargadas a su computadora, escriba lo siguiente:

      El resultado debe tener un aspecto similar al siguiente:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 16508e5c265d 13 days ago 84.1MB hello-world latest 2cb0d9787c4d 7 weeks ago 1.85kB

      Como verá más adelante en este tutorial, las imágenes que utilice para ejecutar contenedores pueden modificarse y utilizarse para generar nuevas imágenes que se pueden cargar posteriormente (“introducir” es el término técnico) a Docker Hub o a otros registros de Docker.

      Veamos en mayor profundidad la forma de ejecutar los contenedores.

      Paso 5: Ejecutar un contenedor de Docker

      El contenedor hello-world que ejecutó en el paso anterior es un ejemplo de un contenedor que se ejecuta y se cierra tras emitir un mensaje de prueba. Los contenedores pueden ofrecer una utilidad mucho mayor y ser interactivos. Después de todo, son similares a las máquinas virtuales, aunque más flexibles con los recursos.

      Como ejemplo, ejecutemos un contenedor usando la imagen más reciente de Ubuntu. La combinación de los conmutadores -i y -t le proporcionan un acceso interactivo del shell al contenedor:

      Su símbolo del sistema debe cambiar para reflejar el hecho de que ahora trabaja dentro del contenedor y debe adoptar esta forma:

      Output

      root@d9b100f2f636:/#

      Tenga en cuenta el ID del contenedor en el símbolo del sistema. En este ejemplo, es d9b100f2f636. Más adelante, necesitará ese ID de contenedor para identificar el contenedor cuando desee eliminarlo.

      Ahora puede ejecutar cualquier comando dentro del contenedor. Por ejemplo, actualicemos la base de datos del paquete dentro del contenedor. No es necesario prefijar ningún comando con sudo, ya que realiza operaciones dentro del contenedor como el usuario root:

      Luego, instale cualquier aplicación en él. Probemos con Node.js:

      Con esto, se instala Node.js en el contenedor desde el repositorio oficial de Ubuntu. Cuando finalice la instalación, verifique que Node.js esté instalado:

      Verá el número de versión en su terminal:

      Output

      v8.10.0

      Cualquier cambio que realice dentro del contenedor solo se aplica a este.

      Para cerrar el contenedor, escriba exit a línea de comandos.

      A continuación, veremos la forma de administrar los contenedores en nuestro sistema.

      Paso 6: Administrar contenedores de Docker

      Después de usar Docker durante un tiempo, tendrá muchos contenedores activos (en ejecución) e inactivos en su computadora. Para ver *los *activos, utilice lo siguiente:

      Verá una salida similar a la siguiente:

      Output

      CONTAINER ID IMAGE COMMAND CREATED

      A través de este tutorial, inició dos contenedores: uno de la imagen hello-world y otro de la imagen ubuntu. Ambos contenedores ya no están en ejecución, pero aún existen en su sistema.

      Para ver todos los contenedores, activos e inactivos, ejecute docker ps con el conmutador -a:

      Visualizará un resultado similar a esto:

      d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Exited (0) 8 minutes ago                           sharp_volhard
      01c950718166        hello-world         "/hello"            About an hour ago   Exited (0) About an hour ago                       festive_williams
      
      

      Para ver el último contenedor que creó, páselo al conmutador -l:

      • CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      • d9b100f2f636 ubuntu "/bin/bash" About an hour ago Exited (0) 10 minutes ago sharp_volhard

      Para iniciar un contenedor detenido, utilice docker start, seguido del o el nombre ID del contenedor. Iniciemos el contenedor basado en Ubuntu con el ID de d9b100f2f636:

      • docker start d9b100f2f636

      El contenedor se iniciará y podrá usar docker ps para ver su estado:

      CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
      d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Up 8 seconds                            sharp_volhard
      
      

      Para detener un contenedor en funcionamiento, utilice docker stop, seguido del ID o nombre del contenedor. Esta vez usaremos el nombre que Docker asignó al contenedor, que es sharp_volhard:

      • docker stop sharp_volhard

      Una vez que decidida que ya no necesita un contenedor, elimínelo con el comando docker rm y use nuevamente el ID o el nombre del contenedor. Utilice el comando docker ps -a para encontrar el ID o nombre del contenedor asociado con la imagen hello-world y elimínelo.

      • docker rm festive_williams

      Puede iniciar un nuevo contenedor y darle un nombre usando el conmutador --name. También podrá usar el conmutador de --rm para crear un contenedor que se elimine de forma automática cuando se detenga. Consulte el comando docker run help para obtener más información sobre estas y otras opciones.

      Los contenedores pueden convertirse en imágenes que podrá usar para crear contenedores nuevos. Veamos cómo funciona esto.

      Paso 7: Confirmar cambios aplicados a una imagen de Docker en un contenedor

      Cuando inicie una imagen de Docker, podrá crear, modificar y eliminar archivos del mismo modo que con una máquina virtual. Los cambios que realice solo se aplicarán al contenedor en cuestión. Podrá iniciarlo y detenerlo, pero una vez que lo destruya con el comando docker rm, los cambios se perderán por completo.

      En esta sección verá la forma de guardar el estado de un contenedor como una nueva imagen de Docker.

      Después de instalar Node.js dentro del contenedor de Ubuntu, dispondrá de un contenedor que se ejecuta a partir de una imagen, pero este es diferente de la imagen que utilizó para crearlo. Sin embargo, quizá desee reutilizar este contenedor Node.js como base de nuevas imágenes posteriormente.

      Luego, confirme los cambios en una nueva instancia de imagen de Docker utilizando el siguiente comando:

      • docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

      El conmutador -m es para el mensaje de confirmación que le permite a usted y a otros a saber qué cambios realizaron, mientras que -a se utiliza para especificar el autor. El container_id es el que observó anteriormente en el tutorial cuando inició la sesión interactiva de Docker. A menos que haya creado repositorios adicionales en Docker Hub, repository generalmente corresponde a su nombre de usuario de Docker Hub.

      Por ejemplo, para el usuario** sammy**, con el ID de contenedor d9b100f26f636, el comando sería el siguiente:

      • docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

      Cuando *confirme *una imagen, la nueva imagen se guardará a nivel local en su computadora. Más adelante, en este tutorial, aprenderá a introducir una imagen en un registro de Docker como Docker Hub para que otros puedan acceder a ella.

      Listar las imágenes de Docker de nuevo mostrará la nueva imagen, así como la anterior de la que se derivó:

      Verá resultados como este:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE sammy/ubuntu-nodejs latest 7c1f35226ca6 7 seconds ago 179MB ubuntu latest 113a43faa138 4 weeks ago 81.2MB hello-world latest e38bc07ac18e 2 months ago 1.85kB

      En este ejemplo ubuntu-nodejs es la nueva imagen, derivada de la imagen ubuntu existente de Docker Hub. La diferencia de tamaño refleja los cambios realizados. En este ejemplo, el cambio fue la instalación de NodeJS. Por ello, la próxima vez que deba ejecutar un contenedor usando Ubuntu con NodeJS preinstalado, podrá usar simplemente la nueva imagen.

      También podrá crear imágenes de un Dockerfile, lo cual le permitirá automatizar la instalación de software en una nueva imagen. Sin embargo, eso queda fuera del alcance de este tutorial.

      Ahora, compartiremos la nueva imagen con terceros para que puedan crear contenedores a partir de ella.

      Paso 8: Introducir imágenes de Docker en un repositorio de Docker

      El siguiente paso lógico después de crear una nueva imagen a partir de una imagen existente es compartirla con algunos de sus amigos, con todo el mundo en Docker Hub, o en otro registro de Docker al que tenga acceso. Para introducir una imagen a Docker Hub o a cualquier otro registro de Docker, deberá tener una cuenta en el sistema.

      En esta sección verá cómo introducir una imagen de Docker en Docker Hub. Para aprender a crear su propio registro privado de Docker, consulte Cómo configurar un registro de Docker privado en Ubuntu 14.04.

      Para introducir su imagen, primero inicie sesión en Docker Hub.

      • docker login -u docker-registry-username

      Se le solicitará autenticarse usando su contraseña de Docker Hub. Si especificó la contraseña correcta, la autenticación tendrá éxito.

      Nota: Si su nombre de usuario de registro de Docker es diferente del nombre de usuario local que usó para crear la imagen, deberá etiquetar su imagen con su nombre de usuario de registro. Para el ejemplo que se muestra en el último paso, deberá escribir lo siguiente:

      • docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

      Luego podrá introducir su propia imagen usando lo siguiente:

      • docker push docker-registry-username/docker-image-name

      Para introducir la imagen ubuntu-nodejs en el repositorio de sammy, el comando sería el siguiente:

      • docker push sammy/ubuntu-nodejs

      El proceso puede tardar un tiempo en completarse cuando se suben las imágenes, pero una vez que finalice el resultado será el siguiente:

      Output

      The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Pushed 5f70bf18a086: Pushed a3b5c80a4eba: Pushed 7f18b442972b: Pushed 3ce512daaf78: Pushed 7aae4540b42d: Pushed ...

      Una vez que introduce una imagen en un registro, esta debe aparecer en el panel de su cuenta, como se muestra en la siguiente captura:

      Nuevo listado de imágenes de Docker en Docker Hub

      Si un intento de introducción produce un error de este tipo, es probable que no haya iniciado sesión:

      Output

      The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required

      Inicie sesión con docker login y repita el intento de introducción. Luego, compruebe que exista en su página de repositorios de Docker Hub.

      Ahora podrá usar ​​​​​​​docker ​​​​​​pull sammy​​​/ubuntu-nodejs​​​​​​​​​​​​ para introducir la imagen en una nueva máquina y usarla para ejecutar un nuevo contenedor.

      Conclusión

      A través de este tutorial, instaló Docker, trabajó con imágenes y contenedores e introdujo una imagen modificada en Docker Hub. Ahora que conoce los aspectos básico, explore los otros tutoriales de Docker de la Comunidad de DigitalOcean.



      Source link

      Cómo usar métodos de objetos en JavaScript


      Introducción

      Los objetos de JavaScript son grupos de pares clavevalor. Los valores pueden consistir en propiedades y métodos, y pueden contener todos los demás tipos de datos de JavaScript, como cadenas, números y booleanos.

      Todos los objetos de JavaScript derivan del constructor del Objectprincipal.Object tiene muchos métodos incorporados útiles a los cuales podemos acceder y recurrir para simplificar el trabajo con objetos individuales. A diferencia de los métodos Array.prototype, como sort() y reverse() que se usan en la instancia de Array, los métodos Object se usan directamente en el constructor Object y emplean la instancia del objeto como parámetro. Esto se conoce como método estático.

      En este tutorial, se detallarán importantes métodos de objeto incorporados, y en cada sección posterior se abordará un método específico y sxe proporcionará un ejemplo de uso.

      Requisitos previos

      Para aprovechar al máximo de este tutorial, debería estar familiarizado con la creación, la modificación y el funcionamiento de los objetos, aspectos que podrá ver en el artículo “Comprensión de objetos en JavaScript”.

      Para obtener orientación adicional sobre JavaScript en general, puede revisar nuestra serie Cómo producir código en JavaScript.

      Object.create()

      El método Object.create() se usa para crear un nuevo objeto y vincularlo al prototipo de un objeto existente.

      Podemos crear una instancia de objeto job y ampliarla para obtener un objeto más específico.

      // Initialize an object with properties and methods
      const job = {
          position: 'cashier',
          type: 'hourly',
          isAvailable: true,
          showDetails() {
              const accepting = this.isAvailable ? 'is accepting applications' : "is not currently accepting applications";
      
              console.log(`The ${this.position} position is ${this.type} and ${accepting}.`);
          }
      };
      
      // Use Object.create to pass properties
      const barista = Object.create(job);
      
      barista.position = "barista";
      barista.showDetails();
      

      Output

      The barista position is hourly and is accepting applications.

      El objeto barista ahora tiene una propiedad, position, pero las propiedades y los métodos de job que restan están disponibles a través del prototipo. Object.create() es útil para que el código siga siendo DRY mediante la reducción de la duplicación.

      Object.keys()

      Object.keys() crea una matriz que contiene las claves de un objeto.

      Podemos crear un objeto e imprimir la matriz de claves.

      // Initialize an object
      const employees = {
          boss: 'Michael',
          secretary: 'Pam',
          sales: 'Jim',
          accountant: 'Oscar'
      };
      
      // Get the keys of the object
      const keys = Object.keys(employees);
      
      console.log(keys);
      

      Output

      ["boss", "secretary", "sales", "accountant"]

      Object.keys puede usarse para generar repeticiones a través de las claves y los valores de un objeto.

      // Iterate through the keys
      Object.keys(employees).forEach(key => {
          let value = employees[key];
      
           console.log(`${key}: ${value}`);
      });
      

      Output

      boss: Michael secretary: Pam sales: Jim accountant: Oscar

      Object.keys también es útil para verificar la extensión de un objeto.

      // Get the length of the keys
      const length = Object.keys(employees).length;
      
      console.log(length);
      

      Output

      4

      Mediante la propiedad length, pudimos contar las 4 propiedades de employees.

      Object.values()

      Object.values() crea una matriz que contiene los valores de un objeto.

      // Initialize an object
      const session = {
          id: 1,
          time: `26-July-2018`,
          device: 'mobile',
          browser: 'Chrome'
      };
      
      // Get all values of the object
      const values = Object.values(session);
      
      console.log(values);
      

      Output

      [1, "26-July-2018", "mobile", "Chrome"]

      Object.keys() y Object.values() le permiten mostrar los datos de un objeto.

      Object.entries()

      Object.entries()crea una matriz anidada con los pares clave-valor de un objeto.

      // Initialize an object
      const operatingSystem = {
          name: 'Ubuntu',
          version: 18.04,
          license: 'Open Source'
      };
      
      // Get the object key/value pairs
      const entries = Object.entries(operatingSystem);
      
      console.log(entries);
      

      Output

      [ ["name", "Ubuntu"] ["version", 18.04] ["license", "Open Source"] ]

      Una vez que contemos con las matrices de pares claves-valor, podremos usar el método forEach() para repetir los resultados y trabajar con ellos.

      // Loop through the results
      entries.forEach(entry => {
          let key = entry[0];
          let value = entry[1];
      
          console.log(`${key}: ${value}`);
      });
      

      Output

      name: Ubuntu version: 18.04 license: Open Source

      El método Object.entries() solo mostrará las propiedades de la instancia del objeto. No mostrará ninguna propiedad que pueda heredarse a través de su prototipo.

      Object.assign()

      Object.assign() se usa para copiar valores de un objeto a otro.

      Podemos crear dos objetos y fusionarlos con Object.assign().

      // Initialize an object
      const name = {
          firstName: 'Philip',
          lastName: 'Fry'
      };
      
      // Initialize another object
      const details = {
          job: 'Delivery Boy',
          employer: 'Planet Express'
      };
      
      // Merge the objects
      const character = Object.assign(name, details);
      
      console.log(character);
      

      Output

      {firstName: "Philip", lastName: "Fry", job: "Delivery Boy", employer: "Planet Express"}

      También es posible usar el operador de propagación (...) para realizar la misma tarea. En el siguiente código, modificaremos la forma en que declaramos character mediante la fusión de los objetos name y details.

      // Initialize an object
      const name = {
          firstName: 'Philip',
          lastName: 'Fry'
      };
      
      // Initialize another object
      const details = {
          job: 'Delivery Boy',
          employer: 'Planet Express'
      };
      
      // Merge the object with the spread operator
      const character = {...name, ...details}
      
      console.log(character);
      

      Output

      {firstName: "Philip", lastName: "Fry", job: "Delivery Boy", employer: "Planet Express"}

      Esta sintaxis de propagación en literales de objeto también se conoce como “clonación superficial”.

      Object.freeze()

      Object.freeze() impide la modificación de propiedades y valores de un objeto, y evita que se agreguen propiedades a un objeto o que se eliminen de él.

      // Initialize an object
      const user = {
          username: 'AzureDiamond',
          password: 'hunter2'
      };
      
      // Freeze the object
      const newUser = Object.freeze(user);
      
      newUser.password = '*******';
      newUser.active = true;
      
      console.log(newUser);
      

      Output

      {username: "AzureDiamond", password: "hunter2"}

      En el ejemplo anterior, intentamos anular la contraseña hunter2 con *******, pero la propiedad password siguió siendo la misma. También intentamos agregar una nueva propiedad, active, pero no fue posible.

      Object.isFrozen() está disponible para determinar si un objeto se congeló o no, y muestra un booleano.

      Object.seal()

      Object.seal() impide la adición de nuevas propiedades a un objeto, pero permite la modificación de propiedades existentes. Este método es similar a Object.freeze(). Actualice su consola antes de implementar el código siguiente para evitar un error.

      // Initialize an object
      const user = {
          username: 'AzureDiamond',
          password: 'hunter2'
      };
      
      // Seal the object
      const newUser = Object.seal(user);
      
      newUser.password = '*******';
      newUser.active = true;
      
      console.log(newUser);
      

      Output

      {username: "AzureDiamond", password: "*******"}

      La nueva propiedad active no se agregó al objeto sellado, pero la propiedad password se cambió de forma correcta.

      Object Object.getPrototypeOf()

      Object.getPrototypeOf() se usa para obtener la propiedad interna oculta [[Prototype]] de un objeto, también accesible a través de la propiedad __proto__.

      En este ejemplo, podemos crear una matriz que tenga acceso al prototipo Array.

      const employees = ['Ron', 'April', 'Andy', 'Leslie'];
      
      Object.getPrototypeOf(employees);
      

      Output

      [constructor: ƒ, concat: ƒ, find: ƒ, findIndex: ƒ, pop: ƒ, …]

      Podemos ver en el resultado que el prototipo de la matriz employees tiene acceso a pop, find y otros métodos de prototipo Array. Podemos confirmarlo probando el prototipo employees en comparación con Array.prototype.

      Object.getPrototypeOf(employees) === Array.prototype;
      

      Output

      true

      Este método puede ser útil para obtener más información sobre un objeto o asegurarse de que tenga acceso al prototipo de otro objeto.

      También existe un método Object.setPrototypeOf() asociado, que agregará un prototipo a otro objeto. Se recomienda usar Object.create() en su lugar, ya que es más rápido y tiene mejor rendimiento.

      Conclusión

      Los objetos tienen muchos métodos útiles que nos ayudan a modificarlos, protegerlos y generar repeticiones de ellos. En este tutorial, abordamos la forma de crear y asignar nuevos objetos, repetir las claves y los valores de estos y a congelarlos o sellarlos.

      Si necesita consultar material sobre los objetos de JavaScript, puede leer “Información sobre objetos de JavaScript”. Si desea familiarizarse con la cadena de prototipos, puede consultar “Información sobre los prototipos y la herencia en JavaScript”.



      Source link

      Como usar o Git para Gerenciar seu Projeto de Redação


      Introdução

      O controle de versão não é apenas para código. É para qualquer coisa que você queira acompanhar, incluindo conteúdo. Usar o Git para gerenciar o seu próximo projeto de redação permite a você exibir vários rascunhos ao mesmo tempo, ver diferenças entre esses rascunhos e até reverter para uma versão anterior. E se você estiver confortável com isso, poderá compartilhar seu trabalho com outras pessoas no GitHub ou em outros repositórios centrais do Git.

      Neste tutorial, você usará o Git para gerenciar um pequeno documento Markdown. Você armazenará uma versão inicial, fará o commit ou confirmação dela, fará alterações, visualizará a diferença entre essas alterações e revisará a versão anterior. Quando terminar, você terá um fluxo de trabalho que poderá aplicar aos seus próprios projetos de redação.

      Pré-requisitos

      Passo 1 — Criando um Espaço de Trabalho para Seu Projeto de Redação

      Para gerenciar suas alterações, você criará um repositório Git local. Um repositório Git vive dentro de um diretório existente; portanto, comece criando um novo diretório para o seu artigo:

      Mude para o novo diretório artigo:

      O comando git init cria um novo repositório Git vazio no diretório atual. Execute esse comando agora:

      Você verá a seguinte saída que confirma que seu repositório foi criado:

      Output

      Initialized empty Git repository in /Users/sammy/artigo/.git/

      O arquivo .gitignore permite que você informe ao Git que alguns arquivos devem ser ignorados. Você pode usar isso para ignorar arquivos temporários que seu editor de texto possa criar ou arquivos de sistemas operacionais. No macOS, por exemplo, o aplicativo Finder cria arquivos .DS_Store em diretórios. Crie um arquivo .gitignore que os ignore:

      Adicione as seguintes linhas ao arquivo:

      .gitignore

      # Ignore Finder files
      .DS_store
      

      A primeira linha é um comentário, que o ajudará a identificar o que você está ignorando no futuro. A segunda linha especifica o arquivo a ser ignorado.

      Salve o arquivo e saia do editor.

      À medida que você descobrir mais arquivos que deseja ignorar, abra o arquivo .gitignore e adicione uma nova linha para cada arquivo ou diretório que deseja ignorar.

      Agora que seu repositório está configurado, você pode começar a trabalhar.

      Passo 2 — Salvando Seu Rascunho Inicial

      O Git só conhece os arquivos que você conta para ele. Só porque um arquivo existe no diretório que contém o repositório não significa que o Git irá rastrear suas alterações. Você precisa adicionar o arquivo ao repositório e confirmar as alterações.

      Crie um novo arquivo Markdown chamado artigo.md:

      Adicione algum texto ao arquivo:

      artigo.md

      # Como Usar o Git para Gerenciar seu Projeto de Redação
      
      ### Introdução
      
      O controle de versão não é apenas para código. É para qualquer coisa que você queira acompanhar, incluindo conteúdo. Usar o [Git](https://git-scm.com) para gerenciar o seu próximo projeto de redação permite a você exibir vários rascunhos ao mesmo tempo, ver diferenças entre esses rascunhos e até reverter para uma versão anterior. E se você estiver confortável com isso, poderá compartilhar seu trabalho com outras pessoas no GitHub ou em outros repositórios centrais do Git. 
      
      Neste tutorial, você usará o Git para gerenciar um pequeno documento Markdown. Você armazenará uma versão inicial, fará o commit ou confirmação dela, fará alterações, visualizará a diferença entre essas alterações e revisará a versão anterior. Quando terminar, você terá um fluxo de trabalho que poderá aplicar aos seus próprios projetos de redação.
      

      Salve as alterações e saia do editor.

      O comando git status mostrará o estado do seu repositório. Ele mostrará quais arquivos precisam ser adicionados para que o Git possa rastreá-los. Execute este comando:

      Você verá esta saída:

      Output

      On branch master No commits yet Untracked files: (use "git add <file>..." to include in what will be committed) .gitignore artigo.md nothing added to commit but untracked files present (use "git add" to track)

      Na saída, a seção Untracked files mostra os arquivos que o Git não está vendo. Esses arquivos precisam ser adicionados ao repositório para que o Git possa observá-los quanto a alterações. Use o comando git add para fazer isso:

      • git add .gitignore
      • git add artigo.md

      Agora execute o git status para verificar se esses arquivos foram adicionados:

      Output

      On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: .gitignore new file: artigo.md

      Agora os dois arquivos estão listados na seção Changes to be committed, ou seja, alterações a serem confirmadas. O Git sabe sobre eles, mas ainda não criou um instantâneo do trabalho. Use o comando git commit para fazer isso.

      Quando você cria um novo commit, você precisa fornecer uma mensagem de commit. Uma boa mensagem de commit fala sobre quais são as suas alterações. Quando você está trabalhando com outras pessoas, quanto mais detalhadas forem suas mensagens de commit, melhor.

      Use o comando git commit para confirmar suas alterações:

      • git commit -m "Adicionar arquivo gitignore e versão inicial do artigo"

      A saída do comando mostra que os arquivos foram confirmados:

      Output

      [master (root-commit) 95fed84] Adicionar arquivo gitignore e versão inicial do artigo 2 files changed, 9 insertions(+) create mode 100644 .gitignore create mode 100644 artigo.md

      Use o comando git status para ver o estado do repositório:

      A saída mostra que não há alterações que precisam ser adicionadas ou confirmadas.

      Output

      On branch master nothing to commit, working tree clean

      Agora vamos ver como trabalhar com alterações.

      Passo 3 — Salvando Revisões

      Você adicionou sua versão inicial do artigo. Agora você adicionará mais texto para poder ver como gerenciar alterações com o Git.

      Abra o artigo no seu editor:

      Adicione um pouco mais de texto ao final do arquivo:

      ## Pré-requisitos
      
      * Git instalado em seu computador local. O tutorial [How to Contribute to Open Source: Getting Started with Git](https://www.digitalocean.com/community/tutorials/how-to-contribute-to-open-source-getting-started-with-git) orienta você na instalação do Git e cobre algumas informações básicas que você pode achar úteis. 
      

      Salve o artigo

      Use o comando git status para ver onde estão as coisas no seu repositório:

      A saída mostra que há alterações:

      Output

      On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: artigo.md no changes added to commit (use "git add" and/or "git commit -a")

      Como esperado, o arquivo artigo.md sofreu alterações.

      Use git diff para ver o quais são elas:

      A saída mostra as linhas que você adicionou:

      diff --git a/artigo.md b/artigo.md
      index 77b081c..ef6c301 100644
      --- a/artigo.md
      +++ b/artigo.md
      @@ -5,3 +5,7 @@
       O controle de versão não é apenas para código. É para qualquer coisa que você queira acompanhar, incluindo conteúdo. Usar o [Git](https://git-scm.com) para gerenciar o seu próximo projeto de redação permite a você exibir vários rascunhos ao mesmo tempo, ver diferenças entre esses rascunhos e até reverter para uma versão anterior. E se você estiver confortável com isso, poderá compartilhar seu trabalho com outras pessoas no GitHub ou em outros repositórios centrais do Git. 
      
       Neste tutorial, você usará o Git para gerenciar um pequeno documento Markdown. Você armazenará uma versão inicial, fará o commit ou confirmação dela, fará alterações, visualizará a diferença entre essas alterações e revisará a versão anterior. Quando terminar, você terá um fluxo de trabalho que poderá aplicar aos seus próprios projetos de redação.
      +
      +## Pré-requisitos
      +
      +* Git instalado em seu computador local. O tutorial [How to Contribute to Open Source: Getting Started with Git](https://www.digitalocean.com/community/tutorials/how-to-contribute-to-open-source-getting-started-with-git) orienta você na instalação do Git e cobre algumas informações básicas que você pode achar úteis. 
      

      Na saída, linhas começando com um sinal de mais (+) são linhas que você adicionou. As linhas removidas apareceriam com um sinal de menos (-). As linhas inalteradas não teriam nenhum desses caracteres na frente.

      Usar git diff e git status é uma maneira útil de ver o que você mudou. Você também pode salvar o diff em um arquivo para visualizá-lo mais tarde com o seguinte comando:

      • git diff artigo.md > artigo_diff.diff

      O uso da extensão .diff ajudará seu editor de texto a aplicar o realce apropriado da sintaxe.

      Salvar as alterações no seu repositório é um processo de duas etapas. Primeiro, adicione o arquivo artigo.md novamente e depois faça o commit. O Git quer que você diga a ele explicitamente quais arquivos estão em cada commit, portanto, mesmo que você tenha adicionado o arquivo antes, você deve adicioná-lo novamente. Note que a saída do comando git status lembra você disso.

      Adicione o arquivo e faça o commit das alterações, fornecendo uma mensagem de commit:

      • git add artigo.md
      • git commit -m "adicionada seção de pré-requisitos"

      A saída verifica que o commit funcionou:

      Output

      [master 1fbfc21] adicionada seção de pré-requisitos 1 file changed, 4 insertions(+)

      Use git status para ver o status do seu repositório. Você verá que não há mais nada a fazer.

      Output

      On branch master nothing to commit, working tree clean

      Continue esse processo enquanto revisa seu artigo. Faça as alterações, verifique-as, adicione o arquivo e faça o commit das alterações com uma mensagem detalhada. Faça commit de suas alterações com a frequência que desejar. Você pode realizar um commit depois de concluir cada rascunho ou antes de fazer uma grande reformulação da estrutura do seu artigo.

      Se você enviar um rascunho de um documento para outra pessoa e ela fizer alterações, pegue a cópia e substitua o arquivo pelo dela. Em seguida, use git diff para ver rapidamente as alterações que ela fez. O Git verá as alterações, tenha você digitado diretamente ou substituido o arquivo por um que você baixou da web, e-mail ou outro local.

      Agora, vamos analisar o gerenciamento das versões do seu artigo.

      Passo 4 — Gerenciando Alterações

      Às vezes, é útil olhar para uma versão anterior de um documento. Sempre que você usou o git commit, você forneceu uma mensagem útil que resume o que você fez.

      O comando git log mostra o histórico de commit do seu repositório. Toda mudança que você fez commit tem uma entrada no log.

      Output

      commit 1fbfc2173f3cec0741e0a6b21803fbd0be511bc4 Author: Sammy Shark <sammy@digitalocean> Date: Thu Sep 19 16:35:41 2019 -0500 adicionada seção de pré-requisitos commit 95fed849b0205c49eda994fff91ec03642d59c79 Author: Sammy Shark <sammy@digitalocean> Date: Thu Sep 19 16:32:34 2019 -0500 Adicionar arquivo gitignore e versão inicial do artigo

      Cada commit possui um identificador específico. Você usa esse número para referenciar as alterações de um commit específico. Você só precisa dos primeiros caracteres do identificador. O comando git log --oneline fornece a você uma versão condensada do log com identificadores mais curtos:

      Output

      1fbfc21 adicionada seção de pré-requisitos 95fed84 Adicionar arquivo gitignore e versão inicial do artigo

      Para visualizar a versão inicial do seu arquivo, use git show e o identificador do commit. Os identificadores no seu repositório serão diferentes dos que estão nesses exemplos.

      • git show 95fed84 artigo.md

      A saída mostra os detalhes do commit, bem como as alterações que ocorreram durante esse commit:

      Output

      commit 95fed849b0205c49eda994fff91ec03642d59c79 Author: Sammy Shark <sammy@digitalocean> Date: Thu Sep 19 16:32:34 2019 -0500 Adicionar arquivo gitignore e versão inicial do artigo diff --git a/artigo.md b/artigo.md new file mode 100644 index 0000000..77b081c --- /dev/null +++ b/artigo.md @@ -0,0 +1,7 @@ +# Como Usar o Git para Gerenciar seu Projeto de Redação + +### Introdução + +O controle de versão não é apenas para código. É para qualquer coisa que você queira acompanhar, incluindo conteúdo. Usar o [Git](https://git-scm.com) para gerenciar o seu próximo projeto de redação permite a você exibir vários rascunhos ao mesmo tempo, ver diferenças entre esses rascunhos e até reverter para uma versão anterior. E se você estiver confortável com isso, poderá compartilhar seu trabalho com outras pessoas no GitHub ou em outros repositórios centrais do Git. + +Neste tutorial, você usará o Git para gerenciar um pequeno documento Markdown. Você armazenará uma versão inicial, fará o commit ou confirmação dela, fará alterações, visualizará a diferença entre essas alterações e revisará a versão anterior. Quando terminar, você terá um fluxo de trabalho que poderá aplicar aos seus próprios projetos de redação.

      Para ver o próprio arquivo, modifique o comando levemente. Em vez de um espaço entre o identificador do commit e o arquivo, substitua por :./ assim:

      • git show 95fed84:./artigo.md

      Você verá o conteúdo desse arquivo, nessa revisão:

      Output

      ### Introdução O controle de versão não é apenas para código. É para qualquer coisa que você queira acompanhar, incluindo conteúdo. Usar o [Git](https://git-scm.com) para gerenciar o seu próximo projeto de redação permite a você exibir vários rascunhos ao mesmo tempo, ver diferenças entre esses rascunhos e até reverter para uma versão anterior. E se você estiver confortável com isso, poderá compartilhar seu trabalho com outras pessoas no GitHub ou em outros repositórios centrais do Git. Neste tutorial, você usará o Git para gerenciar um pequeno documento Markdown. Você armazenará uma versão inicial, fará o commit ou confirmação dela, fará alterações, visualizará a diferença entre essas alterações e revisará a versão anterior. Quando terminar, você terá um fluxo de trabalho que poderá aplicar aos seus próprios projetos de redação.

      Você pode salvar essa saída em um arquivo se precisar disso para outra coisa:

      • git show 95fed84:./artigo.md > old_artigo.md

      À medida que você fizer mais alterações, seu log aumentará e você poderá revisar todas as alterações feitas no seu artigo ao longo do tempo.

      Conclusão

      Neste tutorial, você usou um repositório Git local para rastrear as alterações no seu projeto de redação. Você pode usar essa abordagem para gerenciar artigos individuais, todas as postagens do seu blog ou até mesmo seu próximo romance. E se você enviar seu repositório para o GitHub, poderá convidar outras pessoas para ajudá-lo a editar seu trabalho.



      Source link