Yakuake | Drop-down Terminal Emulator on openSUSE
KDE Blog cumple 13 años
Este año he estado más atento, y es que las vacaciones de fallas me han venido estupendo para centrarme un poco en el blog y prestarle la atención que se merecía. Y es que hoy 24 de marzo de 2021 KDE Blog cumple 13 años de publicación constante (la promesa de un artículo al día no se ha incumplido nunca) y sigue siendo mi forma de pagar a la Comunidad todo lo que me ha dado.
KDE Blog cumple 13 años

Todo se remonta a hace más de 10 años cuando decidí que una parte de mi vida la iba a dedicar a ayudar a los demás en su migración hacía el Software Libre y a reportar cómo solucionaba los problemas del día a día.
¿Y cómo pensé hacerlo? Dado que no sabía programar y que me venía muy grande el diseño o la traducción, decidí que haría lo mejor que sabía hacer: enseñar.
Y como en aquella época estaban de moda las bitácoras personales, decidí escribir un blog donde explicaría mis vicisitudes en este nuevo sistema de sistemas operativos GNU/Linux que llevaba un escritorio libre conocido por aquel entonces como KDE.
Lo he dicho muchas veces, cuando empecé no sabía casi nada, de hecho pienso que fui muy atrevido ya que en mi cabeza no existían conceptos bien formados de Comunidad, kernel, beta, Release Candidate, escritorio vs distribución, etc, de tal forma los errores que cometí fueron apoteósicos, … pero nadie murió por ello y me sirvió para ir creciendo y aprendiendo.
Como todos lo años, y este año especialmente, quiero agradecer el capote que me ofreció maslinux (aka Pedro) cuando cometí un desliz sin mala intenciones y se me echó encima toda una comunidad de usuarios de una web potente de la época. Muchas gracias Pedro.
Y, como es habitual, me gusta recordar la declaración de intenciones de KDE Blog:
[24 de marzo de 2008]
«Hola a todos y todas: Hoy se inaugura KDE Blog un nuevo blog en el inmenso e infinito mundo de los blogs. El objetivo de este blog es múltiple: ayudar a los principiantes en el mundo Linux, informar sobre el mundo KDE, (el entorno de escritorio bajo Linux) y fomentar el uso del Software Libre.»

A pesar de la doce años pasados, la idea principal sigue válida aunque los artículos van cambiando de temática porque cada vez es más difícil hacer entradas explicando cómo hacer las cosas o solucionar problemas, lo cual es positivo, y cada vez más voy dedicando el blog a eventos y podcast.
Y es que cada vez más gente utiliza GNU/Linux y el Software Libre cada vez tiene una alta calidad (está a la altura y supera al privativo en muchos aspectos) aunque sigo opinando que el gran salto solo se dará cuando los dispositivos que compre la gente ofrezcan GNU/Linux por defecto.
Mientras tanto, el KDE Blog blog seguirá siendo mi granito de arena en la promoción del Software Libre y de la Comunidad KDE.
Los años siguen siendo complicados pero se mantienen las entradas diarias

