Saltar al contenido

El blog de Skatox Entradas

Entrevista a Linus Torvalds por los 20 años de GIT

Esta semana me topé con una entrevista a Linus Torvalds publicada en el canal oficial de GitHub. Sí, GitHub, esa empresa que todos usamos para subir proyectos, colaborar con otros desarrolladores y —desde hace unos años— propiedad de nada más y nada menos que Microsoft.

Eso ya de por sí es loquísimo. Porque si llevas algunos años en este mundo, recordarás que Microsoft y Linux eran enemigos jurados. No era secreto que Microsoft quería eliminar a Linux del mapa (y no lo digo yo, lo decían ellos: Linux is a cancer, ¿recuerdan?). Y ahora, GitHub, una empresa de Microsoft, entrevista tranquilamente al creador del kernel de Linux y también de Git. Cosas que hace una buena estrategia de relaciones públicas y una industria que cambia.

Sobre la entrevista a Linus Torvald

La entrevista a Linus Torvalds no es técnica ni larga, pero tiene esos momentos que uno agradece como dev. Uno de los que más me llamó la atención fue cuando comentó que a su hija cuando preguntan por su padre, les dicen que es el creador de GIT y rara vez le comentan que es creador de Linux.

Y sí, qué fuerte. Porque aunque Linus haya creado el kernel que está en Android, servidores, supercomputadoras, y hasta en mi router, la nueva generación lo ubican más por esa herramienta que usamos todos los días para hacer git commit -m "arreglo urgente".

Eso nos dice algo: la tecnología evoluciona, y con ella también lo que recordamos. Para muchos, Git se volvió el punto de entrada al mundo del desarrollo, y GitHub su cara más visible. Así que no es raro que la nueva generación relacione más a Linus con el control de versiones que con el sistema operativo que revolucionó todo.

En la entrevista a Linus Torvalds, también hay reflexiones sobre cómo trabaja, cómo piensa, y sobre esa extraña contradicción de ser el líder de un proyecto de millones de personas… pero sin querer hablar mucho con ellas. Directo, al grano, sin adornos: puro Linus.

Two decades of Git: A conversation with creator Linus Torvalds

Si tienes unos minutos, te recomiendo ver el video completo. Es corto, relajado, y te deja con esa sensación de que estamos viviendo una época que hace 10 años era impensable: Microsoft abrazando el open source, GitHub entrevistando a Linus, y Linux siendo más relevante que nunca, aunque algunos solo lo recuerden por Git.

¿Ya viste la entrevista? ¿Qué opinas tú? ¿Conocías más a Linus por Git o por Linux? Déjame tu comentario, me encantaría saberlo.

Gracias por leer hasta el final.
Happy Hacking! 🐧💻

Deja un comentario

Class already exists en PHPUnit

Esta semana en el trabajo me topé con un error de Class already exists en PHPUnit. El cual me sorprendió porque no tenía mucho sentido:

Mockery\Exception\RuntimeException: Could not load mock class MiClase: class already exists

Entonces lo primero que pensé fue: “¡¿Cómo que ya existe si lo acabo de crear?!”. En mi trabajo estábamos creando una serie de pruebas unitarias (como siempre me ha gustado) para una nueva funcionalidad bastante grande, y usamos Mockery como herramienta para simular el comportamiento de clases y objetos. Si no lo conoces, Mockery es una librería para PHP que permite crear mocks, stubs y spies para probar clases de forma aislada, sin tener que depender de la implementación real.

¿Qué es un mock?

Tal vez te preguntes, ¿qué es eso de un mock? Bueno, imagina que tienes una clase llamadaServicioFactura que depende de ServicioCorreo para enviar correos. Pues resulta que cuando haces pruebas unitarias, no quieres que se envíen correos reales (que ningún usuario, inclusive el que está probando, reciba 30 notificaciones de prueba), tanto por costo, como por rendimiento y porque no se esta probando los correos. Entonces usas un mock de CorreoService que simula su comportamiento: no manda correos, pero finge que sí, y hasta puedes verificar si fue llamado o no. Bien útil. De esta forma, cuando se ejecuta la prueba, se ejecutará el mock e intercepta las llamadas y simula el comportamiento original.

Cómo solucionar: Class already exists en PHPUnit

Volviendo al error de Class already exists en PHPUnit, en el fondo, lo que pasaba es que tenia un conflicto con la instancia de un mock ya definido, es decir, habia definido un mock de una instancia de esa clase y aparte otro para la clase. . Si te estás preguntando qué es un mock de una instancia, son algo como esto:

$mock = mock('overload:' . MI_CLASE_MOCKEADA::class);

Cuando mezclas un instance mock con un mock normal, lo que en realidad estás haciendo es intentar redefinir la misma clase dos veces. Y eso ocasiona el error mencionado.

La solución a largo plazo es refactorizar ese código viejo para que nuestros tests no dependan de instance mocks. Pero la solución rápida y sencilla, es ejecutar cualquier prueba que use un instance mock en un proceso separado. PHPUnit hace esto muy fácil con una simple anotación:

/**
 * @runInSeparateProcess
 * @preserveGlobalState disabled
 */
public function pruebaQueIncluyeLosMockupsDeInstancia(): void
{
    // código con los mocks de instancia
}

Ya con eso deberías poder ejecutar la prueba, si necesitas mas información puedes ver la documentación oficial de PHP.Unit. Y si sigues con el problema, puedes probar con cerrar los mocks después de cada test con:

protected function tearDown(): void
{
    Mockery::close();
}

Palabras finales

¿Te ha pasado algo parecido? ¿Tienes otra solución o teoría? ¡Déjamelo en los comentarios, me encantaría leerte!

Gracias por leer hasta el final. Si te encontraste con el error Class already exists en PHPUnit y llegaste hasta aquí buscando respuestas, espero que esto haya sido útil.

Happy Testing! 🧪✨

Deja un comentario

Documental sobre la creación de Angular

De nuevo Honeypot nos sorprende con un nuevo documental sobre la creación de Angular. El cual nos narra desde sus inicios en Google hasta su evolución como uno de los frameworks más utilizados en el desarrollo web de gran calidad, esta vez le toca a Angular, el famoso framework creado por Google y del cual fui parte de su comunidad en Venezuela (ngVenezuela).

¿De qué se trata este documental sobre la creación de Angular?

Este documental explica la interesante historia sobre cómo este proyecto nació dentro de Google para resolver los problemas que enfrentaban al desarrollar aplicaciones en JavaScript. Sin embargo, no todo fue fácil: en sus inicios, Angular tuvo dificultades para conseguir apoyo interno dentro de la empresa. Fue solo cuando un ejecutivo lo vio en acción que comprendió su verdadero potencial y quedó sorprendido, decía que no era real lo que habían hecho.

El documental reúne a todas las personas clave en la creación y difusión de Angular. Es interesante ver cómo evolucionó el framework, desde su primera versión hasta el lanzamiento de Angular 2, un cambio radical que redefinió su arquitectura y luego su posterior adopción del compilador Ivy que fue controversial su. También se habla de la creación de ng-conf, la conferencia que ayudó a consolidar su comunidad.

Uno de los momentos que más me llamó la atención fue recordar viejas tecnologías como AtScript, que sirvió como base antes de que TypeScript tomara su lugar definitivo. También me sorprendió cuando hablaron de la migración a Angular 9, y un ingeniero mencionó que Google tenía 2,500 aplicaciones basadas en este framework. ¡Una cifra impresionante!

En definitiva, si alguna vez has trabajado con Angular, este documental es imperdible. Ofrece una perspectiva única sobre su evolución y el impacto que ha tenido en el mundo del desarrollo web.

Angular: The Documentary | An origin story

Palabras finales

Angular es uno de los frameworks más sólidos y versátiles en el desarrollo web. Google lo utiliza en múltiples proyectos internos, y aunque algunos piensan que ha perdido relevancia, en realidad ha ganado cada vez más impulso en los últimos años.

Así que, ¡disfruta de este documental y anímate a explorar todo el potencial de este poderoso framework!

Deja un comentario

Cómo redimensionar varias imágenes desde Finder en macOS

Yo tengo mi propia instancia de Nextcloud (un Dropbox libre) para almacenar en la nube mis archivos de forma privada y cifrada. Al tomar fotos desde mi iPhone, utiliza una resolución muy alta que considero innecesaria para fotos personales, entonces al subirlas a la nube, éstas ocupan mucho espacio. Generalmente luego administro, decido cuáles borro y cuales debo redimensionar para que tengan mejor tamaño. Para ello en Linux utilizo KIM (KDE Image Manipulation), pero ayer estaba editando videos en macOS y no quería pasar a mi portátil solo para esta operación. Así fue como descubrí que macOS ofrece herramientas para crear una entrada en el menú de acciones rápidas, para redimensionar varias imágenes desde Finder.

Redimensionar varias imágenes desde Finder

Si trabajas con imágenes en macOS y necesitas redimensionarlas rápidamente, puedes agregar una Acción Rápida al menú contextual de Finder. Esto te permitirá cambiar el tamaño de cualquier imagen con solo hacer clic derecho, a continuación puedes ver como será el resultado de lo que vamos a hacer.

Menu de acciones rápidas en Finder para redimensionar múltiples imágenes

Así quedará el menu para redimesionar las imágenes

Pasos a seguir

  1. Abre Automator desde el menú de aplicaciones, o busca “Automator” en Spotlight y ábrelo.
  2. Selecciona “Acción rápida” como tipo de documento.
  3. Luego debes configurar la acción, primero haz clic en el ítem de Archivos y Carpetas en el menú izquierdo, luego en donde dice Obtener los elementos de Finder especificados. Arrástralo a la sección principal como se observa en la siguiente imagen:
  4. Luego en la barra lateral de la izquierda, haz clic en Fotos, luego busca Ajustar tamaño de imágenes y agrégalo al flujo de trabajo.
  5. En el menú que sale, dile omitir y luego decide el máximo horizontal de tus fotos, en mi caso puse 1920px.
  6. Ve a Archivo > Guardar y asígnale un nombre como “Escalar Imagen”.

Ahora, selecciona cualquier imagen en Finder, haz clic derecho, ve a Acciones Rápidas y prueba la opción. Vas a notar como redimensionar varias imágenes desde Finder automáticamente sin instalar una aplicación de terceros.

Conclusión

Este método te ahorra tiempo al evitar abrir editores de imagen ni comprar software para este propósito. Puedes crear varias acciones con diferentes tamaños y optimizar tu flujo de trabajo en macOS.

Deja un comentario