Deno 2.0

Spanish audio is available in the player settings
Rate this content
Bookmark

Deno 2.0 está próximo y trae algunos cambios importantes al tiempo de ejecución de JavaScript. En esta masterclass, presentaremos las nuevas características, incluyendo mapas de importación, descubrimiento automático de package.json y especificadores sin prefijo. Discutiremos cómo estas mejoras ayudarán a abordar problemas como dependencias duplicadas y dependencias que desaparecen. Además, profundizaremos en el soporte incorporado para deno: especificadores en el registro deno.land/x y su papel en proporcionar una ruta recomendada para la publicación. Ven y aprende cómo estas actualizaciones darán forma al futuro del ecosistema de JavaScript y mejorarán la compatibilidad con aplicaciones Node anteriores.

36 min
14 Apr, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla trata sobre la optimización forzada con Node y Deno, con Deno buscando perseguir los mismos objetivos de una manera más amplia y moderna. Deno tiene soporte incorporado para NPM y aplica restricciones de seguridad. También tiene una base de datos clave-valor llamada Deno KV, que será una parte fundamental de la API de Deno 2. Deno Deploy es una plataforma de funciones sin servidor en el borde, impulsada por FoundationDB, optimizada para una lectura rápida e ideal para construir sitios de comercio electrónico o servidores de aplicaciones en el borde. Deno 2.0 llegará pronto con más características en desarrollo.

Available in English

1. Forzada Optimización con Node y Deno

Short description:

Mi charla trata sobre la optimización forzada, el objetivo original con Node era forzar a los desarrolladores a construir servidores óptimos utilizando IO asíncrono. En la actualidad, construir servidores óptimos requiere más que solo IO asíncrono. Con Deno, el objetivo es seguir persiguiendo los mismos objetivos pero de una manera más expansiva y moderna. El sistema debe ser accesible al máximo, tener una excelente latencia y ser sin servidor.

Mi charla no se llama Deno 2.0, se llama optimización forzada. Hay un truco que haces cuando solicitas charlas para conferencias donde das un título y una descripción y la noche anterior lo inventas mientras vas avanzando.

Sí, Node es bastante antiguo en este punto. Tal vez 13, 14 años de antigüedad. Mi objetivo original con Node era forzar a los desarrolladores a construir servidores óptimos obligándolos a usar solo IO asíncrono. No es 100% cierto. Hay IO síncrono en Node, pero en gran medida, al menos con IO de red, estás obligado a usar IO no bloqueante. Esto es bastante estándar en la actualidad. Básicamente, cualquier plataforma está utilizando IO no bloqueante. Pero en 2008, este no era el caso. Había mucha gente escribiendo servidores bloqueantes con hilos.

En la actualidad, construir servidores óptimos y fáciles necesita más que solo IO asíncrono. Hay mucho que se necesita. Estás gestionando configuraciones en la nube. Estás eligiendo una base de datos. Estás pensando en cómo se puede replicar datos en todo el mundo. Especialmente si estás usando Node, estás navegando por una gran cantidad de cadenas de herramientas y flujos de trabajo que pueden o no funcionar bien juntos. Estás lidiando con la seguridad de la cadena de suministro. Simplemente hacer IO no bloqueante no te lleva hasta el final. Con Deno, el objetivo es realmente una continuación de este objetivo original, pero un poco más expansivo y moderno. Deno continúa la búsqueda de los mismos objetivos, pero pensando en esto de manera holística como un servicio que estás construyendo y desplegando en una nube pública. Para lograr esto, hay ciertos requisitos que creo que son obvios. En primer lugar, estoy interesado en construir sistemas que sean accesibles al máximo, que tengan una gran base de desarrolladores. Es por eso que JavaScript. JavaScript no es necesariamente el mejor lenguaje en la tierra, pero es el lenguaje más accesible en la tierra. Este sistema debe tener una excelente latencia en todas partes. Ya sea que accedas al sistema desde Japón o desde la ciudad de Nueva York, no deberías ser penalizado por dónde te encuentres en el mundo. Este sistema debería, no sé si estás de acuerdo con esto, pero el sistema debería ser sin servidor. Quieres cosas que se escalen a cero y se escalen hasta el tamaño necesario. Esto es muy importante en la actualidad, ya que hay mucha configuración que se necesita aquí.

