Skip to main content

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

Escribir con Markdown + Pandoc, segunda parte

Ya he hablado de esta serie de charlas online que cada noche se están realizando HackLab Almería. En este caso os invito a asisitir a la ponencia «Escribir con Markdown + Pandoc, segunda parte» que será realizada por mi amigo Rubén Gómez este jueves 30 de abril. ¿Quieres más detalles? Sigue leyendo.

Escribir con Markdown + Pandoc, segunda parte

Escribir con Markdown + Pandoc, segunda parteDesde mediados del pasado mes de marzo, la HackLab Almería, con las etiquetas de #gentequehacecosas y #YoMeQuedoEnCasa, está organizando una serie de vídeos de más o menos una hora de duración en la que nos están presentando o explicando multitud de proyectos libres.De esta forma ya llevan unas 25 charlas realizadas y puestas a disposición de todos los usuarios en su canal de Youtube.

Y siguen, porque este jueves 30 de Abril a las 21:00, a través de uno de los mejores servicios de videollamada OpenSource que existe, Jitsi se va a realizar una nueva charla, esta vez a cargo de Rubén @Razlobo Gómez Antolí.

Como es habitual, no es necesaria instalación ninguna ni inscripción previa; solo abre el navegador que más te guste y abre el siguiente enlace:

https://meet.jit.si/hacklabalm_markdown_pandoc2

Además, y para evitar saturación en la sala Jitsi, se habilitará la retransmisión en directo a través de youtube.

¿De qué va la charla?

Simplemente vemos las notas de la ponencia donde nos explican que para quienes no lo sepan:

«Markdown se ha convertido en el lenguaje de marcas de moda gracias a su facilidad de aprendizaje y su utilización en varias plataformas de control de versiones y en creadores de espacios web.

Pero Markdown, gracias a la utilización de la herramienta Pandoc, se puede convertir en un lenguaje de creación de todo tipo de documentos con posibilidades de distintos formatos de salida: pdf, epub, odt, html…

Markdown y Pandoc es una pareja ganadora, pero, además, se pueden integrar otras utilidades como puede ser el lenguaje estadístico Gnu/R que nos permite realizar documentos reutilizables o informes automatizados.

Tras una primera charla de introducción, en esta segunda seguimos por donde nos quedamos y añadimos nuevas cosas a hacer con nuestros documentos, como cambiar la maquetación del documento, obtener distintas salidas desde el mismo documento o explicar acerca de la documentación reproducible.»

Aprovecho para comentar que ese día también se realizará otra charla, titulada «DDD con Node.js es posible» a cargo de Konstantin Knyazev que por supuesto también os invito asistir.

 

Más información: HackLab Almería Documentos con Markdown y padoc |AlmeríaJS abril (on-line): DDD con Node.js es posible

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

exa un reemplazo más colorido y moderno para el comando ls

La utilidad exa para la línea de comandos de GNU/Linux es una forma más visual y más colorida de listar los archivos de una carpeta como reemplazo al conocido comando ls

exa vs ls (clic sobre la imagen para ampliar)

Supongo que cuando estás en la línea de comandos de GNU/Linux uno de los comandos más utilizados es ls (o algún alias que tengas configurado) para listar los archivos que están en una carpeta de tu equipo.

Pero hoy quiero darte a conocer una herramienta para la consola de GNU/Linux llamada exa, que hace eso exactamente, mostrar el contenido de una carpeta, pero de una manera algo diferente.

La utilidad exa estáescrita en Rust y disponible para varias distribuciones de GNU/Linux como openSUSE, Arch, Fedora o Gentoo y está publicada bajo una licencia MIT.

Exa, muestra la salida de manera predeterminada ya coloreada. Así es más sencillo de un vistazo diferenciar archivos de carpetas y distintos tipos de archivos entre sí.

Además también diferencia por colores los permisos de los archivos y el usuario al que pertenecen. Otra cosa interesante es que a la hora de mostrar la fecha de modificación lo hace en el formato dd/MM/AAAA y no al modo anglosajón.

