Elimina los errores de Ruby y Rails más rápido

Un error en el software puede ser disruptivo, elusivo, enloquecedor e invasivo. De hecho, un desarrollador a menudo necesita la tenacidad de Edison para encontrar y solucionar un problema.

Pero la determinación no es el único activo que necesita un desarrollador. También se necesita información para depurar el código: ¿Cuáles son los síntomas y efectos del problema? ¿Cuál es su frecuencia? ¿Su generalización? ¿Su procedencia? La evidencia y los artefactos de un error (un volcado de memoria, un seguimiento de la pila, un registro o un caso de prueba) son invaluables.

Exploremos algunas técnicas y herramientas disponibles para los desarrolladores de Ruby y Rails para recopilar e investigar evidencia de un problema. Los datos no pueden reemplazar la tenacidad, pero pueden ayudar a facilitar sus esfuerzos (y ahorrarle sueño).

Utilice variables de entorno para optimizar sus herramientas en Rails

Rails ofrece algunas herramientas excelentes para examinar una aplicación en ejecución, incluido un registrador configurable para capturar diagnósticos propios y cualquier otro que desee agregar. Rails también ofrece un registro de consultas detallado para identificar el origen de las consultas de la base de datos y un registro de puesta en cola detallado para indicar dónde se ponen en cola los trabajos en segundo plano. Los dos últimos registros están habilitados de forma predeterminada en el entornodevelopment; puede habilitar ambos en otros entornos con dos instrucciones.

Una opción de registro menos conocida disponible desde Rails 7 anota cada consulta SQL con comentarios. Si agrega lo siguiente a config/application.rbcualquier archivo de entorno:

El registro de consultas se modifica automáticamente con el nombre de la aplicación, el nombre del controlador, el nombre de la acción o el nombre del trabajo en segundo plano. El siguiente ejemplo de salida proviene directamente de la guía de depuración de Rails :

Probablemente no desee habilitar todas estas funciones en producción. La generación de registros puede resultar costosa en términos de memoria y tiempo (recursos limitados para una aplicación bajo carga).

Sin embargo, existen excepciones. Es posible que desee habilitar brevemente una función a pedido, especialmente al depurar en los modos de desarrollo y prueba. En lugar de modificar el código (y quizás volver a implementarlo) para habilitar o deshabilitar un diagnóstico, use variables de entorno para controlar el estado. En algunos entornos, como Heroku, cambiar la configuración de una variable de entorno no obliga a una nueva implementación.

Por ejemplo, puede definir un conjunto de variables para controlar el registro y el nivel de detalle.

Nombre de la variable Objetivo Valores
COMMENTED_QUERY_LOG Habilitar comentarios en el registro de consultas El valor que no está en blanco habilita la función
LOG_ALL Habilitar todas las funciones de registro El valor que no está en blanco habilita la función
LOG_LEVEL Controlar el umbral para los mensajes de registro debuginfowarnerrorfatalunknown(del orden más verboso al menos verboso)
VERBOSE_ENQUEUE_LOG Mostrar dónde se ponen en cola los trabajos El valor que no está en blanco habilita la función
VERBOSE_QUERY_LOG Mostrar el origen de cada consulta de registro activo El valor que no está en blanco habilita la función

Para mayor comodidad, cree una clase pequeña para consultar la configuración.

Ahora use las variables y el código para configurar las funciones de registro en config/application.rb:

Utilice su shell, un archivo dotenv, su integración continua o su plataforma de alojamiento e implementación para configurar cada opción. También puede utilizar una función a pedido. Simplemente inicie la aplicación con la variable de entorno definida en la línea de comandos.

Pon a punto a Puma para el desarrollo

Basándonos en la sección anterior, veamos cómo usar variables de entorno para adaptar la configuración de Puma para la depuración en el entorno de desarrollo.

Por lo general, Puma está configurado para maximizar el rendimiento en producción, ejecutando varios trabajadores y muchos subprocesos por trabajador. En desarrollo, se desea lo opuesto: un trabajador, un subproceso y un tiempo de espera muy largo para permitir la depuración interactiva. Cada uno de ellos es un parámetro que se puede ajustar.

Modificar config/puma.rbpara reflejar el siguiente código.

Ahora puede configurar las tres variables de entorno para controlar Puma en cada entorno. En el desarrollo, configure los valores para optimizar la depuración interactiva.

Si desea validar la configuración de Puma, configure la variable de entorno PUMA_LOG_CONFIG=truee inicie la aplicación. Puma emite su configuración activa al iniciarse.

Casualmente, la configuración predeterminada de Puma en la versión más reciente de Rails es similar a la que se muestra aquí (gracias a Nate Matykiewicz por el dato).

Ejecutar trabajos en segundo plano en línea

Una aplicación Rails de cualquier complejidad normalmente aprovecha los trabajos en segundo plano para ejecutar tareas que requieren un uso intensivo de recursos informáticos y que requieren una ejecución (relativamente) prolongada. Los trabajos en segundo plano se ejecutan de forma asincrónica, desconectados del ciclo de solicitud/respuesta. Los candidatos ideales para el procesamiento "fuera de banda" incluyen la generación de informes, el envío de correos electrónicos y la interacción con API de terceros. Pero la naturaleza asincrónica de los trabajos también complica la depuración.

Para simplificar la resolución de problemas, ejecute los trabajos inmediatamente en sus entornos de desarrollo y prueba locales. En el modo inmediato, los trabajos no se ponen en cola, sino que se ejecutan instantáneamente. Al ejecutarlos en "primer plano", puede establecer puntos de interrupción e inspeccionar el estado de forma interactiva.

Veamos un ejemplo en el que se utiliza Delayed Job , un backend de cola popular y fácil de administrar para Active Job . Delayed Job proporciona una configuración para habilitar la cola. De manera predeterminada, la configuración es truey los trabajos se ponen en cola como de costumbre. Sin embargo, si se configura en false, los trabajos se ejecutan inmediatamente.

Agregue el siguiente código a su aplicación en config/initializers/delayed_job.rb:

Si DELAYED_JOBS_DISABLE_JOB_QUEUESse establece en cualquier valor, se deshabilita la cola. Si la variable de entorno está en blanco o no está definida, se habilita la cola.

A continuación, en su shell, en la línea de comandos o en sus archivos dot, configúrelo
DELAYED_JOBS_DISABLE_JOB_QUEUESsegún sea necesario.


Establezca la variable de entorno en nada o elimine la variable de entorno para restaurar la puesta en cola.


No existen reglas para nombrar las variables de entorno. Elija nombres que le resulten significativos. Una convención útil para categorizar las variables es agregar un nombre de paquete como prefijo, como PUMA_DELAYED_JOB_. El primero indica variables que afectan a Puma; el segundo connota variables utilizadas por Delayed Job.

Interactuar con llamadas de red

Al igual que los trabajos en segundo plano, las aplicaciones Rails también pueden consumir
interfaces de programación de aplicaciones (API). Las API brindan acceso a servicios externos, como bases de datos GraphQL, transacciones de comercio electrónico y fuentes de datos públicos.

A continuación se muestra otro ejemplo para emitir solicitudes y respuestas HTTP de forma condicional desde la Net::HTTPbiblioteca. Si la variable de entorno DEBUG_HTTPse establece en cualquier valor que no esté en blanco, la solicitud saliente y las respuestas entrantes se imprimen en STDOUT.

