Neovim y Quickfix

Una de las útiles funciones que tiene vim, y ahora Neovim, es poder compilar tu proyecto usando el comando:

:make
Seguir leyendo
Publicado en Programación, Uncategorized | Deja un comentario

Mozilla se ve obligada a retirar su servicio de localización debido a una supuesta infracción de patentes

El anuncio lo tenéis aquí:

https://github.com/mozilla/ichnaea/issues/2065

Me lo he encontrado por casualidad al ver la documentación de Geoclue, que es un servicio en Linux que te da la ubicación aproximada de tu dispositivo. Básicamente Mozilla tiene una base de datos de Wifis con su posición GPS, bluetooth, antenas de telefonía,… Usando esta base de datos, simplemente escaneando las Wifi que hay cerca, se puede obtener la posición bastante aproximada.

Hay una empresa llamada «Skyhook Holdings, Inc» que se puso en contacto con Mozilla indicando que habían infringido una serie de patentes. Finalmente, según el anuncio, Mozilla ha llegado a un acuerdo evitar los tribunales. El problema es que las condiciones impuestas le hacen muy difícil a Mozilla seguir dando el servicio y finalmente han decidido cerrarlo. 😢

Merece la pena leer los comentarios que se están haciendo en el anuncio y ver las alternativas que se están proponiendo.

Publicado en Internet | Deja un comentario

Microservicios vs servicio monolítico: La solución de unos ingenieros de Google

Leo en:

https://thenewstack.io/year-in-review-was-2023-a-turning-point-for-microservices/

que Amazon ha migrado una serie de aplicaciones de microservicios a monolítico. Entre una de las causas estaba el bajo rendimiento.

Seguir leyendo
Publicado en Programación | Deja un comentario

echocolor: Un sencillo comando para mostrar texto en colores en la terminal

He escrito un pequeño comando que permite mostrar texto en colores en la terminal de forma sencilla:

https://github.com/selairi/echocolor

Seguir leyendo
Publicado en Programación, Software | Deja un comentario

Una notación para ayudar con la gestión de memoria en lenguaje C

Después de sufrir con la gestión de memoria de un programa en C, me di cuenta que con una pequeña notación se podría hacer el código más entendible en este punto. La notación está descrita en el siguiente enlace:

https://github.com/selairi/memory_notation.h

Seguir leyendo
Publicado en Programación | Deja un comentario

Hacker News

Seguro que ya lo conocéis, pero yo lo acabo de descubrir:

https://news.ycombinator.com/

Falta algo así en habla hispana.

Espero que os sea útil.

Publicado en Internet, Opinión | Deja un comentario

Refactoring.guru: Refactorización y patrones de diseño

Al refactorizar un código se modifica de forma que sea más legible y se eviten futuros problemas.

Seguir leyendo
Publicado en Software | Deja un comentario

Lapce un editor de texto escrito en Rust similar a Visual Studio Code

El título de este artículo lo dice todo, para muestra un botón:

El proyecto se puede encontrar en:

https://lapce.dev/

Seguir leyendo
Publicado en Uncategorized | Deja un comentario

Aprendiendo Rust

Hace poco me frustré bastante con una aplicación en C++ que generaba el típico error de gestión de memoria. En ese momento decidí dar una oportunidad a Rust.

Comencé a buscar un manual que me diese una visión general. El Rust Book es el manual que recomienda la propia página oficial de Rust. Me pareció muy largo. Buscando, buscando, localicé:

https://stevedonovan.github.io/rust-gentle-intro/readme.html

Me pareció adecuado y muy explicativo. Para las partes que no me parecían claras eché mano del Rust Book.

También he mirado partes de:

https://google.github.io/comprehensive-rust/

Que tiene una orientación más práctica.

No he puesto un IDE, sólo Neovim (aunque sería válido cualquier editor) e instalado el compilador con rustup.

