Der Partyfinanzausgleich

Eine Feier und jede(r) bringt etwas mit. Später sollen die Kosten geteilt werden und schon geht die Rechnerei los: Betrag x von a an b, Betrag y von b an c, Betrag z von c nach a. Allerdings sind a zwei Personen, haben für ebenso viele Personen gegessen und es wäre sinnlos, zweimal Geld zu überweisen.

Klar, kann man das einfach und klassisch mit Bleistift und Papier machen, aber warum nicht einfach den großen Taschenrechner arbeiten lassen? Also kurz ein Javascript zusammengetippt, das die Aufgabe übernimmt:

var teilnehmer = [
    {"name" : "Mila/Adam", "ausgaben" : 30, "esser" : 2},
    {"name" : "Emilia/Noah", "ausgaben" : 20, "esser" : 2},
    {"name" : "Leni/Felix", "ausgaben" : 35, "esser" : 2},
    {"name" : "Mira/Leon/Sophia", "ausgaben" : 10, "esser" : 3},
    {"name" : "Emil", "ausgaben" : 5, "esser" : 1 },
]

var transfer = [];
teilnehmer = teilnehmer.sort((a, b) => a.ausgaben - b.ausgaben);
var ausgaben = teilnehmer.reduce((prev, curr) => prev += curr.ausgaben, 0);
var ausgabenpp = ausgaben / teilnehmer.reduce((prev, curr) => prev += curr.esser, 0);

console.log("Ausgaben Insgesamt:", ausgaben, "Euro, pro Esser:", ausgabenpp)
teilnehmer.forEach(p => p.ausgaben -= ausgabenpp * p.esser)
teilnehmer.forEach(p1 => {
    if(p1.ausgaben < 0)
    {
        var p2 = teilnehmer.find(a => a.ausgaben > 0);
        if(p2 != undefined)
        {
            transfer.push(Math.round(-p1.ausgaben * 100) / 100 + " Euro von " + p1.name + " an " + p2.name);
            p2.ausgaben += p1.ausgaben;
            p1.ausgaben = 0;
        }
    }
});

console.log("Überweisungen:", transfer);
console.log("Betrag nicht ausgeglichen für:", teilnehmer.filter(p => p.ausgaben != 0));

Oben kommen die Teilnehmer, Ausgaben und die „esser“ rein, es purzeln die Beträge, die Transaktionen und was übrig geblieben ist (was bis bis auf Rundungsfehler leer bleiben sollte) heraus:

Ausgaben Insgesamt: 100 Euro, pro Esser: 10
Überweisungen: [
  '5 Euro von Emil an Mila/Adam',
  '20 Euro von Mira/Leon/Sophia an Mila/Adam',
  '15 Euro von Mila/Adam an Leni/Felix'
]
Betrag nicht ausgeglichen für: []

Kann man sicher eleganter lösen, aber: ?‍♂️

Gefällt mir nicht.

Hey YouTube, wer ist eure Zielgruppe?

Dass es die Benutzer eurer Plattform nicht sind, wurde schon öfter gezeigt bzw. bewiesen. Um wen es geht? Werbetreibende, also Geld.

Ein für User praktisches Hilfsmittel um vor dem Ansehen eines Videos (oder zumindest innerhalb der ersten paar Sekunden) zu erkennen, ob es inhaltlich taugt, kontrovers oder ziemlicher Mist ist war die Anzeige der Likes/Dislikes sowie dem Ratio.

Weil YouTube/Google/Alphabet natürlich die Positivität ihrer Plattform verbessern will (im Sinne von höhere positive finanzielle Zahlen) wurde der öffentliche Dislike-Counter entfernt. Für die jeweiligen Creator bleibt der Zähler allerdings sichtbar. Aber auch Benutzer müssen nicht unbedingt blind sein: Erweiterungen wie Return YouTube Dislike haben sich Schattenkopien der Statistiken per API geholt und führen nun selbst Buch.

Inwieweit das noch repräsentativ ist kann ich leider nicht einschätzen, wie brauchbar die Zahlen in Zukunft sein werden wird die Zeit zeigen, ich hoffe zwar, denke aber ehrlicherweise nicht, dass der offizielle Counter wieder zurück kommt.