Para ver la actividad de la red, simplemente inicie la aplicación con
la variable de entorno definida en la línea de comando.

El métododebug? proporciona cierta abstracción de la implementación real del indicador. Este método, junto con el resto de este código, puede formar una clase base para todas las solicitudes de red, como se muestra en este resumen tomado del código de producción .

Añade Ruby Gems a tu caja de herramientas

El universo de las gemas de Ruby es vasto: es imposible abarcar todas las excelentes gemas disponibles para la depuración. En su lugar, veamos algunas herramientas que puede agregar hoy para obtener un impulso instantáneo. Es probable que agregue cada una de estas a todos sus proyectos.

  • awesome_printtable_printcrean inspecciones completas y legibles de estructuras de datos de Ruby, incluidos los modelos de Active Record. Puede usar cualquiera de las gemas en el código o desde la consola.

A continuación se muestra un ejemplo de un modelo emitido por awesome_printen la consola:

En lugar de p, utilice appara mostrar la salida mejorada. awesome_print enumera los atributos en orden alfabético, un atributo por línea, entre otras ventajas.

  • better_errorsreemplaza la página de error estándar de Rails con un seguimiento de pila mejorado, una lista de parámetros y una consola interactiva donde puede sondear el marco de pila y las variables en el lugar de la excepción. También puede vincular vínculos de código fuente a su editor favorito. Aquí se incluye el código para vincular better_errorsa Visual Studio Code:

Ejecúta export BETTER_ERRORS_EDITOR=vscodeen su shell y reinicie el servidor Rails. Ahora los vínculos a archivos se abren automáticamente en Visual Studio.

  • Mantén las gemas fakerfactory_bot(o sus alternativas) tanto en los grupos de prueba como de desarrollo en Gemfile . Ambas son invaluables si necesitas generar datos rápidamente en la consola.

Una idea más: si utiliza AppSignal como herramienta de monitorización de aplicaciones, esta tiene funciones para interpretar los registros y detectar el origen de los errores.

La depuración es una habilidad

Depurar código es algo así como un arte y, como en cualquier esfuerzo creativo, cuanto más practiques, mejor te volverás.

Depure mientras trabaja en equipo con otro desarrollador, especialmente con uno experimentado. Si su compañero está dispuesto, piensen en voz alta juntos e intercambien ideas y puntos de vista.


Las 6 herramientas de UX y UI más usadas

El diseño de UX y UI no es simplemente estética; es la clave para el éxito de cualquier producto digital. Una interfaz bien diseñada mejora la satisfacción del usuario, aumenta la retención y, en última instancia, contribuye al éxito del negocio. Un buen diseño no solo atrae a los usuarios, sino que también mejora la usabilidad y la accesibilidad, garantizando una experiencia positiva y duradera.

En un mundo digital saturado de opciones, un diseño de UX y UI efectivo se convierte en el diferenciador crucial. La atención meticulosa a la experiencia del usuario desde la fase de diseño hasta la implementación es esencial para crear productos que no solo sean visualmente atractivos, sino que también sean intuitivos y funcionales. Por eso, en este artículo profundizamos en las herramientas que te permitirán aprender UX y UI.

Herramientas de UX y UI más usadas actualmente

Adobe XD

Adobe XD, abreviatura de Experience Design, es una herramienta de diseño y prototipado de interfaz de usuario desarrollada por Adobe. Diseñada para simplificar el proceso de creación de experiencias de usuario cautivadoras, Adobe XD ofrece una plataforma integral que combina diseño y prototipado en una sola aplicación.

Sus características destacadas incluyen una interfaz intuitiva, colaboración en tiempo real, y una variedad de herramientas para diseñar y compartir prototipos interactivos. Adobe XD es esencial para diseñadores y equipos de desarrollo que buscan una solución eficiente para crear experiencias de usuario coherentes y atractivas en el entorno digital.

Las 6 herramientas de UX y UI más usadas

Sketch

Sketch es una potente herramienta de diseño vectorial centrada en la creación de interfaces de usuario. Desarrollada para diseñadores, Sketch ofrece una interfaz intuitiva y herramientas especializadas que agilizan el proceso de diseño. Su enfoque en la simplicidad y la eficiencia permite a los profesionales crear mockups y prototipos de manera rápida y efectiva.

Con funciones como símbolos reutilizables y la capacidad de integrarse con plugins, Sketch se ha convertido en la elección predilecta para diseñadores de interfaces, dado que proporciona una de las herramientas de UX y UI más versátiles. En definitiva, facilita la materialización de ideas y la creación de experiencias digitales visualmente atractivas.

Las 6 herramientas de UX y UI más usadas

Figma

Figma revoluciona el diseño colaborativo con una plataforma basada en la nube que permite a equipos trabajar simultáneamente en proyectos de diseño. Más allá de su accesibilidad en línea, Figma es conocida por su capacidad de colaboración en tiempo real, lo que le permite a los diseñadores e interesados en el proyecto contribuir y comentar de manera sincronizada.

Su versatilidad destaca en la creación de prototipos interactivos, diseño de interfaces y flujos de trabajo ágiles. Con funciones como componentes reutilizables y bibliotecas compartidas, Figma se ha convertido en la opción predilecta para equipos que buscan eficiencia y cohesión en el diseño de experiencias digitales. Es, sin duda, una de las herramientas de UX y UI que no te puedes perder.

Las 6 herramientas de UX y UI más usadas

Framer X

Framer X es una herramienta revolucionaria que fusiona diseño y desarrollo para crear experiencias interactivas. Destaca por su enfoque basado en componentes y le permite a diseñadores construir interfaces dinámicas y desarrolladores integrar fácilmente funcionalidades complejas.

Su potente lenguaje de diseño, combinado con la capacidad de trabajar con componentes reutilizables, agiliza la creación de prototipos y la implementación. Además, su integración con ReactJS brinda una transición fluida del diseño a la codificación. Framer X se ha convertido en una de las herramientas de UX y UI esenciales para aquellos que buscan unir diseño y desarrollo de manera eficiente y sin fisuras.

Las 6 herramientas de UX y UI más usadas

Type Scale

Type Scale es una herramienta de UX y UI fundamental para diseñadores y desarrolladores que buscan equilibrio y coherencia en la selección de fuentes. Esta plataforma online ofrece una amplia gama de escalas tipográficas predefinidas, permitiendo una elección rápida y efectiva de tamaños de texto armoniosos.

Con un enfoque en la accesibilidad y legibilidad, Type Scale facilita la creación de jerarquías visuales y la combinación de fuentes de manera estética. Además, la personalización de escalas garantiza flexibilidad para adaptarse a diversos proyectos.

Las 6 herramientas de UX y UI más usadas

Pttrns

Pttrns emerge como una fuente de inspiración esencial para diseñadores de aplicaciones y entusiastas del diseño de interfaces. Esta plataforma en línea presenta una extensa colección de patrones visuales de aplicaciones móviles, ofreciendo una fuente rica de ideas y soluciones creativas.

Desde diseños minimalistas hasta esquemas complejos, Pttrns brinda una visión detallada de las últimas tendencias en diseño de aplicaciones. Facilita la exploración de estilos y enfoques adoptados por diversas aplicaciones líderes, permitiendo a los diseñadores obtener ideas frescas y mejorar la experiencia del usuario. Pttrns se ha convertido en una de las herramientas de UX y UI imprescindibles para aquellos que buscan la excelencia en el diseño de aplicaciones móviles.

