2024-05-06

blast from the past: llgal
Veel gebruikt in 2007

llgal -R --sy 1024

levert nog steeds een bruikbare index van foto's

2024-04-08

Automatisch gegenereerde ondertiteling downloadem van Youtube met yt-dlp --write-auto-subs --skip-download https://www.youtube.com/watch?v=TAbi_2mbetc

Superhandig om te kunnen zoeken in long format shows.

2024-03-20

fpdf kan ook pdf/A die signatures ondersteunt.

Hier code van een subclass:
http://www.fpdf.org/en/script/script103.php

Bijgeleverd voorbeeld werkt, maak eigen font met http://www.fpdf.org/makefont/

In mijn geval gebruik ik DejaVuSans en ook de bold versie. Code snippet:

$pdf->AddFont('DejaVuSans', '', 'DejaVuSans.php'); $pdf->AddFont('DejaVuSans', 'B', 'DejaVuSans-Bold.php');

$pdf->SetFont('DejaVuSans','B',16);

2023-08-20

Een nieuw (sib) domein toevoegen met letsencrypt kan zo:

certbot --expand -d vit-tech.nl,www.vit-tech.nl

waarbij vit-tech.nl al bestond

2023-08-15

let's encrypt met de certbot zodat ook www.example.com het doet, ipv alleen example.com:

sudo ./certbot-auto certonly --standalone -d example.com -d www.example.com

2023-07-19

Sym link loops -bedoeld of onbedoeld - detecteren gaat prima met de -L optie van find:

find -L .
stderr: find: File system loop detected

2023-07-17

Ik wist van de OR optie in find, ( -o ) werkt prima. Behalve als er een -exec achteraan komt. Dan zijn haakjes () om de or-statements nodig. Voorbeeld:

werkt prima:
find . -maxdepth 1 -name 'p' -o -name 's'

werkt alleen op s:
find . -maxdepth 1 -name 'p
' -o -name 's*' -exec ls {} \;

werkt voor p en s :
find . -maxdepth 1 \( -name 'p' -o -name 's' \) -exec ls {} \;

2023-07-15

van twitter mag niet meer anoniem downloaden. Met yt-dlp gaat het met je eigen profiel zo:

./yt-dlp -u @username https://twitter.com/Publisher/status/345098

2023-04-20

Deze had ik niet paraat.
File met tab EN spaties inlezen met read levert variabelen die gevuld zijn met stukjes uit de regel gesplitst door tab OF spatie.

Als je wil dat ie alleen op tab splitst dan moet dat zo:

while IFS=$'\t' read a b c d e f g h i j k l; do echo $a,$b,$c,$d,$e,$f,$g,$h,$i,$j,$k,$l; done < tst

2023-04-13

Nog niet eerder nodig gehad maar wat komt deze optie ( cp -L ) vandaag goed van pas. Er was een map met submappen en 31340 links naar bestanden. Zorgvuldig samengesteld in een aantal jaar.

Die structuur moest blijven bestaan maar de server werd geen linux maar windows, helaas.

