Master

Herramientas

Adoptar?

  • Airflow sigue siendo nuestra herramienta de código abierto favorita y más utilizada para la gestión de flujos de trabajo para pipelines de procesamiento de datos como grafos acíclicos dirigidos (DAGs). Esta es un área en crecimiento con herramientas de código abierto como Luigi, Argo y herramientas más específicas como Azure Data Factory o AWS Data Pipeline. Sin embargo, Airflow se diferencia porque su definición programática de flujos de trabajo se realiza en archivos de configuración con poco código, provee soporte para pruebas automatizadas, es de código abierto, es multiplataforma, ofrece muchas posibilidades de integración con el ecosistema de datos y tiene soporte de una gran comunidad. No obstante, en arquitecturas de datos descentralizadas, como la malla de datos, esta herramienta se puede usar como un orquestador centralizado de flujos de trabajo.

    Historia
  • Bitrise, una herramienta de entrega continua de dominio específico para aplicaciones móviles, sigue siendo útil para el flujo de trabajo para el desarrollo móvil y los equipos deberían utilizarlo. Bitrise puede construir, probar y desplegar aplicaciones móviles desde la computadora portátil de la persona desarrolladora hasta la publicación en la tienda de aplicaciones. Es fácil de configurar y proporciona un conjunto completo de pasos listos para usar para la mayoría de las necesidades del desarrollo móvil.

    Historia
  • Entre las herramientas disponibles para mantener las dependencias actualizadas, Dependabot es la opción predeterminada en nuestra opinión. La integración de Dependabot con GitHub es fluida y automáticamente envía pull requests para actualizar las dependencias a sus últimas versiones. Esto se puede habilitar a nivel de organización, haciendo también muy fácil para los equipos recibir estos pull requests. Si no estás usando GitHub, es posible usar las bibliotecas de Dependabot dentro del pipeline de construcción. Si te interesa una herramienta alternativa, también podrías considerar Renovate, que soporta una gama más amplia de servicios, incluyendo GitLab, Bitbucket y Azure DevOps.

    Historia
  • Helm es un gestor de paquetes para Kubernetes. Viene con un repositorio de aplicaciones curadas de Kubernetes que se mantienen en el repositorio Charts oficial. Desde la última vez que hablamos sobre Helm, Helm 3 ha sido publicado, y el cambio más significativo es la eliminación de Tiller, el componente de servidor de Helm 2. El beneficio de un diseño sin Tiller es que solo se puede realizar cambios al clúster de Kubernetes desde el lado cliente, es decir, solo es posible modificar el clúster de acuerdo a los permisos que se tenga como usuario del comando Helm. Hemos usado Helm en varios proyectos de clientes y su gestión de dependencias, plantillas y mecanismo de hook ha simplificado enormemente la gestión del ciclo de vida de las aplicaciones en Kubernetes.

    Historia
  • Los pipelines de construcción que crean y despliegan contenedores deberían incluir el escaneo de seguridad de los contenedores. A nuestros equipos les gusta especialmente Trivy, un escáner de vulnerabilidades para contenedores. Hemos probado Clair y Anchore Engine entre otras buenas herramientas en esta área. A diferencia de Clair, Trivy no solo verifica los contenedores, sino también las dependencias en el código. Además, como Trivy se publica como un binario independiente, es más fácil configurar y ejecutar el análisis localmente. Otros beneficios de Trivy son que es de código abierto y soporta contenedores sin distribución (distroless).

    Historia