Las 6 herramientas de UX y UI más usadas

 


Las mejores IA para código de programación

No es extraño que hoy en día, ya sea en mayor o menor medida, todas las profesiones estén haciendo uso de la inteligencia artificial para facilitar o automatizar algunas tareas que toman mucho tiempo. En el caso del desarrollo de software esto no podría ser diferente. Existen herramientas de IA para código de programación que están ayudando a infinidad de desarrolladores a potenciar su trabajo sin que la calidad del código se vea afectada. Por eso, si aún no conoces estas maravillosas herramientas, te invitamos a que sigas leyendo. Con ellas no solo mejorarás la eficiencia y precisión en el desarrollo de software, sino que también te ayudarán en diversos aspectos: desde generar código hasta corregir errores y mucho más.

Las mejores herramientas de IA para código que debes aprender a usar

AWS Amplify

La primera IA para código de programación que te presentaremos es AWS Amplify. La hemos puesto en primer lugar porque esta plataforma es ideal para el desarrollo y la implementación impulsados por inteligencia artificial. Además, si estás buscando una herramienta que no solo genere código sino que también te ayude a optimizar todo el proceso de desarrollo de aplicaciones, AWS Amplify te ayudará con eso. No te preocupes si al principio ves que tiene una curva pronunciada de aprendizaje, al estar integrada con la suite de AWS podrás aprovecharla sin problemas.

Características clave:

  • IA para generar código y análisis predictivo
  • Implementación y escalamiento automatizados
  • Capacidades de colaboración y control de versiones

Aplicación práctica: Un equipo de desarrollo puede utilizar AWS Amplify para crear rápidamente un backend para aplicaciones móviles que requieran capacidades de autenticación y almacenamiento de datos. La herramienta genera automáticamente las APIs necesarias y configura servicios como AWS Cognito y AWS DynamoDB, lo que permite a los desarrolladores centrarse en la creación de una experiencia de usuario fluida sin preocuparse por la configuración del servidor.

GitHub Copilot

Nuestra segunda IA para código es GitHub Copilot, potenciado por OpenAI Codex, es más que un simple asistente de codificación. Resulta ideal para programadores que buscan sugerencias de código en tiempo real y ayuda para corregir errores de manera eficaz. Aunque sus sugerencias pueden necesitar ajustes, la herramienta es excelente para aprender nuevos lenguajes y mejorar la productividad.

Características clave:

  • Sugerencias de código generadas por IA para corregir código
  • Amplio soporte para múltiples lenguajes de programación

Aplicación práctica: Imagina que un desarrollador está trabajando en un script Python para analizar datos de ventas. GitHub Copilot puede sugerir automáticamente bloques de código para cargar datos, procesarlos y visualizarlos, basándose en comentarios escritos en lenguaje natural. Esto acelera el proceso de desarrollo y ayuda al programador a aprender nuevas bibliotecas y frameworks de manera interactiva.

ChatGPT de OpenAI

ChatGPT ha ganado popularidad no solo en conversaciones, sino como una herramienta de IA para generar código en diversos lenguajes como Python y JavaScript. Lo que ha hecho tan popular a esta IA para código es su habilidad para entender instrucciones en lenguaje natural y así proporcionar soluciones de código funcional. Todo esto lo convierte en un recurso valioso para los programadores de todos los niveles.

  • Aplicación práctica: Un freelancer podría utilizar ChatGPT para generar rápidamente scripts de scraping web en Python. Al describir el objetivo del script, como extraer precios de productos de varias páginas web, ChatGPT puede ofrecer un código inicial que el programador puede luego ajustar y optimizar. Esto es especialmente útil para aquellos que están aprendiendo a programar o necesitan desarrollar prototipos rápidamente.

Amazon CodeWhisperer

Al igual que su compañero AWS, Amazon CodeWhisperer se especializa en la generación de código, con soporte para múltiples lenguajes de programación. Esta herramienta de IA para código es perfecta para desarrolladores que trabajan en la nube de Amazon y buscan una integración fluida con sus IDEs y servicios de AWS.

  • Aplicación práctica: En un hackathon, un equipo podría usar Amazon CodeWhisperer para desarrollar una aplicación que integre servicios de voz y texto a través de AWS. La herramienta sugeriría código para integrar Amazon Lex y Amazon Polly, permitiendo al equipo construir una interfaz de usuario basada en voz en un tiempo récord.

AlphaCode de Google

AlphaCode de Google te ofrece capacidades impresionantes a la hora de usar la IA para código porque genera soluciones a problemas de programación que podrían compararse con las de un programador junior. Si enfrentas un desafío de codificación, AlphaCode puede proporcionarte múltiples soluciones candidatas, haciendo uso de su amplio entrenamiento en concursos de programación.

  • Aplicación práctica: AlphaCode puede ser usado por un equipo de desarrollo en una empresa de tecnología para resolver desafíos complejos de algoritmos. Por ejemplo, al enfrentarse a un problema de optimización de rutas de entrega, AlphaCode podría generar soluciones basadas en algoritmos avanzados como búsqueda A* o algoritmos genéticos, proporcionando un punto de partida sólido para el equipo.

DeepCode

La IA para código llamada DeepCode se concentra en la seguridad del software, una faceta crucial del desarrollo. Esta herramienta no solo detecta vulnerabilidades, sino que también se integra con tu flujo de trabajo de desarrollo para mejorar continuamente la seguridad del código sin comprometer la velocidad.

  • Aplicación práctica: Una startup de tecnología puede utilizar DeepCode para asegurarse de que su nuevo software de comercio electrónico cumpla con las mejores prácticas de seguridad. La herramienta analiza automáticamente el código para detectar vulnerabilidades y sugerir correcciones antes de que la aplicación sea lanzada al público, reduciendo el riesgo de ataques maliciosos.

Es muy importante que tengas claro que estas herramientas de IA para código serán tus ayudantes o colaboradores para aprender los lenguajes de programación más usados, pero no debes usarlas para reemplazarte a ti mismo. Siempre será muy importante que revises el código que arrojan y que las uses solo como una guía.

 

 


que-es-LTE

¿Qué es LTE y por qué es tan importante?

¿Qué es LTE?

Te explicaremos de una forma muy sencilla qué es LTE. Esta tecnología representa una mejora significativa sobre sus predecesoras, las redes 3G o UMTS y 2G o GSM. Con una capacidad de transferencia que llega a los 300 Mbps, LTE permite descargar archivos a dispositivos móviles en segundos. Los técnicos crearon LTE buscando eficiencia y costos reducidos, garantizando la continuidad de la red 3G con un sistema más fiable que WiMAX.

Características clave de LTE

  • Interfaz de radio mejorada: LTE incluye una nueva interfaz de radio que permite mayores velocidades y mejor rendimiento.
  • Capacidad de transferencia alta: Con velocidades que alcanzan hasta 300 Mbps, LTE supera ampliamente a las redes anteriores.
  • Eficiencia en el uso del espectro: LTE utiliza el espectro radioeléctrico de manera más compatible y flexible, facilitando el despliegue económico para los operadores.

Evolución de las redes móviles: de 3G a LTE

