SGCG

…esto no es un subtítulo…

Ir a: contenido categorías calendario archivo suscripción

Volver arriba

Últimos artículos

Gnucash 5, Guile Scheme y los menús

2026-07-30

Traté de añadir un menú de usuario al programa de contabilidad Gnucash usando Guile Scheme, que es el lenguaje principal para que los usuarios puedan extender Gnucash, modificando mi ~/.config/gnucash/config-user.scm. En el momento de escribir estas líneas, la documentación es muy escasa y los buscadores más populares devuelven resultados entre pobres, obsoletos o, cuando imponen el uso de modelos de lenguaje para inventarse la respuesta a mis consultas, atrozmente incorrectos. La conclusión a la que llego es que parece que, actualmente, no hay una forma «oficial» de añadir menús cualesquiera desde el fichero de configuración.

He aquí lo que averigüé averiguaciones aplicables al menos a las versiones de Gnucash que van de la 5.0 a la 5.16. Puedo tratar de añadir un menú con (gnc-add-scm-extension (gnc:make-menu name path)), donde name es el nombre del menú y path es una lista con la ruta al menú (por ejemplo, si tuviéramos el menú A con un submenú B y quisiéramos añadir nuestro nuevo menú dentro de B, path sería (list "A" "B")). Esto no hace lo esperado normalmente, no obstante: solamente añade submenúes dentro del menú de informes. Probablemente, no se trata de funciones pensadas para su consumo por parte del usuario final.

Añadir nuevos informes al menú de informes, por otro lado, es relativamente fácil. La entrada en el menú se añade de forma declarativa y la wiki de Gnucash contiene un artículo bastante útil que explica cómo hacerlo.


Categorías: Informática

Permalink: https://sgcg.es/articulos/2026/07/30/gnucash-5-guile-scheme-y-los-menus/

Ejemplos de uso de los bindings de Python de Gnucash (2): movimiento masivo de asientos

2026-07-30

He aprendido a hacer cuatro cosas con los bindings de Python del programa de contabilidad Gnucash. Una cosa que puede hacerse es mover masivamente el debe o el haber de muchos asientos de una cuenta a otra, que es algo que puede ser útil si queremos enmendar alguna decisión desafortunada a la hora de hacer anotaciones en nuestra contabilidad doméstica. He aquí unas instrucciones válidas para Gnucash 5 y Python 3 y un programa de ejemplo.

Trabajando con Gnucash 5 en Python 3

Lo que necesitamos para trabajar con un libro de cuentas está en el módulo gnucash. Podemos importarlo así:

import gnucash

Lo primero que hay que hacer es abrir una sesión. Digamos que tenemos un libro de cuentas, contabilidad.gnucash; podemos abrirlo así:

session = gnucash.Session("contabilidad.gnucash") book = session.book root = book.get_root_account()

Así hemos abierto una sesión (session), accedido al libro de cuentas (book) y a la cuenta raíz (root). La sesión puede abrirse así, lo que nos obligará a guardar nuestros cambios (session.save()) y cerrarla (session.end()); de forma alternativa, podemos abrirla como un context manager.

Lo siguiente que hay que hacer es acceder a las cuenta que queremos tocar. Si, por ejemplo, estas cuenta son Gastos (la original) y Gastos.Comida (donde queremos mover los asientos), las seleccionamos así:

source_account = root.lookup_by_full_name("Gastos") target_account = root.lookup_by_full_name("Gastos.Comida")

Ahora podemos acceder a la cuenta original (source_account) y listar todos los desgloses o splits que le tocan con account.GetSplitList(). A partir de estos desgloses, podemos acceder a los asientos o transacciones que afectan a la cuenta y moverlos a otra cuenta diferente. Por ejemplo, si queremos mover todos asientos Pan de la cuenta Gastos a la cuenta Gastos.Comida, podemos hacer los siguiente:

for split in source_account.GetSplitList(): transaction = split.GetParent() if transaction.GetDescription() == "Pan": split.SetAccount( transaction.SetDescription("Pan")

Finalmente, guardamos y cerramos la sesión:

session.save() session.end()

Programa de ejemplo

He recogido lo expuesto arriba en un pequeño programa: batch_move_transactions.py

El programa puede usarse directamente como una herramienta de línea de órdenes normal (que muestra la ayuda con la opción --help) o como una función que puede llamarse desde código de Python. Es un poquito más complicado que lo descrito arriba, ya que usa expresiones regulares para elegir los asientos que mover.


Categorías: Informática

Permalink: https://sgcg.es/articulos/2026/07/30/ejemplos-de-uso-de-los-bindings-de-python-de-gnucash-2-movimiento-masivo-de-asientos/

A350 completa un vuelo de más de 24 horas

2026-07-28

Un Airbus A350-1000ULR (una modificación del A350-1000 con más alcance) de Qantas ha completado un vuelo de más de 24 horas entre Melbourne y Toulouse. Tripulado por 4 pilotos y 6 ingenieros y con una carga de pago simulada, se trata de un vuelo de prueba dentro del Proyecto Sunrise que pretende conectar Sídney y Londres mediante vuelos directos, que es algo particularmente notable y ambicioso. Aunque la distancia geodésica entre Melbourne y Toulouse es de algo menos de 1700 km (algo más de dos quintos de la circunferencia terrestre), este vuelo siguió un camino algo más largo y, según he podido ver tras descargar la traza, recorrió unos 22000 km (algo menos de tres quintos de la circunferencia terrestre), que es, francamente, un buen alcance para la aviación comercial.

Traza del vuelo.  Mapa de fondo de
OpenTopoMap (CC-BY-SA 3.0).
Traza del vuelo. Mapa de fondo de OpenTopoMap con licencia Creative Commons Atribución-CompartirIgual 3.0.


Categorías: Actualidad, Aeroespacio

Permalink: https://sgcg.es/articulos/2026/07/28/a350-completa-un-vuelo-de-mas-de-24-horas/

Ejemplos de uso de los bindings de Python de Gnucash (1): renombrado masivo de asientos

2026-07-27

He aprendido a hacer cuatro cosas con los bindings de Python del programa de contabilidad Gnucash. Una cosa que puede hacerse es un renombrado masivo de asientos, que es algo que puede ser útil si queremos enmendar alguna decisión desafortunada a la hora de nombrar los conceptos en nuestra contabilidad doméstica. He aquí unas instrucciones válidas para Gnucash 5 y Python 3 y un programa de ejemplo.

Trabajando con Gnucash 5 en Python 3

Lo que necesitamos para trabajar con un libro de cuentas está en el módulo gnucash. Podemos importarlo así:

import gnucash

Lo primero que hay que hacer es abrir una sesión. Digamos que tenemos un libro de cuentas, contabilidad.gnucash; podemos abrirlo así:

session = gnucash.Session("contabilidad.gnucash") book = session.book root = book.get_root_account()

Así hemos abierto una sesión (session), accedido al libro de cuentas (book) y a la cuenta raíz (root). La sesión puede abrirse así, lo que nos obligará a guardar nuestros cambios (session.save()) y cerrarla (session.end()); de forma alternativa, podemos abrirla como un context manager.

Lo siguiente que hay que hacer es acceder a la cuenta que queremos tocar. Si, por ejemplo, esta cuenta es Gastos.Comida, la seleccionamos así:

account = root.lookup_by_full_name("Gastos.Comida")

Ahora podemos acceder a la cuenta (account) y listar todos los desgloses o splits que le tocan con account.GetSplitList(). A partir de estos desgloses, podemos acceder a los asientos o transacciones que afectan a la cuenta y cambiar las descripciones. Por ejemplo, si queremos corregir una errata en la hemos escrito Pann en vez de Pan, podemos hacer lo siguiente:

for split in account.GetSplitList(): transaction = split.GetParent() if transaction.GetDescription() == "Pann": transaction.SetDescription("Pan")

Finalmente, guardamos y cerramos la sesión:

session.save() session.end()

Programa de ejemplo

He recogido lo expuesto arriba en un pequeño programa: batch_rename_transactions.py

El programa puede usarse directamente como una herramienta de línea de órdenes normal (que muestra la ayuda con la opción --help) o como una función que puede llamarse desde código de Python. Es un poquito más complicado que lo descrito arriba, ya que usa expresiones regulares para hacer el renombrado.


Categorías: Informática

Permalink: https://sgcg.es/articulos/2026/07/27/ejemplos-de-uso-de-los-bindings-de-python-de-gnucash-1-renombrado-masivo-de-asientos/

Alcanzado por el fuego el Complejo de Comunicaciones de Espacio Profundo de Madrid en Robledo de Chavela

2026-07-25

El fuego no discrimina y los incendios que se producen este verano, además de causar las esperadas pero indeseables pérdidas sobre los bienes de la población y sobre el medio natural, han afectado al Complejo de Comunicaciones de Espacio Profundo de Madrid en Robledo de Chavela. El estado de las instalaciones es incierto, pero existe el consuelo de que el personal fue evacuado a tiempo y que las antenas parecen encontrarse intactas.

El Complejo de Comunicaciones de Espacio Profundo de Madrid, operado por el Instituto Nacional de Tecnología Aeroespacial en apoyo de la NASA, es uno de los tres grandes complejos de antenas repartidos por la circunferencia terrestre que forman la Red del Espacio Profundo que da soporte a las misiones interplanetarias, así como a algunas misiones en órbita terrestre. La red ya opera en torno al límite de su capacidad y la pérdida de cobertura durante varias horas al día puede ser significativa.


Categorías: Actualidad, Aeroespacio, Madrid

Permalink: https://sgcg.es/articulos/2026/07/25/alcanzado-por-el-fuego-el-complejo-de-comunicaciones-de-espacio-profundo-de-madrid-en-robledo-de-chavela/

Más práctica con secuenciador: Bavaria 2026

2026-07-20

He aquí otra pieza que produje con un secuenciador con el que estoy practicando: Bavaria 2026.

Hice esta pieza mientra viajaba.


Categorías: Música

Permalink: https://sgcg.es/articulos/2026/07/20/mas-practica-con-un-secuenciador-bavaria-2026/

La productora cinematográfica A24 pide la retirada de contenido relacionado con The Backrooms

2026-07-18

Recientemente, A24 Films produjo Backrooms, una película ambientada en el popular universo de ficción The Backrooms. A pesar de que esta ambientación, The Backrooms, es un fenómeno cultural anterior a la película, fruto del esfuerzo colectivo de numerosos artistas independientes, algo así como un nuevo folclore que no pertenece a una única persona u organización, sino que es procomún a todos los efectos, A24 ha enviado avisos de violación de derechos de autor solicitando la retirada de la circulación contenido relacionado con The Backrooms anterior a la propia película. Tras la intervención del director de Backrooms, A24 ha abortado las peticiones de retirada y usa el comodín del clanker para eludir su responsabilidad: al parecer, se trata de un error de un sistema automatizado.


Categorías: Actualidad, Cine, Derechos

Permalink: https://sgcg.es/articulos/2026/07/18/la-productora-cinematografica-a24-pide-la-retirada-de-contenido-relacionado-con-backrooms/

Microsoft echa a la calle a la mitad de la plantilla de id Software en la víspera del lanzamiento de Doom: The Dark Ages: Revelations

2026-07-15

En otro movimiento estúpido y cruel, Microsoft, el gigante de la informática con un largo historial de prácticas monopolísticas de tinte mafioso, despidió a 136 trabajadores de id Software, la desarrolladora conocida por las obras maestras de la serie Doom, en la víspera del lanzamiento de Doom: The Dark Ages: Revelations, la ampliación de Doom: The Dark Ages, como parte de una campaña de echar a la calle a la gente más competente de la industria, aparentemente. Con esto, se deshace un equipo excelente técnica y artísticamente. Parece que Microsoft se ha cebado en las oficinas estadounidenses y el personal de Fráncfort conserva el empleo.


Categorías: Actualidad, Videojuegos

Permalink: https://sgcg.es/articulos/2026/07/15/microsoft-echa-a-la-calle-a-la-mitad-de-la-plantilla-de-id-software-en-la-vispera-del-lanzamiento-de-doom-the-dark-ages-revelations/

La vuelta de Chat Control 1.0 (2): aprovechando que muchos no están

2026-07-09

Aprovechando que muchos eurodiputados ya no estaban presentes, hoy se produjo la enésima votación en el Parlamento Europeo para detener lo que se conoce popularmente como Chat Control 1.0: el permiso legal para que los proveedores de servicios en Internet espíen masivamente las comunicaciones privadas no cifradas de los ciudadanos europeos sin mediar orden judicial y sin mediar sospecha previa con la excusa de proteger a los niños de los depredadores sexuales. Aunque hubo 314 votos a favor de mantener esta posibilidad enterrada, 276 a favor de revivirla y 17 abstenciones, hacía falta una mayoría de 361 votos para evitar la reimplantación de Chat Control 1.0, de manera que tenemos espionaje a las comunicaciones por parte de operadores privados mayoritariamente extracomunitarios hasta 2028. La práctica había estado prohibida desde marzo, cuando el Parlamento Europeo rechazó prorrogarla.

Hay que recordar que, a pesar de que llevamos desde 2022 en esta situación, todavía no hay verificación de la eficacia de permitir que los proveedores de servicios espíen las comunicaciones privadas no cifradas: aunque han dado muchos avisos, la propia Comisión no ha sido capaz de establecer un vínculo entre esos avisos y el número de condenas por delitos contra la libertad sexual o el número de víctimas rescatadas.


Categorías: Actualidad, Derechos

Permalink: https://sgcg.es/articulos/2026/07/09/la-vuelta-de-chat-control-1-0-2-aprovechando-que-muchos-no-estan/

La vuelta de Chat Control 1.0

2026-07-08

Ayer, con 331 votos a favor, 303 en contra y 11 abstenciones, el Parlamento Europeo decidió volver a votar este jueves sobre la reinstauración de lo que se conoce como Chat Control 1.0: permitir a los proveedores de servicios de telecomunicaciones escanear por su propia iniciativa las comunicaciones privadas de los ciudadanos europeos. Esto sucede poco tiempo tras la rebelión de la presidenta del Parlamento Europeo contra una voluntad parlamentaria que en marzo se opuso a la perpetuación de Chat Control 1.0.

La excusa para espiar las telecomunicaciones privadas es la protección de los niños frente a los depredadores sexuales. En la práctica, aunque el escaneo de las telecomunicaciones por parte de los proveedores de servicios han informado sobre muchos posibles casos de abusos sexuales a menores, la propia Comisión no ha sido capaz de establecer un vínculo entre esos avisos y el número de condenas por delitos contra la libertad sexual. Hemos permitido y puede que volvamos a permitir que empresas mayoritariamente estadounidenses se extralimiten en el tratamiento de los datos personales de los ciudadanos europeos sin un beneficio claro cuando ya hay mecanismos legales que pasan por la existencia de una orden judicial cuando hay indicios que justifican la intervención de las comunicaciones de un ciudadano.


Categorías: Actualidad, Derechos

Permalink: https://sgcg.es/articulos/2026/07/08/la-vuelta-de-chat-control-1-0/