Publicado Ruby 2.6.8

11/07/2021
Artículo original

Ruby 2.6.8 ha sido publicado.

Esta versión incluye correcciones de seguridad. Por favor revise detalles en los siguientes tópicos.

Comúnmente no corregimos Ruby 2.6 excepto cuando son correcciones de seguridad, pero esta versión también incluye correcciones a algunas fallas y a problemas de compilación. Vea detalles en la bitácora de contribuciones.

Ruby 2.6 ahora está en la fase de mantenimiento de seguridad, hasta el final de Marzo de 2022. Tras esa fecha, terminará el mantenimiento de Ruby 2.6. Recomendamos que empiece a planear la migración a una versión más reciente de Ruby, tal como 3.0 o 2.7.

Descargas

  • https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.8.tar.bz2

    SIZE: 14131671
    SHA1: 7d38cacb6a0779f04b9f19f94406da97e95bbec4
    SHA256: dac96ca6df8bab5a6fc7778907f42498037f8ce05b63d20779dce3163e9fafe6
    SHA512: 51806d48187dfcce269ff904943dd008df800216ad4797f95481bdeecc2fbac40016bc02eabfff32414839ebb2087511d25eebfd6acead1a1d3813be6c10edf7
    
  • https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.8.tar.gz

    SIZE: 16202660
    SHA1: 949dce34bba3ae93fd302fe705017b03d13b69ab
    SHA256: 1807b78577bc08596a390e8a41aede37b8512190e05c133b17d0501791a8ca6d
    SHA512: 4f8b8736bdae8bb4b2b63d576232d376b4c87239d25bf7aa807d3eeea704cb8b06f465c37050be79b57a52b9bde65a5cc05679dd6df0f443c8e00a19513f882a
    
  • https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.8.tar.xz

    SIZE: 11599488
    SHA1: fa5ad518ef31bbf5c3386dbcec7b57196a1e618e
    SHA256: 8262e4663169c85787fdc9bfbd04d9eb86eb2a4b56d7f98373a8fcaa18e593eb
    SHA512: d040ad2238523587d8f356fcb796b8b6ad7f8caff7dd6df09e3f7efcbfa0369e33600e78c7f2bc713ae77c040757cce5c4fec223cb9070209f2bf741899c556d
    
  • https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.8.zip

    SIZE: 19868666
    SHA1: ece4908dd84c7aaefbe6b188c0aca39eaedb2a77
    SHA256: d5da2d7e1b9a6b570c66b3bb0cfa2de3ce21d002d2385a1fdf7195e2d0d1d5c7
    SHA512: 143ee01da2cba85a2dcb394b1a64b18a748aeb0eda4d6d2d83638706ce4bb05f60f3e80a0429878f823437e0dfba285f8080637523a552eb04aca87df63831dc
    

Comentarios de la versión

Muchos contribuyentes, desarrolladores y usuarios que reportaron fallas nos ayudaron a hacer esta versión. Gracias por sus contribuciones.

Publicado por usa el 2021-07-07
Traducción de vtamara

Publicado Ruby 2.7.4

11/07/2021
Artículo original

Ruby 2.7.4 ha sido publicado.

Esta versión incluye correcciones de seguridad. Por favor vea detalles en los siguientes tópicos.

Vea detalles en la bitacora de contribuciones.

Descargas

  • https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.tar.bz2

    SIZE: 14804934
    SHA1: f5bdecded2d68e4f2f0ab1d20137e8b4b0614e52
    SHA256: bffa8aec9da392eda98f1c561071bb6e71d217d541c617fc6e3282d79f4e7d48
    SHA512: f144c32c9cb0006dfcfa7d297f83f88b881f68c94f0130346c74dfd8758583a68d22accfd0fc9f31db304ab5ff0bc135bfb2868145c0dec1ee6cec5ac6c3725d
    
  • https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.tar.gz

    SIZE: 16915699
    SHA1: 86ec4a97bc43370050b5aef8d6ea3ed3938fb344
    SHA256: 3043099089608859fc8cce7f9fdccaa1f53a462457e3838ec3b25a7d609fbc5b
    SHA512: a317752e9a32c8d1261e67ca89c396722ee779ec8ba4594987812d065b73751f51485a1ede8044aae14b3b16e8d049c6953cef530ae1b82abb135b446c653f8a
    
  • https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.tar.xz

    SIZE: 12067588
    SHA1: 6e044d835f9f432cfa9441241c1ef66e3d607cbf
    SHA256: 2a80824e0ad6100826b69b9890bf55cfc4cf2b61a1e1330fccbcb30c46cef8d7
    SHA512: 2cbb70ecfdd69120e789023ddb2b25cab0d03bc33fdc367a8f74ca8a3ee785c18c8ded9de3ecee627c7e275ffb85147e6abf921b6a61e31851b37c7fedf45bf9
    
  • https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.zip

    SIZE: 20701195
    SHA1: 32bdd5288dcc1e531832c14d26ff7cd218b55bc3
    SHA256: a4fe29bfc6a8338fe4b017705aa9d3358225ea305359520d4995096a4382034e
    SHA512: 2877b809bafe72cba789add85993a1954008012afcfb5fc4645e482478479bb02166b0d5ee12263983a6c828e6970eb1385632409793dcbc5185d7bbc9c4f349
    

Comentarios de la versión

Muchos contribuyentes, desarrolladores y usuarios que reportaron fallas nos ayudaron a hacer esta versión. Gracias por sus contribuciones.

El mantenimiento de Ruby 2.7, incluyendo esta versión, se basan en el “Acuerdo sobre la versión estable de Ruby” de la Asociación Ruby.

Publicado por usa el 2021-07-07
Traducción de vtamara

Publicado Ruby 3.0.2

11/07/2021
Artículo original

Ruby 3.0.2 ha sido publicado.

Esta versión incluye correcciones de seguridad. Por favor vea detalles en los siguientes tópicos.

Vea detalles en la bitacora de contribuciones.

Descargas

  • https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.tar.gz

    SIZE: 19941179
    SHA1: e00784956ed2083a40e269d8b14e571b8fae9a0f
    SHA256: 5085dee0ad9f06996a8acec7ebea4a8735e6fac22f22e2d98c3f2bc3bef7e6f1
    SHA512: e1fba6f5429b5fca9c3f52a32535615fcf95fafa415efc71c46db4cce159f249112c01574c305026be5c50140335696042e47a74194caea045acbfaa4da738cd
    
  • https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.tar.xz

    SIZE: 14746080
    SHA1: cd04711ed3adecbe244c3b4391e67430d11fa9f8
    SHA256: 570e7773100f625599575f363831166d91d49a1ab97d3ab6495af44774155c40
    SHA512: 0f702e2d8ca1342a9d4284dbdd234a3588e057b92566353aa7c21835cf09a3932864b2acf459a976960a1704e9befa562155d36b98b7cda8bd99526e10a374c4
    
  • https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.zip

    SIZE: 24293508
    SHA1: 9cde469fec5c9f8edd1d055fc4a9cc90b9611700
    SHA256: 79e34f7fab000cb64ede8c39724ae240e36ee5905c752d77ec61a067d5e4e1dd
    SHA512: 2eb1ce4d66b06ccdee835a017c0edd4028fff99a29f4a631ffb5b39289afcb6a88f79eb24cf09e78d2baaa7c3e494448e2701a0a976bb092de6f2929f1934325
    

Comentarios de la versión

Muchos contribuyentes, desarrolladores y usuarios que reportaron fallas nos ayudaron a hacer esta versión. Gracias por sus contribuciones.

Publicado por nagachika el 2021-07-07
Traducción de vtamara