La red UMTS o 3G apareció en 2001, seguida por la red HSPA o 3.5G en 2007 con velocidades de 14.4 Mbps. Sin embargo, LTE marcó un hito con velocidades de inicio de 325 Mbps, mientras que LTE-Advanced elevó esto a 1000 Mbps. Aunque estas redes son consideradas 3.9G, LTE-Advanced sí cumple con los estándares de 4G, proporcionando una base sólida sobre la que se construyó la 5G.

Diferencia entre LTE y 4G

Aunque a menudo se usan indistintamente, conocer qué es LTE te hace comprender que no es exactamente una red 4G. LTE y LTE-Advanced son más bien transiciones hacia el verdadero 4G, ofreciendo una mejora considerable en velocidad y capacidad sobre las redes anteriores.

¿Por qué es tan importante saber qué es LTE?

LTE no solo ha mejorado la velocidad de las conexiones móviles, sino que también ha sido fundamental para el desarrollo de tecnologías futuras como la 5G. Su implementación ha permitido un uso más eficiente del espectro y ha mejorado la cobertura global, siendo esencial en áreas donde el 5G aún no está disponible.

Ventajas de LTE

  • Mayor velocidad de datos: Ideal para descargar y subir contenido rápidamente.
  • Baja latencia: Mejora la experiencia en aplicaciones que requieren respuesta rápida como juegos en línea y videollamadas.
  • Amplia cobertura: Disponible universalmente, facilita la conectividad constante.

Usos de LTE

La tecnología LTE tiene una amplia gama de aplicaciones prácticas:

En el sector de telecomunicaciones

  • Streaming de video y música: Si quieres una transmisión fluida de video y música en alta definición sin interrupciones, saber qué es LTE te dará alta velocidad y baja latencia. Además, se implementó el algoritmo FDASH (fuzzy DASH) para analizar el comportamiento del servicio de video streaming en una red LTE. Los resultados mostraron que FDASH puede adaptarse a diferentes condiciones y exigencias de la tecnología inalámbrica móvil LTE, mejorando la calidad de video en diferentes escenarios de uso
  • Juegos en línea: Los gamers disfrutan de una experiencia mejorada con menor latencia, lo que es crucial para juegos en tiempo real.

En aplicaciones industriales y comerciales

  • IoT (Internet de las Cosas): LTE es fundamental para conectar una multitud de dispositivos IoT, desde electrodomésticos inteligentes hasta sensores en fábricas, debido a su amplia cobertura y capacidad de manejar múltiples conexiones simultáneamente.
  • Automóviles conectados: Conocer qué es LTE te facilitará las comunicaciones entre vehículos conectados y sistemas de tráfico, lo que mejora la seguridad y eficiencia en la conducción.

En servicios de emergencia y seguridad pública

  • Respuesta rápida: LTE permite una comunicación eficaz y rápida entre los servicios de emergencia, mejorando la coordinación durante incidentes críticos.

En educación y salud

  • Educación a distancia: Que los profesores sepan qué es LTE les posibilita el aprendizaje en línea con conexiones estables y rápidas, haciendo accesible la educación a estudiantes en áreas remotas.
  • Telesalud: Los profesionales de la salud pueden realizar consultas a distancia y monitorizar pacientes en tiempo real, mejorando el acceso a servicios médicos en áreas menos accesibles.

Ahora que sabes qué es LTE te das cuenta de que ha revolucionado la manera en que interactuamos y nos conectamos, no solo mejorando las capacidades de los dispositivos móviles sino también permitiendo nuevas formas de comunicación y gestión en varios sectores críticos.

LTE en la vida cotidiana

LTE se ha integrado profundamente en nuestras vidas diarias, permitiendo desde la transmisión de video de alta calidad hasta soportar el creciente número de dispositivos IoT. Además, la tecnología VoLTE ha revolucionado las llamadas telefónicas ofreciendo mayor claridad y rapidez en la conexión.


japon-6g

Japón ya tiene su primer prototipo con 6G: los resultados han sido un éxito

100 Gbps por segundo en interiores. Los gigantes de telecomunicaciones de Japón ya experimentan con el 6G

El 5G ya forma parte de prácticamente cualquier teléfono, aunque los primeros experimentos con el 6G ya están sobre la mesa. Ya hay satélites 6G en órbita para probar esta tecnología, países como Corea del Sur están probando algunos proyectos con ella, y España está aprobando las primeras ayudas para usarla.

Japón ha presentado, en colaboración con algunas de las grandes empresas de telecomunicaciones del país, su primer prototipo 6G. Han logrado hacerlo funcionar a una velocidad notablemente superior que la del 5G, alcanzando los 100 Gbps en interiores.

DOCOMO, NTT Corporation, NEC Corporation y Fujitsu son parte del consorcio japonés que ha anunciado resultados exitosos con su primer prototipo 6G. Las empresas afirman que su dispositivo puede alcanzar velocidades de 100 Gbps en interiores utilizando la banda de 100 GHz. En el caso de usarse en exteriores, la banda a utilizar es la de 300 GHz.

La letra pequeña del experimento está en que, para alcanzar estas velocidades, fue necesario que la prueba se realizase a una corta distancia: 100 metros respecto al emisor. Pese a ello, son datos bárbaros: el 5G tiene una velocidad máxima teórica de 10 Gbps por segundo, aunque estas cifras jamás se alcanzan en un uso real.

El 6G, como su nombre indica, será la sexta generación de la conectividad móvil, prometiendo una latencia aún menor que el 5G y mucha mayor velocidad. Aún no se han definido las bandas de espectro que utilizarán, y su comercialización se espera en 2030. Pese a ello, los primeros casos de uso real podrían adelantarse, llegando entre 2026 y 2028.

De hecho, experimentos recientes como el de la escuela de ingeniería aeroespacial de la Universidad de Tsinghua en Pekín ya han mostrado la capacidad del 6G para enviar 1 TB de datos, en tan solo un segundo y a un 1km de distancia.
Territorios como el de la medicina, energía, IA y automoción serán algunos de los principales beneficiados, con una tecnología más eficiente a nivel energético y más capaz a nivel de respuesta.


Passkeys: Que son y para qué sirven

Estas cosas llamadas Passkeys ya están circulando hoy en día. Fueron una atracción principal en W3C TPAC 2022, obtuvieron soporte en Safari 16, se están abriendo camino en macOS e iOS y están programadas para ser el futuro de los administradores de contraseñas como 1Password. Ya son compatibles con Android y pronto llegarán a Chrome OS y Windows en futuras versiones.

Las mejoras de seguridad del sistema operativo Geeky no acaparan grandes titulares en la comunidad de front-end, pero es lógico que las Passkeys vayan a ser algo importante. Y considerando cómo las contraseñas y las aplicaciones de contraseñas afectan la experiencia del usuario en cosas como la autenticación y el procesamiento de formularios, es posible que al menos queramos comprenderlas para saber lo que viene.

 

Terminología

Aquí está la sección obligatoria de la terminología que querrá saber a medida que profundizamos. Como la mayoría de la tecnología, las Passkeys están elaboradas con verborrea esotérica y acrónimos que a menudo son obstáculos para la comprensión. Intentaremos desmitificar varios aquí.

  • Relying Party:  el servidor en el que se autenticará. Usaremos "servidor" para referirnos a la parte que confía en este artículo.
  • Client:  en nuestro caso, el navegador web o sistema operativo.
  • Authenticator:  Dispositivos de software y/o hardware que permiten la generación y almacenamiento de pares de claves públicas.
  • FIDO : Organismo de estándares abiertos que también crea especificaciones en torno a las credenciales FIDO.
  • WebAuthn : el protocolo subyacente para las Passkeys, también conocido como  credencial FIDO2  o credenciales FIDO de dispositivo único.
  • Passkeys : WebAuthn, pero con sincronización en la nube (también llamadas credenciales FIDO multidispositivo, credenciales reconocibles o credenciales residentes).
  • Public Key Cryptography:  un par de claves generadas que incluye una clave pública y una privada. Dependiendo del algoritmo, debe usarse para firmar y verificar o para cifrar y descifrar. Esto también se conoce como  criptografía asimétrica .
  • RSA:  Acrónimo de los nombres de los creadores, Rivest Shamir y Adel. RSA es una familia de criptografía de clave pública más antigua, pero aún útil, basada en factorización de números primos.
  • Elliptic Curve Cryptography (ECC):  una familia más nueva de criptografía  basada en curvas elípticas .
  • ES256:  una clave pública de curva elíptica que utiliza un algoritmo de firma ECDSA ( PDF ) con  SHA256  para hash.
  • RS256:  Como ES256, pero usa RSA con  RSASSA-PKCS1-v1.5  y SHA256.

 

¿Qué son las Passkeys?

Antes de que podamos hablar específicamente sobre Passkeys, debemos hablar de otro protocolo llamado WebAuthn (también conocido como FIDO2). Las Passkeys son una especificación construida sobre WebAuthn. WebAuthn permite que la criptografía de clave pública reemplace las contraseñas. Utilizamos algún tipo de dispositivo de seguridad, como una clave de hardware o un Módulo de plataforma segura (TPM), para crear claves públicas y privadas.

La clave pública es para que cualquiera pueda usarla. Sin embargo, la clave privada no se puede eliminar del dispositivo que la generó. Este fue uno de los problemas con WebAuthn; si pierde el dispositivo, pierde el acceso.

Las Passkeys resuelven esto proporcionando una sincronización en la nube de sus credenciales. En otras palabras, lo que genera en su computadora ahora también se puede usar en su teléfono (aunque, de manera confusa, también hay credenciales para un solo dispositivo).

Actualmente, al momento de escribir este artículo, solo iOS, macOS y Android brindan soporte completo para Passkeys sincronizadas en la nube, e incluso así, están limitadas por el navegador que se utiliza. Google y Apple proporcionan una interfaz para la sincronización a través de sus  servicios Google Password Manager y Apple iCloud Keychain, respectivamente.

 

¿Cómo reemplazan las Passkeys a las contraseñas?

En criptografía de clave pública se puede realizar lo que se conoce como firma . La firma toma un dato y luego lo ejecuta a través de un algoritmo de firma con la clave privada, donde luego se puede verificar con la clave pública.

Cualquiera puede generar un par de claves públicas y no es atribuible a ninguna persona, ya que cualquiera podría haberlo generado en primer lugar. Lo que lo hace útil es que sólo los datos firmados con la clave privada se pueden verificar con la clave pública. Esa es la parte que reemplaza una contraseña: un servidor almacena la clave pública y nosotros iniciamos sesión verificando que tenemos la otra mitad (por ejemplo, la clave privada), firmando un desafío aleatorio.

Como beneficio adicional, dado que almacenamos las claves públicas del usuario dentro de una base de datos, ya no hay preocupación por las violaciones de contraseñas que afectan a millones de usuarios. Esto reduce el phishing, las infracciones y una serie de otros problemas de seguridad que enfrenta actualmente nuestro mundo dependiente de las contraseñas. Si se viola una base de datos, todo se almacena en las claves públicas del usuario, lo que la hace prácticamente inútil para un atacante.

¡Tampoco más correos electrónicos olvidados y sus contraseñas asociadas! El navegador recordará qué credenciales utilizó para cada sitio web; todo lo que necesita hacer es hacer un par de clics y habrá iniciado sesión. Puede proporcionar un medio secundario de verificación para usar la clave de acceso, como datos biométricos o un pin. , pero siguen siendo mucho más rápidas que las contraseñas de antaño.

 

Más sobre criptografía

La criptografía de clave pública implica tener una clave pública y una privada (conocida como par de claves). Las claves se generan juntas y tienen usos separados. Por ejemplo, la clave privada debe mantenerse en secreto y la clave pública está destinada a quien desee intercambiar mensajes.

Cuando se trata de cifrar y descifrar un mensaje, la clave pública del destinatario se utiliza para cifrar un mensaje de modo que solo la clave privada del destinatario pueda descifrar el mensaje. En el lenguaje de seguridad, esto se conoce como "brindar confidencialidad". Sin embargo, esto no proporciona prueba de que el remitente es quien dice ser, ya que cualquiera puede usar una clave pública para enviarle a alguien un mensaje cifrado.

Hay casos en los que necesitamos verificar que un mensaje efectivamente proviene de su remitente. En estos casos, utilizamos la firma y la verificación de firma para garantizar que el remitente sea quien dice ser (también conocido como  autenticidad ). En la criptografía de clave pública (también llamada  asimétrica ), esto generalmente se hace firmando el hash de un mensaje, de modo que solo la clave pública pueda verificarlo correctamente. El hash y la clave privada del remitente producen una firma después de ejecutarla a través de un algoritmo, y luego cualquiera puede verificar que el mensaje proviene del remitente con la clave pública del remitente.

 

¿Cómo accedemos a las Passkeys?

Para acceder a las Passkeys, primero debemos generarlas y almacenarlas en algún lugar. Algunas de estas funciones se pueden proporcionar con un autenticador. Un  autenticador  es cualquier dispositivo respaldado por hardware o software que brinda la capacidad de generar claves criptográficas. Piense en esas contraseñas de un solo uso que obtiene de Google Authenticator, 1Password o LastPass , entre otros.

Por ejemplo, un autenticador de software puede utilizar el Módulo de plataforma segura (TPM) o el enclave seguro de un dispositivo para crear credenciales. Luego, las credenciales se pueden almacenar de forma remota y sincronizar entre dispositivos, por ejemplo, Passkeys. Un autenticador de hardware sería algo así como  YubiKey , que puede generar y almacenar claves en el propio dispositivo.

Para acceder al autenticador, el navegador debe tener acceso al hardware y, para ello, necesitamos una interfaz. La interfaz que utilizamos aquí es el Protocolo de cliente a autenticador (CTAP). Permite el acceso a diferentes autenticadores a través de diferentes mecanismos. Por ejemplo, podemos acceder a un autenticador a través de NFC, USB y Bluetooth utilizando CTAP.

Una de las formas más interesantes de utilizar Passkeys es conectando su teléfono a través de Bluetooth a otro dispositivo que podría no admitir Passkeys. Cuando los dispositivos están emparejados a través de Bluetooth, puedo iniciar sesión en el navegador de mi computadora usando mi teléfono como intermediario.

 

La diferencia entre Passkeys y WebAuthn

Las Passkeys y las claves WebAuthn se diferencian en varios aspectos. En primer lugar, las Passkeys se consideran credenciales multidispositivo y se pueden sincronizar entre dispositivos. Por el contrario, las claves WebAuthn son credenciales de un solo dispositivo, una forma elegante de decir que está vinculado a un dispositivo para su verificación.

En segundo lugar, para autenticarse en un servidor, las claves WebAuthn deben proporcionar el identificador de usuario para iniciar sesión, después de lo cual  allowCredentials se devuelve una lista al cliente desde el servidor, que informa qué credenciales se pueden usar para iniciar sesión.  Las Passkeys omiten este paso y usan la nombre de dominio del servidor para mostrar qué claves ya están vinculadas a ese sitio.  Puede seleccionar la clave de acceso asociada con ese servidor, tal como ya la conoce su sistema.

De lo contrario, las claves son criptográficamente las mismas; sólo difieren en cómo se almacenan y qué información utilizan para iniciar el proceso de inicio de sesión.

 

El proceso… en pocas palabras

El proceso para generar un WebAuthn o una clave de acceso es muy similar: obtenga un desafío del servidor y luego use la  navigator.credentials.create API web para generar un par de claves públicas. Luego, envíe el desafío y la clave pública al servidor para almacenarlos.

Al recibir la clave pública y el desafío, el servidor valida el desafío y la sesión desde la cual fue creado. Si esto es así, la clave pública se almacena, así como cualquier otra información relevante como el identificador del usuario o los datos de certificación, en la base de datos.

El usuario tiene un paso más: recuperar otro desafío del servidor y usar la  navigator.credentials.get API para firmar el desafío. Enviamos el desafío firmado al servidor, y el servidor verifica el desafío y luego inicia sesión si se aprueba la firma.

Por supuesto, hay mucho más en cada paso. Pero así es generalmente como iniciamos sesión en un sitio web usando WebAuthn o Passkeys.

 

Manos a la obra...

Las Passkeys se utilizan en dos fases distintas: las  fases de certificación y afirmación .

La fase de certificación también puede considerarse como la fase de registro. Te registrarías con un correo electrónico y una contraseña para un nuevo sitio web; sin embargo, en este caso, usaríamos nuestra clave de acceso.

La fase de afirmación es similar a cómo iniciarías sesión en un sitio web después de registrarte.

 

Certificación

 

La  navigator.credentials.create API es el foco de nuestra fase de certificación. Estamos registrados como un nuevo usuario en el sistema y necesitamos generar un nuevo par de claves públicas. Sin embargo, debemos especificar qué tipo de par de claves queremos generar. Eso significa que debemos brindar opciones para  navigator.credentials.create.

Obtendremos  PublicKeyCredential cuál contiene un  AuthenticatorAttestationResponse que regresa después de la creación. La credencial tiene el ID del par de claves generado.

La respuesta proporciona un par de datos útiles. Primero, tenemos nuestra clave pública en esta respuesta y debemos enviarla al servidor para que la almacene. En segundo lugar, también recuperamos la  clientDataJSON propiedad que podemos decodificar y, a partir de ahí, recuperamos los caracteres  type,  challengey  origin de la clave de acceso.

Para la certificación, queremos validar  type,  challengey  origin en el servidor, así como almacenar la clave pública con su identificador, por ejemplo, niño. Opcionalmente también podemos almacenar el  attestationObject si lo deseamos. Otra propiedad útil para almacenar es el  algoritmo COSE  , que se define anteriormente en nuestro   PublicKeyCredentialCreationOptions with  alg: -7 o  alg: -256, para verificar fácilmente cualquier desafío firmado en la fase de afirmación.

 

Afirmación

La  navigator.credentials.get API será el foco de la fase de afirmación. Conceptualmente, aquí sería donde el usuario inicia sesión en la aplicación web después de registrarse.

Esta vez volveremos a tener un  PublicKeyCredential con un . AuthenticatorAssertionResponseLa credencial nuevamente incluye el identificador de clave.

También obtenemos  type,  challengey  origin de  clientDataJSON nuevo. El  signature ahora está incluido en la respuesta, así como el authenticatorData. Los necesitaremos y para  clientDataJSON verificar que esto se firmó con la clave privada.

Incluye  authenticatorData algunas propiedades que vale la pena rastrear. Primero, el hash SHA256 del origen que estás usando, ubicado dentro de los primeros 32 bytes, que es útil para verificar que la solicitud proviene del mismo servidor de origen. El segundo es el  signCount, que va del byte 33 al 37. Esto se genera a partir del autenticador y debe compararse con su valor anterior para garantizar que no ocurra nada sospechoso con la clave. El valor siempre debe ser 0 cuando se trata de una clave de acceso para múltiples dispositivos y debe ser aleatoriamente mayor que el signCount anterior cuando se trata de una clave de acceso para un solo dispositivo.

Una vez que haya afirmado su inicio de sesión, debería iniciar sesión: ¡  felicidades ! Passkeys es un protocolo bastante bueno, pero viene con algunas advertencias.

 

Algunas desventajas

Las Passkeys tienen muchas ventajas, sin embargo, existen algunos problemas al momento de escribir este artículo. Por un lado, las Passkeys todavía son un poco tempranas en cuanto a soporte, ya que solo se permiten credenciales de un solo dispositivo en Windows y muy poco soporte para sistemas Linux.  Passkeys.dev  proporciona una  buena tabla que es algo así como el Caniuse de este protocolo .

Además, las plataformas de Passkeys de Google y Apple no se comunican entre sí. Si desea transferir sus credenciales de su teléfono Android a su iPhone... bueno, por ahora no tiene suerte. ¡Eso no quiere decir que no haya interoperabilidad! Puede iniciar sesión en su computadora usando su teléfono como autenticador. Pero sería mucho más limpio tenerlo integrado en el sistema operativo y sincronizado sin que esté bloqueado a nivel de proveedor.

 

¿Adónde van las cosas?

¿Cómo será el protocolo de Passkeys del futuro? ¡Se ve bastante bien! Una vez que obtenga soporte de más sistemas operativos, debería haber una aceptación en su uso, y comenzarás a verlo usado cada vez más en la naturaleza. Algunos administradores de contraseñas incluso los respaldarán de primera mano.

Las Passkeys no solo se admiten en la web.  Tanto Android  como  iOS  admitirán claves nativas como ciudadanos de primera clase. Todavía estamos en los primeros días de todo esto, pero esperamos verlo mencionado cada vez más.

Después de todo, eliminamos la necesidad de contraseñas y, al hacerlo, ¡hacemos que el mundo sea más seguro!

 

Recursos

Aquí hay algunos recursos más si deseas obtener más información sobre las Passkeys.

 


neural-networks

¿Qué son las Redes Neuronales? Explicación básica de Deep Learning

¿Intrigado por la idea de que los ordenadores aprendan? Bueno, las Redes Neuronales son los principales actores clave; son neuronas interconectadas que se asemejan de forma vaga a la estructura de un cerebro humano, imitando el acto de aprender y tomar decisiones.

 

Neural Networks

En este artículo, veremos:

  • Qué son las Redes Neuronales
  • De qué están hechas las Redes Neuronales
  • Cómo aprenden las Redes Neuronales
  • Cuáles son los tipos de Redes Neuronales
  • ¿Qué son las Redes Neuronales?

 

Qué son las Redes Neuronales