2. Deno: Frameworks, Security, and Compatibility

Short description:

Estás lidiando con Terraform, archivos de configuración y frameworks en Deno. El objetivo es reducir la plantilla y mejorar la seguridad. Deno 2.0 está en desarrollo y tiene como objetivo abordar problemas de compatibilidad con Node. Deno proporciona un indicador para el acceso al sistema de archivos y adopta una postura firme en los especificadores de importación. Los módulos integrados de Node están disponibles en Deno.

Estás lidiando con Terraform, estás lidiando con varios archivos de configuración de cada posible biblioteca. Estás lidiando con mucha plantilla, muchos frameworks. ¿Qué son los frameworks de todos modos? Es solo plantilla que colocas de antemano para comenzar a funcionar. Queremos reducir eso tanto como sea posible para avanzar a las personas.

Debería estar asegurado por defecto, ¿verdad? JavaScript es un gran lenguaje para la seguridad porque en realidad es un sandbox y tiene la capacidad de restringir el acceso de las personas al sistema subyacente. Deno está tratando de cumplir con estos requisitos y cada vez se acerca más a esto. Deno 2.0 saldrá este verano y estamos trabajando en esto, ¿verdad? Siempre estamos pensando en cómo construir servicios en la nube óptimos, servidores óptimos.

Quiero repasar algunos aspectos de esto y algunas características de Deno 2.0 que están en desarrollo y demostrarlos, y darte una idea de cómo funciona esta cosa. Entonces, primero y ante todo, Deno, cuando comenzamos hace un par de años, estaba muy en paralelo a Node. Y esto ha sido difícil para que las personas lo adopten. Porque gran parte del ecosistema de JavaScript depende de las bibliotecas de NPM, depende de las API de Node e implementar estos módulos integrados es relativamente importante para que las personas puedan comenzar rápidamente.

Entonces sí, déjame intentar demostrar algo de esto. ¿Es visible? De acuerdo. builtin.js. Y puedes importar readfilesync de node colon fs. Y puedes leerfilesync, digamos, algún archivo. Etsy password en estos días no tiene detalles maliciosos, pero es, sin embargo, un buen ejemplo de seguridad. Así que vamos a imprimir este archivo aquí. Entonces, cuando ejecutamos esto con Deno, por supuesto, la gran cosa de Deno es que no hay seguridad por defecto. No hay acceso al sistema por defecto, más bien. Y cada vez que intentas acceder al sistema de archivos, obtendrás un indicador. Y lo que me está preguntando aquí es, ¿quieres permitir esto? Y puedes decir que no, en cuyo caso el programa fallará. O puedes decir que sí, quiero eso, en cuyo caso obtienes este búfer. En Node, probablemente estés acostumbrado a esto sin un especificador de Node. Y Node en estos días se está moviendo, está alentando a las personas a usar el esquema de Node en ese import especificador. Deno adopta una postura firme aquí de que no vamos a tener este tipo de especificadores de FSBear y demás. Esto genera un poco de incompatibilidad con Node. Pero creo que por una buena razón, ¿verdad? Esto no es demasiado grande y te da un mensaje de error agradable que te dice qué hacer. Así que espero que no sea demasiado confuso para las personas. Así que tenemos los módulos integrados de Node.

3. Soporte de Deno para NPM y compatibilidad

Short description:

Deno tiene soporte incorporado para NPM, lo que permite a los desarrolladores acceder al ecosistema de JavaScript y utilizar módulos. Deno actúa como el cliente de NPM integrado directamente en Node, proporcionando una compatibilidad profunda y admitiendo complementos con la API de Node. Sin embargo, Deno impone restricciones de seguridad para bloquear el acceso a la red y al disco. Si bien Deno implementa los módulos de CommonJS y la semántica de package.json, fomenta el uso de ECMAScript y prohíbe el uso de require. Veamos una demostración de esto codificando un servidor express y ejecutándolo en Deno.

Acabo de mostrar el módulo FS, pero la capa de compatibilidad es bastante sólida en este punto. NPM es como este complemento para Node que creó Isaac Schluter. Siempre ha habido cierta tensión entre Node y NPM. Pero está claro que todo el ecosistema de JavaScript está en NPM y es muy útil poder acceder a ese ecosistema y utilizar módulos. Por esa razón, Deno ahora tiene soporte incorporado para NPM.

Deno, piénsalo como el cliente de NPM integrado directamente en Node. Puede descargar esos paquetes, pero no crea una carpeta local de módulos de Node. Tiene una compatibilidad profunda, incluso admite cosas como complementos con la API de Node. Aplica restricciones de seguridad, por lo que si ese paquete de NPM intenta acceder a la red o al disco, el sistema de permisos de Deno lo bloqueará. El ecosistema de NPM, cuando comienzas a investigar, tiene mucho código antiguo, mucho CommonJS, muchas semánticas extrañas en torno a package.json. Deno implementa todo eso, pero está muy oculto detrás de este lindo especificador de NPM. Como desarrollador de Deno, no puedes usar realmente CommonJS. Somos muy firmes en que todo debería ser ECMAScript ahora y no puedes usar require. Pero cuando realmente accedes a este ecosistema, a través de este portal de especificador de NPM, internamente, en realidad se están cargando módulos de CommonJS y haciendo cosas bastante locas para que esto sea posible.

Como demostración de esto, permíteme codificar un pequeño servidor express aquí y ejecutarlo en Deno. ¿Todavía es visible? Sí, lo haré. Oops. Y perdona mi vimming aquí. Soy extremadamente viejo y gruñón con estas cosas. Importa express de NPM: express. Esto es todo lo que necesitas aquí. Y solo un poco de plantilla. Haces express, eso te da una aplicación, y luego puedes hacer app.get. Y si obtienes la barra diagonal, obtienes una solicitud y una respuesta, blah blah blah. De acuerdo, y luego puedes hacer response.send, creo. Sí, envía hola, tal vez con un salto de línea. Y supongo que tienes que escuchar en el puerto 3000, y siempre es bueno consultar algo en el registro, de lo contrario es un poco confuso. Esto se ejecutará en localhost 3000. Bien, ahora tengo algo que va a usar algo de CommonJS en el fondo, ¿verdad? Express es relativamente antiguo y veamos cómo se ejecuta en Deno.

4. Instalación de NPM en Deno y función Deno KV

Short description:

Voy a ejecutar 'deno run express' para mostrarte cómo Deno maneja los módulos de NPM. Es rápido, transparente y proporciona permisos de seguridad de forma gratuita. Deno KV es una base de datos avanzada de clave-valor secreta incorporada en Deno.

Así que simplemente voy a hacer deno run express. Verás que está intentando acceder al CWD. Creo que esto es algo dentro de Express. Tal vez leyendo argv o algo así. Tenemos que permitir el acceso para eso. También está intentando leer variables de entorno. No estoy seguro de por qué Express está intentando leer variables de entorno. Tal vez para node end o algo así. Pero vamos a permitir eso. Y luego está intentando obtener acceso para ejecutar el servidor en el puerto 3000. Así que lo permitiremos.

Y finalmente tenemos nuestro pequeño servidor web en ejecución que utiliza Express en el fondo. Y como puedes ver, no hay una carpeta de modules de node. Todo esto se instaló automáticamente. Así que si sabes lo que vas a hacer, puedes decir permitir lectura. Puedes permitir que lea cosas en el directorio local. Puedes permitir net y permitir env para omitir esas solicitudes. Y voy a agregar esta bandera de recarga solo para que puedas ver cómo se descargan estos modules de NPM. Afortunadamente, el Wi-Fi está funcionando. Genial. Eso es lo que parece una instalación de NPM en Deno. Es completamente transparente. Ocurre muy rápido en segundo plano. Y simplemente funciona así. Y obtienes los permisos de security de forma gratuita. Esto hace que Deno sea más accesible y nos acerca a la meta de construir servidores, construir servicios en la nube que puedas crear en solo unos segundos.

Hay una nueva función en Deno de la que aún no hemos hablado. Y tendrás que mantenerla en secreto porque aún no se ha anunciado. Pero tenemos una función llamada Deno KV. Y esta es una base de datos avanzada de clave-valor que está integrada directamente en Deno.

5. Base de datos clave-valor de Deno (Deno KV)

Short description:

Deno tiene una base de datos clave-valor incorporada llamada Deno KV. Te permite almacenar objetos JavaScript y realizar operaciones clave-valor como obtener, establecer, listar y eliminar. Deno KV admite transacciones atómicas y está integrado en la CLI y respaldado por SQLite. Será una parte fundamental de la API de Deno 2, lo que facilitará la construcción de servidores de aplicaciones con un modelo clave-valor.

Te permite almacenar objetos JavaScript. Tiene operaciones clave-valor normales como obtener, establecer, listar, eliminar. Tiene transacciones atómicas. Y hablaré un poco más sobre eso. Solo diré que es relativamente avanzado en ese sentido. Y realmente está integrado en la CLI y respaldado por SQLite.

Entonces esto ya está en Deno. Está detrás de una bandera inestable porque aún está en desarrollo. Pero cuando se lance Deno 2 en un par de meses, esto será una parte fundamental de la API. Y la idea es que puedas comenzar a construir servidores de aplicaciones. Tal vez no cosas que realmente requieran muchas relaciones y una gran cantidad de datos. Pero creo que muchas aplicaciones en realidad se adaptan bastante bien a un modelo KV como este, especialmente uno que sea consistente y tenga transacciones.

Permíteme demostrarte eso un poco. Y permíteme usar VS Code para esto solo para tener un runDeno en él. Y la memoria muscular siempre es VIM. OK, así que he generado automáticamente un poco de plantilla aquí. Por cierto, OK, me abstendré de comentar sobre eso. Estoy usando VS Code para completar tipos y cosas con esta API de kv. Entonces, la forma en que funciona es haciendo dno.openkv. Y esto toma una espera. Y está en rojo aquí porque esta es una API inestable. Y así que necesito hacer unstable. No tendrás que hacer esto una vez que esto funcione realmente. Y lo que esto te da es una referencia a esta base de datos. Y simplemente lo registraremos en la consola. Por cierto, ¿esto es visible? Solo díganme si esto es completamente incomprensible. Y terminal. Solo aquí. OK, dno run main. Ups, main ts.

6. Usando el Almacenamiento Clave-Valor en Deno

Short description:

Esta sección cubre cómo usar el almacenamiento clave-valor en Deno, donde la clave es un array de JavaScript. Se demuestra cómo establecer y obtener valores sin necesidad de permisos. La base de datos predeterminada de Deno está respaldada por SQLite.

Entonces, nuevamente, esto está detrás de una bandera inestable. Entonces, si lo ejecutas sin nada, se va a bloquear. Tienes que proporcionar esto inestable. Pero sí, ahora está abierto a la base de datos. ¿Y qué? Así que vamos a construir un poco este ejemplo. Entonces, kv set. Y la clave para esto, esto es un almacenamiento clave-valor. Entonces, hay un espacio clave jerárquico. Y la clave es un array de JavaScript, en realidad. En lugar de serializar una cadena con barras inclinadas entre medio, esto se vuelve relativamente complicado. Simplemente usamos un array aquí. Así que vamos a fingir que estamos creando una tabla de usuarios. Y Alice, creo, es mi ejemplo. Entonces vamos a establecer usuarios/ Alice. Y el valor va a ser algo, algún objeto de JavaScript, ¿verdad? Y si esperamos eso, entonces habremos establecido esto. Y, por supuesto, puedes obtener esto kv.get. Y solo vamos a obtener esa clave. Y solo voy a console.log este x aquí, eliminar este. Entonces, ahora hemos extraído este objeto de Alice. Verás que hay un sello de versión allí. Eso es un poco interesante. Entraremos en eso. Pero creo que otra cosa a tener en cuenta aquí es que no se necesitan permisos. Hay una base de datos predeterminada aquí, y puedes configurar esto para almacenarlo en un archivo. Localmente, esto está respaldado por SQL lite. Entonces, estos se almacenan en una base de datos SQL lite.

7. Actualizando el Contador en el Servidor Deno

Short description:

Permíteme expandir el ejemplo a un servidor que cuenta las solicitudes. Actualizaremos un contador para demostrar el objeto transaccional. Configura un servidor web utilizando la API de servidor incorporada de Deno. Ejecuta el servidor y maneja el acceso a la red. Define una clave 'contador' para almacenar el número entero. Utiliza 'kv atomic mutate' para actualizar el contador.

Permíteme expandir un poco este ejemplo a un servidor que cuenta cuántas visitas, cuántas solicitudes se han realizado al servidor. Solo estamos actualizando un contador. El propósito de esto es demostrar este objeto transaccional, esta transacción aquí.

Entonces, sí, lo que vamos a hacer, permíteme modificar mi ejemplo aquí. En lugar de establecer una tabla de usuarios aquí. Bueno, en primer lugar, permíteme configurar un servidor. Importa serve de HGPS, oops. dno.land std HGPServer.ts. Esto es el servidor Deno incorporado. Y esto toma una solicitud y devuelve una respuesta. Devuelve una nueva respuesta. Las demostraciones siempre son más difíciles cuando estás frente a un grupo de personas como esto. Respuesta. Ahí vamos. OK, esto configura un pequeño servidor web. Y vamos a comentar estas partes aquí. Y simplemente lo ejecutaremos. Y ahora que estoy ejecutando esto, está solicitando acceso a la red. Así que para no tener que hacer eso cada vez, simplemente hagamos allow net. OK, ahora está escuchando en el puerto 8,000. Y podemos hacer curl local host 8,000. Y obtenemos hola. Genial. Tal vez hacerlo un poco más pequeño. OK. Entonces lo que queremos hacer ahora es actualizar este contador. Así que vamos a almacenarlo. Vamos a definir esta clave como contador. Aquí es donde vamos a almacenar este número entero.

8. Incrementando el Contador y Construyendo una Plataforma

Short description:

Estamos incrementando un valor de contador utilizando 'kv atomic mutate'. El valor se recupera de forma asíncrona y se registra. El contador se mantiene incluso después de reiniciar el programa. Esto demuestra una aplicación con estado sin dependencias ni base de datos. Estamos construyendo una plataforma para aplicaciones reales que se ejecutan en todo el mundo.

Y lo que haremos es decir 'kv atomic mutate'. Y aquí diremos que el tipo es suma clave, y luego el valor va a ser un poco confuso aquí, pero solo ten paciencia. Nuevo Dino kv UN64. Y por ahora, ignoraremos lo que eso significa. Y confirmaremos esa transacción y esperaremos eso. Y está dando un error porque no tengo un async aquí.

Entonces ahora estamos incrementando este valor de contador. Y vamos a obtener ese valor de aquí. Así que obtendremos la clave. Y esperemos eso. Todo es asíncrono. Y solo voy a registrar eso en la consola por ahora. ¿Tiene sentido?

Entonces intentemos esto una vez más. Oops. Entonces ahora, cuando hago curl, este es el valor que estoy obteniendo de esta solicitud GET. Y puedes ver que el valor aquí es un KVU64 uno. Y si lo vuelvo a hacer, verás que esos valores se incrementan. Así que obtengamos ese valor, valor, valor. Llamémoslo contador y contador. Y oops, no lo registremos en la consola. En realidad, vamos a devolver eso en una respuesta aquí. Genial. OK, así que cuando lo ejecuto ahora, debería obtener 6, 7, 8, 9. Y si cierro este programa y lo reinicio, ese contador se mantiene. Genial. Así que tenemos una pequeña aplicación con estado donde no necesité instalar ninguna dependencia. No necesito ningún tipo de database.

Déjame hacer una pequeña transición aquí. Todo esto es desarrollo local. Y comencé diciendo que lo que estamos tratando de hacer es construir una plataforma para aplicaciones reales, no solo una instancia única de esto, sino instancias que se ejecutan en todo el mundo que son bastante reales, en cierto sentido.

9. Deno Deploy: Funciones sin servidor en el borde

Short description:

Deno Deploy es una plataforma de funciones sin servidor en el borde que se ejecuta en la nube y en 35 centros de datos en todo el mundo. Utiliza la tecnología de Deno y está impulsado por FoundationDB, una base de datos escalable y altamente consistente. Deno Deploy no requiere configuración, aprovisionamiento ni orquestación, y está optimizado para una lectura rápida. Permite lecturas locales rápidas, lo que lo hace ideal para construir sitios de comercio electrónico o ejecutar servidores de aplicaciones en el borde.

Deno Deploy es como la otra mitad de Deno, ¿verdad? Deno es de código abierto, con licencia MIT, muy similar a Node, que se ejecuta en tu terminal. Deno Deploy utiliza gran parte de esa tecnología, se ejecuta en la nube, en 35 centros de datos en todo el mundo, y es una plataforma de funciones en el borde sin servidor. Alimenta, por ejemplo, las funciones en el borde de Netlify o Superbase. Solo tengo que explicar eso.

Ahora, aquí está la parte real de esto. Tomemos este ejemplo y despleguémoslo en todo el mundo en todos estos centros de datos para que estemos incrementando este contador de manera global. Lo interesante de esta API es que también se mapea no solo a una base de datos SQLite que se ejecuta localmente, sino a una base de datos georrepliada y altamente consistente en Deno Deploy. Esto está impulsado por FoundationDB, que es, búscalo si no lo conoces, pero está impulsando cosas como iCloud o Snowflake. Una base de datos escalable. Esto no requiere configuración, aprovisionamiento ni orquestación, y está realmente optimizado para una lectura rápida para que puedas hacer lecturas locales rápidas en unos 20 milisegundos porque eso es lo que estás haciendo. Eso es a menudo lo que estás haciendo. Si estás construyendo un sitio de comercio electrónico, estás listando muchos productos de la base de datos, y eso necesita ser realmente rápido. Si estás ejecutando en el borde, si estás ejecutando tu servidor de aplicaciones en todas partes al mismo tiempo, necesitas poder leer esos datos muy, muy rápido.

Por cierto, tengo algunas instrucciones aquí si quieres probarlo, pero déjame simplemente hacer un gesto con las manos y decir que esto aún está en pleno desarrollo, así que tendrás que suplicarme acceso si lo deseas. Pero déjame demostrarlo aquí. Y veamos aquí, dash.dino.com. Esto es Dino Deploy. No voy a pasar por esto, pero crearé un nuevo proyecto. Voy a usar el pequeño editor incorporado que tenemos aquí. Así que he creado un nuevo nombre de dominio. Esperemos que esto sea visible. FunnySwan75. Permíteme simplemente renombrarlo a Node Congress. Esperemos que no esté ocupado. De acuerdo, ahora tengo nodecongress.dino.dev. Está devolviendo un servidor de Hola Mundo. Y permíteme tomar este código, copiar y simplemente eliminar esto, y pegarlo allí. Y guardar y desplegar. Esperemos, obtendré un cero devuelto aquí para un contador cero en el lado izquierdo. Oh, ya es cinco.

10. Construyendo Servidores de Aplicaciones Reales con Deno

Short description:

La idea es construir un servidor de aplicaciones real con solo unas pocas líneas de código, cumpliendo con la idea de forzar la optimización en los usuarios. Deno 2.0 saldrá pronto, con más características en desarrollo, como caché, colas persistentes, trabajadores en segundo plano y almacenamiento de objetos. Deno restringe los programas a primitivas de nube distribuida, lo que ayuda a los desarrolladores a construir servicios globales óptimos. Está surgiendo una nueva abstracción de cómputo, similar a cómo Bash es para JavaScript como ELF es para WASM.

Vaya, ustedes son rápidos en esto. Cada vez que recargo esto, estoy verificando el valor de ese contador, ¿verdad? Y sí, esta página debería cargarse rápido en Tokio o en cualquier otro lugar. Sí, saben, supongo que volveré a mis diapositivas aquí. La idea aquí es que simplemente puedes abrir un editor, escribir un par de líneas de código y tener un servidor de aplicaciones real que no solo se ejecute localmente, sino que esté preparado para escalar. Y creo que esto te acerca mucho a construir aplicaciones reales con solo un par de líneas de código y realmente cumplir esta idea de forzar la optimización en los usuarios. Hay más en desarrollo aquí. Hay caché, colas persistentes, trabajadores en segundo plano, almacenamiento de objetos, por supuesto, una compatibilidad hacia atrás aún mejor para las personas. Como dije, Deno 2.0 saldrá este verano y esta funcionalidad de KV estará en marcha pronto. Se lanzará pronto en Deno Deploy. Mi objetivo sigue siendo el mismo, ¿verdad? Con Node, el objetivo era restringir las primitivas de E/S, restringir los programas a primitivas de E/S asíncronas para ayudar a los desarrolladores a construir servidores locales óptimos. Y en Deno, es solo una versión ampliada de eso. Restringiendo los programas a primitivas de nube distribuida, las primitivas adecuadas para ayudar a los desarrolladores a construir servicios globales óptimos. Y déjenme terminar con esta analogía, ¿de acuerdo? Creo que aquí está surgiendo una nueva abstracción de cómputo ¿verdad? Bash es para JavaScript como ELF es para WASM. Está surgiendo un futuro post-UNIX y personas como James están trabajando en esto en Winter CG. Y sí, lo dejaré ahí.

QnA

Q&A sobre las características y funcionalidades de Deno

Short description:

Gracias por su tiempo. Deno tiene como objetivo cumplir con los estándares del navegador y no tiene la intención de solucionar la aritmética de punto flotante de JavaScript. Actualmente no hay forma de permitir el acceso solo a bibliotecas específicas, pero se está investigando en TC39. Deno se puede alojar en varios proveedores de la nube, mientras que el backend de FoundationDB es específico de Deno Deploy. KV amplía el alcance de las aplicaciones más allá de las tiendas de datos KV tradicionales. Elf es el formato binario ejecutable en Linux, análogo al lanzamiento de ejecutables Wasm desde JavaScript. El orador aclara que no estaba utilizando el usuario root en la terminal. La paginación es posible utilizando la API de cursor, y el autohospedaje con la misma funcionalidad que donut.dev solo es posible hasta cierto punto debido a la naturaleza propietaria del backend de FoundationDB.

Así que gracias por su tiempo. Gracias, Ryan, si puedes tomar asiento. Recuerden hacer sus preguntas en Slido. Tenemos dos preguntas en este momento. Entonces, la primera pregunta es, gracias por la excelente charla, por cierto. Fue muy interesante. ¿Deno intentaría solucionar la aritmética de punto flotante de JavaScript en el futuro? No, no creo. Quiero decir, Deno está tratando de cumplir con los estándares del navegador y eso realmente es un problema para TC39 y la definición del lenguaje. Deno no va a tratar de salirse de eso. De acuerdo, genial. Y la siguiente pregunta es, ¿hay alguna forma de permitir el acceso solo a bibliotecas específicas? No, así que creo que esta pregunta se refiere a permitir, por ejemplo, el acceso a la red a una dependencia pero no permitirlo a otras dependencias. Esto no es posible según lo que podemos ver. Nos encantaría tener esta función. Se está trabajando en ello en TC39 y creo que habrá algunas charlas al respecto más adelante pero esto es principalmente investigación y en este momento el sistema de permisos se basa en procesos. Genial. ¿Y la persona podrá alojar KB en proveedores de la nube existentes para confiar y cumplir con el GDPR? Sí, por lo que puedes tomar Deno y puedes implementarlo donde quieras. Puedes ponerlo en AWS Lambda, tendrás una versión local de SQL lite de esto. Puedes ponerlo en Cloud Run, puedes ponerlo donde quieras, todo eso es accesible. El backend de FoundationDB es específico de Deno Deploy. ¿Y para qué crees que se usará principalmente KV? Sí, creemos que las tiendas de datos KV tradicionalmente tienen un conjunto de funciones bastante limitado. Y por lo tanto, las personas tienden a recurrir a las bases de datos relacionales muy a menudo con estas transacciones y este modelo de consistencia. Aún creemos que hay un mundo donde las bases de datos relacionales son necesarias y obviamente las aplicaciones, pero creo que esto amplía mucho el alcance. Por lo tanto, muchas, ya saben, es difícil ponerle un número, pero algunas aplicaciones sencillas hasta aplicaciones de mediana complejidad creo que se adaptarían muy bien a esta abstracción de KB. ¿Y qué es Elf? Elf es el formato binario ejecutable en Linux. Entonces, ya sabes, la analogía que estaba haciendo, debería haberlo explicado un poco más, pero Elf es tan corto, ¿verdad? Entonces, ya sabes, estás usando Bash, estás usando ZSH en Linux, y eso es como un lenguaje de programación dinámico. Es un lenguaje de programación dinámico, uno realmente malo, pero puedes lanzar binarios escritos en C, escritos en C++, escritos en Rust, ¿verdad? Esos son ejecutables Elf. Y la analogía es con JavaScript, tienes esta especie de shell, este lenguaje dinámico de JavaScript donde puedes lanzar estos ejecutables Wasm que están escritos en C++, Rust, etc., para un comportamiento más complicado. Gracias. Solo nos queda un minuto, ¿y por qué siempre usas el usuario root en la terminal? ¿Perdón? Sí, esa es una de las preguntas, ¿por qué siempre usas el usuario root en la terminal? Oh, no, estoy usando mi propio usuario, ¿estaba conectado como root? No. Genial. En tu primer ejemplo de kb, ¿sería posible listar a todos los usuarios? Sí, y deberías consultar la documentación, hay una API de cursor, por lo que puedes hacer paginación a través de, puedes listar, digamos, la tabla de usuarios y paginar a través de ella de manera bastante sencilla. Genial. ¿Y hay alguna forma de autohospedaje con la misma funcionalidad que ofrece donut.dev? Hasta cierto punto. Este backend de FoundationDB esta especie de almacenamiento de KB distribuido es propietario. De acuerdo, gracias. Se nos acabó el tiempo, pero muchas gracias. Practicamos nuestro aplauso, así que demos un 10. ¡Wooh! Gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

