Skip to main content

the avatar of Nathan Wolf
a silhouette of a person's head and shoulders, used as a default avatar

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

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.»

Aspecto en los primeros días del blog.

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

KDE Blog cumple 13 años

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:

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!

a silhouette of a person's head and shoulders, used as a default avatar

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.

  1. El registro sin nombre ("").
  2. Los registros numerados ("0-9).
  3. El registro de pequeñas eliminaciones ("-).
  4. Los registros nominales ("a-z).
  5. El registro de solo lectura (":, ".,y "%).
  6. El registro de archivo alternativo ("#).
  7. El registro de expresiones ("=).
  8. Los registros de selección ("* y "+).
  9. El registro de agujero negro ("_).
  10. 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:

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.

the avatar of Henne Vogelsang

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.

This post is the first part of a three part series about instrumenting your Ruby on Rails app with influxdb-rails. Make sure to check them all out!

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
end

You 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
end

Activesupport::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

a silhouette of a person's head and shoulders, used as a default avatar

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.

Cursos Linux gratuitos de Antonio 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:

Cursos Linux gratuitos de Antonio Sánchez Corbalán

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.

Cursos Linux gratuitos de Antonio Sánchez Corbalán

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.

a silhouette of a person's head and shoulders, used as a default avatar

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.

the avatar of Nathan Wolf

Cubicle Chat | 20 Mar 2021

In the absence of a Linux centered live stream called BDLL, I was encouraged by another community member, Vash, to have a kind of “low rent” replacement of the show until it is picked back up. This was my first run at such an activity and I ultimately think it went fairly well. I made […]
a silhouette of a person's head and shoulders, used as a default avatar

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.

Mouse wheel Window Control - Plasmoides de KDE (173)

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.

a silhouette of a person's head and shoulders, used as a default avatar

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 &lt; rtt small host2 0.037ms
warning: rtt big host2 241.444ms &lt; rtt small host2 241.446ms

minimum delay difference is zero, can't estimate link throughput.
a silhouette of a person's head and shoulders, used as a default avatar

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.

Ingenuity ripping

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.