Una Red Neuronal Artificial (ANN) es un método de deep learning en inteligencia artificial basado en el cerebro humano, diseñado para que un ordenador sea capaz de aprender a realizar tareas basándose en ejemplos de entrenamiento. Sin embargo, para que un ordenador pueda realizar estas tareas, tiene que aprender, que es el concepto clave detrás de las redes neuronales. Por ejemplo, a una red neuronal se le pueden proporcionar miles de imágenes de gatos y perros, cada una etiquetada con "gato" o "perro", y encontraría patrones visuales en las imágenes para aprender a clasificar una imagen determinada como gato o perro.

 

Neural Networks

¿De qué están hechas las Redes Neuronales?

En términos generales, las capas son los bloques de construcción de las redes neuronales formadas por nodos, cada uno de los cuales es responsable de procesar y transformar los datos de una manera específica. Hay tres tipos de capas:

  1. Capa de Entrada: Esta capa recibe los datos de entrada y los pasa al resto de la red.
  2. Capa Oculta: Está compuesta por una o más capas según la complejidad de la red, y son los componentes clave del aprendizaje y la complejidad. Las capas ocultas funcionan analizando la salida de la capa anterior, procesándola más y pasándola a la siguiente capa.
  3. Capa de Salida: Contiene los resultados finales de la red después de todo el procesamiento de datos. El número de nodos de esta capa depende del número de clases que se quieran predecir.

Neural Networks

Profundizando un poco en la conexión entre dos capas, encontramos que cada nodo está conectado con cada nodo en la siguiente capa. La fuerza de estas conexiones se determina por un parámetro llamado peso; durante el entrenamiento, la red aprende los valores óptimos para estos pesos a través de un proceso llamado retropropagación.

 

Neural Networks

¿Cómo aprenden las Redes Neuronales?

El aprendizaje, o comúnmente conocido como entrenamiento, generalmente es un proceso que involucra la presentación de redes neuronales con ejemplos de datos de entrada junto con la salida correcta correspondiente. Específicamente, hay varios pasos involucrados en el proceso de entrenamiento. Estos pasos incluyen:

  1. Inicialización: Configurar la configuración inicial de la red neuronal, lo que generalmente implica asignar valores aleatorios a sus parámetros como pesos.
  2. Propagación hacia adelante: Procesar los datos de entrada a través de la red para generar predicciones o salidas.
  3. Medición de errores: Evaluar la precisión entre las salidas predichas y las salidas reales usando una medida de error o pérdida.
  4. Cálculo de ajustes: Determinar cómo actualizar los parámetros de la red basándose en los errores observados, con el objetivo de reducirlos con el tiempo.
  5. Actualización de parámetros: Modificar los parámetros de la red, como pesos y sesgos, para minimizar los errores observados durante el entrenamiento.
  6. Optimización iterativa: Repetir los pasos anteriores a lo largo de múltiples iteraciones, mejorando gradualmente el rendimiento de la red.
  7. Validación y prueba: Evaluar el rendimiento de la red entrenada en conjuntos de datos de validación y prueba independientes para asegurar su capacidad de generalizar a datos no vistos.

 

Cuáles son los tipos de Redes Neuronales

Las Redes Neuronales son variadas, cada una con una estructura y función única para resolver diferentes problemas. Las redes neuronales más comunes son:

  • Red neuronal convolucional (CNN): Utilizada en tareas de clasificación y visión por ordenador, utiliza filtros de optimización para reducir imágenes a una forma más fácil de procesar, sin perder características críticas. Aplicaciones de la vida real incluyen reconocimiento de patrones, reconocimiento de imágenes, detección de objetos, reconocimiento facial y más.
  • Red neuronal recurrente (RNN): Una red neuronal bidireccional para manejar datos secuenciales, lo que significa que las RNN tienen conexiones que forman ciclos dirigidos donde la salida del paso anterior se utiliza como entrada para el paso actual. Se utiliza en casos como el reconocimiento de voz o reconocimiento de escritura donde es esencial recordar información previa.

Esperamos que esta breve descripción de las Redes Neuronales os haya servido para comprender sus conceptos básicos.


google-pyton

Google acaba de despedir a todo su equipo de Python de EE.UU

Google ha despedido a todo su actual equipo de desarrollo de Python, una decisión inesperada enmarcada en una política de despidos que también está afectando a otros departamentos de la compañía.

El equipo de Python, que operaba desde Sunnyvale (California), tenía menos de diez miembros y era responsable de mantener una versión estable de Python en Google, actualizar miles de paquetes de terceros y de desarrollar un verificador de tipos llamado 'pytype', que realiza inferencia de código sin anotaciones de tipo en proyectos de gran envergadura.

La eliminación de este equipo, que también proporcionaba asistencia técnica dentro de la compañía y trabajaba conjuntamente con otros equipos de desarrollo, como los de aprendizaje automático e IA, ha jugado un papel crucial en la supervisión del ecosistema de Python dentro de Google, está generando mucho debate en redes.

Una publicación en Mastodon por un ex miembro del equipo describía su trabajo en Google como "el mejor" en sus 20 años en el sector, mientras que Thomas Wouters (miembro destacado del Python Steering Council y responsable de lanzamientos para las versiones 3.12 y 3.13 de Python) que

"Es un día difícil cuando a todas las personas con las que trabajas directamente, incluido tu gerente, se les despide (perdón, 'se les reducen las funciones') y se les pide que entrenen a sus reemplazos".

google-despidos

No sois vosotros, es el presupuesto

Y es que el problema de lo ocurrido no es que Google tenga pensado prescindir de Python en modo alguno (todo lo contrario, teniendo en cuenta el énfasis que está poniendo en los últimos tiempos en el desarrollo de IA), sino que la compañía del buscador está reduciendo costos a través de la contratación de mano de obra más barata fuera de Estados Unidos.

En la misma onda, la jefa de finanzas de Google, Ruth Porat, envió hace una semana un e-mail al personal de varios equipos financieros de la empresa diciendo que los inminentes despidos irán acompañados de reubicaciones a nuevas oficinas de Bangalore, Ciudad de México y Dublín.

Aun así, la decisión ha generado especulaciones sobre las prioridades actuales de Google: hay quien ve estos despidos como una maniobra estratégicamente poco acertada que igualmente podría terminar afectando al papel de Google en la llamada "carrera armamentística de la IA".

Recordemos que, aunque Musk esté convencido de que el futuro de la IA reside en el lenguaje Rust, hoy por hoy el machine learning, la base de la actual generación de IA, depende en gran medida de Python y de sus principales bibliotecas (como TensorFlow y PyTorch) no sólo en el caso de los proyectos de software de Google, sino de toda la industria tecnológica.

Por el momento, Google no ha emitido un comunicado oficial sobre estos despidos ni sobre cómo planea manejar el desarrollo y mantenimiento de Python internamente en el futuro.


gemini-pyton

Google Gemini ya permite editar y ejecutar código Python en su versión de pago

La última actualización anunciada para Google Gemini, la IA estrella del gigante tecnológico, que acaba de implementar la función de editar y ejecutar código Python desde la propia interfaz del chatbot, si bien por ahora será una característica exclusiva para los usuarios de Gemini Advanced, la versión de pago de esta plataforma.