Además si estás en una carpeta que contiene un repositorio de Git, exa también muestra información sobre el estado del archivo.

También tiene la opción de poder mostrar tus archivos en un “árbol” tal como hace el comando tree, pero el tree propio de exa sigue mostrando la información de todos los archivos. Simplemente ejecuta

exa --tree

Pero además de la configuración predeterminada, también se pueden añadir otras informaciones a los datos que muestra exa, como el número de enlaces que posee un archivo, fechas de creación o de último acceso a los archivos, el grupo de usuario al que pertenece un archivo, etc

Como extra, te recomiendo que crees un alias en tu sistema como el siguiente:

alias exa="exa --long --header --git"

Para que de manera predeterminada muestre el formato largo, el texto con la cabecera encima de cada columna, y si estás en un repo de Git muestre información de cada archivo.

Te animo a que pruebes esta utilidad en tu sistema como reemplazo a ls y verás que quizás no quieras volver atrás…

Enlaces de interés

the avatar of Federico Mena-Quintero

Bringing my Emacs from the past

I started using Emacs in 1995, and since then I have been carrying a .emacs that by now has a lot of accumulated crap. It is such an old configuration that it didn't even use the modern convention of ~/.emacs.d/init.el (and it looks like a newer Emacs version will allow .config/emacs as per the XDG standard... at last).

I have wanted to change my Emacs configuration for some time, and give it all the pretty and modern toys.

The things that matter the most to me:

  • Not have a random dumpster in ~/.emacs if possible.
  • Pretty colors.
  • Magit.
  • Rust-mode or whatever the new thing is for rust-analyzer and the Language Server.

After looking at several examples of configurations that mention use-package as a unified way of loading packages and configuring them, I found this configuration which is extremely well documented. The author does literate programming with org-mode and elisp — something which I'm casually interested in, but not just now — but that way everything ends up very well explained and easy to read.

I extracted bits of that configuration and ended up with the following.

Everything in ~/.emacs/init.el and with use-package

;; Initialize package system

(require 'package)

(setq package-archives
      '(("org"     .       "https://orgmode.org/elpa/")
        ("gnu"     .       "https://elpa.gnu.org/packages/")
        ("melpa"   .       "https://melpa.org/packages/")))

(package-initialize)
;(package-refresh-contents)

;; Use-package for civilized configuration