Esto se repite año a año ya que igual que el 2020 mis obligaciones familiares, académicas y laborales me dejan poco tiempos para poder dedicarlo al blog. No obstante, este año me he organizado mejor y apenas tengo problemas para poder escribir… en mis tiempos vacacionales suelo redactar lagunas entradas que me alivian en épocas más estresantes.
De esta forma, sigo publicando de forma diaria sin demasiadas dificultades ya que el entorno no deja de ofrecerme decenas de eventos, colaboraciones, podcast y servicios, los cuales debo admitir que parece que han aumentado en estos tiempos pandémicos.
En cuento a mis actividades fuera del blog quisiera destacar que:
- Sigo en la junta de KDE España como secretario.
- Soy nuevo miembro de la Asociación de usuarios de GNU/Linux València.
- He vuelto a participar en los podcast de KDE España de forma directa aunque mis labores se han reorientado a darle un toque visual a los mismos, y sigo encargado de publicarlos en los diferentes medios.
- Sigo atento en el Grupo de Telegram de Cañas y Bravas. ¡Somos casi de 600 pero sigues faltando tú!).
- Y me encargo, con menor intensidad de la deseada, de las redes sociales de la organización.
A lo largo de estos 13 años he ido publicando entradas conmemorativas que podéis seguir en la siguiente etiqueta, en las cuales se resumen muy bien los sentimientos y la historia del blog, y como este año no tengo tiempo y apenas han cambiado os invito a leer para no repetirlo.
Renovación de votos
Los votos no cambian, al parecer he llegado a un momento de estabilidad, y mi compromisos con la Comunidad KDE se mantienen:
- KDE Blog sigue teniendo cuerda para muchos años,
- Sigo estando ilusionado con el proyecto KDE y en su difusión.
- Sigo abierto a todo tipo de colaboraciones (¿quieres ayudar a publicar en el blog? ¿Encargarte de la parte social? ¿Mejorar las entradas? Mándame un correo [bortega@kde_espana.org] y hablamos)
- Y para finalizar decir que me siento orgulloso de pertenecer a un movimiento cuyo objetivo es compartir su conocimiento en pro de una evolución más rápida de la humanidad, que se concreta en pertenecer a una Asociación de Software Libre como KDE España.
Así que:
¡Muchísimas gracias a todos por seguirme!
Curso de Vim: Los registros numerados en #Vim
Veamos los registros numerados que dispone el editor Vim y cómo poder usar esta gran herramienta al editar

