Die letzten Posts waren recht lang, also back to basics. Ladies and Gentlemen: Dire Straits (und Sting, das war mir neu!) mit “Money for Nothing”
Kleinanzeigen.de: Mein Problem mit “sicher bezahlen”
Ich würde mich als fortgeschrittenen (Ebay-) Kleinanzeigen.de-User beschreiben: Ich bin da seit knapp 15 Jahren aktiv und habe in dieser Zeit bisher 641 Anzeigen geschaltet – bei “TOP” (🙄) Bewertungen. Ich hatte dabei hin und wieder kleinere Probleme und ein größeres, was sich vermutlich durch die “sicher bezahlen”-Funktion hätte vermeiden lassen. Trotzdem lehne ich die ab, und weil das hin und wieder Verwunderung in Chats mit Kaufinteressenten gibt, schreibe ich meine Gründe hier mal auf.
1. Es ist viel langsamer für den Verkäufer. Eine Überweisung ist schon nicht das Schnellste, aber “sicher bezahlen” dauert meiner Erfahrung nach mindestens Versandzeit + Banklaufzeit (ggf. mit Wochenende) + Puffer für träge Käufer, die den Erhalt bestätigen müssen.
2. Es löst kein Problem. Es verschiebt sie nur auf den Verkäufer (siehe auch 1.). Es soll das Problem lösen, dass der Käufer bezahlt, aber der Verkäufer nie verschickt – und der Kleinanzeigen-Support das von außen natürlich nicht nachvollziehen könnte. Aber es schafft dafür das Problem, dass der Käufer den korrekten und unbeschädigten Erhalt bestätigen muss. Was er absolut nicht immer tut, ich spreche aus Erfahrung!
3. Kleinanzeigen bewirbt die Funktion damit, dass sie Vertrauen schaffen würde, weil: “Ist ja sicher”, heißt ja schon so!!1 Will ich gar nicht abstreiten, dass das bei manchem Käufer so ist, schließlich bekomme ich immer wieder “sicher bezahlen”-Kaufangebote für Anzeigen, in denen ich das explizit ausschließe. Aber es ist auch viel teurer, denn a) muss der Käufer eine Gebühr bezahlen und b) muss ich versichert verschicken. Das mindert die Attraktivität meiner Anzeigen bei anderen potentiellen Käufern, was unterm Strich wieder kein Problem löst.
4. Es ist konzeptionell so völlig unausgereift, dass es für fortgeschrittene Verkäufer einfach ein Ärgernis ist. Warum kann ich “direkt kaufen” deaktivieren, aber “sicher bezahlen” nicht (und was ist überhaupt der Unterschied)? Das wäre für 3. wichtig. Warum kann ich mich für die Funktion zwar an-, aber nie wieder abmelden? Fühlt sich nach “Abo-Falle” an, Stichwort Vertrauen schaffen. Und: Wenn ich eine Paketmarke direkt über Kleinanzeigen kaufe (PS: Woran die sicherlich Geld verdienen), dann kann ich die Trackingnummer nicht nachträglich ändern – was wichtig ist, wenn ich bspw. am Schalter erfahre, dass mein Paket zu schwer ist. Eine Nachfrankierung bedeutet aber eine neue Trackingnummer und ab diesem Punkt kann ich Kleinanzeigen gegenüber nicht mehr belegen, dass mein Paket beim Kunden angekommen ist. Dann habe ich weder Geld, noch Ware, was genau ist jetzt sicherer?
Dieser Fall ist hier tatsächlich schon eingetreten, nur mit Beharrlichkeit konnte ich den Käufer dazu bringen, den Empfang dann mal zu bestätigen (immerhin geht das, obwohl Kleinanzeigen denkt, dass ich noch nicht verschickt hätte!). Damit steht es 1:1 zwischen Fällen, in denen mir die vermutlich Funktion geholfen hätte und Fällen in denen sie mich behindert hat.
Immerhin scheinen sie selber ihrem System nicht zu trauen; warum sonst bräuchte man noch die “Besonders zuverlässig”-Bewertungen 😉
5. Der Support ist unzuverlässig. Er antwortet nach ein bis zwei Wochen, und dann auch gerne nur mit zusammenhanglosen Textbausteinen mit Werbephrasen zu wie “sicher bezahlen” funktioniert (aka: funktionieren soll). So hat man nichts gewonnen, denn wenn alles gut läuft, dann brauche ich den Support nicht, aber wenn halt nicht, dann muss der da sein, sonst ist da nichts “sicher” – deshalb auch der Konjunktiv in Punkt 4., ich bin absolut nicht sicher, ob mir bei meinem Problem konstruktiv geholfen worden wäre!
Fazit: Die Funktion heißt bewusst “sicher bezahlen” statt “sicher handeln” – und das einzige Problem, das hier gelöst wird, ist das der Nachvollziehbarkeit seitens des Supports. Wenn nicht Punkt 4 dazwischen kommt und abgesehen davon, dass der Support dann trotzdem nicht supported.
PS, ich werde den Artikel sicherlich noch ein paar mal erweitern; das hier ist nur, was mir heute früh auf die Schnelle eingefallen ist ✌️
PWA: Lock orientation on iPad
Angenommen, meine fancy Webseite ist für Landscape/Desktop oder */Mobile ausgelegt. Was ist dann ein Tablet? Da ist zu viel Platz, um eine abgespeckte mobile Webseite auszuspielen, andererseits gibt es da eine Portrait-Ansicht, für die mein Desktop-Layout nicht gemacht ist.
Also: Erzwungene Landscape-Ansicht, das geht ja mit nativen Apps auch.
Problem: Die App ist der Browser, nicht die Webseite darin. Ich kann aber aus der Webseite heraus nicht auf den Browser zugreifen, das wäre ein Security- und Privacy-Alptraum. Ich kann also nur die Webseitenausrichtung sperren, nicht die des Browsers. Dafür gibt es mehrere Ansätze:
- PWAs können das über ihr Manifest. Wird von Safari nicht unterstützt iPad fiele also aus.
- Über JS kann man das ebenfalls sperren – Wird von Safari ebenso nicht unterstützt.
- Es gäbe noch so hacky Ansätze, per JS auf die entsprechenden Events zu hören und die dann zu canceln. Die meisten diesbezüglichen Events (bspw. orientationchange) sind aber deprecated und man landet schnell wieder bei der vorherigen Api, die leider immer noch nicht von Safari unterstützt wird 😠
- Also CSS. Das hier scheint mir aktuell der am Ehesten gangbare Weg zu sein:
1 2 3 4 5 6 7 8 9 10 |
@media screen and (orientation: portrait){ html { -webkit-transform: translateY(-100%) rotate(90deg); transform: translateY(-100%) rotate(90deg); -webkit-transform-origin: left bottom; transform-origin: left bottom; width: 100vh; height: 100vw; } } |
Wichtig dabei sind die width und height, damit die Skalierungen korrekt funktionieren. Trotzdem bleiben Einschränkungen: Da man ja immer noch nicht den Browser dreht, sind bspw. Browser-GUI und Keyboard nicht gedreht, außerdem kommt die Standard-Dreh-Animation, wenn man zwischen Fake-Landscape und richtigem Landscape wechselt.
Wenn einen das total nervt, bliebe nur alles aus- und stattdessen einen Hinweis einzublenden, dass man das iPad selber drehen soll.
New Year, New Gear
Ich muss kurz ausholen: Ich hatte mal eine Konzertgitarre (wobei: tatsächlich habe ich sie immer noch) und wollte auf E-Gitarre umsteigen. Leider kamen da einige Dinge zsuammen und letztlich habe ich gar nicht mehr gespielt. So, nun sind 30 Jahre um, die Midlife Crisis kickt, und ich habe mir bei Kleinanzeigen eine neue gekauft – Danke, Thorsten, für’s vorbeibringen!
Eine “Limited Edition Paranormal Offset Telecaster SJ” von Squier ist es geworden. Auf die Marke bin ich tatsächlich ebenfalls über eine Anzeige auf Kleinanzeigen aufmerksam geworden – eigentlich eine Art “Billig”-Tochter von Fender, die aber offenbar ein wenig als (und das ist ein Zitat von Youtube) “Screw it, we do whatever the hell we want” gelebt wird. Die “Paranormal”-Reihe ist der Grund für diese Einschätzung, denn hier werden mehrere Modelle zusammengeworfen, was bei Fender selbst so eher nicht möglich wäre. In meinem Fall: Eine Telecaster und eine Jazzmaster (aka “Jazzcaster” oder “Telemaster”):
Dieses Video hat mich angefixt, alle anderen Gitarren waren danach abgemeldet 😎:
Und “andere Gitarren” waren primär eine “Hagstrom Ultra Max“, weil ich die Probe spielen konnte und gut zurecht kam. Aber der Sound! So sehr ich immer Les Paul-Fan war, soundtechnisch bin ich kein Humbucker-Typ. Danach dann höchstens noch andere Paranormal Telecasters.
Wie auch immer: Amp. Einen Vox VT20X habe ich mir geholt. Meine Anforderung waren ein cleaner Sound (gerne Richtung Röhre) und Kopfhörerausgang. In der Wahl war einige Zeit eine HB15-GXD JamBox von Harley Benton (die Hausmarke von Thomann und wohl immer ganz gut?) oder auch ein Tube5 (ebenfalls von Harley Benton), der aber keinen Kopfhöreranschluss hat. Der Blackstar IDCore V4 scheint auch ganz gut, kam dann aber zu spät ins Rennen und sieht auch viel zu uncool aus 😎
Diese Videos haben mich amptechnisch angefixt, auch wenn das Fazit des zweiten durchaus negativ war:
Hier ist auch einer richtig verliebt 🙂 Und auch, wenn ich eigentlich nicht so auf App-Anbindung stehe, sieht das schon echt witzig aus. In einem Röhren-Amp, wohlgemerkt! Wobei: Ein Effektloop fehlt mir jetzt schon 🥺
🎸
Kurzes Update nach anderthalb Monaten: FX fehlt tatsächlich, die Lautstärkeregelung des Kopfhörerausgangs ist merkwürding unterschiedlich für verschiedene Ampmodelle, und die Bedienung des Vox ist etwas unintuitiv, weshalb ich mit dem Fender GTX liebäugel:
Oder halt doch der Blackstar, aber so richtig springt der Funke noch nicht über:
Zumal: Mein Vox (ok: in der 40W Variante) hat sich hier sehr wacker von Runde 1 bis zum Sieg geschlagen:
Synology: Berechtigungen für Freigegebenen Ordner können nicht geändert werden
Hallo und guten Tag!
Kürzlich habe ich einen neuen “Freigegebenen Ordner” auf meinem NAS angelegt und mit den Permissions und insbesondere mit der Verschlüsselung rumgespielt. Einige Tage wollte ich da ran und durfte nicht – offenbar hatte ich mich selber ausgesperrt 🙄 Leider war der Tab für die Berechtigungen ausgegraut, siehe unten, gewünscht war oben:
Also Account auf admin gewechselt (was etwas Arbeit war, da ich das Konto “admin” aus Sicherheitsgründen deaktiviert hatte; mein eigentlicher Benutzer hat auch Adminrechte), aber dasselbe: Kein Zugriff, Tab grau. Und nun?
Stellt sich raus: Wenn man verschlüsselt, und das System neu startet (bspw. weil das NAS nachts runterfährt), dann muss man den Ordner erst wieder neu “anhängen” aka mounten. Rechtsklick, Verschlüsselung, Anhängen (und Schlüssel bereithalten, klar):
NZXT
Ich muss hier mal ein Lob aussprechen.
Letztens bekam mein Spiele-PC ein Update: etwas mehr RAM, sowie ein neues Netzteil. Für Zweiteres musste ich natürlich das alte Netzteil ausbauen, und dafür musste ich dessen Kabel überall lösen. Auch auf dem Mainboard, wo das so ein breiter und dementsprechend fest sitzender Stecker ist. Beim Abziehen habe ich (offenbar?) dem daneben sitzenden Stecker des USB-Panels meines Gehäuses einen mitgegeben, der ist jetzt an der einen Seite angebrochen und sitzt entsprechend nicht mehr fest.
Das Gehäuse ist ein H510 (ohne Suffix) von NZXT, und es gibt ganz konkret eine Anleitung, wie man da das Panel tauscht. Sieht okayish aus. Nur, wo bekommt man so ein Panel?
Stellt sich raus: Wenn man den Support kontaktiert und noch die Rechnung des Gehäuses vorzeigen kann, dann schicken die einem ein neues. Einfach so. Und das ist jetzt kein High-End-Gehäuse oder so, und auch nicht mehr in der Garantie. Ich habe da vor über 4 Jahren 65€ für bezahlt. Das Ganze ging außerdem schnell; von meiner ersten Anfrage bis zum Eintreffen des Ersatzes bei mir zu Hause nicht mal eine Woche – trotz Feiertag dazwischen.
Von daher: Kauft NZXT 🙂 Das war’s. Das ist der Post.
Gradle: Schleife über JavaExec
Einen JavaExec-Task dynamisch loopen lassen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
def myLib = "${buildDir}/dependencies/MyLib.jar" // ... tasks.register('myTask') {} someItems.each { anItem -> tasks.myTask.dependsOn tasks.register("handling-item-${anItem.id}", JavaExec) { // here goes whatever you want to configure: dependsOn tasks.someTask, tasks.someOtherTask classpath = files(myLib) javaLauncher.set(javaToolchains.launcherFor { languageVersion = JavaLanguageVersion.of(8) }) args = [ "-foo=${anItem.bar}", "-xxx=yyy", // ... ] } } |
someItems kann von irgendwo her kommen; aus einer eingelesenen Datei bspw.
Baldur’s Gate 3
So! Am 29.08. habe ich meinen ersten Run beendet – nach ca. 153 Stunden netto, also ohne Reloads oder dem Ausprobieren anderer Entscheidungen. Brutto waren es sogar 90 Stunden mehr 😅
Der zweite Run läuft schon, dieses mal versuche ich, böse zu spielen. Patch 7 ist raus und bringt einige Erweiterungen für den Dark Urge. Wobei mir die weiteren Ende nicht so wichtig sind wie bspw. Alfira als (temporäre?) Party Member.
Wie auch immer, ansonsten gucke ich seitdem endlich (weil ohne Gefahr von Spoilern) BG3-Videos 🙂 Hier meine bisherige Empfehlung, die sicherlich noch ergänzt werden wird:
Technisch gesehen ohne echte Spoiler, aber natürlich sieht man einige Szenen. Nicht jedes Kapitel ist gleich interessant, aber einige dafür schon sehr. Witzig fand ich, dass der Firmengründer nocht der CEO ist und gleichzeitig der Director von BG3. Der Mann steht hinter dem, was seine Firma tut! Das Video ist von Dan Allen, dessen andere BG3-Videos ich noch schauen werde.
Alle folgenden Videos sind quasi spoilerfrei:
Für (kurze!) Making-Ofs lohnt sich dieser neue Larian-Kanal. Exemplarisch ein Video vom Motion Capturing und wie sie Kampfstile der verschiedenen Rassen entwickelt haben. Gibt einen guten Eindruck davon, wie viel Liebe zum Detail da drin steckt. Ich mein’, guck nur, wie Lae’zel und Karlach dastehen!
Von der Idee her ganz witzig, mir aber zu lang, war dieses Video, wie der Cast Pen and Paper spielt – als sich selbst! Hier deshalb nur die Kurzzusammenfassung:
Man bekommt da einen schönen Eindruck der sympathischen Sprecher, und wie viel Spaß sie zusammen hatten. Wem das ebenfalls zu lang ist, kann sich hier in Kurzform noch mal anfixen lassen, einen zweiten Lauf zu starten:
Eine längere Version, imho besser verdauchlich als die P&P-Runde oben, und eines meiner Highlights ist die folgende Runde. Da habe ich angefangen, alle Charaktere zu vermissen. Ja, so gut ist das Spiel, man vermisst seine Gang, wenn es vorbei ist.
Und meine aktuelle Nummer 1: Shadowheart und Lae’zel reagieren auf “Horny Comments”, zu schön 😂 Da haben sich zwei gefunden 😍
Update 24.09.
Na gut, seit dem Wochenende spiele ich (wieder, im ersten Versuch bin ich nach einer Stunde gestorben) Honor Mode. Dieses Video hat mich dazu animiert:
Update 27.09.
Heute spiele ich nicht aktiv, sondern gucke Videos eines Users, der a) ohne jemanden zu töten
und b) mit per Mod ausschließlich 1er Würfen durchspielt
🤣
Update 10.10.
Apropos “Can you beat …”: Wie würden sich die Origin-Charaktere ohne menschliche Hilfe schlagen?
Custom ESLint rule with Ember.js
Ich habe hier ein Ember.js 5.8.1, was bedeutet, dass alle Tutorials für React, Angular, … schon mal ein Stück weit wegfallen. Dabei ist ein ESLint 8.57.0, was sich unterscheidet von der aktuellen 9.x. Das Ganze wird installiert per Node.js, was ebenfalls eine Rolle spielt. Long story short: Es ist nicht so einfach, für das Setup ein funktionierendes Tutorial für Custom Rules zu finden. Wie immer in der JS-Welt also 🥰
Das Grundgerüst habe ich deshalb von hier, basierend auf hier:
1 2 3 4 5 6 7 8 |
config/ eslint/ index.js some-rule.js package.json tests/ .eslintrc.js package.json |
In der index.js
wird ein Plugin definiert, das dynamisch alle Regeln aus dem Verzeichnis einliest – der Name des Verzeichnisses ist egal:
1 2 3 4 5 6 7 8 9 10 11 12 |
const fs = require("fs"); const path = require("path"); const ruleFiles = fs .readdirSync(__dirname) .filter((file) => file !== "index.js" && !file.endsWith("test.js")); const rules = Object.fromEntries( ruleFiles.map((file) => [path.basename(file, ".js"), require("./" + file)]) ); module.exports = { rules }; |
Eine solche Regel, im Beispiel oben some-rule.js
, kann dabei auf dem Tutorial von ESLint basieren – Achtung, man wähle ein Tutorial passend zur vorhandenen Version. Wie die Datei heißt, ist egal (so lange sie auf .js endet, klar).
In einer (im Beispiel oben nur für die Tests) .eslintrc.js
wird besagtes Plugin eingebunden. Die Syntax unterscheidet sich dabei subtil von der offenbar inzwischen präferierten eslint.config.js
:
1 2 3 4 5 6 7 8 |
module.exports = { // ... plugins: ["crusy"], rules: { // ... 'crusy/some-rule': 2, }, }; |
Warum “crusy”? Weil das Ganze unter einem Namen in der package.json
“installiert” werden muss, Und der Teil fehlt im offiziellen Tutorial: npm link ./config/eslint/ --save
. Dafür ist die config/eslint/package.json
, besagter Name ist zwingend geprefixt mit eslint-plugin
:
1 2 3 4 5 |
{ "name": "eslint-plugin-crusy", "version": "1.0.0", "author": "crusy" } |
npm install
, und schon geht’s!