(unless (package-installed-p 'use-package)
  (package-install 'use-package))
(require 'use-package)

(setq use-package-always-ensure t)

~/.emacs.d/custom.el for M-x customize stuff

;; Set customization data in a specific file, without littering
;; my init files.

(setq custom-file "~/.emacs.d/custom.el")
(load custom-file)

Which-key to get hints when typing command prefixes

;; Make it easier to discover key shortcuts

(use-package which-key
  :diminish
  :config
  (which-key-mode)
  (which-key-setup-side-window-bottom)
  (setq which-key-idle-delay 0.1))

Don't pollute the modeline with common modes

;; Do not show some common modes in the modeline, to save space

(use-package diminish
  :defer 5
  :config
  (diminish 'org-indent-mode))

Magit to use git in a civilized fashion

;; Magit

(use-package magit
  :config
  (global-set-key (kbd "C-x g") 'magit-status))

Move between windows with Shift-arrows

;; Let me switch windows with shift-arrows instead of "C-x o" all the time
(windmove-default-keybindings)

Pretty colors

I was using solarized-dark but I like this one even better:

;; Pretty colors

(use-package flatland-theme
  :config
  (custom-theme-set-faces 'flatland
   '(show-paren-match ((t (:background "dark gray" :foreground "black" :weight bold))))
   '(show-paren-mismatch ((t (:background "firebrick" :foreground "orange" :weight bold))))))

Nyan cat instead of scrollbars

;; Nyan cat instead of scrollbar
;; scroll-bar-mode is turned off in custom.el

(use-package nyan-mode
  :config
  (nyan-mode 1))

Move buffers to adjacent windows

;; Move buffers between windows

(use-package buffer-move
  :config
  (global-set-key (kbd "<C-S-up>")     'buf-move-up)
  (global-set-key (kbd "<C-S-down>")   'buf-move-down)
  (global-set-key (kbd "<C-S-left>")   'buf-move-left)
  (global-set-key (kbd "<C-S-right>")  'buf-move-right))

Change buffer names for files with the same name

;; Note that ‘uniquify’ is builtin.
(require 'uniquify)
(setq uniquify-separator "/"               ;; The separator in buffer names.
      uniquify-buffer-name-style 'forward) ;; names/in/this/style

Helm to auto-complete in grand style

(use-package helm
 :diminish
 :init (helm-mode t)
 :bind (("M-x"     . helm-M-x)
        ("C-x C-f" . helm-find-files)
        ("C-x b"   . helm-mini)     ;; See buffers & recent files; more useful.
        ("C-x r b" . helm-filtered-bookmarks)
        ("C-x C-r" . helm-recentf)  ;; Search for recently edited files
        ("C-c i"   . helm-imenu)
        ("C-h a"   . helm-apropos)
        ;; Look at what was cut recently & paste it in.
        ("M-y" . helm-show-kill-ring)

        :map helm-map
        ;; We can list ‘actions’ on the currently selected item by C-z.
        ("C-z" . helm-select-action)
        ;; Let's keep tab-completetion anyhow.
        ("TAB"   . helm-execute-persistent-action)
        ("<tab>" . helm-execute-persistent-action)))

Ripgrep to search in grand style

;; Ripgrep

(use-package rg
  :config
  (global-set-key (kbd "M-s g") 'rg)
  (global-set-key (kbd "M-s d") 'rg-dwim))

(use-package helm-rg)

Rust mode and Language Server

Now that RLS is in the process of being deprecated, it's getting substituted with rust-analyzer. Also, rust-mode goes away in favor of rustic.

;; Rustic, LSP

(use-package flycheck)

(use-package rustic)

(use-package lsp-ui)

(use-package helm-lsp
  :config
  (define-key lsp-mode-map [remap xref-find-apropos] #'helm-lsp-workspace-symbol))

Performatively not get distracted

;;; Show a notification when compilation finishes

(setq compilation-finish-functions
      (append compilation-finish-functions
          '(fmq-compilation-finish)))

(defun fmq-compilation-finish (buffer status)
  (when (not (member mode-name '("Grep" "rg")))
    (call-process "notify-send" nil nil nil
          "-t" "0"
          "-i" "emacs"
          "Compilation finished in Emacs"
          status)))

Stuff from custom.el

The interesting bits here are making LSP work; everything else is preferences.

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(column-number-mode t)
 '(custom-safe-themes
   (quote
    ("2540689fd0bc5d74c4682764ff6c94057ba8061a98be5dd21116bf7bf301acfb" "bffa9739ce0752a37d9b1eee78fc00ba159748f50dc328af4be661484848e476" "0fffa9669425ff140ff2ae8568c7719705ef33b7a927a0ba7c5e2ffcfac09b75" "2809bcb77ad21312897b541134981282dc455ccd7c14d74cc333b6e549b824f3" default)))
 '(delete-selection-mode nil)
 '(lsp-rust-analyzer-display-chaining-hints t)
 '(lsp-rust-analyzer-display-parameter-hints nil)
 '(lsp-rust-analyzer-macro-expansion-method (quote rustic-analyzer-macro-expand))
 '(lsp-rust-analyzer-server-command (quote ("/home/federico/.cargo/bin/rust-analyzer")))
 '(lsp-rust-analyzer-server-display-inlay-hints nil)
 '(lsp-rust-full-docs t)
 '(lsp-rust-server (quote rust-analyzer))
 '(lsp-ui-doc-alignment (quote window))
 '(lsp-ui-doc-position (quote top))
 '(lsp-ui-sideline-enable nil)
 '(menu-bar-mode nil)
 '(package-selected-packages
   (quote
    (helm-lsp lsp-ui lsp-mode flycheck rustic rg helm-rg ripgrep helm-projectile helm buffer-move nyan-mode flatland-black-theme flatland-theme afternoon-theme spacemacs-theme solarized-theme magit diminish which-key use-package)))
 '(rustic-lsp-server (quote rust-analyzer))
 '(scroll-bar-mode nil)
 '(scroll-step 0)
 '(tool-bar-mode nil))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

Results

I am very happy with rustic / rust-analyzer and the Language Server. Having documentation on each thing when one moves the cursor around code is something that I never thought would work well in Emacs. I haven't decided if I love M-x lsp-rust-analyzer-inlay-hints-mode or if it drives me nuts; it shows you the names of function arguments and inferred types among the code. I suppose I'll turn it off and on as needed.

Some days ago, before using helm, I had projectile-mode to work with git checkouts and I was quite liking it. I haven't found how to configure helm-projectile to work; I'll have to keep experimenting.

the avatar of Nathan Wolf

Outside the Cubicle | DeWALT 20v Max Cordless Tool Platform

Outside of the Linux thing and retro tech hobbies of mine, I like to build things and generally improve my domicile so I enjoy tools, especially cordless power tools. Not having that tether to the wall has a kind of freedom to it that makes working with your hands much more enjoyable. I have been … Continue reading Outside the Cubicle | DeWALT 20v Max Cordless Tool Platform
a silhouette of a person's head and shoulders, used as a default avatar

Las novedades Dolphin de abril de 2020

Inicio una serie sobre los cambios en las aplicaciones que han llegado este mes. Empiezo con las novedades Dolphin de abril de 2020, el gestor de ficheros más potente, versátil y funcional que puedes tener en tu escritorio, ya sea libre (GNU/Linux) o privativo (Windows/Mac).

Las novedades Dolphin de abril de 2020

Las novedades Dolphin de abril de 2020Lo he dicho muchas veces pero lo repetiré mil más. ¡Qué suerte tiene la gente que no ha probado Dolphin que no se sienten inútiles al utilizar otro explorador de ficheros!

Y es que por configuración, funcionalidades, flexibilidad y eficiencia creo que no hay mejor gestor de ficheros que Dolphin. Y encima los desarrolladores no dejan de mejorarlo y afinarlo en cada versión.

Hoy me complace compartir con vosotros el listado de mejoras que ha recibido este gestor de archivos de KDE en su última gran actualización de abril de 2020, y de paso me pongo yo al día realizando las correspondientes pruebas.

  • Mejorada la interacción con los sistemas de archivos remotos, como recursos compartidos Samba y servidores SSH. De esta forma ahora es posible empezar a ver películas almacenadas en lugares remotos sin necesidad de descargarlas primero, ya que se transmiten directamente desde la nube al reproductor multimedia a través de Dolphin. Probado y confirmado que funciona a la perfección.
  • Optimizada la conexión con recursos compartidos Samba de Windows y así poder aprovecharse de todos los servicios que ofrecen. Ahora se pueden descubrir estos recursos mediante el protocolo «WS-Discovery» que usan las versiones modernas de Windows y así poder integrar su equipo Linux de un modo transparente en una red de Windows. Esto no lo he podido probar ya que no tengo dispositivos Windows.
  • Nueva funcionalidad  «Duplicar», que permite seleccionar uno o más archivos o carpetas y crear un copia instantánea (sin borrar los originales) con el botón derecho y pulsando en pulsando «Duplicar aquí». También se puede utilizar Crtl + D. Parece una tonterías, pero ahorra tres pasos, optimizando el tiempo de trabajo.

  • Añadida la búsqueda de archivos no solo por su nombre o por su contenido, sino también por sus etiquetas. Lo he probado poniendo mis primeras etiquetas.
  • Soporte integrada de archivos 7Zip. De esta forma se puede navegar por estos archivos comprimidos como si se tratara de carpetas del sistema de archivos.
  • Acceso rápido a a aplicaciones de búsqueda externas como KFind, mediante la creación de un enlace.
  • Añadida el acceso rápido de teclado Ctrl + Mayúsculas + F4 para mover el foco desde y hacia el panel de terminal.  Es decir, mueve el puntero al terminal o lo saca de él al pulsar la combinación. Muy útil.

Más información: KDE

 

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

Comprobar la integridad de una ISO (Ubuntu 20.04 Focal Fossa)

Veamos cómo comprobar que un archivo .iso que hemos descargado no ha sufrido manipulaciones por parte de terceros y que se ha descargado correctamente

A la hora de descargar una  distribución de GNU/Linux para instalarla en nuestro equipo, es importante comprobar que dicha ISO no ha sido manipulada por terceros y que en el proceso de descarga no ha sufrido ningún problema.

En este caso voy a comprobar que la recién salida ISO de Ubuntu Focal Fossa 20.04 está correcta, es la que los desarrolladores publicaron y no ha sufrido problemas durante la descarga.

Para realizar estas comprobaciones, necesitaremos tener instalado gpg en nuestro sistema operativo y descargar tanto el archivo ISO como el archivo con la suma de verificación y la firma de ese archivo todo disponible desde aquí.

¿Qué es cada cosa?

  • El archivo ISO es la propia imagen del sistema operativo que instalaremos y que debemos comprobar que es íntegra
  • El archivo SHA256SUM es un archivo en el que se incluyen la suma de verificación de dicha ISO
  • El archivo SHA256SUM.gpg es la firma de ese archivo por parte de los desarrolladores de Ubuntu que certifica que ese archivo de suma de verificación es legítimo.

Pasos a seguir

1.- Descargar el archivo .iso y las sumas de verificación junto con la firma de ese archivo de las sumas de verificación.

2.- Comprobar que el archivo de suma de verificación está firmado por quien dice que es y no está falsificado ejecutando el comando

gpg --keyid-format long --verify SHA256SUMS.gpg SHA256SUMS

2.1.- Si no tenemos la clave pública deberemos importarla. Copiamos la clave y la importamos por ejemplo desde el servidor de claves de Ubuntu

gpg --keyid-format long --keyserver hkp://keyserver.ubuntu.com --recv-keys 0xD94AA3F0EFE21092

Deberá darnos un resultado de firma correcta:

Firma correcta de "Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>"

3.- Comprobar que la ISO coincide con la suma de verificación

sha256sum -c SHA256SUMS

Deberá darnos un mensaje de que la suma de verificación coincide:

ubuntu-20.04-desktop-amd64.iso: La suma coincide

Es importante realizar estos pasos para comprobar que la ISO es legítima, que coincide con la suma de verificación y que este archivo está firmado y certificado contra modificaciones por los desarrolladores de Ubuntu.

Si tienes correcciones y sugerencias utiliza los comentarios del blog para complementar la información.

Aquí te dejo un vídeo con el proceso. El vídeo está alojado en archive.org en formato webm

También está disponible en YouTube para quien prefiera esta plataforma

https://www.youtube.com/watch?v=dIhuqGDhG9w

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

Ujilliurex 2020, evento online que no te puedes perder #ujilliurex

Quiero invitaros a la próxima edición de Ujilliurex 2020, un evento online, como todos los que vamos ir hablando a lo largo de los meses que vienen, que no te puedes perder. Ujilliurex es un evento que se iba a celebrar en la Universidad Jaume I de Castellón, como era habitual, pero que tuvo que ser retrasado y modificado su formato por razones más que conocidas.

Ujilliurex 2020, evento online que no te puedes perder

Ujilliurex 2020, evento online que no te puedes perderLa conversión de eventos presenciales a virtuales va a ser una constante en estos días. Así ya ha pasado con Akademy, Guadec y cona algunos eventos Flisol, y ya veremos si de muchos otros más.

Ujilliurex no ha sido un excepción y va a ser realizada el próximo 30 de abril en la página web oficial con un programa bastante interesante, y no es porque un servidor haya participado en representación de la Comunidad KDE.

En breve más noticias como el programa.

¿Qué es Ujilliurex?

Se trata de un evento que tiene bastante solera en la provincia de Castellón en el que teniendo como protragonista la distribución de la Generalitat Valenciana Lliurex se presentan novedades sobre ésta y sobre otros proyectos libres.

Está organizado por laUnitat de Suport Educatiu (USE) y el Centro de Educación y Nuevas Tecnologías (CENT) por parte de la UJI y el Centro de formación, innovación y recursos educativos (CEFIRE) de Castellón.

Concretamente sus objetivos fundamentales son:

  • Difundir el uso y manejo de las TIC en la distribución LliureX entre la comunidad educativa universitaria
  • Promover la coordinación, el intercambio y la discusión de conocimientos y experiencias entre profesores universitarios, especialmente de los departamentos con una mayor implicación tanto en la parte educativa de los futuros docentes (Depto. Educación), como posibles usuarios de Lliurex como herramienta en su especialidad (Depto. de Traducción e Interpretación y Depto. de Estudios Ingleses), con docentes de centros educativos de la comunidad valenciana, especialmente de los departamentos de idiomas y Coordinadores de Tecnologías de la Información (Coordinadores TIC).
  • Compartir conocimiento y debatir sobre el contenido de la distribución y la utilización de diversas aplicaciones de la distribución
  • Iniciar una serie de contactos entre las entidades organizadoras de la jornada y los asistentes de los diferentes centros y departamentos.

El evento está promovido por Grupos de Innovación Educativa sobre competencia digital en Lliurex y LliurexLab de la UJI, elVicerrectorado de Estudios y Docencia de la Universitat Jaume I yel Comisionado de la rectora para el Impulso Digital de la Universitat Jaume I

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

crow-translate una aplicación simple ligera y de software libre para traducir texto

crow-translate es una aplicación disponible para GNU/Linux que traduce texto en varios idiomas utilizando las API de Google, Yandex o Bing

Haz clic sobre la imagen para ampliar

Seguro que más de una vez has tenido que utilizar un traductor de texto para un trabajo o tarea que has tenido que realizar, o simplemente para saber de qué trataba una texto.

Opciones y herramientas hay muchas, hoy quiero traer hasta el blog una llamada crow-translate que está publicada bajo licencia GPL-v.3 y que está disponible para muchas distribuciones de GNU/Linux.

Crow-translate es una aplicación escrita en C++ y Qt con una interfaz sencilla, un consumo de memoria muy bajo (20Mb) y un montón de posibilidades para traducir utilizando las API de servicios de traducción de Google, Yandex o Bing.

Una vez instalada la aplicación, podemos ejecutarla y se quedará “residente” en la memoria y la tendremos siempre a mano en un icono en la bandeja de sistema o mediante la interfaz para la línea de comandos o con los atajos de teclado.

Crow-translate traduce texto desde un idioma que puede detectar y de manera predeterminada el texto al idioma que tengamos configurado en nuestro sistema, pero esto se puede cambiar y se pueden añadir opciones a otros idiomas.

También tiene la opción de que la aplicación nos lea el texto a traducir o traducido, lo que en ocasiones puede resultarnos interesante si queremos saber cómo se pronuncian algunas palabras o frases, etc.

Otra funcionalidad interesante de Crow-translate son sus atajos de teclado. Para mí el más interesante es sin duda Ctrl+Alt+E que nos traducirá el texto que tengamos seleccionado.

Esos atajos de teclado son configurables, como muchos otros aspectos de la propia aplicación y la interfaz para adecuarlos a nuestras preferencias.

También tiene la opción de utilizar la aplicación desde la línea de comandos. Podemos configurar varios de sus aspectos y podemos simplemente traducir un texto desde una consola mediante:

crow hola mundo

En este vídeo en formato .webm alojado en archive.org podéis ver en detalle la aplicación:

También está disponible en YouTube, para quien prefiera esta opción, en el enlace:

https://www.youtube.com/watch?v=2fNRa9DmQ2Q

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

MediaBar, otro controlador multimedia para Plasma – Plasmoides de KDE – (141)

Lo dije hace unos meses, tener un controlador multimedia en el escritorio mola y el escritorio Plasma de la Comunidad KDE no tiene uno, tiene unos cuantos.  Hoy os quiero presentar MediaBar, otro controlador multimedia para Plasma que complementa al oficial, al Mediacontroller Plus y al Media Controller Compact.

MediaBar, otro controlador multimedia para Plasma

De la mano de Climber nos llega otro plasmoide ideal para los que no pueden estar delante de su ordenador sin estar escuchando música.

Se trata de MediaBar, un widget que nos permite controlar nuestro reproductor multimedia directamente desde nuestro entorno de trabajo, como lo hace el plasmoide oficial de Plasma (mediacontroller).

MediaBar

Sus características básicas son las siguientes:

  • Ver y controlar los medios de comunicación desde el interior de un panel o lanzador (como Latte Dock)
  • Formato simple: Nombre del artista – Título de la pista
  • Ver el álbum y el arte del álbum en vista ampliada y en la punta de la herramienta
  • Ver la posición actual de la pista en vista ampliada
  • Controlable mediante  atajos de teclado.
  • Tamaño y el desplazamiento de texto automático e inteligente.

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

openSUSE Leap で iSCSI Target のセットアップ

最近、電源が壊れたPCを1台リプレースし、余ったマザーボード、CPU、メモリーでファイルサーバーを構築しました。その際にデータをファイルサーバーに移し、デスクトップ PC の HDD を外してしまったので、仮想マシン用の VM の仮想ディスクイメージもファイルサーバーに移す必要がありました。しかし、Hyper-V のディスクイメージは Samba サーバーに置くことができないようなので、仮想マシンのディスクイメージを iSCSI で Hyper-V に接続するようにしてみました。

今日は openSUSE Leap 15.2 (beta) で iSCSI Target(サーバー)のセットアップ方法を紹介します。今回設定する構成はディスクイメージを iSCSI で公開するファイルサーバーと、ファイルサーバーと同じネットワークにあり、そのディスクイメージを使用する Windows 10 のデスクトップ PC からなる単純なものです。

必要なパッケージは targetcli をインストールすれば揃います。YaST でも設定できるのですが、設定できる項目が少ないようなので、targetcli を使って設定します。

$ sudo zypper in targetcli

それでは targetcli を起動して設定していきます。

$ sudo targetcli

まずはディスクイメージファイルを作成します。targetcli の中で /backstores/fileio に移動して、create コマンドでディスクイメージを作成できますここでは /var/storage/disk1.img に 10 GB のディスクイメージ作成します。 /var/storage ディレクトリは先に作成しておく必要があります。

ls コマンドで disk1 が作成されたことが確認できます。

/> cd backstores/fileio 
/backstores/fileio> create file_or_dev=/var/storage/disk1.img name=disk1 size=10G
Created fileio disk1 with size 10737418240
/backstores/fileio> ls
o- fileio ............................................................. [Storage Objects: 1]
  o- disk1 ....................... [/var/storage/disk1.img (10.0GiB) write-back deactivated]
    o- alua ............................................................... [ALUA Groups: 1]
      o- default_tg_pt_gp ................................... [ALUA state: Active/optimized]

次に /iscsi で create コマンドを実行し、iSCSI の target を作成します。create の IQN 形式の ID を省略すると勝手に作成してくれます。

/backstores/fileio> cd /iscsi
/iscsi> create
Created target iqn.2003-01.org.linux-iscsi.testserver.x8664:sn.b527a14e621a.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
/iscsi> ls
o- iscsi ...................................................................... [Targets: 1]
  o- iqn.2003-01.org.linux-iscsi.testserver.x8664:sn.b527a14e621a ................ [TPGs: 1]
    o- tpg1 ......................................................... [no-gen-acls, no-auth]
      o- acls .................................................................... [ACLs: 0]
      o- luns .................................................................... [LUNs: 0]
      o- portals .............................................................. [Portals: 1]
        o- 0.0.0.0:3260 ............................................................... [OK]

この target で公開するディスク (lun0) を作成し、最初に作成したディスクイメージ(/backstores/fileio/disk1)を割り当てます。

/iscsi> cd iqn.2003-01.org.linux-iscsi.testserver.x8664:sn.b527a14e621a/tpg1/luns
/iscsi/iqn.20...21a/tpg1/luns> create storage_object=/backstores/fileio/disk1 
Created LUN 0.
/iscsi/iqn.20...21a/tpg1/luns> ls
o- luns .......................................................................... [LUNs: 1]
  o- lun0 ....................... [fileio/disk1 (/var/storage/disk1.img) (default_tg_pt_gp)]

最後に、この taget にはデスクトップPC からしかアクセスできないようにします。ここではデスクトップPCのID(Windows の iSCSI イニシエーターに設定するもの)を iqn.2020-04.example.com:desktop-pc とします。tpg1/acls 内でイニシエーター名を指定し、create コマンドを実行します。さらに、ユーザーIDとパスワードを設定し、事実上誰からもアクセスできる状態にならないようにします。

/iscsi/iqn.20...21a/tpg1/luns> cd ../acls
/iscsi/iqn.20...21a/tpg1/acls> create iqn.2020-04.example.com:desktop-pc
Created Node ACL for iqn.2020-04.example.com:desktop-pc
Created mapped LUN 0.
/iscsi/iqn.20...21a/tpg1/acls> cd iqn.2020-04.example.com:desktop-pc/
/iscsi/iqn.20...om:desktop-pc> set auth userid=testuser
Parameter userid is now 'testuser'.
/iscsi/iqn.20...om:desktop-pc> set auth password=testpassword1234
Parameter password is now 'testpassword1234'.
/iscsi/iqn.20...om:desktop-pc> ls
o- iqn.2020-04.example.com:desktop-pc ..................................... [Mapped LUNs: 1]
  o- mapped_lun0 .................................................. [lun0 fileio/disk1 (rw)]

この段階で mapped_lun0 が作成され、iqn.2020-04.example.com:desktop-pc に mapped_lun0 が作成されます。Leap 15.1 で試したときは、この mapped_lun0 が自動的に作成されず、Windows の iSCSI イニシエーターから接続してもディスクが何も表示されない状態になってしまいました。このような場合は、次のコマンドで mapped_lun を作成することができます。

create mapped_lun=0 tpg_lun_or_backstore=lun0

これまでの設定は以下の通りです。この状態で Windows の iSCSI イニシエーターでファイルサーバーに接続すると、ディスクの管理で iqn.2003-01.org.linux-iscsi.testserver.x8664:sn.b527a14e621a の lun0 (/backstores/fileio/disk1, /var/storage/disk1.img) がディスクとして見えるようになります。あとは Hyper-V でこのディスクを割り当てれば仮想マシンのディスクとして使用することができます。

/> ls /
o- / ................................................................................. [...]
  o- backstores ...................................................................... [...]
  | o- block .......................................................... [Storage Objects: 0]
  | o- fileio ......................................................... [Storage Objects: 1]
  | | o- disk1 ..................... [/var/storage/disk1.img (10.0GiB) write-back activated]
  | |   o- alua ........................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ............................... [ALUA state: Active/optimized]
  | o- pscsi .......................................................... [Storage Objects: 0]
  | o- ramdisk ........................................................ [Storage Objects: 0]
  | o- rbd ............................................................ [Storage Objects: 0]
  o- iscsi .................................................................... [Targets: 1]
  | o- iqn.2003-01.org.linux-iscsi.testserver.x8664:sn.b527a14e621a .............. [TPGs: 1]
  |   o- tpg1 ....................................................... [no-gen-acls, no-auth]
  |     o- acls .................................................................. [ACLs: 1]
  |     | o- iqn.2020-04.example.com:desktop-pc ........................... [Mapped LUNs: 1]
  |     |   o- mapped_lun0 ........................................ [lun0 fileio/disk1 (rw)]
  |     o- luns .................................................................. [LUNs: 1]
  |     | o- lun0 ............... [fileio/disk1 (/var/storage/disk1.img) (default_tg_pt_gp)]
  |     o- portals ............................................................ [Portals: 1]
  |       o- 0.0.0.0:3260 ............................................................. [OK]
  o- loopback ................................................................. [Targets: 0]
  o- vhost .................................................................... [Targets: 0]
  o- xen-pvscsi ............................................................... [Targets: 0]