Saltar al contenido

Blog técnico | técnico

Categoría: técnica

Por Jeff Lewis

Ref proporciona una referencia mutable que es no bloqueante, pura y atómica.

Blog técnico | técnico
Blog técnico | técnico

Por Justin Hewlett

Las aplicaciones modernas se conectan cada vez más con muchos sistemas externos: API de terceros, bases de datos, colas de mensajes, etc. En algunos casos, podemos tener control sobre la forma de los datos que se transmiten, pero en otros casos podemos estar a merced de algo más. Si no tenemos cuidado, los detalles de implementación como la forma de los datos y la denominación de los campos pueden impregnar todo nuestro código.

Por John Walk

Python es excepcionalmente flexible como lenguaje de scripts – aprendamos a extender simples scripts a utilidades de línea de comando con todas las características.

Por Jeremy Morgan

Blazor es un nuevo marco de desarrollo de Microsoft. Ya que contiene dos modelos de alojamiento diferentes, su despliegue en un contenedor puede ser diferente dependiendo del tipo.

Por John Walk

Debido a su simplicidad, Flask es un marco de trabajo web muy popular para la construcción de APIs REST en Python – particularmente para servir a los modelos de aprendizaje automático. Aquí aprenderemos cómo migrar al nuevo marco de trabajo FastAPI para aprovechar los avances en la comprobación de tipos y la programación asíncrona.

Por Patrik Drean

El desarrollo dirigido por pruebas (TDD) es una metodología que los programadores utilizan para producir código de mayor calidad. El procedimiento “típico” de codificación siempre ha sido primero el código, segundo la prueba. El TDD cambia esta mentalidad centrándose en las pruebas antes de que se produzca la codificación real.

Por Justin Hewlett

Utilizar completamente los tipos estáticos, con toda la seguridad que proporcionan, puede ser un poco complicado cuando se trata de datos dinámicos – como JSON de una llamada API. Veamos cómo hacer esto en TypeScript.

Por Jeff Nuss

Los números mágicos son un anti-patrón y generalmente deben ser evitados. ¿Qué quiero decir cuando digo número mágico? Me refiero a usar los números directamente en el código en lugar de usar una constante nombrada. Esto también puede aplicarse a otros tipos de datos y literales, especialmente a las cadenas. ¿Por qué son malos? Inhiben la legibilidad y la refactorización.

Por Jim Cooper

Los prototipos de JavaScript pueden ser algo misterioso, pero una vez que los entiendes no son tan complejos. Vamos a sumergirnos en la aparente complejidad y eliminar parte del misterio.

Por Dustin McQuay

Si la mitad o más de su código está manejando casos de borde, ¿puede reestructurar su lógica de manera que no tenga tantos casos de borde?

Por Neil Sorensen

Con .NET Core, Microsoft introdujo una nueva forma de construir un comportamiento de canalización: el software intermedio. El middleware resuelve muchos de los desafíos con HttpModules, y facilita la construcción de un pipeline de solicitudes personalizadas. Convertir nuestro comportamiento personalizado a middleware fue bastante fácil, pero había algunas sorpresas esperándonos.

Por Jonathan Turner

Hay muchos tipos diferentes de pruebas. Hay muchos tipos diferentes de pruebas automatizadas. En este post hablaremos de las pruebas unitarias, específicamente de algunos tipos diferentes de pruebas unitarias y de cuándo podría querer usar cada una.

Por Neil Sorensen

Antes de que nos pongamos demasiado técnicos en nuestra mirada a la migración a .NET Core, sin embargo, tomemos un momento para revisar las elecciones arquitectónicas que hicimos antes de intentar cambiar de marco. Una gran parte de la razón por la que fuimos capaces de migrar desde el .NET Framework tan rápidamente fue porque separamos nuestra lógica de aplicación de las decisiones tomadas por el framework.

Por Parker Johansen

Como programador políglota, a menudo me veo en la necesidad de escribir código en un lenguaje para el que no tengo un entorno de desarrollo configurado. Normalmente, esto es para un proyecto pequeño o a corto plazo. Cuando estas situaciones se presentan, uso docker para evitar pasar tiempo configurando un entorno de desarrollo completo que tal vez nunca vuelva a usar.

Por Neil Sorensen

El verano pasado, convertimos uno de nuestros servicios web de producción de WebApi2 a .NET Core. En este primer post, resumiré nuestros hallazgos sobre la plataforma en sí misma – donde brilla, donde se cae, y las pequeñas peculiaridades que le dan “carácter”. Seguiremos con posts que abordan algunos de los obstáculos técnicos por los que pasamos al convertir nuestra aplicación, así como algunas ideas que obtuvimos al pasar nuestra primera aplicación a producción.

Por Dustin McQuay

La destrucción de su entorno de desarrollo a menudo proporciona una función de forzamiento para asegurar que todo esté automatizado, funcione y evite que el estado creado manualmente se cuele en sus almacenes de datos. En este post, compartiré el costo de no hacer esto, así como consejos y ejemplos de código para configurar su propio entorno de desarrollo.

Por Allan Stewart

Hacer llamadas HTTP para obtener recursos o llamar a las APIs es un elemento básico del desarrollo de software. Pero si no se abstrae adecuadamente la construcción de la petición y el manejo de la respuesta de la biblioteca HTTP que se utiliza, puede ser extremadamente difícil de probar.

Por Dustin McQuay

Obtener el tamaño y la posición de los elementos en React no es una gran historia. Cada opción que investigué tiene al menos un “gotcha”. Compartiré las mejores opciones que se me ocurrieron y explicaré los pros y los contras de cada una. Primero veamos la forma básica de obtener el tamaño y la posición de un elemento en React.

Por Dustin McQuay

Favoreciendo las funciones sin estado y empujando E/S al borde de su aplicación puede hacer que su código sea más fácil de probar y razonar.

Por Tim Cash

Node.js es un tiempo de ejecución para javascript que requiere un pensamiento asincrónico.

Por Auggie Hudak

¿Qué significa ser un ingeniero de software en un equipo de aprendizaje de máquinas?

Por Eric Andres

Una función de hashing es una función unidireccional que toma alguna entrada y devuelve una salida determinante. La salida se denomina a menudo un resumen, un código hash o simplemente un hash.

Por Matt Baker

Las pruebas basadas en la propiedad son un tipo de prueba que utiliza insumos generados aleatoriamente para probar un atributo o una característica del sujeto sometido a prueba. Se puede contrastar con el enfoque más tradicional de las pruebas basadas en ejemplos, en el que se proporcionan casos de prueba específicos para el sujeto sometido a prueba. Normalmente, la TDD se realiza utilizando pruebas basadas en ejemplos. ¿Qué sucede cuando utilizamos pruebas basadas en propiedades en un flujo de trabajo TDD?

Por Neil Sorensen

Recientemente leí una entrada en el blog argumentando que los comentarios son una parte importante del código, y la gente que afirma lo contrario se está perdiendo. Aunque tiendo a caer en el lado opuesto del argumento, ciertamente estaría de acuerdo en que hay un tiempo y un lugar donde los comentarios en código tienen sentido. Más interesante aún, me di cuenta de que no he visto muchas explicaciones de por qué los comentarios no son óptimos, y cuando todavía son importantes. Así que, en un esfuerzo por mejorar esa situación, aquí está mi opinión sobre los principios que hay detrás de los comentarios, y cuando esos mismos principios están mejor servidos con diferentes herramientas.

Por Allan Stewart

El acoplamiento es un concepto importante en el desarrollo de software porque limita la capacidad de cambio del software. El acoplamiento temporal es un tipo de acoplamiento en el que el código depende del tiempo de alguna manera. Es particularmente insidioso porque es difícil de detectar a menos que sepas lo que estás buscando.

Por Matt Baker

Cuando se trabaja en un sistema distribuido, su sistema general está compuesto de componentes discretos que llamaré “contextos delimitados”. A veces estos contextos delimitados tienen la necesidad de ser eventualmente consistentes. En este artículo cubriremos la curación fuera de banda, un patrón que puede ser usado para reducir el acoplamiento temporal al curar tus cachés del lado del servidor.

Por Dustin McQuay

Muchos equipos utilizan el sistema para la gestión del proceso de aplicación. Cuando systemd inicia un proceso, necesita saber si el proceso se inició con éxito. La forma más sencilla de hacerlo es que systemd espere un poco después de iniciar el proceso (tal vez 10 segundos) y simplemente compruebe que el proceso sigue en marcha. Dado que generalmente no se puede predecir exactamente cuánto tiempo tomará el servicio para iniciarse con éxito, esto es propenso a errores. Además, este método es lento. Si está haciendo reinicios sincrónicos para un despliegue rodante, esto añade mucho tiempo.

Por Dave Adsit

Las API son una parte integral de nuestro sistema distribuido aquí en . Las utilizamos para comunicarnos entre y dentro de contextos delimitados. Uno de los lemas de nuestro equipo de ingeniería es “Sé explícito”. Para ello, tenemos un sistema de categorización para las API que construimos y publicamos. Esto nos ayuda a saber para qué sirve la API y quién debería (y quién no) utilizarla.

Por Justin Hewlett

Puede que hayas oído hablar de los beneficios de los objetos inmutables, especialmente de los programadores funcionales. Pero crear y trabajar con objetos inmutables en un lenguaje como el C# puede ser complicado.

Por Matt Baker

El perfeccionismo y el pragmatismo a menudo están en desacuerdo. ¿Cómo se logra un equilibrio entre hacer lo perfecto y lo correcto?

Por Dave Adsit

Cuando comenzamos nuestro viaje hacia contextos delimitados, queríamos mantener el pequeño equipo, centrado, con el que habíamos disfrutado como un solo equipo apoyando a un monolito. Una estrategia que adoptamos fue limitar nuestras dependencias entre los equipos y, por extensión, los diferentes contextos delimitados. No queríamos introducir un acoplamiento temporal de tiempo de ejecución entre los componentes desarrollados por los diferentes equipos porque eso reduciría la autonomía de estos equipos y limitaría nuestra capacidad de desarrollar los productos que queríamos desarrollar de la manera en que queríamos desarrollarlos.

Por Allan Stewart

En el verano de 2014, sufrió una importante interrupción cuando nuestra base de datos primaria falló. Después de recuperarnos del problema inmediato, decidimos que debíamos migrar a una base de datos completamente diferente para mejorar el rendimiento y la disponibilidad. Aunque llevó algún tiempo completarla, la transición fue sorprendentemente simple gracias a un poderoso patrón.

Por Eric Andres

Las referencias nulas pueden ser una fuente de sutiles errores en el software. Tal vez es una herramienta que, aunque engañosamente similar, proporciona una seguridad mucho mayor.

Por Allan Stewart

En una época en la que las violaciones de las contraseñas son muy comunes, es fácil preocuparse por lo que las empresas hacen con las contraseñas de los usuarios. Desafortunadamente, en la mayoría de los casos es un escenario de caja negra en el que sólo podemos adivinar lo que está pasando bajo el capó basándonos en pistas como las restricciones de caracteres o de longitud.

Por Dave Adsit

Las arquitecturas de microservicios están actualmente muy de moda. La pregunta de cuán pequeño puede ser un microservicio se hace regularmente. ¿Es el micro lo suficientemente pequeño? ¿Podemos construir pico-servicios? En , hemos elegido ir en una dirección diferente. Nos estamos centrando en el tamaño del equipo…