Probar?

  • Bokeh es una de las principales bibliotecas en Python para crear gráficos científicos y visualizaciones de datos que se renderizan en el navegador a través de JavaScript. Estas herramientas, en comparación con las de escritorio que generan imágenes estáticas, facilitan la reutilización de código a la hora de realizar trabajo exploratorio en aplicaciones web. Bokeh hace este trabajo especialmente bien: es una biblioteca consolidada y completa, y nos gusta que concentra su funcionalidad en la capa de presentación sin involucrarse en otros temas como la agregación de datos (ver ggplot) o en el desarrollo web (como Shiny o Dash). Por ello, si la separación de responsabilidades es prioritaria, es un placer usar Bokeh. Cabe decir que esta herramienta sí que proporciona componentes de UI para web y puede ejecutarse en modo servidor, pero estas funcionalidades son opcionales y dependen de la necesidad. Bokeh es flexible y no hace supuestos sobre cómo se utilizará o si tiene demasiadas dependencias (como pandas o notebooks).

    Historia
  • Implementar pipelines para entrega continua sostenibles, que puedan construir y desplegar software de producción en múltiples ambientes, requiere de una herramienta que trate a los pipelines de construcción y a los artefactos como protagonistas. Cuando empezamos a evaluar a Concourse nos gustó su modelo de operación simple y flexible, el principio de compilación basada en contenedores y el hecho de que obliga a definir los pipelines como código. Desde entonces su usabilidad ha mejorado y su modelo simple ha resistido el paso del tiempo. Muchos de nuestros equipos y clientes han usado Concourse con éxito en instalaciones de pipelines de gran magnitud durante períodos de tiempo prolongados. A menudo aprovechamos la flexibilidad de Concourse para ejecutar agentes donde se requiera, por ejemplo, cuando las pruebas de integración de hardware requieren de una instalación local.

    Historia
  • Esta edición del Radar presenta varias herramientas nuevas para la creación de aplicaciones web que ayudan a los usuarios finales a visualizar e interactuar con datos. A diferencia de simples bibliotecas de visualización, como D3, estas herramientas minimizan el esfuerzo necesario para construir aplicaciones analíticas independientes para manipular conjuntos de datos existentes. Dash, de Plotly, está ganando popularidad entre científicas de datos porque permite crear aplicaciones analíticas ricas en funcionalidades usando Python. Dash mejora las bibliotecas para datos de Python y, al igual que Shiny, está basada en R. Estas aplicaciones son a veces conocidas como tableros o dashboards, a pesar que estos nombres no hacen justicia a las posibles funcionalidades que proveen. Dash es particularmente adecuado para construir aplicaciones escalables y listas para producción, a diferencia de Streamlit, otra herramienta similar. Puede considerarse utilizar Dash si se necesita presentar a usuarias de negocio, análisis más sofisticados que herramientas de poco o ningún código pueden ofrecer, como Tableau.

    Historia
  • Mantener grandes bases de código JavaScript nunca es fácil, y es especialmente desafiante cuando se migran cambios importantes. Los IDEs con capacidades de refactorización pueden ayudar en escenarios simples. Sin embargo, cuando la base de código es una biblioteca de la que existen múltiples dependencias, cada vez que se realiza un cambio importante se debe revisar varias bases de código dependientes para realizar las actualizaciones adecuadas, lo que requiere supervisión humana y debe realizarse manualmente. jscodeshift, un conjunto de herramientas para refactorizar JavaScript y TypeScript, ayuda a aliviar este dolor. Esta herramienta analiza el código usando árboles de sintaxis abstracta (AST) y proporciona un API para manipular el árbol con varias transformaciones (por ejemplo, agregar, renombrar y eliminar propiedades de componentes existentes) y luego exportar el árbol como código fuente final. jscodeshift también incluye una utilidad simple para pruebas unitarias que puede aplicar el desarrollo dirigido por pruebas (TDD) para escribir codemods de migración. Hemos encontrado que jscodeshift es bastante útil para el mantenimiento de design systems.

    Historia
  • Kustomize es una herramienta para administrar y personalizar los archivos de manifiesto de Kubernetes. Permite seleccionar y parchar los recursos base de Kubernetes antes de aplicarlos a diferentes ambientes y ahora es compatible de forma nativa con kubectl. Nos gusta porque ayuda a mantener el código sin repeticiones y a diferencia de Helm (que está tratando de hacer demasiadas cosas: administración de paquetes, administración de versiones, etc.), encontramos que Kustomize sigue la filosofía de Unix: hacer una cosa bien y esperar que la salida de cada programa sea la entrada de otro.

    Historia
  • MLflow es una herramienta de código abierto para el seguimiento de experimentos de aprendizaje automático y la gestión del ciclo de vida. El flujo de trabajo para desarrollar y evolucionar continuamente un modelo de aprendizaje automático incluye una serie de experimentos (una colección de ejecuciones), el seguimiento del rendimiento de estos experimentos (una colección de métricas) y el seguimiento y ajuste de modelos (proyectos). MLflow facilita este flujo de trabajo muy bien al apoyar los estándares abiertos existentes y se integra bien con muchas otras herramientas en el ecosistema. MLflow, como servicio gestionado por Databricks en la nube, disponible en AWS y Azure, está madurando rápidamente y lo hemos utilizado con éxito en nuestros proyectos. Consideramos que MLflow es una gran herramienta para la gestión y el seguimiento de modelos, que soporta tanto modelos de interacción basados en UI como en API. Nuestra única y creciente preocupación es que MLflow está tratando de entregar respuestas a demasiados temas vinculados, como una sola plataforma, como el servicio de modelos y la puntuación.

    Historia
  • Los métodos de prueba tradicionales se centran en evaluar si nuestro código de producción hace lo que debería hacer. Sin embargo, podemos cometer errores en el código de prueba introduciendo pruebas incompletas o sin valor que crean una falsa sensación de confianza. Es aquí donde entran en juego las pruebas de mutación: comprueban la calidad de las pruebas en sí, encontrando casos extremos difíciles de detectar. Nuestros equipos usan Pitest desde hace tiempo, y recomendamos su uso en proyectos Java para medir la salud del conjunto de pruebas. En resumen, las pruebas de mutación introducen cambios en el código de producción y ejecutan las mismas pruebas una segunda vez; si los resultados aún son positivos significa que las pruebas no están bien y necesitan mejorar. Si usas un lenguaje de programación distinto a Java, Stryker es una buena elección en este espacio.

    Historia
  • Sentry es una aplicación de monitoreo multiplataforma que se enfoca en el reporte de errores. Las herramientas como Sentry se diferencian de las soluciones tradicionales para el registro de logs, como ELK Stack, por su foco en descubrir, investigar y corregir errores. Sentry ya lleva un tiempo en el mercado y soporta varios lenguajes y frameworks. En ThoughtWorks lo hemos utilizado en muchos proyectos y ha sido realmente útil para rastrear errores, verificar si un commit realmente resolvió una incidencia y para generar alertas en caso que alguna incidencia resurja debido a problemas de regresión.

    Historia
  • Aún cuando las herramientas han mejorado considerablemente en el área de infraestructura, en algunas ocasiones aún tiene sentido escribir un script para el shell. Claramente, la sintaxis de los scripts para el shell podría describirse como arcaica y, tomando en cuenta que últimamente hemos tenido menos práctica escribiéndolos, nos ha comenzado a gustar ShellCheck, un linter para este tipo de scripts. ShellCheck puede usarse desde la línea de comandos, como parte de un proceso de compilación, o aún mejor, como una extensión para varios IDEs populares. Su wiki contiene una descripción detallada de varios cientos de problemas que ShellCheck puede detectar y la mayoría de herramientas e IDEs proveen una forma conveniente de acceder a la página de la wiki correspondiente cuando encuentra un problema.

    Historia
  • Stryker es un participante relativamente nuevo en el mundo de las pruebas de mutación. Al igual que Pitest, Stryker nos permite evaluar la calidad de nuestras pruebas. Hemos obtenido buenos resultados con proyectos en JavaScript, y también es compatible con proyectos en C# y Scala. Stryker es fácil de utilizar, muy personalizable y nos ha permitido aumentar la cobertura de código así como la confianza en las aplicaciones que desarrollamos para nuestros clientes.

    Historia
  • Hemos usado Terraform extensivamente para crear y manejar infraestructuras en la nube. En nuestra experiencia con instalaciones más grandes, donde el código se encuentra dividido en módulos y las configuraciones se incluyen de diferentes maneras, los equipos eventualmente se tropiezan con un muro inevitable de repetición ocasionado por la falta de flexibilidad. Hemos resuelto esto utilizando Terragrunt, una delgada capa para Terraform que implementa las prácticas propuestas por Yevgeniy Brikman en su libro Terraform: Up and Running. Hemos encontrado útil a Terragrunt porque fomenta la creación de módulos versionados y la reutilización para distintos entornos. Los hooks para el ciclo de vida son otra funcionalidad útil que entrega flexibilidad adicional. En términos de empaquetado, Terragrunt tiene las mismas limitaciones que Terraform: no hay una forma apropiada para definir paquetes o dependencias entre paquetes. Como alternativa, puedes utilizar módulos y versiones específicas asociadas a una etiqueta de Git.

    Historia
  • La seguridad es una preocupación general y capturar los riesgos con anticipación siempre es mejor que enfrentar los problemas más adelante. En el espacio de la infraestructura como código, donde Terraform se ha establecido como la opción obvia para gestionar ambientes en la nube, ahora también podemos contar con tfsec, una herramienta de análisis estático que escanea las plantillas de Terraform para encontrar posibles problemas de seguridad. Nuestros equipos han usado tfsec con bastante éxito: la herramienta es fácil de configurar y utilizar, lo que la convierte en una excelente opción para cualquier equipo de desarrollo decidido a mitigar riesgos y prevenir brechas de seguridad antes de que sucedan. Sus reglas preestablecidas para diferentes proveedores de la nube, como AWS y Azure, complementa los beneficios que brinda tfsec a los equipos que usan Terraform.

    Historia
  • Yarn sigue siendo el gestor de paquetes elegido por muchos equipos. Estamos emocionados por Yarn 2, una nueva versión mayor de la herramienta que trae una larga lista de cambios y mejoras. Además de los ajustes de usabilidad y mejoras en el apartado de los espacios de trabajo, Yarn 2 presenta el concepto de “cero instalaciones”, que permite a las personas desarrolladoras ejecutar un proyecto directamente después de clonarlo. Sin embargo, Yarn 2 incluye algunos cambios de importancia que hacen de la actualización una tarea no trivial. También, recurre por defecto a los entornos plug'n'play (PnP) y al mismo tiempo no soporta React Native en entornos PnP. Por supuesto que los equipos pueden optar por no utilizar PnP o mantenerse en Yarn 1. Sin embargo, deben tener en cuenta que Yarn 1 está ahora en modo de mantenimiento.

    Historia

Evaluar?

  • Hemos incluido a la entrega continua para aprendizaje automático como una técnica en ediciones anteriores del Radar y ahora queremos destacar una nueva herramienta prometedora llamada Continuous Machine Learning (or CML), de las mismas personas que crearon DVC. CML tiene como objetivo traer las mejores prácticas de ingeniería de CI y CD a los equipos de AI y ML y puede ayudar a organizar la infraestructura de MLOps soportada por prácticas y herramientas de ingeniería de software tradicional, en lugar de crear plataformas de AI separadas. Nos gusta que hayan priorizado el soporte para DVC y lo vemos como una buena señal para esta nueva y creciente herramienta.

    Historia
  • Desde hace tiempo nos gusta la idea del uso de generadores de sitios estáticos para evitar complejidad y mejorar el rendimiento, siempre que el caso de uso lo permita. Si bien Eleventy ha existido por algún tiempo, no es sino recién que nos ha llamado la atención por su madurez y porque otras alternativas favoritas ya existentes, como Gatsby.js, mostraron ciertos problemas de escalabilidad. Eleventy es fácil de aprender y de utilizar para construir sitios. Nos gusta además que permite crear, con facilidad, marcado semántico (y por lo tanto más accesible) con sus plantillas, además de su soporte simple y robusto para la paginación.

    Historia
  • Las mallas de servicios y los API gateways proveen una forma conveniente de enrutar el tráfico a los distintos microservicos que implementan la misma interfaz de API. Flagger utiliza esta característica para ajustar dinámicamente la cantidad de tráfico que es dirigida a una nueva versión de un servicio. Esta es una técnica frecuente para los canary releases o los despliegues blue-green (blue-green deployments). Flagger funciona junto a una variedad de proxies populares (como Envoy y Kong) para incrementar progresivamente el número de peticiones que se envían a un servicio y para reportar métricas sobre la carga, y así obtener retroalimentación rápida sobre el funcionamiento de una nueva versión. Nos gusta que Flagger simplifica esta valiosa práctica lo cual ayuda a extender su adopción. Aunque Weaveworks la patrocina, Flagger es una utilidad independiente y no hay obligación de usarla en conjunto con las otras herramientas de esta empresa.

    Historia
  • Cuando se requiere conectarse a instancias de servidores en AWS, se recomienda hacerlo mediante un servidor bastión en vez de realizar una conexión directa. Sin embargo, provisionar un servidor de este tipo para este único propósito puede ser frustrante. Por eso el AWS Systems Manager’s Session Manager facilita el uso de túneles para conectarse a las instancias de servidores con más comodidad. gossm es una herramienta de código abierto para la línea de comandos que hace aún más conveniente el uso de Session Manager. gossm permite aprovechar la seguridad suministrada por Session Manager y las políticas de IAM desde la terminal usando herramientas como ssh y scp. También proporciona algunas funcionalidades que la herramienta de línea de comandos propia de AWS no tiene, incluyendo el descubrimiento de servidores e integración SSH.

    Historia
  • Con el surgimiento de CD4ML, los aspectos operacionales de la ingeniería y la ciencia de datos han recibido más atención. La gobernanza de datos automatizada es un aspecto de este desarrollo. Great Expectations es un framework que permite crear controles integrados que señalan anomalías o problemas de calidad en los pipelines de datos. Al igual que las pruebas unitarias corren en un pipeline de compilación, Great Expectations realiza verificaciones durante la ejecución de un pipeline de datos. Esto es útil no solo para implementar una especie de Andon para pipelines de datos sino también para garantizar que los algoritmos basados en modelos permanezcan dentro del rango operativo determinado por sus datos de entrenamiento. Los controles automatizados como este pueden ayudar a distribuir, democratizar y custodiar el acceso a los datos. Great Expectations también contiene una herramienta de generación de perfiles para ayudar a comprender las cualidades de un conjunto de datos en particular y establecer límites apropiados.

    Historia
  • Estamos entusiasmados con k6, una herramienta relativamente nueva en el ecosistema de las pruebas de rendimiento con un fuerte foco en la experiencia para las personas desarrolladoras. La interfaz de línea de comandos (CLI) de k6 ejecuta scripts JavaScript y permite configurar el tiempo de ejecución y el número de usuarios virtuales. La CLI tiene varias características avanzadas que permiten, entre otras cosas, ver las estadísticas actuales antes de que las pruebas hayan terminado de ejecutarse, escalar el número de usuarios virtuales originalmente establecidos e incluso pausar y continuar la ejecución de una prueba. La salida que presenta la aplicación proporciona un conjunto de métricas personalizables con transformadores que permiten visualizar los resultados en Datadog y en otras herramientas de observabilidad. La inclusión de checks en los scripts simplifica la adición de pruebas de rendimiento en los pipelines de CI/CD. Para pruebas de rendimiento avanzadas vale la pena probar k6 Cloud, la versión comercial, que provee escalamiento en la nube y visualizaciones adicionales.

    Historia
  • Katran es un balanceador de carga de capa 4 de alto rendimiento. No es para todo el mundo, pero si el requerimiento es proporcionar redundancia para balanceadores de carga de capa 7 (como HAProxy o NGINX) o si se necesita escalar los balanceadores de carga a dos o más servidores, entonces recomendamos evaluar Katran. Lo vemos como una opción flexible y eficiente frente a técnicas como el uso de balanceadores de carga round robin de capa 7 para DNS o el modelo de Kernel IPVS que los ingenieros de redes usualmente adoptan para resolver situaciones similares.

    Historia
  • Debido al aumento en el uso de mallas de servicio para desplegar colecciones de microservicios dentro de contenedores, esperamos ver cómo surgen herramientas que automatizan y simplifican las tareas de administración relacionadas con este estilo arquitectónico. Kiali es una de ellas. Kiali ofrece una interfaz de usuario gráfica para observar y controlar redes de servicios desplegados con Istio. Hemos encontrado útil a Kiali para visualizar la topología de los servicios en una red y entender cómo se dirige el tráfico entre ellos. Por ejemplo, cuando se usa en conjunto con Flagger, Kiali nos puede mostrar las peticiones que han sido dirigidas a cada servicio en un esquema de canary release. Nos gusta especialmente la habilidad de Kiali para inyectar artificialmente errores de red en una malla de servicio para probar la resiliencia en caso de interrupciones a nivel de red. Esta práctica es frecuentemente ignorada por la complejidad de configurar y ejecutar pruebas de fallos en una malla compleja de microservicios.

    Historia
  • Escribir código seguro es más importante que nunca, aunque es apenas una de las tantas cosas que las personas desarrolladoras tienen que priorizar. LGTM proporciona una red de seguridad y los medios para beneficiarse de una base de conocimiento sobre prácticas de programación segura. Es una herramienta de análisis estático de código con foco en la seguridad, que está respaldada por un catálogo de reglas de programación segura (parcialmente de código abierto). Las reglas están implementadas como consultas sobre el código usando el lenguaje de consulta CodeQL. LGTM puede utilizarse para integrar comprobaciones de seguridad de caja blanca en el pipeline de entrega continua para Java, JavaScript, Python, C# y C/C++. LGTM y CodeQL son parte del Github Security Lab.

    Historia
  • Litmus es una herramienta de ingeniería del caos que presenta una baja barrera de entrada y que permite inyectar fácilmente diferentes escenarios de error en los clusters de Kubernetes. Nos entusiasma sobre todo las posibilidades que Litmus ofrece además del típico eliminado aleatorio de pods, como la simulación de problemas de red, de CPU, de memoria y de E/S. Litmus también permite realizar experimentos a la medida para simular errores para servicios comunes como Kafka y Cassandra.

    Historia
  • El concepto de privacidad diferencial apareció por primera vez en el Radar en 2016. Si bien el problema de romper la privacidad mediante consultas sistemáticas al modelo de inferencia ya se había reconocido entonces, se consideraba fundamentalmente un problema teórico dado que no existían suficientes recursos. La industria ha carecido de herramientas para prevenir que esto ocurriera. Opacus es una nueva biblioteca escrita en Python que puede utilizarse conjuntamente con PyTorch para ayudar a frustrar un tipo de ataque de privacidad diferencial. Aunque se trata de un desarrollo prometedor, ha sido un reto encontrar el modelo correcto y el conjunto de datos en el que éste aplica. La biblioteca es aún bastante nueva por lo que esperamos ver cómo será aceptada en el futuro.

    Historia
  • Para un equipo de desarrollo es importante identificar si las dependencias de su aplicación tienen vulnerabilidades conocidas. OSS Index puede usarse para este propósito. OSS Index es un catálogo gratuito de componentes de código abierto y herramientas de escaneo diseñadas para ayudar a las personas desarrolladoras a identificar vulnerabilidades, entender los riesgos y mantener su software seguro. Nuestros equipos ya han integrado este índice en sus pipelines usando herramientas como AuditJS y el complemento Sonatype Scan para Gradle. La velocidad es rápida, las vulnerabilidades se identifican con precisión y pocos falsos positivos ocurren.

    Historia
  • El campo de las pruebas para interfaces de usuario Web sigue bastante activo. Algunas de las personas que construyeron Puppeteer se mudaron a Microsoft y actualmente están aplicando sus conocimientos y lecciones aprendidas en Playwright, una herramienta que nos permite escribir pruebas para Chromium y Firefox, e incluso WebKit, todo a través de la misma API. Playwright ha ganado algo de atención por dar soporte a todos los principales motores de navegación, lo que consigue en la actualidad mediante versiones parchadas de Firefox y WebKit. Queda por ver cuán rápido pueden ponerse al día otras herramientas, con el soporte cada vez mayor del protocolo de Chrome DevTools, como un API común para la automatización de navegadores.

    Historia
  • pnpm es un gestor de paquetes prometedor para Node.js que tenemos en la mira por la gran velocidad y eficacia que tiene en comparación con otros gestores de paquetes. Las dependencias se guardan en un único lugar en el disco y se enlazan a los directorios node_modules respectivos. pnpm también permite la optimización incremental a nivel de archivo, cuenta con un API estable que facilita la extensión y personalización e incluye el modo de almacenamiento en servidor, lo cual acelera aún más la descarga de dependencias. En caso de tener muchos proyectos con las mismas dependencias, puede ser una buena idea explorar pnpm más a profundidad.

    Historia
  • Sensei, de Secure Code Warrior, es un complemento para los IDEs para Java que simplifica crear y distribuir lineamientos de calidad para codificación segura. En ThoughtWorks promovemos con frecuencia el uso de “herramientas en lugar de reglas”, es decir, conseguir que sea fácil hacer lo correcto en lugar de tener que aplicar reglamentos y procedimientos de gobierno en forma de listas de control, y esta herramienta encaja en esta filosofía. Las personas desarrolladoras crean recetas que pueden ser compartidas fácilmente con el resto del equipo. Éstas pueden ser simples o complejas y se implementan como consultas sobre el AST (Abstract Syntax Tree) de Java. Algunos ejemplos son la generación de advertencias sobre inyección de SQL, debilidades criptográficas, etc. Otra característica que nos gusta: Sensei se ejecuta cada vez que el código cambia en el IDE y ofrece una retroalimentación más rápida que las herramientas tradicionales de análisis estático.

    Historia
  • Zola es un generador de sitios estáticos escrito en Rust. Por ende está disponible como un ejecutable sólo y sin dependencias, es muy rápido y soporta todas las cosas usuales que se espera como Sass, contenido en markdown y carga automática de cambios en caliente. Hemos tenido éxito construyendo sitios estáticos con Zola y apreciamos lo intuitivo que es para usar.

    Historia

Resistir?

    ¿No encuentras aquello que querías ver?

    Cada edición del radar incluye blips que contienen la información encontrada durante los últimos seis meses. Es posible que ya hayamos incluido el tema que estás buscando en radares anteriores. Hay veces que omitimos algunos temas debido a que hay demasiado de que hablar. O también, puede faltar algo debido a que en el radar buscamos reflejar nuestra experiencia, no lo basamos en un análisis exhaustivo del mercado.

    Nuevo,Modificado,Ningún cambio