React Advanced Conference 2023React Advanced Conference 2023
33 min
React Compiler - Understanding Idiomatic React (React Forget)
React provides a contract to developers- uphold certain rules, and React can efficiently and correctly update the UI. In this talk we'll explore these rules in depth, understanding the reasoning behind them and how they unlock new directions such as automatic memoization. 
React Summit 2023React Summit 2023
32 min
Speeding Up Your React App With Less JavaScript
Too much JavaScript is getting you down? New frameworks promising no JavaScript look interesting, but you have an existing React application to maintain. What if Qwik React is your answer for faster applications startup and better user experience? Qwik React allows you to easily turn your React application into a collection of islands, which can be SSRed and delayed hydrated, and in some instances, hydration skipped altogether. And all of this in an incremental way without a rewrite.
GraphQL Galaxy 2021GraphQL Galaxy 2021
32 min
From GraphQL Zero to GraphQL Hero with RedwoodJS
Top Content
We all love GraphQL, but it can be daunting to get a server up and running and keep your code organized, maintainable, and testable over the long term. No more! Come watch as I go from an empty directory to a fully fledged GraphQL API in minutes flat. Plus, see how easy it is to use and create directives to clean up your code even more. You're gonna love GraphQL even more once you make things Redwood Easy!
JSNation 2023JSNation 2023
28 min
SolidJS: Why All the Suspense?
Solid caught the eye of the frontend community by re-popularizing reactive programming with its compelling use of Signals to render without re-renders. We've seen them adopted in the past year in everything from Preact to Angular. Signals offer a powerful set of primitives that ensure that your UI is in sync with your state independent of components. A universal language for the frontend user interface.
But what about Async? How do we manage to orchestrate data loading and mutation, server rendering, and streaming? Ryan Carniato, creator of SolidJS, takes a look at a different primitive. One that is often misunderstood but is as powerful in its use. Join him as he shows what all the Suspense is about.
React Day Berlin 2022React Day Berlin 2022
22 min
Jotai Atoms Are Just Functions
Top Content
Jotai is a state management library. We have been developing it primarily for React, but it's conceptually not tied to React. It this talk, we will see how Jotai atoms work and learn about the mental model we should have. Atoms are framework-agnostic abstraction to represent states, and they are basically just functions. Understanding the atom abstraction will help designing and implementing states in your applications with Jotai

Workshops on related topic

JSNation Live 2021JSNation Live 2021
156 min
Building a Hyper Fast Web Server with Deno
WorkshopFree
Deno 1.9 introduced a new web server API that takes advantage of Hyper, a fast and correct HTTP implementation for Rust. Using this API instead of the std/http implementation increases performance and provides support for HTTP2. In this workshop, learn how to create a web server utilizing Hyper under the hood and boost the performance for your web apps.
Node Congress 2022Node Congress 2022
57 min
Writing Universal Modules for Deno, Node and the Browser
Workshop
This workshop will walk you through writing a module in TypeScript that can be consumed users of Deno, Node and the browsers. I will explain how to set up formatting, linting and testing in Deno, and then how to publish your module to deno.land/x and npm. We’ll start out with a quick introduction to what Deno is.