Saltar al contenido

Mes: marzo 2024

Google optimizó en un 40% la gestión de red en Linux

Hace un par de días vi un parche para Linux por parte de Google, sobre como lograron optimizar la gestión de red hasta en un 40% en plataformas con muchas conexiones y procesadores AMD.

Linux en un disquete
Al decir Linux me refiero al kernel

Me llamó la atención por la simplicidad del código, pues solo consiste en re-ordenar el contenido de unas estructuras de red del kernel Linux para evitar que la data quede separada en 2 líneas de cache L3. Claro, Google para poder llegar a este parche tuvo que realizar varias pruebas de bajo nivel para conocer que atributos re-ordenar.

Como este es el tipo de problemas que suelo enseñar en la materia de Sistemas Operativos de la UNET. Me animé a hacer un breve video para mis alumnos y lectores de este blog. El contenido del mismo es sobre como el CPU accede a la memoria, los niveles de caché, el contenido del parche de Linux y los resultados obtenidos en procesadores AMD e Intel.

Como Google optimizó en un 40% la red del kernel Linux

Espero les haya gustado y si desean conocer sobre Sistemas Operativos o Linux, pueden suscribirse a mi canal de Youtube sobre Sistemas Operativos, donde hospedo mis clases de la universidad y publico contenido similar.

Deja un comentario

Nvchad 2.50: nueva arquitectura y cómo migrar

Para mi Neovim es el mejor editor que existe porque: es ligero, puedes usarlo sin necesidad de usar un teclado, puedes configurar cada aspecto, entre otras cosas. Pero para lograr todo eso, es necesario editar la configuración del programa de acuerdo a tus necesidades y si no tienes experiencia en el tema puede ser abrumador y dificil.

¿Qué es NvChad?

En los últimos años han salido proyectos que te permiten dar una configuración inicial de nvim. De esta forma puedes empezar a usar el editor y disfrutar de los mejores plugins y funcionalidades sin entrar a editar la configuración inicial.

NvChad es uno de estos proyectos y fue el que decidí usar, porque a pesar de contar con una personalización que hice desde hace años. Me pareció mas fácil migrar y mantener mi configuración usando NvChad. Este helper (como le dicen a este tipo de proyectos en la comunidad de nvim) me parece muy fácil de usar, las características por defecto son poderosas y el editor queda visualmente muy bien.

Nvim con NvChad
Nvim con NvChad editando su propia configuración usando el tema ayu_light

Versión 2.5.0

Hace un par de horas salió esta nueva versión 2.5, justo cuando iba a realizar ajustes a mi configuración. Pues al ver los cambios, vi que tienen una nueva arquitectura mucho mas sencilla y mas fácil.

En versiones anteriores, NvChad se presentaba como un repositorio que contenía toda la configuración necesaria para transformar Neovim y aprovechar al máximo las funcionalidades que ofrece NvChad, incluyendo la instalación de complementos, configuraciones personalizadas, entre otros aspectos. Para realizar personalizaciones o ampliar las configuraciones, se proporcionaba una carpeta designada donde podías mapear la configuración en el sistema de archivos y realizar tus ajustes. Sin embargo, este enfoque tenía sus inconvenientes, ya que requería estudiar y comprender la estructura, para adaptara las configuraciones según la forma en que este estaba organizado.

NvChad como un plugin externo

Desde la versión 2.5.0 ahora es un plugin que se instala de forma externa. Solo debes clonar el repositorio que incluye una configuración mínima e ir agendando tus configuraciones en los archivos especificados.

La ventaja ahora es que ya no es necesario revisar la configuración predeterminada de NvChad. Los archivos dentro de la carpeta de Neovim contienen exclusivamente tus personalizaciones, lo que hace que el proceso sea menos intrusivo y más acorde con la filosofía de Vim.

Cómo migré mi configuración

Comienzo diciendo que el script de migración no me sirvió. Así que me tocó empezar de nuevo:

  1. Hacer un fork del repositorio de configuración inicial.
  2. Copiar todos tus archivos de la carpeta /lua/custom/configs a /lua/configs.
  3. Copiar el contenido de tu lista de plugines a lua/plugins/init.lua y eliminar todo prefijo de custom. para que valores como custom.configsy custom.plugins quede como configs. y plugins. respectivamente.
  4. Copiar tus mapeos de teclas a /lua/mappings.lua y usar la nueva sintaxis. Esta parte implica actualizar la estructura, sin necesidad de realizar trabajo adicional.
  5. Una vez completados estos pasos, inicia Nvim y los plugins se instalarán automáticamente. No olvides revisar posibles errores de sintaxis y ajustarlos según sea necesario. En mi caso, para LSPConfig, tuve que ejecutar el comando :Mason para instalar las dependencias del linting.

¡Listo! Si deseas ver el resultado de mi configuración puedes hacer un fork de mi configuración de NvChad y empezar desde allí.

Happy forking!

Deja un comentario

Unit Testing Principles, Practices, and Patterns: libro para iniciarte en el testing

Hace un par de años, me embarqué en la búsqueda de formas para potenciar mis habilidades en pruebas de software. Fue en un hilo de Twitter (ahora X) donde me topé con una discusión sobre las diferencias entre stub y mock. En medio de esta conversación, alguien recomendó el libro «Unit Testing Principles, Practices, and Patterns» de Vladimir Khorikov. Después de haber adquirido el libro hace algún tiempo, finalmente encontré el momento oportuno para sumergirme en sus páginas y, en este artículo, compartiré mis impresiones al respecto.

Portada del libro Unit Testing Principles, Practices, and Patterns de Vladimir Khorikov
Portada del libro, si deseas comprarlo haz clic en él para mas información

Contenido de Unit Testing Principles, Practices, and Patterns

En mi opinión, el libro abarca todo lo necesario para aprender a aplicar pruebas a cualquier software que desarrolles. Desde las razones fundamentales para realizar pruebas hasta conceptos como unit testing, mocks, test doubles, integration testing, end to end tests, entre otros. Además, finaliza con una sección muy interesante sobre anti-patrones, la cual nos brinda valiosas enseñanzas para mejorar nuestras prácticas de codificación y hacer que el código sea más accesible de probar.

Cada sección comienza con la presentación del concepto, seguido de su aplicación en el ámbito profesional. Posteriormente, se ofrece una serie de ejemplos de código que abarcan tanto el método o sección de código a probar como el código de las pruebas correspondientes. Este enfoque estructurado garantiza una comprensión completa y práctica de los temas tratados.

Es importante destacar que si bien los ejemplos de código están escritos en Java, su estructura y lógica son fácilmente transferibles a otros lenguajes de programación como PHP o C++. Cualquier profesional, independientemente de su preferencia de lenguaje de programación podrá leer los ejemplos sin problemas.

Además, el texto cuenta con secciones que contienen notas sobre consideraciones importantes a tener en cuenta, así como experiencias personales del autor frente a diversas situaciones. Esta combinación de teoría, ejemplos prácticos y reflexiones personales enriquece la experiencia de aprendizaje y ofrece una perspectiva más completa sobre el proceso de pruebas de software.

¿Debería leerlo?

Este libro es verdaderamente accesible para personas de todos los niveles de experiencia. Ya seas un principiante absoluto o un profesional experimentado en el campo de las pruebas de software, encontrarás que Unit Testing Principles, Practices, and Patterns ofrece valiosos conocimientos y perspectivas. En definitiva, si deseas adentrarte en el mundo del testing o mejorar tus habilidades existentes, este libro es para ti.

Deja un comentario