Wenn es YouTube tatsächlich um Positivität gehen würde, wäre es sinnvoll, wenn statt einem „destruktiven Daumen“ konstruktive Kritik (abseits der Kommentare) geben würde. Sprich: Drückt man den Daumen nach unten, muss man es begründen (sei es multiple choice oder Texteingabe). Auf die Weise könnte man tatsächlich etwas verändern und einem „einfach nur weil dagegen“ würde zumindest eine kleine Hürde in den Weg gelegt.

Der Aufhänger für diesen Post?

Als sehr seltener „Creator“ bin ich gestern wieder durch den Uploadprozess gegangen und bin über folgende Option gestolpert:

Da muss wohl noch eine Übersetzung angepasst werden.

Zweiundvierzig

Jeder kennt sie, viele hassen sie – „Sicherheitsfragen“. Eine solche sollte ich heute beim Besuch des Kundencenters der Telekom einrichten.

Die Frage selbst kann man in aller Regel nicht frei wählen, die Antworten dieser Fragen lassen sich oft durch Social Engineering erarbeiten.

Aber die Telekom hat auch eine Frage im Katalog, deren Antwort eigentlich schon vor-ausgefüllt sein könnte:

Sicherheitsfrage „Wie lautet die Antwort auf die Frage aller Fragen?“

Ich frage mich tatsächlich und ehrlich, wie oft hier „Zweiundvierzig“ eingegeben wird (und ob die Eingabe zulässig ist). Liest hier jemand von der Telekom mit, der zugriff hat und mal eine Statistik rauslassen könnte?

Allgemein ist Passwortsicherheit ein Thema für sich. Viele IT-Abteilungen erfordern fordern z. B. einen sehr engen Wechselzyklus und Anforderungen wie Groß- & Kleinschreibung, Zahlen, Sonderzeichen, ein kyrillisches Zeichen, zwei Hiragana-Zeichen, eine persische Zahl und ein Emoji. Grund: weil es sicherer ist.

Ich bin eher der Meinung, dass es ziemlich großer Unsinn ist. Passwortüberprüfungen erfolgen nicht nach dem Prinzip des Spiels Mastermind. Es gibt entweder ein true oder ein false und nicht, ob und wie viele Zeichen richtig sind. Zudem lässt ein häufiger Passwortwechsel die Leute unkreativ werden. Dann gibt es Stammpasswörter mit einer Variablen wie das Datum des Passwortwechsels oder es steigt ganz einfach die Gefahr, dass das Passwort irgendwo notiert wird. An der Stelle möchte ich nicht wissen, von wie vielen das Passwort nicht nur unter der Tastatur klebt, sondern gleich Cherry oder Logitech verwendet wurde.

Auch habe ich schon viel zu oft gehört und gelesen, dass man als Passwort die ersten Buchstaben eines Satzes verwenden und noch eine Leetspeak-Zahl und ein Sonderzeichen reinnehmen soll. Beispiel: Das ist das Haus vom Nikolaus: DidHvN, mit Zahl dann D1dHvN. Mit dem erstbesten gefundenen Passwort-Crack-Estimater liegt das erste Passwort bei 6 Sekunden, das zweite bei 20 Sekunden. Würde man den kompletten Satz als Passwort nehmen, läge man bei 7,2*10^38 Jahren. Wie gesagt, unter der Annahme, dass die Passwortprüfung nur ein true/false zurückgibt. Ein kompletter Satz ist beim „Shouldersurfing“ vermutlich nicht ganz so gut, da man es in diesem Fall etwas einfacher als scheinbar zufällige Tastendrücke rekonstruieren kann – aber: das ist zusätzliche Information. Da der Aufwand bei Bruteforce-Attacken mit der Länge des Passworts exponentiell steigt, ist es von Nachteil, kurze, komplexe Passwörter zu verwenden.

Aber solche Angriffe sind mittlerweile eh langweilig – spätestens nach dem 10. Fehlversuch dürfte/sollte jedes Formular für eine Weile dicht machen. Kritischer ist heute nicht mehr das Passwort selbst, sondern die Person, die es eingibt.

Ein Passwort für alle Dienste, ungesichert gespeicherte Passwörter im Browser und ganz vorneweg: Zeug anklicken. Das Konto muss verifiziert werden? Klick. Unaufgeforderte Passwortwiederherstellung? Klick. Irgendwas gewonnen und man muss sich mit den Credentials der Seite einloggen, auf der die Werbung stand? Die Liste der Möglichkeiten ist lang.

Meine Strategie: Lallo-Passwörter liegen im (gesicherten) Passwortmanager, die wichtigeren (bei denen etwas bei einem Leak kaputt gehen könnte) existieren nur im Kopf. Dazu noch 2FA wo es möglich und sinnvoll ist. Zudem genau schauen, wo man denn nun sein Passwort eingibt.