Oplossing: cp -r -L mapMetLinks/* mapMetFiles/

2023-03-10

Eigenijk nooit aandacht aan besteed, maar

        wait_timeout 
        interactive_timeout

settings hebben effect op timeouts van sleep connecties in MySql. Merk je niks van totdat de standaard waarde van max_connections (151) opeens wordt bereikt.

2023-02-28

In Xfce 4.10, to enable manual position of the apps tabs: Settings > Panel > Item > Window Buttons > Edit the currently selected item (5th icon down) > Sorting Order > None, Allow Drag and Drop.

2023-02-22

Ping check if remote host is still alive

ping -c5 -q 101.132.0.10

        if [ $? -eq 1 ]
        then
                echo host seems dead. exiting.
                exit
        fi

        echo ok going ahead

2023-02-07

Wat de Letsencrypt certbot niet voor je doet: toegang verschaffen tot letsencrypt/http_challenges en .well-known/acme-challenge

2023-02-03

Een bash script waarvan een commando blijft hangen, zonder timeout. Als je het commando afbreekt gaat het script door, en dat wil je soms niet.

Een optie is dan om het script af te breken. Het hangende commando blijft dan actief maar komt onder parent ID 1. Die kan je dan vervolgens analyseren en afbreken.

(als root) zoek PID van je script:
ps -eo pid,lstart,cmd | grep bash

PPID en PID van het hangende commando daarin: ps -eo ppid,pid,lstart,cmd | grep hangendCommando

PPID van de laatste moet overeen komen met PID van de eerste.

Voorbeeld (tstParentCh.sh is niet meer dan `sleep 3700`):

        ps -eo pid,lstart,cmd | grep bash
x        355041 Sun Feb  5 10:52:01 2023 /bin/bash /home/user/tstParentCh.sh
         355154 Sun Feb  5 10:53:11 2023 grep bash
        1061964 Tue Dec  6 18:01:39 2022 bash
        1263474 Wed Dec  7 07:43:59 2022 bash
        2612209 Sat Nov 26 14:38:58 2022 bash

        ps -eo ppid,pid,lstart,cmd | grep sleep
x        355041  355042 Sun Feb  5 10:52:01 2023 sleep 3700
        2612330  355290 Sun Feb  5 10:54:33 2023 grep sleep

kill het script:
kill 355041

hangt nu op ppid 1:

        ps -eo ppid,pid,lstart,cmd | grep sleep
x             1  355042 Sun Feb  5 10:52:01 2023 sleep 3700
        2612330  355387 Sun Feb  5 10:55:30 2023 grep sleep

en nu: kill 355042

2023-01-16

extract een enkele tabel uit file gemaakt met mysqldump: sed -n -e '/DROP TABLE.*`tabelNaam`/,/UNLOCK TABLES/p' mysqlDumpFile.sql > enkeleTabel.sql

2023-01-15

Soms gaat youtube-dl mis op twitter met ERROR: unable to open for writing: [Errno 36] File name too long omdat de hele tweet gebruikt wordt... Alternatief:

youtube-dl -o - $twitterURL | ffmpeg -i - -r 15 tw.mp4

2023-01-11

in MySql is dit efficient genoeg (1M rijen) met index:

SQL: first gap/missing in continuous range:

SELECT id + 1
FROM mytable m0
WHERE NOT EXISTS

        (
        SELECT  NULL
        FROM    mytable m1 
        WHERE   m1.id = m0.id + 1
        )
ORDER BY
        id

LIMIT 1

evt. eerste where uitbreiden met beperkende reeks (and id>xxx and id<yyy)

2023-01-06

deze blog met txt2html en scp naar mijn webserver, omdat het kan. Resultaat van txt2html zonder opties is best aardig.

2023-01-05

motion met geluid:

        on_event_start "arecord -f cd -c 1  -t wav --use-strftime /home/paul2/motion/IN/%v-%Y%m%d%H%M%S.wav"
        on_event_end "killall arecord"

dan muxen met ffmpeg:

        for f in IN/*mkv
        do
                echo $f;
                fbase=`basename -s .mkv $f`;
                thewav=IN/$fbase.wav;
                echo $thewav;
                ffmpeg -i $f -i $thewav -c:v copy -c:a aac OUT/$fbase.mp4
        done;

2022-12-31

de windows guest vpn laten gebruiken:
omdat ik die windows10 in qemu eigenlijk alleen nodig heb in combinatie met de VPN van de klant moet dat ook werken als die vpn (openconnect) ook daarmee samenwerkt. De default NAT werkt dan niet.
Gelukkig wordt er een standaard bridge aangemaakt met virsh net-start default: virbr0 die UP wordt als de guest actief is. Gebruik dan dit als bridge device in de NIC optie van virt-manager.

Aanpassing aan de iptables: forward was -i alleen de eth dev en postrouting -o

2022-12-30

met

strings /sys/firmware/acpi/tables/MSDM

kan je blijkbaar de windows licentiecode in de bios zien. (Reminder dat iedere bios uniek identificeerbaar is!)

Dit gebruikt om met qemu windows 10 te installeren. Helass nog nodig voor IFS import/conversie. Van b.v. https://www.microsoft.com/nl-nl/software-download/windows10ISO te downloaden.

virsch etc herontdekt, eenvoudiger en sneller dan de kale qemu-system-x86_64 . Config met virt-manager bovendien inactieve netwerk interface gedetecteerd. In virt-manager stond de NAT interfact op inactief. Ook

virsh net-list --all
liet dat zien.
Met

virsh net-start default
aangezet.

( virsh net-autostart default zou het na reboot automatisch kunnen doen, nu ongewenst want ik gebruikt qemu-win10 zelden. ).