Amazon libera el código de su motor de videojuegos Lumberyard: ahora es Open 3D Engine, y tiene el respaldo de la Fundación Linux

07/07/2021
Artículo original

Amazon libera el código de su motor de videojuegos Lumberyard: ahora es Open 3D Engine, y tiene el respaldo de la Fundación Linux

Amazon adquirió en 2015 la licencia de CryEngine, un motor de videojuegos 3D desarrollado originalmente por CryTek (el estudio creador de la saga FarCry). Basándose en el mismo, la compañía fundada por Jeff Bezos reescribió el código desde cero y lanzó en 2016 su motor Amazon Lumberyard, dotado de integración con la plataforma AWS y el servicio de streaming Twitch.

Ahora, un lustro más tarde, ha anunciado la liberación de su código como 'open source' (bajo licencia Apache 2.0, la cual permite licenciar el software derivado como comercial), que ya podemos descargar desde su repositorio oficial en GitHub.

Y lo han acompañado de mejoras en la modularidad y en el rendimiento, y de "un nuevo renderizador fotorrealista, Atom Render, que constituye una parte fundamental del motor y en el que hemos invertido una cantidad significativa de tiempo", explica Eric Morales, director de tecnología de juegos de AWS.

"AWS y Amazon se han beneficiado del código abierto durante mucho tiempo. Por eso hemos contribuido de manera tan agresiva al mismo a lo largo de estos años. Es como una cuenta de ahorros que ahora paga intereses".

"Nuestro objetivo desde el principio fue brindar a los desarrolladores la capacidad de hacer lo que quisieran con el motor desde una perspectiva técnica. Creo que la clave de esta nueva fase consiste en 'limpiar la pizarra' también en lo relativo a las licencias y decirles: 'Simplemente compilad'".

Un proyecto respaldado por la Fundación Linux (y por Adobe, y por Huawei, y…)

En su nueva etapa, Lumberyard será conocido como Open 3D Engine, y contará con su propia fundación, la Open 3D Foundation (supervisada, a su vez, por la misma Fundación Linux) para impulsar su desarrollo promoviendo la colaboración entre estudios desarrolladores de videojuegos para mejorar este motor.

Y no sólo estudios de videojuegos: AWS, Adobe, Huawei, Red Hat o Niantic son parte de los más de 20 miembros fundadores de la fundación.

Este lanzamiento representa una revolución fundamental en un mercado hasta ahora dominado por dos grandes motores gráficos comerciales: Unreal Engine y Unity.

Ahora, los grandes estudios (bueno, y los pequeños desarrolladores independientes, claro) cuentan con una alternativa totalmente gratuita —pero respaldada por varios gigantes de la industria— sobre la que dar forma a sus productos. Una alternativa que, desde Amazon afirman que

"Revolucionará el desarrollo 3D en tiempo real, como ya lo hizo Linux en los sistemas operativos y Apache en la Web".