El editor Vim dispone de 10 tipos de registros que almacenan ciertos textos en una u otras circunstancias.
- El registro sin nombre (
""). - Los registros numerados (
"0-9). - El registro de pequeñas eliminaciones (
"-). - Los registros nominales (
"a-z). - El registro de solo lectura (
":,".,y"%). - El registro de archivo alternativo (
"#). - El registro de expresiones (
"=). - Los registros de selección (
"*y"+). - El registro de agujero negro (
"_). - El registro del último patrón de búsqueda (
"/).
En este artículo vamos a fijarnos en los registros numerados que dispone el editor Vim. Vamos a conocerlos y saber cómo utilizarlos mientras editamos con Vim.
Este artículo es una nueva entrega del curso “improVIMsado” que desde hace meses vengo publicando en mi blog sobre el editor Vim y que puedes seguir en estos enlaces:
- https://victorhckinthefreeworld.com/tag/vim/
- https://victorhck.gitlab.io/comandos_vim/articulos.html
Los registros numerados almacenan ciertos textos que copiamos o borramos. Vamos a ver cómo funcionan. Cabe diferenciar en los registros numerados el registro 0 y los registros del 1 al 9.
Podemos consultar los textos almacenados en los registros numerados (entre otros registros que dispone Vim y que si os apetece veremos en otras ocasiones) ejecutando el comando:
:reg
Primero vamos a repasar los registros numerados. Y después veremos cómo podemos usarlos.
El registro numerado 0
El registro 0 almacena el último texto copiado, ya sea un único caracter (yl), una palabra (yiw), línea (yy), etc. El texto nuevo copiado sustituirá al anterior, pero mientras no copiemos otro texto, nuestro texto copiado estará disponible en este registro.
Los registros numerados del 1 al 9
Cuando borramos una línea (dd) o cuando cambiamos una línea (cc) ese texto queda almacenado en los registros numerados del 1 al 9. Y los distintos textos se almacenan como si fueran una pila.
Es decir, el primer texto se almacena en el registro 1, cuando borramos otra línea, el texto del registro 1 pasa al 2 y el nuevo texto se almacena en el registro 1. Y así de manera consecutiva hasta el registro 9.
Cómo utilizar los registros numerados.
Ya hemos visto qué se almacena en cada registro numerado. El 0 sería el registro de copia, y del 1 al 9 las líneas borradas y cambiadas que se van almacenando progresivamente.
Esos textos almacenados los podemos utilizar para pegarlos tantas veces como deseemos.
Para pegar esos textos, cualquiera de ellos del 0 al 9, estando en el modo normal de Vim podemos ejecutar:
"xp
Donde las comillas dobles se refieren al registro, la x la sustituiremos por el número de registro que queremos pegar y la p la acción. Si usamos la p pega el texto después del cursor. Si usamos la P antes del cursor.
Por ejemplo, si queremos pegar el contenido del registro 2, sería:
"2p
Una curiosidad, si después de ejecutar esa acción usamos el comando del punto, Vim en la repetición del comando incrementará el registro utilizado.
Es decir en el ejemplo anterior que hemos pegado el registro 2, si ahora repetimos la acción usando el punto, Vim pegará el registro 3, si lo repetimos pegará el registro 4, etc…
Pero también podemos utilizar los registros estando en el modo insertar, en vez de usar las comillas dobles, deberemos hacerlo con la combinación de teclas Ctrl-r n. Donde n sería el número de registro que queremos pegar.
Espero que esta explicación haya sido aclaratoria del modo de utilizar los registros y os sea útil a la hora de mejorar vuestra experiencia usando el edito Vim.
¿Conocías esta funcionalidad? ¿Os ha resultado útil? ¿Queréis que escriba sobre los otros registros? Usad los comentarios para dar vuestra opinión.

ActiveSupport::Notifications is Rad!
One of the lesser known parts of Rails core is the ActiveSupport instrumentation framework.
ActiveSupport::Notifications includes all the things you need to implement pub-sub in Rails.
Pub-Sub is a software architecture where you publish (send) a message without being specific about who should
receive it. Fire and forget.
Receiving a message, and doing something with it, "just" requires you to subscribe to it. Because the publisher doesn't need to know about the subscribers (as they are decoupled), this provides nice opportunities for organization and scale.
Let's explore the joyful shenanigans of this.
- ActiveSupport::Notifications is rad! (this post)
- Measure twice, cut once: App Performance Monitoring with influxdb-rails
- Let's build Software Libre APM together
Publish & Subscribe
There is an instrumentation message emitted from ActionController that includes interesting data
about the things happening in your controller action. Let's explore this.
If you don't have a Ruby on Rails app at hand, just setup a minimal one with rails new --minimal
Add this code into an initializer
# config/initializers/instrumentation_subscriber.rb
# What happens in ActionController?
module ActionController
class InstrumentationSubscriber < ActiveSupport::Subscriber
attach_to :action_controller
def process_action(message)
Rails.logger.debug "Instrumentation #{message.name} Received!"
end
end
end
Boot the app (rails server), visit http://127.0.0.0:3000 and you'll
see the new log lines in your development.log. So what? What's the difference to calling Rails.logger in
an action or callback inside your controller? Why is ActiveSupport::Notifications fabulous?
ActiveSupport::Notifications Scales
First, as explained in the intro, the main advantage is that the publisher is decoupled from the subscriber. For instance,
you can have more than one subscriber listening to process_action.action_controller.
# config/initializers/slowlog_subscriber.rb
module ActionController
class SlowlogSubscriber < ActiveSupport::Subscriber
attach_to :action_controller
def process_action(message)
return if message.duration <= 10
controller_location = [message.payload[:controller], message.payload[:action]].join("#") # -> ThingsController#something
Rails.logger.debug "#{controller_location} was slow (#{message.duration}ms)"
end
end
endYou are free to organize this however you want. Decouple publisher/subscriber in different files, chronological or even in different threads.
# config/initializers/poor_mans_background_job_subscriber.rb
module ActionController
class PMBGJSubscriber < ActiveSupport::Subscriber
include Concurrent::Async
attach_to :action_controller
def process_action(message)
async.background_job(message)
end
def background_job(message)
# ...do something expensive with the message in a thread
sleep(60)
end
end
endActivesupport::Notifications Is Everywhere Today
Second, and you probably already guessed this from the example, what makes this most awesome are the ready made messages that are already published today.
Rails for instance uses ActiveSupport::Notifications to publish close to 50(!) different instrumentation events
that include data about your application. Data ranging from the HTTP status code of your requests, over which partials
were rendered, to more esoteric measurements like the byte range attempted to be read from your ActiveStorage service.
Check the instrumentation guide
for all the dirty secrets.
ActiveSupport::Notifications Is Easily Extendible
Last but not least, you can not only listen to messages others publish, you can publish messages to yourself.
ActiveSupport::Notifications.instrument "cool_thing_happened.my_app", {some: :data} do
MyApp.do_cool_thing(true)
end
Okay, you're convinced I hope! Now what do people do with ActiveSupport::Notifications out in the world?
Application Health/Performance Monitoring
Ever wondered how your metrics get to Sentry, New Relic, Datadog or Skylight? You guessed it, via ActiveSupport::Notifications.
Now if the main work, publishing tons of messages through a pub-sub architecture, is already done by Rails, surely there are non-SaaS (a.k.a. Software Libre) options to display this data, right? Turns out there are not. While evaluating options for some of my projects (especially Open Build Service) we came across this gap and started to fill it.
How, why and where? Read on in the next part of this series: Measure twice, cut once: App Performance Monitoring with influxdb-rails
Cursos Linux gratuitos de Antonio Sánchez Corbalán
Hoy toca hablar de formación. Quiero presentaros los Cursos Linux gratuitos de Antonio Sánchez Corbalán, una oportunidad de seguir aprendiendo más sobre los sistemas GNU/Linux. Dentro de su catálogo nos podremos encontrar tanto cursos para principiantes como para iniciados en este mundo libre.
Cursos Linux gratuitos de Antonio Sánchez Corbalán
Tuve el gusto de conocer a Antonio Sánchez el pasado 5 de marzo, en la emisión de un programa de Somos Tecnológicos de José Picón en Radio Bétera, que evidentemente pondré al final del artículo.
En este programa, en el que además estuvo presente David Marzal, conocí a un profesional en lo que refiere a la creación, desarrollo y mentorización ya que parte de su trabajo es el mantenimiento de diversos cursos Linux que podemos ver en su web: A. Sánchez Corbalán.

El mismo se define como «LPI Trainer Partner y profesor de informática desde hace más de 15 años.» y nos ofrece un catálogo de cursos variado, teniendo en su listado tanto cursos gratuitos como de pago e incluso certificados.
De momento podemos elegir entre:
- Comandos de Linux. Aprende desde cero (GRATUITO)
- Shell Bash de Linux: comandos para el manejo de texto (GRATUITO para lectores del blog)
- Comandos Linux: desde cero hasta programar Shell Script
- LPI Linux Essentials (Certificado)
- Curso LPic-1 Administrador de sistemas Linux (Certificado)

Los cursos siempre se componen de tres elementos básicos: vídeos explicativos, ejercicios prácticos y la posibilidad de tutorías personalizadas con lo que nunca te podrás sentir perdido.
Además, Antonio Sánchez nos ofrece también un blog donde nos habla de nociones de programación y aspectos variados del sistema GNU/Linux, una forma más de seguir aprendiendo de la mano de un maestro.

Y como lo prometido es deuda, aquí abajo podéis escuchar el programa de Somos Tecnológicos de Radio Bétera donde se entrevista al creador y mantenedor de los cursos.
El comando split de GNU en Linux
El comando split es una de las herramientas de coreutils del sistema GNU con kernel Linux

El comando split sirve para dividir un archivo grande en varios archivos pequeños. Podemos realizar esa división por número de líneas, por tamaño u otras opciones.
Este artículo está inspirado por el artículo escrito por Solene para su blog, que puedes leer en este enlace.
Split está disponible para sistemas GNU/linux gracias a Torbjorn Granlund y Richard M. Stallman. Y disponible en los GNU coreutils, por lo que seguro está disponible en tu distribución.
La funcionalidad es el poder dividir un archivo grandes en varios más pequeños. Bien divididos por líneas o por tamaño de archivo. El uso básico sería:
split archivo.txt
De manera predeterminada y sin más configuraciones divide el archivo en archivos de 1000 líneas cada uno. Archivos que comienza por x y después dos letras comenzando por aa y continuando por ab, ac, etc… Pero por supuesto podemos cambiar ese comportamiento.
Podemos dividir el archivo en archivos de 100 líneas cada uno mediante:
split -l 100 archivo.txt
También podemos dividir el archivo grande en archivos más pequeños y cada uno de un tamaño determinado, por ejemplo 10 Megas:
split -b 10M archivo.txt
Podemos hacer que nuestros archivos divididos no terminen con letras como hemos visto (aa, ab, ac) si no que vayan numerados empezando por el 0. Para ello utilizamos la opción -d:
split -d -b 10M archivo.txt
Pero quizás queremos que no sean números de dos dígitos, si no de 2 o más, para ello añadimos la opción -a y el número de dígitos que queremos:
split -a 3 -d -b 10M archivo.txt
También podemos cambiar el nombre x que le pone el comando split por un prefijo que nosotros determinemos. Para ello escribimos nuestro prefijo detrás del nombre del archivo. En este caso sustituiremos la x por logs_
split -a 3 -d -b 10M archivo.txt logs_
Quizás queremos dividir nuestro archivo no en líneas o no por tamaño, si no simplemente porque queremos forzar el comando para que lo divida en un número determinado de archivos. Para ello usaremos la opción -n y lo dividiremos en 5 partes:
split -n 5 archivo.txt log_
Con todo esto y mucho más podemos utilizar el comando split en GNU/Linux para dividir archivos, pero ¿y si queremos volver a unir los archivos en uno solo?
Para eso utilizamos el comando cat. Por ejemplo, si tenemos los 5 archivos divididos en una carpeta, que se llaman xaa, xab, xac, xad, aae y los queremos unir en un archivo llamado log.txt:
cat xa* > log.txt
Podemos comprobar que el archivo generado es idéntico al que utilizamos originalmente para dividirlo mediante la suma de verificación que nos genera el comando sha256sum
sha256sum archivo.txt log.txt
Y los valores que nos de, deberán ser idénticos.
Espero que te haya resultado interesante. Tienes más opciones con el comando csplit. Te recomiendo que leas la documentación de ambos y escojas el que más te interese.

Cubicle Chat | 20 Mar 2021
Mouse wheel Window Control – Plasmoides de KDE (173)
La lista de plasmoides no para de crecer y sigue aumentando con nuevas alternativas para personalizar y adaptar nuestro escritorio para nuestras necesidades. En esta ocasión os presento Mouse wheel Window Control, un simple widget que nos permite añadir más funcionalidades a la rueda de nuestro ratón, una forma más de adaptar nuestro entorno de trabajo a nuestras costumbres.
Mouse wheel Window Control – Plasmoides de KDE (173)
Aunque normalmente las opciones por defecto suelen ser las más utilizadas nunca viene mal tener a nuestra disposición otras posibilidades por si tenemos otros usos y maneras de utilizar nuestro ordenador.

De la mano y mente de borealis nos llega un pequeño plasmoide que nos permitirá modificar el comportamiento de la rueda del ratón sobre la barra de tareas de Plasma.
Para ser más concreto las acciones que podemos seleccionar son las siguientes:
- Desplazando hacia arriba
- Abre una nueva instancia
- Selecciona una tarea
- Maximiza o restaura una ventana o grupo
- Desplazando hacia abajo
- Minimiza o restaura la ventana o el grupo
- Cierra la ventana o el grupo
Todo ello controlado por una completa ventana de opciones.

Y como siempre digo, si os gusta el plasmoide podéis “pagarlo” de muchas formas en la nueva página de KDE Store, que estoy seguro que el desarrollador lo agradecerá: puntúale positivamente, hazle un comentario en la página o realiza una donación. Ayudar al desarrollo del Software Libre también se hace simplemente dando las gracias, ayuda mucho más de lo que os podéis imaginar, recordad la campaña I love Free Software Day 2017 de la Free Software Foundation donde se nos recordaba esta forma tan sencilla de colaborar con el gran proyecto del Software Libre y que en el blog dedicamos un artículo.
Más información: KDE Store
¿Qué son los plasmoides?
Para los no iniciados en el blog, quizás la palabra plasmoide le suene un poco rara pero no es mas que el nombre que reciben los widgets para el escritorio Plasma de KDE.
En otras palabras, los plasmoides no son más que pequeñas aplicaciones que puestas sobre el escritorio o sobre una de las barras de tareas del mismo aumentan las funcionalidades del mismo o simplemente lo decoran.
packagesの説明文書を訳しつつ、使えるものを探してみました(B編)
前回は G でしたが、今回は B です。
パッケージ名 bats
バージョン bbe-0.2.2-3.5
動作 ◎
詳細
ブロック単位で処理が出来る sed のようなストリームエディタです。sed はあくまでもストリームとして処理しますが、 bbe ではバイト位置やブロック単位での処理が出来ます。
http://bbe-.sourceforge.net/bbe.html#bbe-programs に例がありますが、
echo “The quick brown fox jumps over a lazy dog” | bbe -b “/The/:21” -e “j 4” -e “s/ /X/”
を実行すると
The quickXbrownXfoxXjumps over a lazy dog
と言う結果が得られます。まず、処理ブロックとして “The” という文字列から21文字目までを対象とし、さらに、 “j” から4文字は対象外とし、そののち、空白を大文字の “X” に置き換えるという動作をします。また、
echo “The quick brown fox jumps over a lazy dog” | bbe -b “:5” -e “A XYZ”
は5バイトのブロックを定義し、そのブロックの後に “XYZ” という文字列を付加します。
The qXYZuick XYZbrownXYZ fox XYZjumpsXYZ overXYZ a laXYZzy doXYZg
バイト位置を考えねばならない文字列変換を行うときには便利に使えそうです。
パッケージ名 bing
バージョン
動作 ◎
詳細
2つのポイントの間のスループットを ICMP パケットで調べるツールです。ping の結果を整理して表示するようなイメージです。結果は以下のようになります。
2つの host を指定する意味はあまりないように思えますが、ping の結果を整理(平均を取るなど)しなくてもすむのは便利かもしれません。
% bing localhost www.opensuse.org
BING localhost (127.0.0.1) and proxy-nue.opensuse.org (195.135.221.140)
44 and 108 data bytes
1024 bits in 3.896ms: 262834bps, 0.003805ms per bit
1024 bits in 0.000ms
1024 bits in 0.090ms: 11377778bps, 0.000088ms per bit
1024 bits in 0.000ms
^C
--- localhost statistics ---
bytes out in dup loss rtt (ms): min avg max
44 1275 1275 0% 0.037 0.057 0.160
108 1275 1275 0% 0.017 0.025 0.126
--- proxy-nue.opensuse.org statistics ---
bytes out in dup loss rtt (ms): min avg max
44 1275 1274 0% 241.446 244.020 402.245
108 1274 1273 0% 241.444 244.103 329.752
--- estimated link characteristics ---
warning: rtt big host1 0.017ms < rtt small host2 0.037ms
warning: rtt big host2 241.444ms < rtt small host2 241.446ms
minimum delay difference is zero, can't estimate link throughput.
Ingenuity FPV
When I previously posted about the Perseverance landing, I didn't realize NASA has actually published textured models of the lander and it's cute not-so-little maritan helicopter, Ingenuity.

Naturally I was drawn to play around with the model over the past few weeks and after posting a little Instagram test, a more elaborate Instagram Reel, I was naturally bound to theme some of my fpv flights as martian exploration. I'm glad I managed to create one before the actual Ingenuity test flight, because the strict lockdown really limits any fitting location right now.
All of the martian footage has been rendered with the realtime eevee engine, maxing out at 20 seconds per frame. The focal blur has been improved in eevee recently, but Cycles was used for all the fpv overlays for now.
The original track was recorded at 60BPM, but sadly the footage is unbearable to watch for over 4 minutes, so I've resampled it to 90BMP to keep the legth down. It does glitch at some points, but the motivation to work on this has reached critical levels, so I'm calling it done.