La capacidad de editar y ejecutar código Python directamente en la interfaz de Gemini (sin necesidad de exportar a otras plataformas, como Google Colab o Replit) proporciona dos beneficios principales:

  • Ofrece un entorno interactivo para experimentar con fragmentos de código, permitiendo así que los aspirantes a programador observen el impacto de las modificaciones y profundicen su comprensión de los principios de programación.
  • Facilita a los desarrolladores más experimentados la posibilidad de verificar rápidamente la funcionalidad del código Python generado por la IA antes de integrarlo en sus proyectos. Esto no solo ahorra tiempo valioso, sino que también garantiza el funcionamiento sin problemas del código implementado.
    Google alerta sobre la privacidad de su propia IA: Gemini puede guardar tus datos hasta tres años y usarse para otros servicios

Eso sí, hay algo que por ahora se sigue echando de menos en Google Gemini Advanced si lo comparamos con su rival de OpenAI, según explica en su cuenta de X el experto en IA Ethan Mollick: "puede hacer algunos trucos de Code Interpreter y ejecutar código Python, pero, hasta donde yo sé, no te permite cargar ni descargar archivos".

"Eso limita lo que el sistema puede hacer en relación con ChatGPT. Además, a menudo es necesario recordarle que sí, que puede ejecutar el código por sí mismo".

Haciendo una prueba (y comparado con ChatGPT)

Le hemos pedido a GPT-4 y a Gemini Advance que creen un código capaz de identificar si un determinado e-mail tiene un formato válido o no. Esta ha sido la respuesta de ChatGPT, mostrando un código Python que podemos copiar y ejecutar en otro entorno:

pyton-chatgpt
Pasemos ahora a Gemini, que nos ha proporcionado dos versiones del código: una, ejecutable, en Python (bastante similar a la anterior); la otra, no ejecutable, en JavaScript. Aquí está la primera:

pyton-chatgpt
Y sólo hemos necesitado darle al botón de ejecutar (▶️) para que nos devuelva el resultado que se muestra en el apartado "Salida de código". Pero, ¿y si hubiéramos querido probar si funcionaba bien con algún otro e-mail? Fácil, sólo habríamos tenido que cambiar el valor de la variable 'correo' usando el botón de editar código (✏️).


MWC2024

Todas las novedades del Mobile World Congress 2024

Barcelona ha vuelto a ser la ciudad que acoge un año más uno de los encuentros tecnológicos más importantes del mundo: el Mobile World Congress. Del 26 al 29 de febrero se han visto nuevos productos y tecnologías que llegarán al mercado durante los próximos meses.

Con más de 100.000 asistentes y más de 2.400 expositores y unos 1.100 conferenciantes, marcas líderes como Samsung, Xiaomi, Google, Microsoft, Nokia o Huawei no han querido perderse el evento.

A pesar de su nombre, el encuentro está virando a un momento de exposición para todo tipo de tecnologías y no solo de móviles, donde se han visto robots, coches “voladores”, desarrollos con IA o lo último en pantallas. Si no has podido asistir, ¡te contamos todas las novedades!

Cámaras de última generación

Uno de los puntos fuertes de los últimos años de los gigantes de la tecnología es la mejora de las cámaras de los teléfonos.

ZTE ha presentado su Nubia Z60 Ultra, el cual cuenta con tres cámaras de 18x, 33x y 120x y permite grabar en 4K. Su procesador es de los punteros en el mercado, el Smart Dragon 8 GEN 3.

También ha apostado por la mejora de su tablet en 3D, la Nubia Pad 3D II, que ahora se puede usar sin gafas mediante la detección de los ojos del usuario, la cual permite “centrar” los objetos de la pantalla para ver una imagen en tres dimensiones.

Traducción instantánea e imágenes con IA

Samsung también ha apostado por la mejora en sus cámaras, pero yendo un pasó más al añadir IA. Ahora ofrecen la posibilidad de editar la imagen en el momento con opciones que van desde hacer personas más grandes o pequeñas, eliminarlas de la foto o captar lugares sin apenas luz, un zoom cinco veces más amplio, etc.

También han introducido un servicio de traducción instantánea en las llamadas, lo que facilita las conversaciones entre personas que no hablen el mismo idioma. Live Translation es como lo han llamado, y se va a convertir en una herramienta muy útil en, por ejemplo, viajes al extranjero donde hay que hacer una reserva o pedir algo en un idioma que desconozcamos.

Pantallas flexibles y transparentes

lenovo-transparent

Lenovo ha apostado por un concepto más futurista en sus pantallas con un portátil que se presenta como un mix de realidad, mezclado con realidad aumentada, gafas de realidad virtual y trasladado todo ello a un ordenador.
La cámara reconoce el objeto, el sistema la recopila y lanza la información en la pantalla. Puedes verlo en este vídeo.

Motorola por su parte, sigue apostando por las pantallas flexibles y ha presentado un prototipo de móvil que se puede llevar como una pulsera. La pantalla es POLED de 6,9 pulgadas de diagonal flexible y puede enrollarse en la muñeca.

Perros robot

Los robots vuelven a ser uno de los protagonistas en el Congreso y, este año, han sido dos los que han destacado: el CyberDog 2 de Xiaomi y el Dynamic 1 de Tecno.

cyberdog

Xiaomi ha presentado la versión 2.0 de su “robodog”, el cual presenta un aspecto más parecido al animal, pues recuerda a un dóberman metalizado. Está equipado con el microactuador CyberGear, de desarrollo propio, y que mejora la movilidad del robot y lo ayuda a realizar maniobras de alta dificultad, como volteretas hacia atrás continuas y recuperación de caídas. De hecho, puede sostenerse sobre una pata.

CyberDog 2 está equipado con 19 sensores de alta precisión para visión, tacto y oído, compuestos por una cámara interactiva respaldada por IA, cuatro sensores ToF, un sensor LiDAR, una cámara de profundidad, un sensor ultrasónico, un sensor de lente ojo de pez, un sensor de fuerza y dos sensores de banda ultraancha.

Por su parte, Tecno ha presentado a Dynamic 1, un robot con forma de perro e IA incorporada, equipado con faros para alumbrar los caminos más oscuros. Puede subir escaleras, inclinarse o estrechar la mano. También responde a comando de voz, pues está equipado con cuatro micrófonos y un algoritmo de reconocimiento de voz basado en IA.

El robot es capaz de responder a ciertas peticiones a través de una app o de un control remoto, gracias a la conectividad Bluetooth y Wi-Fi. Está alimentado por una CPU ARM, que permite una estabilidad dinámica, una rápida recuperación posterior a la caída y velocidades de hasta 3,7 metros por segundo.

Novedades en Android


Google ha aprovechado para mostrar las novedades que se avecinan en sus plataformas y servicios. La IA va a ser la protagonista de las mejoras en todos ellos, donde destacan:

  • Android Auto: ahora será capaz de resumir mensajes largos o chats a través de IA, así como generar respuestas a estos.
  • Descripción de imágenes generadas por IA: Lookout ahora incluirá la posibilidad de generar descripciones en estas imágenes, lo que ayudará a personas con necesidad de herramientas de accesibilidad.
  • Mejor integración de Lens en Google Maps: ahora será posible rodear un lugar en el mapa para obtener información relevante.
  • Soporte para comentarios manuscritos en Google Docs: para los que dispongan de una tablet o un smartphone compatible con stylus, podrán hacer anotaciones manuscritas en los documentos de Google, así como anotaciones usando el dedo.

Estas son solo algunas, pero prometieron muchas más en herramientas como Google Wallet, Wear OS, Spotify o Fitbit.