Subcomandos de Deno

Hoy voy a ampliar los artículos sobre Deno que hay en el blog comentandote los subcomandos disponibles en esta herramienta. Si ya has instalado y configurado Deno, y dispones del comando deno en tu consola, el primer subcomando que debes probar es help.

$ deno help

Entre otras cosas, te va a facilitar un listado de subcomandos similar al que sigue:

  bundle         Bundle module and dependencies into single file
  cache          Cachea las dependencias
  completions    Genera autocompletados de la consola de comandos
  doc            Muestra la documentación para un módulo
  eval           Evalúa un script
  fmt            Formatea archivos fuente
  help           Imprime la ayuda general o la de un subcommando dado
  info           Muestra información sobre el caché o información relacionada con un archivo fuente
  install        Instalar script como un ejecutable
  lint           Aplicar resaltado de código a archivos fuente
  repl           Bucle leer, evaluar e imprimir
  run            Ejecuta un programa desde un nombre de archivo o una URL. Usa '-' como nombre de archivos para leer de la entrada estandar
  test           Ejecuta las pruebas
  types          Imprime las declaraciones de TypeScripts en tiempo de ejecución
  upgrade        Actualiza el ejecutable deno a una versión dada

Algo más sobre el subcomando help es que si lo usas con cualquiera de los subcomandos listados más arriba, te facilitará información más detallada sobre dicho subcomando y su sobre uso. Por ejemplo, si queremos saber algo más sobre el subcomando eval, podemos ejecutar el siguiente comando:

¿Qué es Docker?

Docker es, posiblemente, la herramienta que revolucionó el modo en el que desplegamos y distribuimos aplicaciones. Asegurarnos de que el entorno en el que se van a ejecutar nuestras aplicaciones es óptimo para ellas ha sido siempre un esfuerzo asociado al desarrollo de software. El uso de máquinas virtuales supuso el acercamiento más satisfactorio antes de Docker, pero el rendimiento se veía comprometido por el esfuerzo que suponía, para el sistema operativo huesped, levantar y gestionar un sistema operativo completo en el que ajustar el entorno deseado y ejecutar nuestra aplicación. Con Docker, ejecutamos nuestras aplicaciones en entornos aislados, contenedores, que si bien no son máquinas virtuales, se asemejan muchísimo, pero con la ventaja de aprovechar nuestro sistema operativo todo lo posible en lugar de tener que gestionar un completo sistema operativo inquilino.

Patrones de diseño

Los patrones de diseño son un concepto que empezó a manejar el arquitecto britano-americano Christopher Alexander en 1966. Mucho más tarde, en 1994, con la publicación de Design Patterns: Elements of Reusable Object-Oriented Software, dicho concepto comenzó a ganar popularidad en el mundo del desarrollo de software. Este libro fué escrito por cuatro autores que posteriormente serían conocidos como la pandilla de los cuatro (Gang of Four): Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides. Los patrones de diseño aportan soluciones generales y reutilizables para problemas comunes. No se trata de porciones de código, sino de algo más genérico: La descripción de un problema y de una solución, que ha sido probada, a ese problema. Comprender un patrón, identificar cuando es útil, aplicarlo y adaptarlo a un caso concreto es tarea de aquel que lo estudia. El uso adecuado de estos patrones, por tanto, puede acelerar el proceso de diseño y desarrollo de software, pues al aportar paradigmas que han sido probados como eficaces evitan invertir tiempo en buscar una solución partiendo desde cero.

Gestión de memoria de la máquina virtual de Java

Al espacio de memoria donde Java almacena objetos se denomina heap. El heap se crea cuando la maquina virtual de java, JVM, se inicia, y puede aumentar o disminuir de tamaño durante la ejecución de la aplicación. Cuando se llena este espacio de memoria Java inicia el proceso de recolección de basura, Garbage Collector. Durante la recogida de basura, los objetos que ya no se utilizan son eliminados, creando así espacio para nuevos objetos. La JVM puede iniciarse con unos parámetros para gestionar la memoria. Con Xmx configuramos el tamaño máximo del heap y con Xms el tamaño mínimo. La JVM tiene, también, un espacio permanente para alojar objetos, el Permanent Generation o Metaspace desde Java 8. Será el espacio donde se alojan las clases y los métodos. Un ejemplo de configuración de estos parámetros sería como sigue: