[Linux] tar-archive: So schließen Sie Dateien und Verzeichnisse aus

Wie immer im Leben, wenn man etwas herausgefunden hat, sei es durch ausprobieren, stackoverflow oder ChatGPT, egal wie man zu dem Wissen gekommen ist, es kostet Zeit, meistens Nerven, man muss sich irgendwo registrieren, es ist alles in Englisch… ein Krampf. Aus diesem Grund, schreibe ich immer wieder einen Blog-Eintrag, wenn ich etwas neues ausprobiert habe, gescheitert bin, es anders lösen habe können oder einfach nur die Reihenfolge der Argumente falsch angegeben habe…

So in diesem Fall, bin ich über tar gestolpert, –exclude war mein Nemesis, ich habe versucht, mehrere Dateiendungen auf einmal auszuschließen, jedesmal hat er mir trotzdem die Dateien hineingepackt, annoying!

tar -czvf usr_backup.bz2 /usr –exclude=*.zip,*.sql

ganz falsch

tar -czvf usr_backup.bz2 /usr –exclude={*.zip,*.sql}

fast richtig, leider auch falsch, warum? Weil das Verzeichnis ganz zum Schluss kommt

Richtig ist:

tar -czvf usr_backup.bz2 --exclude={*.zip,*.sql} /usr

Überall wird der Befehl mit tar -czvf usr_backup.bz2 --exclude={'*.zip','*.sql'} /usr angegeben, aber man sieht, es geht auch ohne! Vermutlich, wenn man ein Space im Dateinamen hätte, sollte man den Dateinamen unter ‚ ‚ stellen, so wie in Windows mit “ „.

Also wie immer „100 Jahre Garantie“, nee war ein Scherz, wie immer, alle Angaben ohne Gewähr, Anwendung auf eigene Gefahr und Verantwortung, ich übernehme keinerlei Haftung für Ausfälle, Datenverlust oder andere finanzielle Schäden.

Externe und auch Interne Links werden nicht überprüft und ich übernehme keine Haftung für deren Inhalt.

Happy coding!

[WDM & AS-IDE] Android Debug über WLAN

Ich schreibe wieder einmal über das, was ich gerade herausgefunden habe:

Wie kann man über Android über WLAN debuggen? Also mit WinDev for Mobile oder Android Studio mit Java oder Kotlin?

Ich zeige euch anhand meines Google Pixel 8 wie ich das angestellt habe:

Wofür ist das USB Debugging (WLAN aka WiFi Debugging)?

Das USB Debugging (WLAN Debugging) wird in der Software Entwicklung verwendet um in der laufenden Android APP Entwicklung Programme auf Android ohne Installation laufen lassen zu können und im Quellcode Schritt für Schritt (Step by Step) die Ergebnisse der Ausführung ansehen zu können.

Auch sind manche Backups darauf angewiesen, das das USB Debugging eingeschaltet ist.

Normalerweise ist das USB Debugging kein Problem, aber wenn Sie das Handy z.B. am Flughafen per Kabel aufladen, kann der USB Debug Modus ein Sicherheitsproblem darstellen, daher wird empfohlen, den USB Debug (WLAN Debug) Modus abzuschalten, wenn man ausser Haus geht!

Anleitung: den Entwicklermodus aktivieren

zuerst müssen wir den Entwicklermodus aktivieren, einmal die Einstellungen öffnen und ganz nach unten und auf „über das Telefon“ drücken:

Dann drücken wir 5x auf „Build-Nummer“

Es wird Ihnen angezeigt, wie oft Sie noch Build-Nummer drücken müssen um ein Entwickler zu werden:

Nun geben wir das Passwort ein (Sorry für die Bildqualität, die PIN Eingabe lässt keinen Screenshot zu, daher habe ich ein Foto gemacht und nachbearbeitet, daher ist das Bild so schlecht!)

Dann sind wir Entwickler:

Ähnlich funktioniert es auf Samsung und Co. dieser Link https://www.hardreset.info/de/devices/samsung/samsung-galaxy-s23-fe/entwickler-optionen/ hilft weiter.

Anleitung: das USB Debugging aktivieren und WLAN Debugging einrichten!

Gehen wir zurück und drücken „System“

Dann drücken wir auf „{} Entwickleroptionen“

Dann gehen wir etwas weiter runter und aktivieren USB-Debugging:

Bestätigen Sie, dass Sie Debugging zulassen möchten:

Anleitung: WLAN Debugging aktivieren

Dann aktivieren wir darunter Debugging über WLAN

Dann lassen wir zu, dass das Handy über das WLAN erreichbar ist

Nun noch die Verbindung mit dem WLAN zulassen:

Dann drücken wir links daneben auf Debugging über WLAN direkt (nicht auf die Checkbox !!)

Dann wählen wir Gerät über einen Kopplungscode koppeln

Dann erscheint folgender Dialog:

Mit diesen Zugangsdaten können wir das Telefon verbinden, öffnen wir dazu ein CMD  Fenster (WIN + R dann cmd eingeben und CTRL + SHIFT und <enter> bzw. im Menü suchen und als Administrator ausführen) oder eine Powershell (als Administrator ausführen!) und tippen:

Also der Befehl lautet adb pair 10.0.0.15:35941 und <Enter> (die IP 10.0.0.15 und der Port 35941 sind von meinem Handy, bitte selbst schauen auf das Handy die IP-Adresse und Port sind auf Ihrem Handy!!)

Falls die adb.exe nicht gefunden wird unter WinDev for Mobile ist adb.exe unter C:\WINDEV Mobile 28\Personal\Android\AndroidSDK\platform-tools zu finden und unter Android Studio unter C:\Program Files (x86)\Android\android-sdk\platform-tools! Am Besten gleich in den Path aufnehmen! Anleitung unter https://www.thewindowsclub.com/adb-is-not-recognized-in-windows-11

Danach den Code eingeben: 894684 (Code vom eigenen Handy verwenden!!) wie am Android Handy nun steht, das Fenster schließt automatisch.

Nun haben wir den Debugging über WLAN vor uns da steht die IP + Port für die ADB Verbindung:

Dann verbinden wir uns mit ADB damit:

Dann geben wir adb connect 10.0.0.15:34135 ein und drücken <Enter> Die Daten stehen am Handy unter Gerätename (siehe ein Bild darüber!!)

So wir sind verbunden, wir können das Handy nun in Android Studio und WinDev for Mobile über WLAN finden!

Also wie immer „100 Jahre Garantie“, nee war ein Scherz, wie immer, alle Angaben ohne Gewähr, Anwendung auf eigene Gefahr und Verantwortung, ich übernehme keinerlei Haftung für Ausfälle, Datenverlust oder andere finanzielle Schäden.

Externe und auch Interne Links werden nicht überprüft und ich übernehme keine Haftung für deren Inhalt.

Happy coding!

[PHP8+] Mit einer Funktion eine GUID erzeugen

In PHP suche ich immer wieder die Funktion create_guid, jetzt veröffentliche ich mal eine universelle create_guid Funktion die ich bestens getestet habe:

use Ramsey\Uuid\Uuid;

function create_guid() {
    if (function_exists('com_create_guid')) {
       //Only on Windows 7+ OS
       //Credits to "Thoughtful Tapir" on Grepper
       return trim(com_create_guid(), '{}');
    } elseif (class_exists('Ramsey\Uuid\Uuid')) {
        //Linux/Windows/MacOS: composer require ramsey/uuid
        //Credits on ChatGPT 3.5 (2022)
        //ramsey/uuid is a library from Ben Ramsey MIT license
        $uuid4 = Uuid::uuid4();
        $guid = strtolower($uuid4->toString());
        return $guid;
    } else {
        //OS is not Windows and ramsey/uuid is not installed
        //Try alternate (working) solution
        //Credits to "Pleasant Platypus" on Grepper/php.net as comment
        $guid = '';
        $namespace = rand(11111, 99999);
        $uid = uniqid('', true);
        $data = $namespace;
        $data .= $_SERVER['REQUEST_TIME'];
        $data .= $_SERVER['HTTP_USER_AGENT'];
        $data .= $_SERVER['REMOTE_ADDR'];
        $data .= $_SERVER['REMOTE_PORT'];
        $hash = strtolower(hash('ripemd128', $uid . $guid . md5($data)));
        $guid = $hash;
        return $guid;
    }
}

Diese Funktion gibt einen 32 Byte String GUID zurück, alles in Kleinbuchstaben. Dieser Code ist Größtenteils entweder aus php.net entnommen oder ChatGPT hat mir einige Tipps gegeben, die ich sorgfältig getestet habe.

PS: irgendwann werde ich auch bei ChatGPT einen Code erwischen, den ich geschrieben habe, aber so ist das Leben.
PS2: Ich war schon immer der Meinung Open-Source ist gut, nur leben muss man davon können…

Wer die 36 Bytes Version lieber möchte und Großbuchstaben, dann:

statt:
return trim(com_create_guid(), '{}');
ersetzen mit:
return strtoupper(trim(com_create_guid(), '{}'));

statt:
$guid = strtolower($uuid4->toString());
ersetzen mit:
$guid = strtoupper($uuid4->toString('-'));

statt:
$hash = strtolower(hash('ripemd128', $uid . $guid . md5($data)));
ersetzen mit:
$hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));

statt:
        $guid = $hash;
ersetzen mit:
        $guid = substr($hash,  0,  8) . '-' .
                substr($hash,  8,  4) . '-' .
                substr($hash, 12,  4) . '-' .
                substr($hash, 16,  4) . '-' .
                substr($hash, 20, 12);

Getestet unter Ubuntu 22.04 und Windows 10/11

Wie immer, alle Angaben ohne Gewähr, Anwendung auf eigene Gefahr und Verantwortung, ich übernehme keinerlei Haftung für Ausfälle, Datenverlust oder andere finanzielle Schäden.

Ich nehme gerne Ratschläge und Hinweise entgegen, hier als Kommentar oder per Email an office[add]predl.cc!

Jegliche Programmierhilfe (Whatsapp, AnyDesk Fernwartung, Email usw.) nur gegen Einwurf kleiner Münzen, ich hoffe jeder versteht das?

Happy coding!