Hier schlägt auch der Vorteil eines Passwortmanagers, der im Browser integriert ist, zu: Der schlägt den einzugebenden Login erst einmal nur auf den legitimen Domains vor, was schon sehr hilfreich sein kann.

Bei der Sicherheitsfrage von der Telekom habe ich übrigens einen zufällig generierten Text eingetragen, auch wenn DIE ANTWORT aller Fragen verlockend gewesen wäre. Wobei der Kenner weiß: Es ist nicht die Antwort, es ist die Frage.

Warum man den Bose Flugzeugadapter verwenden sollte…

…auch wenn im Flugzeug eine Stereo-Klinke vorhanden ist.

Gemeint ist dieses Kerlchen hier:

Neben dem mechanischen Umsetzung beinhaltet der Adapter Spannungsteiler, die eine Dämpfung einfügen. Dadurch werden bei PAs (Durchsagen), deren Lautstärke man in aller Regel nicht unter einen bestimmten Wert einstellen kann, hoffentlich nicht mehr die Trommelfelle rausgeblasen.

Beim QC35 ist der Adapter noch dabei, warum Bose ihn beim Nachfolger QC35 II zu einem höheren Preis (der Google Assist-Taster rechtfertigt diesen IMHO nicht) weggelassen hat, erschließt sich mir nicht.

MediaWiki 1.28.1

Die Media-Wiki-Installation hier ist jetzt nach langer Zeit wieder aktuell.

Einiges gefällt mir ganz gut, an anderen Dingen muss noch gearbeitet werden. Übergangsweise habe ich den von Wikipedia bekannten Multimedia-Viewer installiert, da es momentan keine Erweiterung mit Highslide Js gibt, die mir halbwegs gefällt (oder zumindest gut funktionsfähig ist).

Das wichtigste jedoch: Sollte irgendetwas auffallen, das nicht funktioniert oder komisch aussieht, bitte hier in den Kommentaren oder per Mail melden. (Vielen Dank schon einmal!). Allgemein gilt: Wenn jemand Fehler (technisch, inhaltlich oder anderweitig) findet, ich freue mich über jeden Hinweis!

Sichere Verbindung

Ich hab mir schon länger überlegt, ein Zertifikat zuzulegen. Aber egal ob extern zugekauft oder selbst-signiert, es hätte monatlich auffallend gekostet, u. a. weil mein Hoster eine eigene IP zuweist. Schlussendlich hielt ich es dann doch für weniger notwendig, verschlüsselte Verbindungen anzubieten, da hier – vielleicht etwas naiv gesprochen – eher weniger schützenswerte Informationen gibt.

Nun hat Hetzner eine Partnerschaft mit einem bekannten Antiviren-Software-Hersteller abgeschlossen und bietet zumindest für ein Jahr kostenlose Verschlüsselung für jeden an. Nach der Antwort meiner Rückfrage nach versteckten Kosten habe ich gleich das Zertifikat beantragt. Zwar kam beim ersten Versuch eine Fehlermeldung, aber

Finde ich richtig klasse und hoffe, dass das Angebot in der Form beibehalten wird!

Jetzt müssen nur noch ein paar Links zwischen Blog und Wiki angepasst werden, damit man in der jeweiligen Variante bleibt.

Der erste Tag zählt nicht

Endlich Urlaub!

Bei der Anreise lief alles glatt, mehr noch – vor dem Abflug in MUC gab es für alle an Bord Lebkuchenherzen als Geschenk weil es der erste Flug des A350 nach Doha war.

Das ist aber nicht mein Thema. In einem fremden Land angekommen geht es zumindest mir oft so, dass ich denke „ach du Schande, was machst du hier, hier willste so-und-so lange bleiben?“. Kein Kulturschock im eigentlichen Sinne, sondern eher ein riesig fettes WTF im Kopf.

Dass es sich nicht im direkten Sinne um einen Kulturschock handelt würde ich damit begründen, dass es mir auch schon beim Zweitbesuch eines Landes so gegangen ist. Zudem ist der ganze Spuk nach spätestens zwei Tagen wieder vorbei.

Vielmehr denke ich, dass man durch die oft anstrengende Anreise aufgekratzt ist.

