QPhotorec und das Danach

Ja, jetzt ist es passiert. Ich habe aus Versehen ein paar Bilder gelöscht. Zum Glück hatte ich von früher bereits QPhotoRec auf dem Rechner, so daß ich gleich loslegen konnte.

Die Konstellation

Auf einer reinen Datenplatte waren PNG Bilder, die aber keine PNGs sondern JPEGs waren (danke Tello Devs, Ihr seid echte CodeMonkeys wie Sie im Buche Tannenbaum stehen 🙁 ). Die sollten zwecks verscripteter Umbenennung ( falls das mal wer braucht: for i in *.png;do mv $i ${i%png}jpg; done ) und Voransicht auf eine SSD verschoben werden und dann, nach der anschliessenden Bearbeitung, wieder auf die Datenplatte zurück. So der Plan.

Jetzt was wirklich passierte. Die Bilder wurden auf die SSD verschoben, aber nicht aus Listenansicht des Verzeichnisses, sondern aus der Nemo eigenen Suchergebnisliste (von PNGs). Beim Verschieben ist das Programm ganz clever und findet dann die gesuchten Bilder lustigerweise gleich wieder, weswegen ich dachte, ich hätte COPY statt MOVE benutzt. Da das in Nemo nur eine SHIFT-Taste weit auseinander liegt, sahs ich einem Irrtum auf .. und weg waren die Bilder auf der Zielpartition und der Quelle. Kann passieren.

Da es eine Datenpartition war, bestand keine Gefahr das die gelöschten Bilder überschrieben werden, also kam QPhotoRec zum Einsatz. 3,8 Milliarden Blöcke später lagen 181.685 PNG und 3.106 JPG Bilder auf der Zischenlagerplatte ( nie auf die zu rettende Partition zurücksichern! Wichtig !)  verteilt auf 370+ Ordner! und natürlich 99,9% Schrott. Für Euch noch wichtig, QPhotoRec kann man auf bestimmte Dateientypen einschränken, sonst wäre da noch sehr viel mehr gekommen 😉

Wie man den Datenwust jetzt optimal ignoriert

180k Dateien.. von Hand durchsehen? Wohl kaum. Daher zwei Wege das zu Beschleunigen:

1. „file“ auf eine Datei gleichen Typs anwenden:

1539788463675.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1×1, segment length 16, Exif Standard: [TIFF image data, little-endian, direntries=4, manufacturer=RYZE, model=RZ001, software=v01.04.35.01], baseline, precision 8, 2592×1936, frames 3

Da die Bilder der Drohne in meinem Fall alle die gleiche Auflösung haben, kann man jetzt einfach so suchen:

file recup_dir.?/* | grep 2592×1936
file recup_dir.??/* | grep 2592×1936
file recup_dir.1??/* | grep 2592×1936
file recup_dir.2??/* | grep 2592×1936
file recup_dir.3??/* | grep 2592×1936

Wenn in einem Verzeichnis ein Bild der Drohnenauflösung zu finden ist, würde es angezeigt werden.

2. „find recup_dir.* -size +200k -exec gnome-open {} \;“

Der Befehl sucht nach Dateien > 200kb und zeigt die mit gnome-open an. Ok, ist nur ein Befehl mit einigen Annahmen, aber jeder Menge Treffer, die man selbst durchsehen muß. Es schränkt aber das zu durchsuchende Material auf ein paar Treffer ein. Kommt natürlich darauf an, was QPhotoRec so alles gefunden hat.

Ich habe meine Bilder wieder und Ihr ein paar Ideen, wie man nach dem Recovery effizient an die Sache rangeht. Kleine Anmerkung: Nemo hat einen Papierkorb, wäre nicht passiert, wenn man den benutzt hätte 🙂

QMMP mit gnadenlos dummen Fehler

Mein Lieblingsaudioplayer…oh nein.. schon wieder.. 🙂 das ist wirklich Zufall 😀 Also mein Lieblingsplayer QMMP hat einen kleinen Logikbug: Wer wartet in einer Endlosschleife auf sich selbst 🙂

Gute CMD Befehle

QMMP bietet eine Menge von Optionen zur Steuerung von laufenden QMMP Instanzen an:

Optionen:
--------
-e, --enqueue Wiedergabeliste nicht löschen
-p, --play Aktuelles Lied abspielen
-u, --pause Aktuelles Lied pausieren
-t, --play-pause Wiedergabe pausieren oder fortsetzen
-s, --stop Aktuelles Lied stoppen
-j, --jump-to-file „Springe zu Titel“-Dialog anzeigen
-q, --quit Anwendung beenden
--volume <0..100> Lautstärke der Wiedergabe einstellen (Beispiel: qmmp --volume 20)
--toggle-mute Lautstärke stumm schalten/zurückstellen
--next Nächsten Titel in Wiedergabeliste abspielen
--previous Vorherigen Titel in Wiedergabeliste abspielen
--toggle-visibility Anwendung ein-/ausblenden
--show-mw Hauptfenster anzeigen
--add-file „Datei hinzufügen“-Dialog anzeigen
--add-dir „Verzeichnis hinzufügen“-Dialog anzeigen
--volume-inc Lautstärke Fünfer-Schritt erhöhen
--volume-dec Lautstärke in Fünfer-Schritt verringern
--pl-help Befehle zum Steuern der Wiedergabeliste anzeigen
--seek <time> Zu Position im derzeitigen Titel spulen
--seek-fwd <time> Vorwärts spulen
--seek-bwd <time> Rückwärts spulen
--status Wiedergabestatus ausgeben
--nowplaying <fmt> Namen des Titels formatiert ausgeben (Beispiel: qmmp --nowplaying "%t - %a")
--nowplaying-syntax Syntax von --nowplaying ausgeben
--no-start Die Anwendung nicht starten
--help Zeigt diesen Hilfetext an
--version Gibt die Versionsnummer aus

Einer davon ist „-q“, womit QMMP beendet werden sollte. Tut es auch, aber nur, wenn es auch läuft. Wenn es nicht läuft, dann wartet das gestartete QMMP und wartet bis zum Sanktnimmerleinstag auf einen anderen QMMP Prozess. Der kommt natürlich nicht. Also beendet sich das nichts tuende QMMP nicht mehr.

Bugreport ist erstellt worden 😀

#!/bin/bash 

RC=`ps auxf | grep -v grep | grep -c qmmp`
if [ $RC -gt 0]; then
       qmmp -q
fi

Kleines Script um das Problem zu vermeiden.

Wie man in Java die lokale IP ermittelt

Da das Ermitteln der lokalen IPs über alle Interface angeblich Voodoo ist, hier mal eine Lösung ohne Voodoo 🙂

import java.net.InetAddress;
import java.net.NetworkInterface;

                try {
 			Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
 			while (networkInterfaces.hasMoreElements()) {
 		    	     NetworkInterface networkInterface = (NetworkInterface)networkInterfaces.nextElement();
 		    	     Enumeration ips = networkInterface.getInetAddresses();
 		    	     while ( ips.hasMoreElements() ) {
 		    		// InetAddress ipa = (InetAddress)ips.nextElement();
 		    		String ip = ((InetAddress)ips.nextElement()).toString();
 		    		ip = ip.replaceAll("/", "").replaceAll("%.*$","");
 		    		... HIER mit der IP was machen ... 
 		    	      }
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
		}

Eine kleine Anmerkung dazu. Das ist ja der Cast auf InetAddress, es werden an der Stelle aber IPv4 und IPv6 Objekte zurück gegeben, die sich eben ohne Cast-Fehlermeldung nur als InetAddress verarbeiten lassen. Wenn Ihr wissen wollt, was es ist, ohne eine RegEx über das Ergebnis zu legen, lest einfach die Klasse des Objekts aus:

InetAddress ipa = (InetAddress)ips.nextElement();
log( ipa.getClass().getName() );
String ip = ipa.toString().replaceAll("/", "").replaceAll("%.*$","");

Anstatt getName() kann man auch getSimpleName() oder getType() benutzen, ganz wie es Euch gefällt.

Alternative:

		Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
		while (networkInterfaces.hasMoreElements()) {
		   	NetworkInterface networkInterface = (NetworkInterface)networkInterfaces.nextElement();
		   	
		   	for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) {
		   	    String ip = address.getAddress().toString();
	   		    int netmask = address.getNetworkPrefixLength();
	   		    log( netmask + ip );
		   	    ip = ip.replaceAll("/", "").replaceAll("%.*$","");
	   		}
		}

Da bekommt man auch gleich die Netzwerkmaske mit, ist wohl der bessere Weg 🙂

Neues von LAHA

Kleines Update zum kleinen heimischen Audioverteilprojekt. Wie ich hier: Multi-Netzwerk-Lautsprecher mit Linux bereits nach einige Stunden zeigen konnte, klappt das mit dem latenzgleichen Abspielen von Audio im Netz bereits mit Linux Bordmitteln.

Endlich mal wieder was los…

In einer abendlichen Dauerprogrammiersession habe ich in wenigen Stunden eine Client-Server Testsuite gebaut, die bereits funktional ist. Wenn ich von Client rede meine ich die Abspieleinrichtung, die aber als Serverkomponente ausgelegt ist. Bitte merken um Verwirrungen vorzubeugen.

Die Kommunikationsarchitektur kommt auch mit einer rudimentären Anti-kaper-Funktion daher, so daß WLAN Gäste den Clienten nicht übernehmen können. Das beugt z.b. dem Problem vor, daß in einem Netz vielleicht mehr als eine Control-Anwendung läuft. Vielleicht wollen ja die Kinder was anderes hören als die Eltern 😉

Die Kontrolleinheit

Was jetzt noch neben einigen Funktionen fehlt, ist das Kontroll-Center. Das Kontroll-Center sollte ein ansprechendes Äußeres haben, aber ob das mit Swing was wird .. fraglich 😉 Ich lasse mich mal überraschen. Das war ein implizites Ja, wie in Java 😉 Kein rumpliges Python, kein PHP, NodeJs oder Ruby.. Java. Wieso?
A) machts was es soll und B) bekommt Ihr raus, wenn der Source released wird 😀

PS: Wofür LAHA steht, wird später verraten 😉

Der OnePunch-Man

Ihr braucht eine neue Serie mit skurillen Humor, der das Superheldengenre verarscht?

Versucht es mal mit der bei NetFlix erhältlichen Anime-Serie OnePunch-Man . Das basiert auf einem WebComic aus dem Jahr 2009 und wurde 2015 in eine Animeserie überführt. Die Deutsche Syncro ist im allgemeinen gut gelungen. Der Sprecher des ungewollten Meisters „Saitama“ Fabian Oscar Wien bringt alle das super gut rüber, was die Rolle ausmacht. Klasse Job!

Freut Euch auf skurille Wendungen, knallharte Gags und 0 Kinderlevelgebrabbel 🙂 Eins darf man aber nicht erwarten, eine Dauerparade von Witz und Slapstick, denn…. die Serie hat eine fortlaufende Handlung 😉

Multi-Netzwerk-Lautsprecher mit Linux

Wer den kleinen Rant über die selbstverschuldete Unselbstständigkeit der Heise-Redakteure gelesen hat, und aufmerksam am Ball geblieben ist, dem seit hiermit mitgeteilt, daß ich die geäußerte Drohung wahr gemacht habe 🙂

War jetzt nicht so richtig schwer

Ich habe ein Latenzgleiches Playback von QMMP an 3 Abnehmer realisiert – mit Bordmitteln!

PulseAudio-LautstärkenkontrolleDa ich natürlich nur begrenzt Rechner habe, habe ich als Abnehmer auch die Lokalen Audioschnittstellen benutzt (oben im Bild)  um die Latenzgleichheit zu testen.

Ein Laptop im WLAN diente als Kontrolle und es klappt bislang 1a 🙂

Ich werde jetzt wohl eine Steuersoftware bauen, die die nötigen Befehle kennt und Einstellungen bereitstellt, aber das ist kein Hexenwerk mehr, sondern reine Fleißarbeit.

PulseAudio und WLAN-Technik aus der POST-Avengers Ära machen es möglich.

Android ist schneller

Eine Probe mit Android als Abnehmer war auch erfolgreich, aber nicht synchron. Liegt vermutlich an dem kleineren Buffer der App im Vergleich zum PC-Programm. Da ich den Sourcecode habe… 😀 Ich muß da eh ran, also kein Aufwand.

@Heise: Told you so! OpenSource rulz.

Schaut mal in einige Wochen rein, obs was nettes zu Weihnachten für Euch gibt 😀

Falls einer eine praktikable Idee hat, wie man ein Fabrikneues Raspi in ein WLAN ohne Tastatur und Monitor bekommt ( WPS-Taste z.b. ) dann findet Ihr im Haupt-Impressum eine Kontaktemailadresse.

Kleine Anmerkung

Für Videos abspielen braucht man einen Player wie MPV mit dem man die -2900ms Audio/Videoversatz ausgleichen kann.

Lollypop – Musikplayer für GNOME

Keine Panik, auch wenn wir wieder einen Beitrag aus der Serie „Musikplayer, die die Welt nicht brauchen“ haben, das wird nicht meine Hauptinspiration für Beiträge sein 😉 Es hat sich halt grade so ergeben.

Lollypop – ein GNOME Musikplayer

Lollypop Window in Schwarz

Irgendwas ist komisch bei GNOME. Pogo und Lollypop kommen beide ohne Lautstärkeregelung daher. Falls es Ziel der Übung war, in der Desktopleiste die Lautstärke zu regeln, muß ich Euch GNOME-Entwicklern leider sagen: Nicht immer will man die Gesamtlautstärke aller Anwendungen gleichzeitig regeln.

Meistens nur die, des Musikplayers alleine 🙂

OK, kommen wir zum Test. Dieser Player hat deutlich mehr Features zu bieten, als Pogo. ich konnte den Equalizer zwar nicht entdecken, aber dafür ist die Auswahl des Musikstücks schön gelöst.

Das Programm durchsucht beim Start erst mal alles was es in „Musik“ so findet. Die daraus resultieren Listen sind brauchbar aufgebaut. Bei längeren Listen gibt es eine A-Z Direkklickleiste, die dann sichtbar wird, wenn man sie braucht. Das in sich sinnvoll gelöst.

Die Standartfunktionen Vor- und Zurückspulen, Pause,Play und Position im Musikstück sind vorhanden. Es gibt eine Ansicht, der in MP3s eingebetteten Bilder zum Album:Albumbild des Künstlers

Man kann sich die Albumfotos auch aussuchen, sofern eine ImageURL angegeben ist. Einfach mal aufs Bild klicken und das rechte Symbol nehmen, seht Ihr dann schon.

Eigene Playlists zu erstellen ist auch einfach. Die vier Jahre Entwicklungszeit merkt man an einigen Stellen schon positiv 😉

„Aufklärung ist der Ausgang des Menschen aus seiner selbst verschuldeten Unmündigkeit. (Kant)“

Und auch wenn die Heise-Redakteure derzeit der Meinung wären, das es ja nur noch Spotifyuser gäbe und selbst GBweise MP3s & Co auf der Platte zu lagern „oldschool“ wäre, muß ich denen leider sagen: Ihr seid so am Arsch, wenn Spotify Euren Account dicht macht oder die Telko Eure Daten nicht mehr transportieren kann oder will, aber so was von. Geht Ihr dann eigentlich zu Youtube oder wie sieht Eurer Plan aus ?

Ihr gebt Eure Interessen bei Google ab, liefert Eure Daten Microsoft oder Apple aus, ladet Eure Videos bei YouTube hoch und hört nur noch, was Spotify Euch vorgibt. So sieht Abhängigkeit und Unselbstständigkeit in Perfektion aus. Zu allem Überfluss bezahlt Ihr auch noch dafür abhängig zu sein. Dümmer geht es eigentlich nicht mehr.

Dabei kann alles so einfach sein, auch mit Netzwerklautsprechern, was sogar mit Linux-BORDMITTELN geht! Wen kümmern schon die 16 KB/s pro Lautsprecher im Lan? Rasphi an die Wand, Lautsprecher dran, Kodi als Mediencenter und Yatsi als Handyapp und schon hat man das zusammengesteckt. Latenzen von einem Raum zu anderen sind lediglich ein Problem im Großraumbüro. Wenn man eine Wohnung hat, ist die eh so verwinkelt, daß man nicht hört, was in der Küche grade spielt. Und selbst das könnte man über eine Latenzverzögerung einfach lösen.

Aber wer sich in Abhängigkeit von Anderen begibt, ist halt selbst Schuld! @Heise: Während ich Euch neulich zugehört habe, hatte ich mir eine MindMap mit einer selbstgebauten Lösung zusammengestellt. Da man lediglich das PulseAudio Modul auf dem PC mit dem Mediencenter erweitern muß, sollte das in Tagen zu machen sein, wenn man den Willen dazu hat. Vermutlich wird man erstmal den Code des Vorentwicklers verfluchen, aber naja, das wird schon 😀

Haben oder nicht haben

Lokale MP3s, Oggs oder ACC zu haben, erlaubt es einem, z.b. Fehlmischungen der Studios zu beheben, Störgeräusche zu filtern und seltene Aufnahmen, die Spotify & Co. nie sehen werden, zu hören. Ich sehe da keine Alternative zu, um ehrlich zu sein. Die Abmischungen der Radio Edits sind meistens so mies auf Lautstärke getrimmt, statt auf Klang, das einem die Ohren bluten. Da lobe ich mir die Studioalben (LP/CD etc), denn die sind i.d.R. ordentlich abgemischt² und steigern das Wohlbefinden noch, statt den Gang zum Hörgeräteakustiker unausweichlich zu machen.

Am Ende bleibt einem eh nur Kant und die Frage, ob man sich selbst am Schopf aus den selbstgewählten Abhängigkeiten zieht, oder halt im Sumpf untergeht.

² okok, ich habe da auch schon anderes erlebt, z.b. „Andrew W.K. – Ready to Die“ das Album von 2000 war so schlecht, daß ich zum ersten mal eine CD an einen Verkäufer zurück geschickt habe, mit Verdacht auf Raubpressung wohlgemerkt, weil die Quali so schlecht war. Ich habe dann lernen müssen, daß die Quali wirklich so grottig war. Irgendein Depp von Studiotechniker hatte damals den Satz „Das Upsampeln wir von 32kbps einfach“ fallen lassen und naja, wer sich das antut hat danach was an den Ohren. Der Aufnahme konnten auch die Compressions im Codec nichts mehr antun 🙂 Das Album in 320kbps neu eingespielt .. wow.. das wärs. Das Album an sich wäre ein Meilenstein, wenn es nicht qualitativ so schlecht wäre 😉

Pogo – Fast alles was man braucht

Aus unserer Serie „Musikplayer – Ihre Clone und Konkurrenten“ heute „Pogo“.

Pogo – fast alles drin..

.. was Puristen so nicht haben wollen könnten. Puristen deswegen, weil, naja , nicht mal eine Lautstärkeregelung dabei ist :

In der Theorie könnte man die Lautstärke über den Equalizer regeln, aber dazu ist der wirklich nicht da 🙂 Aber, hey, es ist ein Equalizer dabei 🙂

Das Programm tut, was es soll: Es spielt Musik ab.

Es ist dabei intuitiv zu bedienen, was fast ohne Bedienkontrollen nicht weiter schwer ist 😉  Da es außer Play/Pause, Trackskip, dem Dateiwähler und dem Fortschrittsbutton leider so gar keine Funktionen zu erklären gibt, wird das ein recht kurzer Beitrag 😉

Einzig zu erwähnen beleibt nur noch, daß das Einstellungsfenster die HauptGUI blockt, weil das nicht als eigener Thread, sondern als Unterfenster aka Unteroutine realisiert wurde ( Anfängerfehler 😉 ) . Mal sehen was Version 2.0 bringt, ich behalts mal im Auge 😉

 

Eilmeldung: Führungswechsel beim L-P-D

Wie mir aus sicherer Quelle mitgeteilt wurde, gab es beim Koordinierungsstab des am morgigen Samstag weltweit stattfindenden Linux-Presentation-Day einen kurzfristigen Führungswechsel.

Der bisherige Koordinator Hauke von den Berliner Linuxusern leidet derzeit an einer ausgeprägten Kontaktschwäche, aka. ist nicht erreichbar. Darauf hin gab es eine Notfallkoordination der L-P-D Ausrichter. Als Antwort auf die Krise entstand diese neue Webseite: https://l-p-d.org

Die „Presse“mitteilung des neuen „Administrator“ hier für Euch :

Warum L-P-D.org?

Nachdem sich die Organisation des LPD immer schleppender über Monate hinzog, und sich vermehrt Fragen über die Zukunft des Linux-Presentation-Day aufhäuften, entschloss sich eine kleine Gruppe auf der LPD-DE Mailingliste zu einem Neustart des LPD. Einfach um weitere Absprünge von (potentiellen) Veranstaltern und Mitstreitern zu verhindern.

Ziel ist dabei die LPD-Organisation auf eine breitere Basis zu stellen um in Zukunft ausfallsicherer zu sein und einfach ORGA-Leute auswechseln zu können. Auch die bisherige Webseite war in der Vergangenheit öfter Thema zu nie umgesetzten Verbesserungsvorschlägen und ist – in die Jahre gekommen – auch recht unübersichtlich.

Diese Webseite soll als zentrales Rückrad für den LPD und die LPD-Orga agieren und möglichst alle relevanten Verwaltungsdaten (soweit DSGVO-Konform) vorhalten um schnell an eine andere Administration übergeben zu können.

Wie sich das weiter entwickelt, wird uns die Zukunft zeigen… — Administrator 2018-11-07 15:41

 

Und trotzdem ist morgen Linux-Presentation-Day in Braunschweig !

Die Welt dreht sich also doch weiter \o/

Hier nochmal unsere Eckdaten vom L-P-D in Braunschweig:

Am 10.11.2018 von 13:00 bis 18 Uhr im Nachbarschaftszentrum „Haus der Talente“ Elbestraße 45, Braunschweig-Weststadt.

Für Nahrung und Getränke ist gesorgt, Leute und Themen gibt es zu hauf und Linux im Überfluß 😀

Lösung: Lightning auf deutsch

Wie gestern Nacht in diesem Artikel berichtet : Die so eigene Welt von Mozilla gibt es derzeit Probleme mit Lightning: Es ist nur noch englisch 🙁

Problem ist längst behoben

Seit dem 30.9. gibt die neue Thunderbird 60.3.0 bereits, aber sie wurde erst am 31.10. für Fedora kompiliert:

thunderbird-60.3.0-1.fc27xhorak2018-10-31 01:15:24

Den Link oben könnt Ihr benutzen und  Eure Version aussuchen, oder einfach hier ( thunderbird-60.3.0-1.fc27.x86_64.rpm download) für 64Bit direkt downloaden. Natürlich gibt es auch andere Versionen für FC28,29,30 hier: Packageoverview Fedora .

Nach dem Update auf 60.3.0 ist Lightning wieder deutsch. Warum ? Weil es im Thunderbirdpaket direkt mit dabei ist 🙂

Sehr ärgerlich die Sache, weil es ja bereits einen fertigen Fix gibt 🙁 Aber wenigstens ist das bei Fedora besser organisiert als bei Mozilla. Merkt Euch einfach: KOJI ist immer Eurer Freund 😉