Homelab, Linux, JS & ABAP (~˘▾˘)~

[Terminal] Simple man page

If you are using the man command, e.g.:

man find

You will often get a very long manual.
But there is a much easier to read man page called tldr, with examples how to use the command.

apt install tldr
tldr find

[Terminal] Terminal cat grep

Most users are using cat and grep for searching for a string in a file:

cat filename | grep search_string

But you can use grep completely without cat:

grep search_string filename

[Terminal] !!

You can repeat the last used command by typing “!!”. For example if you typed:

apt upgrade

as non root user, you will get the following message:

error: you cannot perform this operation unless you are root.

But you don’t have to type the whole command again with sudo in front of it, just type:

sudo !!

And it’s doing a:

sudo apt upgrade

[ABAP] Clean Code

ABAP Clean Code

DRY – Don’t repeat yourself

KISS – Keep it simple, stupid

YAGNI – You ain’t gonna need it

PEBKAC – Problem Exist Between Keyboard And Chair

SoC – Separation of concerns

Issues generally come in three forms:

  1. syntax errors that prevent a program from running
  2. runtime errors when code fails to execute or has unexpected behavior
  3. semantic (or logical) errors when code doesn’t do what it’s meant to

[Mint] Citrix Receiver on multiple monitors

Citrix Receiver download.
Here is the offical how to guide.

The following command can be used to test for window manager support.
If there is no output, there is no support.

xprop -root | grep _NET_WM_FULLSCREEN_MONITORS

Further troubleshooting infos here.

In my case, I just had to launch the configuration manager and set it to “Full Screen”.


If needed, the resolutions settings can be found here:



[ABAP] Read Infotype

DATA: ls_p0001           TYPE p0001,
      lt_p0001           TYPE TABLE OF p0001,  
      lr_infotype_reader TYPE REF TO if_hrpa_read_infotype, 
      lt_infotype        TYPE hrpad_prelp_tab, 
      ls_infotype        TYPE prelp, 
      lv_missing_auth    TYPE boole_d 
      lv_data_exists     TYPE boole_d. 

* Infotyp reader initialisieren
   CALL METHOD cl_hrpa_read_infotype=>get_instance
       infotype_reader = lr_infotype_reader.

 * Infotyp 1 lesen
   CLEAR lt_infotype.
   CALL METHOD lr_infotype_reader->read
       tclas         = 'A'
       pernr         = lv_pernr
       infty         =  '0001' 
       begda         = iv_begda
       endda         = iv_endda
       no_auth_check = abap_true
       infotype_tab  = lt_infotype
       data_exists   = lv_data_exists
       missing_auth  = lv_missing_auth.

   LOOP AT lt_infotype INTO ls_infotype.
     CALL METHOD cl_hr_pnnnn_type_cast=>prelp_to_pnnnn
         prelp = ls_infotype
         pnnnn = ls_p0001.
        APPEND ls_p0001 TO lt_p0001.

[Proxmox] Mount dataset into LXC

Open LXC config file in your favorite editor. In this case the container name is 101:

nano /etc/pve/lxc/101.conf

Append a single line for each mountpoint you want to add. The first mountpoint is “mp0”, the second “mp1” and so on.

mp0: /data/music,mp=/mnt/nfs/music

First the source (my zpool “data”, folowing the dataset name “music”), after that the destination inside the container beginning “mp=”.