Nach dem Flug bekommt man dann noch (sofern man nicht im Niemandland angekommen ist) das, was man gar nicht so richtig verarbeiten kann: für uns unbegreifliches (aber manchmal oft nur scheinbares) Chaos, Hektik, Hitze und einfach viel zu viele Eindrücke. Pufferüberlauf.

Das musst erst einmal verdaut werden, also keine Sorgen und sich einfach denken: der erste Tag zählt nicht!

Ein sehr wichtiger Punkt, der das „aufschlagen“ in einem Land beeinflusst ist meiner Meinung der Schlaf: aus unterschiedlichsten Gründen bin ich am Tag vor dem Flug bis jetzt meistens deutlich später ins Bett als sonst. So komisch es klingt, die Erfahrungen damit waren bis jetzt gut. Die Wahrscheinlichkeit, dass man schnell(er) einschlafen kann ist höher. Zugegebenermaßen: Schlafen im Flieger ist für viele schwierig, für manche sogar unmöglich. Zum einen, weil man sich fernab von einer angenehmen Liegeposition befindet, zum anderen wegen des Lärms. Schließlich wäre da noch der Faktor Nebensitzer. Man kann Glück haben, manchmal hätte man dann doch gerne eine Trennwand in der Reihe. Ist der Flug ausgebucht, kann man bei freundlicher Nachfrage den Platz wechseln. Ob es auf dem anderen Platz dann besser ist – die Chancen stehen relativ genau bei 50 %. Die Punkte kann man mit der Business-Class verbessern (in manchen Fliegern geht der Sitz nahezu komplett flach, es gibt in aller Regel Noise-Cancelling-Kopfhörer), die Frage ist nur, ob man sich das Vergnügen leisten kann und/oder will. Für den Rand: Wer im Großraumbüro arbeitet und sich dort auch von der Geräuschkulisse gestört fühlt, ist mit ANC-Kopfhörern in beiden Umgebungen gut beraten.

Ein weiterer Punkt zum Thema schlafen: am Zielort gleich in der neuen Zeitzone leben! Entweder die Ankunft so geschickt legen, dass man zum Abendessen ankommt und danach eh ins Bett fällt oder Zähne zusammenbeißen. Gegend erkunden, Wasser kaufen (viel trinken! Die Luft in Flugzeugen ist trocken und man trinkt durch die kleinen Becher und den seltenen Streifzügen der Crew eh zu wenig). Auch wenn es bedeuten mag, gefühlt mitten in der Nacht deftig zu essen – den Tritt muss man seinem Körper geben. Bei der ersten Fernreise habe ich den Fehler gemacht (angekommen um 8 Uhr morgens im Hotel) das Bett für ein paar Stunden zu hüten. Die Rechnung: Platt für 5 Tage. Ein ehemaliger Kollege kam durch ungeschicktes Schlafen auch nach zwei Wochen nicht in den richtigen Rhythmus. War blöd für ihn und für die Arbeit war es natürlich auch nicht zuträglich.

Noch ein weiterer Hinweis: reist man in Heißländer und fühlt sich nach der Überwindung der Zeitumstellung platt: ab und zu gesalzene Erdnüsse o. ä. futtern. Durch die Hitze schwitzt man viele Mineralien aus, zugleich ist die Küche oft sehr salzarm (in Thailand kommt z. B. der ganze Salzgeschmack aus Fischsauce). Wenn man das nicht kennt, kann es zu einem eigentlich einfach vermeidbaren Problem werden.

Python lernen

Python ist des Raspis (in)offizielle Scriptsprache.

Auf dem Weg zur Modellbahn-Lichtsteuerung, deren „Großhirn“ auf dem Raspberry Pi laufen soll, führt also kaum ein Weg vorbei.

Für die ersten Schritte habe ich auch auf dem Pi gearbeitet, aber irgendwie kann ich mich mit dem Terminal noch nicht so richtig anfreunden. Nachdem bis jetzt alles auch auf dem PC läuft, geht es auf der großen Kiste weiter. Bis jetzt habe ich SciTE verwendet (eine schon etwas betagte Version, irgendwie kann ich mich nicht davon trennen…). Da in der Installation keine vernünftige Code Completion integriert ist war der Browser mit Stackoverflow nie weit entfernt. Auf der Suche nach einer etwas besseren Entwicklungsumgebung bin ich auf Python Tools for Visual Studio gestoßen. Installiert, gestartet und läuft. Man muss noch nicht einmal print(„Hello World“) eingeben. So muss eine Entwicklungsumgebung sein! 😉