{"videoId":"x804mse","autoplay":true,"title":"Los 25 juegos mas dificiles de la historia"}
(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

CVE-2021-31799: Vulnerabilidad de inyección de ordenes en RDoc

07/07/2021
Artículo original

Hay una vulnerabilidad de Inyección de Ordenes en el RDoc que se distribuye con Ruby. Se recomienda a todos los usuarios de Ruby que actualicen RDoc a la versión más reciente que resuelve el problema.

Detalles

Se ha reportado la siguiente vulnerabilidad.

RDoc solía llamar Kernel#open para abrir un archivo local. Si un proyecto Ruby tiene un archivo cuyo nombre comience con | y termine con tags, la orden que siga al carácter de tubería será ejecutada. Un proyecto Ruby malicioso podría explotar esto para ejecutar ordenes arbitrarías como el usuario que intente ejecutar la orden rdoc.

Los usuarios de Ruby cuya versión de RDoc sea afectada por esta situación deben actualizar a la versión más reciente de RDoc.

Versiones afectadas

  • Todas las versiones de RDoc desde la 3.11 hasta la 6.3.0

Cómo actualizar

Para corregir la vulnerabilidad ejecute la siguiente orden que actualizará RDoc a la última versión (6.3.1 o más reciente)

gem install rdoc

Si usa bundler, por favor añada gem "rdoc", ">= 6.3.1" a su Gemfile.

Creditos

Agradecemos a Alexandr Savca por reportar el problema.

Historia

  • Publicado originalmente el 2021-05-02 09:00:00 UTC

Publicado por aycabta el 2021-05-02
Traducción de vtamara

¿Qué es Angular? Para qué sirve y por qué aprenderlo

07/07/2021
Artículo original

No hace mucho estuvimos charlando sobre Angular con David García Valiñas, quien trabaja como ingeniero en IBM Research y además es el autor y tutor de nuestro curso de Angular. De esta charla hemos rescatado algunos puntos interesantes que le resultarán muy esclarecedores a cualquier persona que se esté planteando aprender Angular.

Qué es Angular

Angular es un framework open source de desarrollo web front end basado en JavaScript que sirve para crear aplicaciones del tipo SPA (Single Page Application). Una SPA es una aplicación web que se carga completamente en una sola página y que va modificando los contenidos que muestra cuando es necesario sin tener que refrescar la página y a través del enrutado local del navegador.

[youtube:-Lgud4X7AH4]

Dentro del amplio surtido de bibliotecas disponibles para el desarrollo Front End, nuestro tutor David considera que a Angular le podemos llamar framework porque es la más completa, compleja y dogmática. Esto es, te marca de una forma muy clara cómo tienes que desarrollar con ella y te provee de muchas herramientas para trabajar.

Entre otras herramientas, Angular te ofrece: gestión de componentes, gestión de módulos, de directivas y tuberías, un wrapper sobre las APIs del navegador para gestionar enrutados, gestión de servicios (llamadas al backend, inyección de dependencias...) y sobre todo (y donde brilla especialmente) la gestión de formularios.

Y por si esto no fuese suficiente, Angular además te da acceso a otras herramientas muy potentes para extenderlo, como por ejemplo Ionic para el desarrollo móvil.

Web Components vs Componentes de Angular (o React)

Cuidado con este detalle, cuando hablamos de componentes de Angular (o React, o Vue.js) no son exactamente lo mismo que los web components y en ese aspecto aún tienen que mejorar los tres frameworks. Aun así, en este caso Angular también va por delante a la hora de llevar a cabo la exportación desde un componente propio a un componente web. David nos lo explica en este video:

[youtube:d0hEw2yKSW4]

Angular y AngularJS son cosas distintas

Antes de existir Angular tal y como es ahora existía AngularJS. No los confundas, a pesar de que tienen un nombre parecido (y ambos son de Google) se trata de frameworks distintos. Cuando apareció AngularJS el propio JavaScript estaba mucho menos evolucionado y lo lastraba mucho.

[youtube:cGbba4AfItM]

Como puedes ver, las versiones modernas de ECMAScript y la aparición de TypeScript (que se aprende en nuestro curso) abonaron el terreno para propiciar la aparición de Angular con una arquitectura totalmente diferente.

En este mismo blog tenemos un post con las 10 principales diferencias entre AngularJS y Angular por si tienes curiosidad y quieres indagar más sobre este tema.

Ventajas de usar Angular

Ya tenemos un post entero hablando sobre las ventajas de Angular, por hoy nos vamos a centrar en la principal: Si aprendes Angular, lo aprendido ahí es difícil de extrapolar a la forma de trabajar en el desarrollo web clásico. Esto puede parecer una desventaja, pero en realidad es su gran ventaja.

Angular te da menos margen de decisión y te dice cómo tienes que hacer las cosas. Dada la facilidad con la que cambian de empresa los desarrolladores en los últimos años, las empresas han recibido esto con los brazos abiertos porque es una tecnología que permite incorporar desarrolladores nuevos a un equipo de forma mucho más fácil y ágil.

Pero también es una gran ventaja para los desarrolladores: una vez que has aprendido Angular, vas a poder incorporarte sin problema en cualquier equipo de desarrollo que trabaje con él aunque saltes entre sectores completamente diferentes.

[youtube:ISEUBvsYM8k]

Angular vs. React vs. VUE.js

En este video. David nos explica las diferencias fundamentales (y ventajas) de Angular frente a React y Vue.js:

[youtube:XVDJY6xAE9A]

Angular te ofrece un set que te descargas y ya funciona (con React no puedes hacer esto). La pega es que su curva de aprendizaje es más dura. Es más fácil empezar con React o Vue.js, pero ojo, React no es un framework, sino una biblioteca de interfaz de usuario y vas a tener que elegir (y depender de) muchas otras librerías externas para funcionalidades como el enrutado.

Vue tampoco es un framework, pero sí que te sugiere una serie de herramientas externas recomendadas y que puedes bajar en un paquete configurado para arrancar con un framework como NUXT.JS. Al fin y al cabo, esto ya lo tienes también en Angular desde el principio.

Como casi siempre pasa en tecnología, la decisión deberás tomarla en función de tus necesidades.

La mejor forma de aprender Angular

Ya hemos comentado que aprender Angular no es fácil por su curva de aprendizaje, pero merece muchísimo la pena porque su propia naturaleza te permite incorporarte rápidamente en cualquier equipo de desarrollo que lo utilice.

Ante un framework así, lo ideal es empezar de la mano de alguien con mucha experiencia, como David García Valiñas, autor y tutor de nuestro curso de Angular y al que le podrás consultar todas las dudas que te surjan por el camino.

AWS InfiniDASH es el servicio de moda entre desarrolladores. Sólo hay un problema: no existe

06/07/2021
Artículo original

AWS InfiniDASH es el servicio de moda entre desarrolladores. Sólo hay un problema: no existe

Echad un vistazo a Twitter, y veréis cientos de desarrolladores web preguntando por InfiniDASH, o bien afirmando haberlo probado y hablando maravillas sobre este servicio creado por AWS. No es extraño: hace cuatro días que Werner Vogels, CTO de AWS, anunció el evento oficial de InfiniDASH, "el lanzamiento más importante de la historia" de la compañía.

Pero hay un pequeño detalle que no cuadra: las redes sociales de AWS no mencionan este nuevo producto, que tampoco está presente en la (enorme) lista de servicios disponibles en su web. Ni rastro. ¿Qué ha pasado?

La gente pensaba que nada podía eclipsar GitHub Copilot...

Hasta que AWS publicó en GA por sorpresa #Infinidash

¡Aún lo estamos flipando! pic.twitter.com/GwewP0cnq1

— OnTheNubs (@OnTheNubs) July 3, 2021

La clave de lo ocurrido la tiene el creador de InfiniDASH, Joe Nash. Nash es desarrollador web, pero no trabaja para AWS, Amazon (su empresa matriz) o para ninguno de sus rivales. De hecho, ni siquiera ha escrito una línea del código de InfiniDASH. Ni él ni nadie.

AWS ofrece InfiniDASH de servicios, pero no éste

Porque Joe Nash es, realmente, el creador de uno de los memes más exitosos de la última semana en redes. Y le bastó un tuit (que por ahora acumula unos 500 retuits y 3000 'likes') para ello. Traducido al español, el tuit decía lo siguiente:

"Estoy convencido de que un grupo pequeño y dedicado de desarrolladores en Twitter podría viralizar un producto AWS completamente inventado, como 'AWS Infinidash' o algo así, y lograr que apareciera una semana después como requisito en las ofertas de empleo".

Nash pretendía con este tuit criticar dos tendencias del mundillo del desarrollo web:

  1. La tendencia a los empleadores a apuntarse cualquier nueva tecnología que sale al mercado para exigírsela al potencial programador de su empresa, aunque no sea necesaria para su puesto de trabajo e incluso desconozca por completo para qué sirve.

  2. El hecho de que las marcas de los productos de AWS resultan "impenetrables e indistinguibles unas de otras", en sus propias palabras.

No sabemos, eso sí, si Vogels era consciente de esta segunda línea de crítica cuando se sumó al meme y contribuyó a darle un notable empuje.

{"videoId":"x80kt27","autoplay":true,"title":"La carrera de programador en 2017 y en el futuro (con Javier Santana)"}

Pero, por ejemplo, la gente de Signal sí era muy consciente de la primera crítica cuando le anunció al propio Nash que habían lanzado una oferta de empleo que incluía el requisito de conocer InfiniDASH,

"porque la gestión del ciclo de vida de InfiniDASH ha estado en el centro de todo lo que llevamos haciendo desde el principio".

De hecho, si entrábamos a leer la oferta en sí (ahora el texto ya ha cambiado), podíamos encontrarnos la exigencia de contar "con una considerable experiencia" en este servicio de AWS que, supuestamente, acababa de ser lanzado.

Signal
Vía @HatWithPins en Twitter.

En resumen, una poco disimulada referencia a aquella mítica oferta de empleo de IBM en la que pedía 12 años de experiencia en Kubernetes, un software que había sido lanzado sólo 6 años antes.

El chiste sobre InfiniDASH no se paró ahí, claro: ya cuenta con magníficos tutoriales en YouTube y hasta con un falso manual titulado "Advanced Infinidash: The Definitive Guide", que imita el aspecto de los de la editorial O'Reilly:

Soon to be hot off the press:#infinidash #cloud #ai pic.twitter.com/OQ5H2C6KMT

— grail (@grail) July 2, 2021
(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Los 10 mejores videojuegos sobre programación que podemos encontrar en oferta en Steam

05/07/2021
Artículo original

Los 10 mejores videojuegos sobre programación que podemos encontrar en oferta en Steam

Sabiendo que estábamos en los últimos días de las Rebajas de Verano de Steam (finalizan el próximo jueves 8 de julio), decidí darme un garbeo por mi 'wishlist' para ver qué gangas encontraba y, para mi sorpresa, descubrí que un gran número de los mejores videojuegos de la categoría 'Programación' estaban de oferta.

Así que vamos a repasar algunas de las mejores (y más variadas) opciones para aprender programación jugando… o para jugar aprovechándonos de nuestros conocimientos de programación, según el caso:

Super Markup Man

Super Markup Man

Super Markup Man nos ofrece una experiencia de juego de plataformas con el objetivo de iniciarnos en el uso de HTML y CSS. Apto para dummies absolutos en programación web, que podrán ir visualizando en el lado derecho de la pantalla cómo afectan a la visualización de la web los cambios que realizamos en el orden de las etiquetas.

Move Code Lines

Move Code Lines

La propuesta de Move Code Lines es, en el fondo, similar a la del juego anterior: mover elementos del código para experimentar de primera mano cómo afectan al resultado final. Sin embargo, la experiencia se asemeja mucho más a la de una verdadera sesión de programación.

La pantalla nos mostrará, además del código propuesto, una pantalla con el 'output' que debemos conseguir, y otra con el que proporciona el código tal y como está.

El lenguaje usado en el juego es real: se trata del poco conocido Chaiscript. De todos modos, lo importante no es tanto aprender la sintaxis del lenguaje en sí como la lógica de programación subyacente.

Copy Editor: A RegEx Puzzle

Copy Editor

'Copy Editor: A RegEx Puzzle' es un juego cuyo fin es resolver retos usando (y aprendiendo, gracias a completos tutoriales para dummies) expresiones regulares y, como en el anterior, nuestro objetivo reside en hacer coincidir el texto dado con el objetivo marcado, aplicando sucesivos filtros.

Cuando terminemos, el juego nos informará sobre cuán optimizada está la solución que hemos propuesto. Y, a veces, insertará obstáculos (como teclas que no funcionan en determinados niveles) y ayudas (como un complemento ficticio para las expresiones regulares que las dotan de capacidades de procesamiento de lenguaje natural).

{"videoId":"x7ziu8u","autoplay":true,"title":"Las matemáticas no se me dan mal, quiero aprender a programar"}

while True:learn()

While True Learn

La historia de while True:learn() es muy simple: un geek prototípico decide crear una IA para comunicarse con su gato después de descubrir que éste sabe programar (le arregla un bug mientras se va a por café). Y para ello 'qooglea' hasta llegar a los foros de 'CatOverflow' (guiño, guiño), donde otros usuarios (PNJs) nos irán asignando tareas.

Esta rocambolesca situación es la excusa para plantear un videojuego muy divulgativo que nos va introduciendo poco a poco en los conceptos básicos de la programación y de la inteligencia artificial. También en este caso recurriremos a la programación visual, basada en conectar nodos para regular el flujo de datos.

Screeps: World

Screeps

'Screeps: World' es un juego multijugador de estrategia en tiempo real con ambientación futurista bastante típico: unidades automatizadas que extraen recursos para crear bases o que atacan a las unidades y bases de otros jugadores.

Lo novedoso es que esas unidades no tendrán más inteligencia artificial que las que nosotros mismos les programemos usando JavaScript puro y duro: no tendremos otra forma de darles órdenes (nada de hacer clic para indicar que disparen o que se replieguen). Y más nos vale programarlas bien, porque deberán seguir ejecutándose mientras estamos offline.

Podemos jugarlo tanto en un servidor privado como en el de la compañía, pero el precio del videojuego variará según la potencia de CPU con la que queramos contar en este último.

Human Resource Machine / 7 Billion Humans

Capturas
Human Resource Machine (izq.) y Seven Billion Humans (der.).

Estos dos juegos, creados por los desarrolladores de 'World of Goo' y 'Little Inferno', y manteniendo intacta la estética de este último, nos animan a resolver 100 puzzles de programación (40 en 'Human Resource Machine', y 60 en '7 Billion Humans') con los que deberemos automatizar tareas de oficina, programando las acciones de uno o varios humanos, según el juego.

Programaremos usando un lenguaje —variará de una entrega a otra— levemente basado en ensamblador, pero contaremos con un sistema de programación visual para facilitar la tarea. El juego premiará el código más breve (en ningún caso necesitaremos más de 40 instrucciones) y el programa más rápido.

TIS-100 / SHENZEN I/O

Tis 100
TIS-100

Ambos juegos han sido creados por Zachtronic Industries, un estudio independiente (y, durante mucho tiempo, unipersonal), especializado en puzzles de ingeniería (como el reputado Opus Magnum) y en juegos de programación (como los que nos ocupan).

Al igual que ocurría en los juegos anteriores, tendremos que programar en una versión simplificada de ensamblador; al contrario que con aquellos, dejaremos de lado la estética cartoon y las metáforas ofimáticas para simular un contacto directo con el hardware.

Así, TIS-100 nos sitúa frente a la austera interfaz (y el preceptivo manual) de una computadora de los años 70-80 —también ficticia, pero basada en las arquitecturas GA144 y Connection Machine— que ha sufrido un daño en su hardware: ir resolviendo los puzzles que nos plantean ayudará a dar con la solución al problema.

Shenzen I/O
Human Resource Machine (izq.) y Seven Billion Humans (der.).

Su —en cierta forma— sucesor, Shenzen I/O, te anima a asumir el papel de un ingeniero electrónico que trabaja para una ficticia empresa china creando circuitos (una versión simplificada de los reales) y desarrollando luego el código necesario para hacerlos funcionar. Además, nos permite crear nuestros propios retos programando scripts en lenguaje Lua.

MHRD

Mhrd

MHRD nos lleva un paso más allá de los lenguajes de programación (incluso los de bajo nivel, como ensamblador) para entrar de lleno en el de los lenguajes de descripción de circuitos, es decir, los que permiten definir el funcionamiento de nuestros chips.

El lenguaje usado en el videojuego es ficticio, pero se basa en otros reales: VHDL y Verilog, usados en la programación de tarjetas FPGA. Vamos, que este videojuego ya no es para 'dummies'.

Imagen | Basada en origina del Rick Harrison (vía Flickr)

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Captain Slack, una alternativa open source a GitHub Copilot que recurre a StackOverflow en lugar de a la inteligencia artificial

04/07/2021
Artículo original

Captain Slack, una alternativa open source a GitHub Copilot que recurre a StackOverflow en lugar de a la inteligencia artificial

Hace unos días, el desarrollador Hieu Nguyen se levantó por la mañana y vio el revuelo que había causado el lanzamiento de GitHub Copilot, la plataforma de GitHub que, recurriendo a la IA de GPT-3, ayuda al desarrollador a programar software sugiriendo código. Y decidió hacer algo "parecido", sólo "por diversión", como él mismo explica en HackerNews.

Pero Nguyen no sólo no tenía ningún acuerdo con OpenAI que le permitiese usar GPT-3, de modo que no tenía intención de utilizar inteligencia artificial. Tampoco tiempo, dado que quería lanzar su creación lo antes posible, aprovechando el 'hype' en torno a Copilot.

Así que decidió crear una extensión para Visual Studio Code, denominada Captain Stack, que sólo imitara en apariencia el funcionamiento de la plataforma de GitHub. En su lugar, funcionaría "filtrando los resultados de búsqueda de Google y devolviendo una lista de opciones de código sugerido", y dándonos la opción de autocompletar nuestro código con dicha sugerencia.

Pese al enfoque puramente lúdico de su herramienta, su autor confiesa que rápidamente se dio cuenta "de que este método es bastante efectivo, ya que eso es justo lo que los desarrolladores suelen hacer". ¿Y dónde busca estas respuestas?

Fácil, donde lo haría cualquier desarrollador: en StackOverflow. Como bien dice un usuario de HackerNews, "Tú lo llamas 'parodia'", yo digo "Esto podría ser realmente útil".

¿Cómo usar Captain Stack?

Para probar esta extensión, deberemos tener instalada la versión inestable de Visual Studio Code, VSCode insiders, y luego seguir los pasos detallados en la documentación del repositorio de Captain Stack. Una vez instalada, deberemos asegurarnos de activar la característica 'showInlineCompletions' en la configuración del editor.

Una vez hecho eso, en la ventana de edición donde estemos escribiendo código deberemos teclear '//find' y, a continuación, las palabras clave de la búsqueda que habríamos llevado a cabo en Google…

…tal como se aprecia en la siguiente captura, en la que se ha utilizado la búsqueda "embed audio html", y Captain Slack ha insertado un ejemplo básico de uso de la etiqueta

Embed

Vía | HackerNews

(function() { window._JS_MODULES = window._JS_MODULES || {}; var headElement = document.getElementsByTagName('head')[0]; if (_JS_MODULES.instagram) { var instagramScript = document.createElement('script'); instagramScript.src = 'https://platform.instagram.com/en_US/embeds.js'; instagramScript.async = true; instagramScript.defer = true; headElement.appendChild(instagramScript); } })();

Noticias de programación campusMVP #26: primera semana de julio de 2021 - GitHub Copilot

03/07/2021
Artículo original

Imagen ornamental[youtube:-6VWieRJU7E]

Enlaces mencionados en el vídeo:

Página Anterior Página Siguiente