Si aprendes Rust y conoces otros lenguajes, indicar que puede que tengas que cambiar tu forma de pensar. El manejo de la memoria se puede hacer usando el puntero único y al principio es un poco desesperante. Después se le coge el truco. También tiene sus ventajas pues hay operaciones que son tan simples como en Python.

Como curiosidad, leo mucho en el móvil y se puede instalar Termux, Neovim y Rust en Android.

Espero que os sea útil.

Publicado en Software | 2 comentarios

Cuatro cosas que me han pasado al hacer una aplicación multiplataforma

Hay lenguajes, como Java, que tratan de facilitar las cosas cuando se desea hacer una aplicación que funcione en diversas plataformas.

Por ejemplo, el típico juego que se desea que funcione en Linux, Windows y MacOS.

Pero, aún usando Java, a veces te encuentras sorpresas. Estas son algunas de las que me han pasado a mi:

Las rutas de 260 bytes de Windows

Afortunadamente la situación comienza a remitir desde Windows 10 y 11. Aunque depende de la configuración de las directivas de grupo.

Si abres el explorador de archivos y creas una carpeta, y dentro de esta otra, y dentro de esta otra,… así sucesivamente, ¿cuántas carpetas puedes crear?

Si usáis una versión antigua de Windows, descubriréis que hasta que la ruta tenga 260 bytes. Por ejemplo, C:\carpeta1\carpeta2 tiene 20 caracteres (bytes).

Se recomienda leer:

https://learn.microsoft.com/es-es/windows/win32/fileio/maximum-file-path-limitation?tabs=registry

Algún administrador de sistemas me he encontrado que ha habilitado la limitación después de tener a los usuarios varios años trabajando sin limitaciones. La sorpresa es mayúscula al no poder almacenar archivos en carpetas en las que antes se podía sin problemas.

Símbolos reservados como nombre de archivos

Se evitarán, tanto en UNIX como en Windows, los siguientes caracteres reservados: < > : » / \ |? *

Tampoco son válidos los nombres de archivo en Windows:
CON, PRN, AUX, NUL, COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 y LPT9.

En mi experiencia personal, una vez desde Linux se generaron unos archivos con fechas y horas:

2023-03-10 14:15.txt

2023-04-10 17:20.txt

Se copiaron a un disco duro externo y se conectó dicho disco a un sistema Windows. Windows interpretó que dichos nombres de archivos son incorrectos pues en Windows C:\ es un nombre de unidad. Las unidades se representan poniendo «nombre de la unidad:». En este caso los : que se usaron para separar los minutos de las horas se interpretaron con separador de unidades de disco. Windows consideró los nombres incorrectos y procedió al borrado de los mismos. Los datos no se pudieron recuperar.

Los archivos que comienzan por . son archivos ocultos en UNIX

Más de una sorpresa se ha llevado alguno al trabajar en Linux y ver los archivos ocultos en Windows. Para no volverse loco, conviene evitarlos.

La dirección IP 127.0.0.1 representa al ordenador que estás usando

En todos los sistemas que he usado, la dirección IP 127.0.0.1 representa al propio ordenador. Es útil, pues puedes lanzar servicios a los que sólo te puedas conectar localmente.

En Windows es muy habitual que el firewall te bloqueé dicha dirección IP. Hay que tenerlo en cuenta.

Hay una diferencia más, en Linux cualquier dirección que comienza por 127.*.*.* representa al propio ordenador. Así la dirección 127.1.2.3, y la IP 127.40.30.20 hacen una labor equivalente a la 127.0.0.1

Es como si en UNIX hubiese una red clase 10 reservada para el propio equipo. La red 127.0.0.0/255.0.0.0.

Por ello a veces se lanzan servicios en UNIX usando dichas direcciones que no funcionarán si usamos las mismas direcciones en Windows.

Estas son sólo 4 de las cosas que me han pasado. Hay más, como diferencias el los cuadros de diálogo, formas de imprimir, códigos de caracteres, separador de líneas \n o \n\r,…

¿A vosotros os ha pasado algo similar?

Publicado en Software | Deja un comentario