Kleine Warnung vor Brütal Legend
Saturday, 23. June 2018
Technisch ist der Port einfach eine Katastrophe. Brütal Legend ist eigentlich ein richtig nettes Spiel, im Metal-Universum samt toller Musik und komplett abgehobener Story. Deshalb habe ich es auch länger gespielt als ich es sonst angesichts seiner Probleme getan hätte: Veraltete Grafik, Grafikfehler und vor allem Mikro-Ruckler.
Über die Grafikprobleme kann ich hinwegsehen, aber die Ruckler machen es sehr unangenehm das Spiel zu spielen. Je nach Einstellungen kommt das Spiel auf meinem System auf stabile 30 oder 60 FPS, wie es praktisch bei jedem PC mit dedizierter Grafikkarte aus diesen Jahrzehnt sein dürfte. Trotzdem ruckelt es die ganze Zeit. Das war wohl schon unter Windows so, dort aber konnten Spieler mit den richtigen Einstellungen die Ruckler minimieren. Deren Erfahrung hilft aber unter Linux nicht, denn die Treibereinstellung für pre-rendered Frames gibt es nicht (wohl, weil es diese Funktion unter Linux gar nicht gibt). Die Grafikeinstellungen im Spiel helfen nicht.
Nachdem ich dann mehrmals in einer Mission mit einem feuerspeiendem Metalbeast gestorben bin war das für mich genug. Dann war die Motivation zu gering um sich weiter durchzuquälen. Dabei hätte ich eigentlich gerne noch das Ende der Geschichte erlebt.
Das absolute Böse
Tuesday, 19. June 2018
Direkt. Die USA trennen nun bei Einwanderung Kinder von ihren Eltern.
Ein anderes Erdbeben in Mexiko
Monday, 18. June 2018
Ob es stimmen kann? Aber es passt so schön:
El #sismo detectado en la Ciudad de México se originó de manera artificial. Posiblemente por saltos masivos durante el Gol de la selección de #México en el mundial. Por lo menos dos sensores dentro de la Ciudad lo detectaron a las 11:32. pic.twitter.com/mACKesab3b
— SIMMSA (@SIMMSAmex) June 17, 2018
Der Jubel beim Tor gegen Deutschland wurde von Seismographen als kleines Erdbeben erkannt. Großartig.
Cultist Simulator, interessant aber schwer zugänglich
Saturday, 9. June 2018
Manche Spiele verfangen nicht wirklich, auch wenn sie nicht direkt schlecht sind. Beim Cultist Simulator gibt es mehrere Gründe, warum es für mich nicht richtig funktioniert.
Cultist Simulator (alternativer Steamlink) ist ein karten- und timerbasiertes Rollenspiel. Über diese Einordnung darf man gerne streiten, ich finde es ungewöhnlich genug um mir da überhaupt nicht sicher zu sein. Aber im Grunde passt es: Auf einem Tisch sind Karten verteilt, die miteinander kombiniert werden können. So kann die Herzkarte auf die Arbeitskarte geschoben werden, wodurch ein Timer beginnt, nach dessen Ablauf die Herzkarte kurzzeitig blockiert ist und eine Geldkarte auf dem Tisch erscheint. So erscheint dabei eventuell auch eine Vitalitätskarte, die nach ein paar Minuten wieder verschwindet, hat man aber zwei davon kann eine neue permanente Herzkarte gewonnen und so im Grunde die eigenen Attribute erhöht werden. Mit diesem und ähnlichen Mechanismen gibt es immer viele mögliche Aktionen, deren Effekte und somit die Geschichte des Spiels durch ziemlich abgehobene Beschreibungstexte erzählt werden. Letzteres ist nicht überraschend, da Sunless Sea wohl von den gleichen Entwicklern (aber einem anderen Studio?) kommt, das hatte eine ähnliche Mythologie.
Über die Kombination der Karten bekommt man also immer weitere Karten, wovon aber viele nach Timerablauf verschwinden. Das erzeugt Stress und ist die eine Spielherausforderung, denn die temporären Karten wollen genutzt werden. Gleichzeitig tickt die Zeitkarte herunter, nach dessen Ablauf Geld verbraucht wird, ist kein Geld da können Krankheiten entstehen die das Spiel beenden. Es gibt noch weitere Scheitermöglichkeiten: Verzweiflung, Erschöpfung, feindliche Ermittler, alles Bedrohungen, die mit eigenen Karten gekontert werden können. So verschwindet Verzweiflung wieder folgenlos, wenn bei ihrem Timerablauf jeweils Zufriedensheitskarten vorhanden sind. Auf der anderen Seite gibt es durch die neuen Karten neue Möglichkeiten, Geld zu verdienen, Gebiete zu erforschen, aber auch, den namensgebenden Kult aufzubauen. Mit ihm kann Gefolge angeworben werden, die dann zu Expeditionen aufbrechen, Rituale können durchgeführt werden, Wissen wird erworben – generell ist es eine große Auflevelgeschichte. Aber nicht vergessen, all das sind nur blumige Beschreibungen für die Funktionen der Karten auf dem Tisch.
Klingt spannend, oder? Es hat auch definitiv seinen Reiz, ich verstehe die positiven Bewertungen. Hinter der simplen Mechanik scheint sich einiges zu verbergen. Dieser Eindruck kommt durch die Beschreibungstexte zustande, aber auch durch die sich immer weiter öffnenden Kombinationsmöglichkeiten, die durch die neuen Karten ins Spiel kommen.
Ich aber störe mich an der Schwierigkeit des Spiels und wie wenig erklärt wird. Auch wenn es nett ist, wieviel man Entdecken kann, sind viele Dinge doch abstrus und nur durch Scheitern zu erlernen – kein gutes Spieldesign. Mir verursachen auch die dauernden Timer Stress: Muss der aufgebaute Spielfortschritt immer so labil sein? Denn das bewirken die Timer auf den Upgradekarten, die nur kurz genutzt werden können um in die permanenten Attribute überführt zu werden, und die konstante Gefahr durch Hunger, Verzweiflung und Ermittler. Das aber wären Punkte, die bei genügend Motivation durch eigenes Lernen ausgeglichen werden würden, mir scheint das schon so ausbalanciert zu sein, dass das Spiel gewinnbar ist. Nein, bei mir sind es die Karten als Spielmechanik, die mich das Spiel jetzt erstmal zur Seite haben legen lassen. Weil ich dauernd Karten von ihrem Stapel ziehen muss, das Spiel sie nach Benutzung aber irgendwo auf den Tisch hinlegt, ich sie dann wieder einsammeln und sortieren muss um die Übersicht zu behalten; weil ich dauernd dafür klicke und ziehe tut mir nach einer Weile einfach die Hand weh.
Mir verleidet das Spiel also ein Accessibility-Problem. Meiner Meinung nach ein unnötiges, denn natürlich könnte das Spiel eine Ordnung vorgeben, vermeiden, dass viele Karten auf dem Tisch dauernd in Chaos ausarten. Würde das Spiel mir die Karten anordnen hätte ich Übersicht und weniger Handbelastung, auch müssten die Timer nicht ganz so hart sein. Es ist also ironischerweise das übermäßig simple Spieldesign, das mir den Zugang zur komplexeren Hintergrundgeschichte und Spielmechaniken verwehrt.
Am Limit von CSS, trotz Flexbox und Grid
Friday, 8. June 2018
Eine neue Funktion auf pc-kombo brachte mich entweder an die Limits von CSS, oder zumindest bedurfte es mehr Kenntnisse in den Gebieten Flexbox und Grid als ich besitze.
Der Hardwareempfehler basiert ja im Kern auf einem Meta-Benchmark. Den hatte ich vor nicht zu langer Zeit verbessert und auch als Liste veröffentlicht, er ist eigenständiger Teil der Seite geworden und wird nicht mehr nur intern zum Zusammenstellen der Empfehlungen benutzt.
Der Benchmarkliste fehlte aber eine übliche Funktion: Einzelne Prozessoren bzw Grafikkarten auswählen zu können und nebeneinander zu vergleichen. Im Bild oben ist diese Auswahl schon zu sehen, denn gestern habe ich sie hinzugefügt.
Das Auswählen ist ziemlich witzlos, per Javascript baue ich da auf Knopfdruck das Formular zusammen, das die Vergleichsseite aufruft. Bei der scheiterte ich aber im Detail daran, das gewünschte Design umzusetzen. Dabei ist das an sich nicht kompliziert: Für jeden Vergleichskandidaten gibt es einen Listeneintrag. Diese sollen horizontal nebeneinander gestellt werden. Jeder Listeneintrag hat fünf Bestandteile: Name, Preis, Benchmarkergebnis, Spezifikationen, Detail-Ergebnisse der Einzelbenchmarks. Und hier kommts: Diese können unterschiedlich lang sein, sollen aber über alle Vergleichskandidaten hinweg auf gleicher Höhe anfangen. Aber eben auch: Passen die Listeinträge nicht alle nebeneinander, sollen sie in einer nächsten Zeile weitergelistet werden.
Wie man bei diesem Grafikkartenvergleich super sehen kann, ist das im bisherigen Design nicht gelungen:
Benchmark Results, der letzte Abschnitt, fängt je nach Länge der Spezifikationsliste mal hier, mal dort an, aber nie auf gleicher Höhe.
Das liegt am genutzten Flexbox. Der Code lautet derzeit:
<ol id="benchmarkCompare"> <li> <section class="name"> </section <section class="performance"> </section ... </li> ... <li> <section class="name"> </section <section class="performance"> </section ... </li> </ol>
Das ist also eine geordnete Liste, jede Grafikkarte ist ein Listeneintrag als li
, in diesem sind die fünf Abschnitte als section
gelistet.
Die ol
hat display: inline-flex
, wodurch viel des Designwunsches automatisch funktioniert: Die li
sind horizontal nebeneinader, noch ein flex-wrap: wrap;
und auch das Umbrechen bei zu vielen Einträgen funktioniert einwandfrei.
Aber die Abschnitte in den Listeneinträgen sind nicht automatisch vertikal nebeneinander. Sie wissen ja nichts voneinander: Nichts verbindet sie, sie selbst sind vertikal geordnet, aber jeder Listeneintrag macht diese Ordnung autonom. Flexbox kann das schlicht nicht.
Grid könnte das besser. Mit Grid kann ich sagen: ol
hat display: grid
. Das hat 5 Reihen, die alle auf gleicher Höhe anfangen: grid-template-rows: auto auto auto auto auto
. Es kann dynamisch so viele Spalten erstellen wie nötig: grid-template-columns: repeat(auto-fit, 400px)
. Aber: Die li
, die spielen jetzt keine Rolle, ich will ja die Sektionen in ihnen in das Grid kriegen. Das geht auch: display: contents
, und schon werden die Eltern-li
ignoriert und es sind die section
s, die vom Grid geordnet werden.
Nochmal aber: Die Reihenfolge war falsch. Vom Grid wurden die einzelnen Abschnitte nicht untereinander angeordnet, sondern durch die Listeneinträge durchgewechselt. Also muss die Reihenfolge manuell angegeben werden:
#benchmarkCompare .name { grid-row-start: 1; } #benchmarkCompare .performance { grid-row-start: 2; } #benchmarkCompare .comparePrice { grid-row-start: 3; } #benchmarkCompare .specs { grid-row-start: 4; } #benchmarkCompare .benchmarks { grid-row-start: 5; }
Das funktioniert, alle Abschnitte starten auf gleicher Höhe! Und doch ist diese Lösung komplett unbrauchbar, denn: Sie ist nicht responsiv. Da dieser Code fest angibt, in welcher Zeile welcher Abschnitt sein soll, werden alle Listeneinträge nebeneinander gepackt, ohne dass Umbrüche möglich sind. Ist der Bildschirm dann schmaler als die Liste, müsste der Seitenbetrachter seitlich scrollen – allerdings wurden da bei mir an den Seiten auch Teilbereiche verdeckt, die trotz aktiviertem Scrollbalken nicht mehr erreichbar waren. Das Design bräuchte ein grid-wrap: wrap
, das Pendant zur flexbox, das aber existiert nicht.
Oft braucht Grid das wohl nicht. In den Beispielen funktioniert das einfach, mit erstaunlich wenig CSS. Diese Beispiele müssen aber nie durch display: content
Elternelemente aus dem Grid heraushalten, und sie müssen auch nie(?) die Reihenfolge der Kindelemente angeben. Kombiniert man diese Anforderungen, scheint mein Design einfach nicht möglich zu sein.
Ich lasse mich gerne korrigieren: Übersehe ich etwas? Oder ist CSS-Grid tatsächlich komplett unbrauchbar, da unresponsiv, wenn man etwas so simples wie Unterelemente einer Liste ausrichten will? Würde subgrid diese Probleme lösen, und welchen Zweck erfüllt grid ohne subgrid, wenn es solche einfachen Layouts nicht umsetzen kann?
Ist mit dem per grid umsetzbaren Tabellenlayout das Limit etwa schon erreicht?
Spreng zu den AFD-Wählern
Monday, 4. June 2018
Je länger der AfD-Erfolg dauert, desto schuldiger werden auch ihre Wähler. Keiner kann sich mehr damit herausreden, er habe nichts gewusst. AfD-Wähler sind genauso abstoßend wie die Funktionäre dieser Partei.
Hardwareerweiterung des NES
Saturday, 2. June 2018
Phantastische Arbeit von Tom 7:
In seinem Blog gibt es dazu noch ein Making of mit noch mehr Hintergründen. Aber die Grundidee alleine ist schon klasse: Über zusätzliche Hardware in den Cartridges dem NES neue Fähigkeiten geben.
Trixie Alicante Kratzbaum voll angenommen
Sunday, 27. May 2018
Zum Schutz der Tapeten und des Sofas sollten die Katzen einen Kratzbaum bekommen, auch wenn ich die Möbel hässlich finde. Der Trixie Alicante wurde es dann – nicht zu hässlich, für 50€ auf Amazon vergleichsweise billig für die Größe. Ausschlaggebend war, dass er sowohl Plattformen zum Hochklettern als auch eine Box zum Verstecken hat, denn meine Katze ignoriert generell Kratzstämme, mit der Box aber dürfte auch sie etwas anfangen können.
Versand ging schnell, Werkzeug und Bestandteile waren vollständig. Die Anleitung könnte besser sein, aber da der Zusammenbau nicht gerade kompliziert ist ging das noch. Sehr schön war die Reaktion eine unserer Katzen: Noch während des Aufbaus sprang der Zweitkater in die Box und wollte da auch gar nicht mehr raus, direkt am nächsten morgen wurden die Krallen an den Kratzstämmen gewetzt. Perfekt.
Dass die andere Katze dagegen sich bisher mehr mit dem Karton als mit dem Kratzbaum beschäftigt hat war dann nicht mehr so schlimm, und eigentlich erwartet. Sie ist immer zurückhaltend, mit der Zeit wird sich das ändern. Für ihre Verhältnisse hat sie bereits jetzt viel Interesse gezeigt, sie liegt sicher bald in der Höhle.
Scheint also ein ordentlicher, stabil stehender Kratzbaum zu sein, der keine unangenehmen Gerüche hat und von entsprechend veranlagten Katzen direkt akzeptiert werden kann.
The Rider
Thursday, 17. May 2018
Ein junger Mann verletzt sich schwer beim Rodeo. Der Film beginnt nicht damit, sondern mit seiner langsamen Genesung. Diese gelang bisher nicht vollständig, was problematisch für ihn ist: Sein Leben und sein Lebenstraum bestand aus Reiten und dem Rodeo, ein Pfad, der ihm nun verwehrt scheint.
The Rider ist ein weiterer dieser Lebenssinnsuchfilme, wie sie in der hiesigen Sneak scheinbar besonders gerne gezeigt werden. Anders als Lucky und Ladybird ist hier kein Humor zu finden. Dafür viele Bilder der amerikanischen Prärie. Mir hat das gerade als Abwechslung ziemlich gut gefallen: Ich empfand die Geschichte und die Botschaft ehrlicher als bei Ladybird, und er ist auf einer anderen Weise emotional schwer als Lucky. Auch ist es keine Schnulze, nur ein klar gestecktes Drama, dass auch ohne Klamauk interessant bleibt. Mich wundern die verliehenen Preise jedenfalls nicht.
Nachher gelesen: Eine Besonderheit des Filmes ist die Verwendung von Laienschauspielern. Im Kino habe ich das nicht bemerkt, insbesondere nicht negativ.
Logitech UE 6000 - Preiswerter Kopfhörer
Wednesday, 16. May 2018
Natürlich hat meine Lötstelle nicht gehalten, mein reparierter Superlux HD681B funktionierte nur noch für wenige Tage. Ich hatte ja schon direkt nach dem Löten gemerkt, dass ich es diesmal verkackt hatte. Danach versuchte ich mich an der zweiten Reparaturvariante, dem vollständigen Auswechseln des Kabels, aber wie prophezeit scheiterte ich – mir fehlte schon das richtige Werkzeug. Damit war der Superlux völlig zerstört, also musste Ersatz her.
Ich fand ihn im Logitech UE 6000.
Ein interessanter Aspekt ist seine Preisentwicklung. Logitech hatte ihn anfangs als 200€-Kopfhörer positioniert, dann schnell reduziert, jetzt wird er für 30€ verkauft. Mir ist nicht klar was da passiert ist. Ob er mit Beats konkurrierte, sich gegen die Modemarke aber nicht durchsetzen konnte, bei anderen Käufergruppen aber gerade wegen den Beats-Anleihen abgelehnt wurde? Verriss in einem wichtigem Magazin? Preiskampf in dem Marktsegment? Egal ob irgendwas davon es das trifft, angesichts des derzeitigen Preises ist er wohl komplett gefloppt und scheinbar wird er nicht mehr produziert. Dabei waren Besprechungen die ich sah eher positiv, und das war noch angesichts des Originalpreises.
Der Klang ist okay. Eigentlich mag ich ein ausgeglichenes Klangbild, deswegen hatte ich den HD681B und nicht den basslastigeren HD681. Der UE 6000 ist weit weg von ausgeglichen, der Bass ist einfach zu betont, das sag ich trotz meines unperfekten Gehörs ohne jeden Zweifel. Zu manchen Liedern passt das, aber oftmals finde ich den Effekt negativ, vielleicht hätte ich doch anhand meiner Vorliebe wählen sollen. Allerdings klingt trotz dieser Einschränkung Musik hiermit gut. Ich hatte schon deutlich schlechtere Kopfhörer auf und wenn mir das nicht zu blöd wäre, würde ich jetzt den Klang mit Sachen wie Klangbild und der Bühne verteidigen.
Das auswechselbare Kabel sehe ich als Katzenhalter und nach dem Schicksal meines Superlux-Kopfhörers als großen Pluspunkt. Andererseits war das beigelegte und oben im Bild sichtbare zu kurz. Die Länge würde wohl gut passen wenn es eh nur zum Smartphone in der Hosentasche reichen soll, was wohl die Hardware der Zielgruppe ist, aber für alles andere reicht es nicht. Noch dazu ist es blau, was ausgerechnet zu den Ohrmuscheln passt, die ja aber nicht sichtbar sind wenn man den Kopfhörer trägt... Glücklicherweise hatte ich für die gescheiterte Reparaturaktion sowieso schon ein längeres Kabel gekauft.
Passend zur Zielgruppe ist auch das große Werbefeature, das auf dem Papier den anfänglichen hohen Preispunkt gerechtfertigt hat: Aktive Rauschunterdückung, also das Ausfiltern von Nebengeräuschen. Dafür gibt es einen per Schiebeschalter aktivierbaren Modus. Ich merke von dem Filtern nichts, nur dass die Musik lauter wird (und eventuell der Klang besser, das könnte aber auch der Effekt der höheren Lautstärke sein), immerhin auch nicht das in den Reviews erwähnte Pfeifen. Und ja, ich habe das mit dem Originalkabel getestet, da ja eventuell das dort integrierte Mikrofon für den aktiven Teil der Filterung genutzt werden soll. Wem es um Geräuschisolierung geht muss den UE 6000 jetzt trotzdem nicht aussortieren. Denn die Ohrmuscheln halten Außengeräusche sehr gut fern, selbst wenn keine Musik läuft ist die Dämpfung sehr stark spürbar. Ich habe wenig Zweifel, dass das im Büro oder im Bus sehr angenehm sein würde.
Aber vielleicht ist die Filterung wirklich kaputt und das erklärt den geringen Preis? Mich stört es nicht, ich hätte sowieso nicht regelmäßig die Batterien wechseln wollen.
Es lag noch ein nett geformter Audiosplitter bei und im Kabel sind Knöpfe für die Telefonbedienung drin, das angeblich integrierte Mikrofon erwähnte ich ja schon. Für den Transport war noch eine Trageschale im Karton, wofür der Kopfhörer auch gefaltet werden kann. Alles nett, aber für mich eher nicht relevant.
Richtig toll ist der Tragekomfort. Gerade verglichen mit dem Superlux sind die weichen Ohrmuscheln eine Wohltat, die Gabel ist für meinen Kopf perfekt, er sitzt fest ohne zu fest zu drücken – was ich merken würde, denn davon bekäme ich Kopfschmerzen, beim Superlux dauerte es ein paar Tage bis das kein Problem mehr war. Ohne Zweifel ist der UE 6000 der komfortabelste Kopfhörer den ich je hatte, und ich fand schon meinen alten on-ear Sennheiser richtig bequem.
Alles in allem bin ich zufrieden. Ich habe leichte Bedenken wegen des übertriebenen Bass, kann mir aber sagen, dass der Klang insgesamt nicht schlecht ist und ich ja noch mit einem Equalizer gegensteuern könnte. Tragekomfort ist klasse, Verarbeitung wirkt gut, abnehmbares Kabel, geringer Preis; Doch, der UE 6000 war ein Schnäppchen und ich würde ihn empfehlen. Zumindest beim Preis von 30€, wenn Basslastigkeit kein Problem und doppelt wenn es Kaufgrund wäre, solange auf die aktive Rauschunterdrückung verzichtet werden kann.
Simdock 1.5.2 repariert und verschönert
Friday, 11. May 2018
Simdock ist das von mir adoptierte Dock, das Programmstarter und Fensterverwaltung kombiniert sowie bereits gestartete Fenster beim Klicken auf die Programmicons so durchschaltet, dass man alle verschiedenen Fenster eines einzelnen Programms aufrufen kann, ohne jedes einzeln im Dock haben zu müssen. Es unterstützt zudem Pseudo-Transparenz, was bei meinem Fenstermanager einen Bug umgeht und Systemen zugute kommt, die keinen Compositor laufen lassen können.
Mir ist immer noch nicht klar, warum genau simdock heute nicht mehr funktionierte. Aber dem war so: Nach meinem Upgrade auf Funtoo 1.2 startete mein Lieblingsdock nicht mehr. Beim Versuch das zu debuggen musste ich dann feststellen, dass auch das Kompilieren nicht mehr ging.
Das Makefile zu reparieren war die erste Aufgabe. Ich machte es mir einfach und spielte das ursprüngliche simple Makefile wieder ein, auf das ich damals so stolz war. Es hat zwar das Problem, bei jeder Änderung das ganze Programm neu zu kompilieren, aber es funktionierte damals wie heute zuverlässig.
Doch warum ging das Programm nicht mehr? Auch das habe ich nicht genau rausbekommen, aber nun in der Lage simdock mit neuen Debug-Ausgaben zu bauen konnte ich die Stelle eingrenzen. Diese Codezeilen waren das Problem:
wxSVGDocument* svgDoc = new wxSVGDocument; svgDoc->Load(path);
Dort wird versucht ein SVG zu laden, und genau so ging das bisher. Irgendwas im Zusammenspiel der neuen Versionen meiner Systemlibraries scheiterte nun. Ich öffnete einen Bugreport und wechselte gleichzeitig zur librsvg. Das ist ein Gnome-Projekt mit einer simplen API, die ich erst nicht verstand und an dessen fehlenden Tutorials ich erstmal verzweifelte. Dann aber wurde mir klar, dass die librsvg mir mit zwei Befehlen aus der SVG-Datei ein Pixbuf machen konnte, wobei mir bekannt was dass man daraus ziemlich einfach ein wxImage erstellen kann, und genau das war mein Ziel.
Das alles hat den Vorteil, dass wxSVG sowieso aus den Ubuntu-Paketquellen verschwunden war und es deswegen schon länger kein PPA-Paket für neue Ubuntuversionen gab. Deren Kompilierung sollte jetzt wieder anlaufen.
Nachdem simdock nun wieder so funktionierte wie zuvor fand ich dann zusätzlich noch einen Weg, Anti-Aliasing zu aktivieren. Ich kam darauf, weil ich mir von dem Wechsel zu librsvg auch schöner gerenderte Programmicons erhofft hatte, dem aber nicht so war. Dabei wurde mir klar, dass das Problem das Zeichen der Bitmaps auf die Programmoberfläche ist. Die Dokumentation von wxWidgets ist immer noch viel zu spärlich, aber durch Posts wie diesen konnte ich mir dann doch zusammreimen, dass man zwischen das wxDC
(dem Canvas, auf das bisher gezeichnet wurde) ein wxGraphicsContext
schieben kann, das insbesondere Anti-Aliasing unterstützt, und dieses wxGraphicsContext
kann dann wieder einem wxGCDC
übergeben werden, das sich dann wie ein wxDC mit Anti-Aliasing verhält. Im Ergebnis sind die Programmicons im Dock nun weniger pixelig, auch wenn sie nicht in der Originalgröße gezeichnet oder wenn sie gerade vergrößert werden.
Schön an der ganzen Aktion ist nicht nur, dass die Icons jetzt grundsätzlich besser aussehen sollten. Sondern dass ich schon vorher über Systeme gestolpert war, auf denen simdock einfach nicht startete. Eventuell sind die schon damals in den wxSVG-Bug gelaufen und würden jetzt funktionieren.
Simdock 1.5.2 kann vielleicht bald wieder über das PPA bezogen werden, ich habe gerade den Import angestoßen und bin gespannt ob es klappt. Das Gentoo/Funtoo-Overlay konnte ich schon testen, bei mir funktionierte es.
IP-Logging bei Apache, Nginx, Serendipity und Ruby/Sinatra verhindern
Thursday, 10. May 2018
Wie beschrieben, die IP der Benutzer nicht zu loggen finde ich sinnvoll. Es gibt da zwei Möglichkeiten: Entweder die IP wird einfach gar nicht geloggt, oder man entfernt die letzte Nummer, sodass die IP nicht mehr einer Person zugeordnet werden kann. In beiden Fällen hast du als Seitenbetreiber deine Pflicht getan.
Apache
Bei Apache würde ich die IP ganz aus dem Access-Log entfernen. Dafür muss nur das Format der Logeinträge angepasst werden. Editiere dafür die /etc/apache2/apache2.conf und entferne das %h
aus den Logformats-Zeilen:
LogFormat "%v:%p %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined LogFormat "%l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%l %u %t \"%r\" %>s %O" common
Nginx
Nginx ist mächtig, aber viele Dinge finde ich komplizierter und schlechter dokumentiert als beim altehrwürdigen Apache. Diese Änderung war glücklicherweise nicht ganz so kompliziert. Editiert wird die /etc/nginx/nginx.conf. Dort ist ein http-Abschnitt, in dem die Logdatei gesetzt ist:
access_log /var/log/nginx/access.log
Dies ändern wir zu:
log_format combinednoip '$remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; access_log /var/log/nginx/access.log combinednoip;
Wir erstellen also erst ein neues Logformat, in dem die Variable $remote_addr
fehlt, und weisen dann die Logdatei an das neue Format zu verwenden.
In Zukunft könnte ipscrub eine schönere Variante sein. Das Modul hasht die IP mit regelmäßig wechselnden Salts. Aber da nicht erklärt wird wie die Installation funktioniert und es noch nicht in den Quellen ist, war dieses Modul für mich noch keine Option.
Serendipity
Für Serendipity gibt es ein Plugin, das die IP anonymisiert. Es ist das hier schon erwähnte Datenschutzplugin. Einfach im Backend installieren, dann in der Konfiguration die Option aktivieren.
Ruby/Sinatra
Sinatra loggt nicht selbst. Aber Sinatra setzt auf rack auf, und rack loggt fröhlich mit IP-Adresse nach stdout und stderr. In meinem Fall ist diese Ausgabe mein Log, da sie von supervisord in eine Logdatei gespeichert wird. Aber rack ist lustig: Dieses Abfrage-Log (request log) ist nicht konfigurierbar. Eine Klasse namens CommonLogger kümmert sich darum und hat das Format der Logzeile als Konstante hartgecodet. Also müssen wir hier Monkeypatchen: Wir überschreiben zur Laufzeit des Programms was die Funktion log
macht. Ich packte dafür in die config.ru:
module Rack class CommonLogger def log(env, status, header, began_at) # make rack stop spitting out client ips length = extract_content_length(header) anonIp = env["REMOTE_ADDR"]&.gsub(/\.\d*$|[\da-f]*:[\da-f]*$/, '.000') anonForwardIp = env["HTTP_X_FORWARDED_FOR"]&.gsub(/\.\d*$|[\da-f]*:[\da-f]*$/, '.000') msg = FORMAT % [ anonForwardIp || anonIp || "-", anonIp || "-", Time.now.strftime("%d/%b/%Y:%H:%M:%S %z"), env[REQUEST_METHOD], env[PATH_INFO], env[QUERY_STRING].empty? ? "" : "?#{env[QUERY_STRING]}", env[HTTP_VERSION], status.to_s[0..3], length, 0] logger = @logger || env[RACK_ERRORS] if logger.respond_to?(:write) logger.write(msg) else logger << msg end end end end
Der Code verliert auch den letzten Abschnitt, weil das Substrahieren der Timestamps nicht funktionierte. Für mich ist das kein Verlust. Wichtig ist, wie anonIp
und anonForwardIp
gesetzt werden. Der dabei verwendete Regex-Ausdruck funktioniert mit ipv4 und ipv6 und stammt von stackoverflow.
So konfiguriert ist bei diesen Webprogrammen die IP aus dem Access-Log verbannt. Damit ist eine der wenigen sinnvollen Forderungen unserer wahnsinnig gewordenen Datenschützerterroristen umgesetzt.
Die wahnwitzige Datenschutzverordnung und mein Versuch einer Position der Vernunft
Wednesday, 9. May 2018
Das Problem bei der EU-DSGVO ist nicht der Datenschutz. Es ist die völlige Inkompetenz der Macher der Verordnung, die fehlende Abwägung zwischen Datenschutz und Interessen wie Pressefreiheit, gerade in Zeiten der Bürgerjournalismus, verbunden mit der Verteufelung von technisch normalen und unkritischen Funktionen wie Cookies. Anstatt gezielt gegen nutzertrackende Unternehmen vorzugehen wird versucht, das Internet im Geiste einer Beamtenstube durchzuregulieren und bei Gegenwehr gegen diese Autoritätsanmaßung mit Gewalt abzuschalten. Deutscher geht es nicht, aber zur EU als einem von Deutschland zerstörten Überbleibsel einer tollen Idee passt solch eine Aktion ja durchaus auch gut.
Das ist meine Meinung. Zusammen mit einem anderen Artikel wird da eine Position daraus: dem Blogkommentar von Mario, der bisher das beste ist, was ich zur DSGVO gelesen habe:
Und ja, inzwischen bin ich für mich selbst zu den Schluss gekommen, dass der Benutzer beim Besuch meiner privaten Seite die gleichen Rechte beim Schutz seiner personenbezogenen Daten hat, als wenn er zu Google, Facebook oder Twitter surft. Wenn ich Inhalte im Internet publiziere, muss auch ich mir Gedanken machen, wo die personenbezogenen Daten meiner Benutzer gespeichert werden, wohin sie weiter gegeben werden und wie und wann sie mal gelöscht werden.
Denn damit hat er recht. Als Seitenbetreiber gibt es eine ganze Reihe von sinnvollen Maßnahmen, mit denen die Daten der Nutzer besser geschützt werden können als es derzeit üblicherweise der Fall ist. Und das schützt dann nicht Daten, sondern Menschen – beispielsweise wenn dann die IP eines Kommentators eben nicht herausgeklagt werden kann, weil sie überhaupt nicht gespeichert wurde.
Ein anderer Aspekt ist auch gar nicht schlecht: Transparenz zu schaffen. Es wäre doch eigentlich ein guter Mechanismus, wenn ein informierter Leser entscheiden kann, ob er die Seite besucht obwohl sie die IP zu Google schickt, oder es eben in Zukunft bleiben lässt.
Das also ist meine Position: Ich werde Maßnahmen umsetzen, die ich für sinnvoll halte, und so nach bestem Wissen und Gewissen datensparsam und datenschützend vorgehen. So ist hier im Blog das neue Datenschutzplugin installiert. Es macht bei mir zwei Dinge: Es anonymisiert die Besucher-IP, was bei meiner Blogkonfiguration nur Kommentatoren betrifft. Und es stellt eine Datenschutzerklärung bereit. Die wird zwar praktisch niemanden interessieren, aber wenn doch mal jemand nachschauen will, dann kann derjenige nun eben ziemlich detailliert nachlesen welche Daten hier gesammelt werden.
IPs auf Blogebene nicht zu speichern ist nett, aber eigentlich nur sinnvoll wenn sie gleichzeitig auch auf Webserverebene nicht in den Logdateien landen, die oft ja doch lange auf der Serverfestplatte bleiben. Daran werde ich mich als nächstes versuchen, das betrifft dann sogar alle meine Seiten.
Was ich ganz sicher nicht machen werde: Cookie-Banner und Kommentar-Checkboxen. Cookie-Banner nicht, weil ich hier überhaupt kein Tracking betreibe und ein Cookie zu setzen daher völlig unproblematisch ist. Wer trotzdem kein Cookie gesetzt haben will, soll Cookies eben im Browser verbieten – dass trotz dieser Möglichkeit Cookies überhaupt problematisiert werden ist ein großer Teil davon, was ich auf technischer Ebene mit völliger Inkompetenz der Verordnungsmacher meine. Die Checkbox für eine Einverständniserklärung der Datenverarbeitung im Kommentarformular wird es nicht geben, weil jeder Mensch, der intellektuell in der Lage ist einen Kommentar zu formulieren, automatisch mit der Nutzung der Kommentardaten einverstanden ist. Sonst würde er ihn nicht absenden.
Sollte klar werden, dass die Gerichte das anders sehen, oder jemand verklagt mich und ich verliere (ich würde das so weit bekämpfen wie mir möglich), dann werde ich in Ermangelung besserer Alternativen einen auf isotopp machen und mich mindestens aus dem europäischen Internet verabschieden.
Meine Erfahrung mit drei Chinauhren: Skone, Debert, Aesop
Monday, 7. May 2018
Vor einiger Zeit ist meine Uhr kaputt gegangen. Sie fiel eigentlich gar nicht tief, aber innen platzten die Zeiger ab, da sie alt war wollten die Uhrenhändler sie nicht reparieren. Vorher hatte ich viele Jahre keine Armbanduhr getragen, aber zu dem Zeitpunkt hatte ich mich bereits wieder daran gewöhnt. Seitdem habe ich mir nach und nach drei günstige neue Uhren gekauft. Es sind jeweils Uhren aus China, eine ungewöhnliche Quartz, zwei Automatik.
Klar: Das sind die erwähnten Konkurrenten der Huawei Watch 2 und bisher gewinnen sie.
Schuld an meinen Uhrenwahlen sind jeweils Threads im Uhrforum.
Skone Scheibenuhr
Ich wollte eine Uhr, die Skone sah witzig aus und war billig. Gekauft bei Aliexpress für 8€ samt Versand in diesem Shop, der die Uhr allerdings nicht mehr führt. Man muss sich erstmal daran gewöhnen auf der Scheibe die Uhr abzulesen, das darf man doof finden – andererseits provozierte diese Billiguhr viele positive Reaktionen, oder Unglauben bei den wenigen, denen ich den Preis verriet. Als Quartz-Uhr ging sie natürlich absolut genau. Sie kam mit einem ziemlich harten Armband, das ich bald auswechselte.
An den Kratzern im Glas ist die Katze schuld, sie warf die Uhr vom Waschbecken auf den Boden und jagte sie dann über die Fliesen. Ein Wunder, dass die Skone das überlebt hat.
Die Scheibenuhr hat an sich gut funktioniert und ist auch nicht richtig kaputt, aber entweder hatte ich da viel Pech mit der Batterieauswahl oder sie frisst halbjährlich eine Batterie. Ich weiß nicht, ob das ein Defekt sein kann oder sowas bei einem billigen Mechanismus normal ist. Oder ist das Bewegen der Scheiben einfach so viel aufwändiger als bei einer normalen Uhr? Abwegig ist das ja nicht. Auf jeden Fall war es mir bisher zu blöd, die dritte Batterie einzulegen. Ansonsten aber bin ich zufrieden mit diesem Kauf, habe sie auch eine ganze Weile getragen. Irgendwann wird sie auch sicher wieder benutzt.
Debert DT7031BDW
Die zweite Uhr war nicht direkt meine Idee, sondern ein dann von mir gewähltes Geschenk, als solches auch etwas teurer. Ich fand und finde die blauen Zeiger bei dem weißen Hintergrund wirklich hübsch, die Leute im Forum schienen positive Erfahrungen mit der Marke zu machen. Eine günstige Automatik zu probieren reizte mich. Leider hatte ich hier etwas Pech: Die Uhr ging erst tadellos, dann blieb sie immer wieder stehen. Sie war noch dazu nicht von Aliexpress, wo ich den Verkäufer hätte anhauen können, sondern von ebay. Und obwohl der Verkäufer doch noch richtig nett war und sie überprüfen ließ, blieb sie danach ganz stehen.
Es war wohl die Unruh kaputt, was ich nun weiß da ich die Debert dann tatsächlich selbst hab reparieren lassen. Was keine offensichtliche Sache ist, wenn das gleiche Modell neu soviel kostet wie die Reparatur. Seitdem immerhin läuft sie absolut einwandfrei und viel genauer als ich erwartet hatte. Sie fühlt sich am Handgelenk sehr gut an, wie der kleine Sekundenzeiger wandert sieht klasse aus, dem Defekt zum Trotz wirkt sie solide – was Einbildung sein dürfte, da wirkt ihr Gewicht und wie die Mechanik klingt, wenn die Uhr bewegt wird. Nur der Metallrahmen sieht in echt schlechter als auf dem Produktfoto aus.
Aesop 1001G-A
Als ich entschied die Debert zu reparieren haderte ich mit mir und entschloss, trotzdem eine Automatik bei Alieexpress zu bestellen. Zur Sicherheit sozusagen. Die gewählte 1001G-A funktioniert bisher erstaunlicherweise gut. Aber die Krone macht mir Sorgen, die wirkt – anders als die Debert – beim Einstellen nicht stabil. Auch die Befestigungsstäbe des Armbandes sind labriger als bei der Debert, wo sie fest sitzen. Bei dem Preis zwar zu erwarten, aber genau das wollte ich ja sehen. Sie stammt aus dem offiziellen Store, der Versand dauerte lange, das wurde aber auch vorher so angezeigt.
Außer der gefühlten Wackligkeit der Krone kann ich über die Aesop nichts schlechtes sagen. Bisher läuft sie und entspricht völlig ihrem Produktfoto. Das Armband ist ähnlich wie das was mit der Skone kam, aber weicher und bequemer. Wenn sie hält wäre ich ziemlich zufrieden, um das zu bewerten habe ich sie aber noch nicht lange genug.
Update August 2020: Die Krone hat sich wirklich als Schwachpunkt entpuppt. Weniger, dass sie wackelig ist, die Verbindung blieb bestehen und auch das Werk funktioniert weiterhin. Aber sie ist teils grau geworden, abgegriffen, die Beschichtung war offensichtlich nicht haltbar. Schade, denn das Gehäuse selbst hat noch keine Macken. Man kann die Krone sicher wechseln, aber das Problem passt zum zu geringen Preis.
Meine Meinung zu Chinauhren
Liegt der Reiz im Geiz? Sicher auch, aber nicht nur: Ich fand alle drei Modelle hübsch und habe bisher auch nicht mitbekommen, dass sie dreiste Kopien sind. Wenn doch, kenne ich die Originale nicht – durchaus möglich. Eigentlicher Startpunkt aber war die Parodie Affordable Luxury, ein Guide zum Erschaffen von Modeuhren, in dessen Rahmen dann auch erklärt wurde wo die so vermarkteten Uhren herkommen und was sie eigentlich kosten. Möglichst direkt zur Quelle zu gehen ist dann nicht mehr so abwegig. Auch wenn ich erstmal dachte: Sollte man nicht mehr zahlen? Jedoch dann: Woher wissen, ob bei einer etwas teureren Uhr unten mehr ankommt? Und dass richtig teure Uhren nicht in Frage kommen ist sicher für niemanden eine Überraschung. Schließlich überwog der Spaß daran, mit diesem Experiment dem System vielleicht ein Schnippchen schlagen zu können.
Bleibt das Thema der Haltbarkeit und Garantie, was wie man an meinem kurzen Bericht sieht ein Glücksspiel ist. Ich würde aber unter Vorbehalt schon das Fazit ziehen wollen, dass man im Preisbereich der Debert und etwas höher vernünftig funktionierende Automatikuhren kaufen kann. Ich weiß aus Foren, dass den Verkäufern auf Aliexpress durchaus an guten Bewertungen gelegen ist. Daher schicken die dann auch mal einfach noch eine zweite Uhr, wenn die erste kaputt ankam. Genau deswegen würde ich mich an Verkäufer halten, mit denen andere gute Erfahrungen gemacht haben. Was einen auch davor bewahren sollte an Betrüger zu geraten, die gibt es auf der Plattform natürlich auch.
Andererseits: Wenn man nicht auf die ganz günstigen Uhren schielt, wie die Skone und die Aesop, dann ist man schnell in einem Preisbereich mit etablierten Alternativen. Das wären vor allem Seiko und Orient. Oder man könnte einfach eine (im Vergleich zur Scheiben-Skone) normale Quartz kaufen und wird sich darüber sicher nicht ärgern, solange man die überteuerten Modelabels vermeidet. Beide Möglichkeiten sind sicher vernünftiger, dieses Glücksspiel eigentlich unnötig.
Doch für mich ist das erstmal egal. Uhren habe ich nun ja genug.
Netflix mischt sich in den mexikanischen Wahlampf ein - auf Seiten des korrupten Regimes
Thursday, 3. May 2018
Mexiko als immer weiter in Gewalt und Korruption versinkender gescheiterter Staat erlebt natürlich auch Momente der Hoffnung. Derzeit ist Wahlkampf, es geht um das höchste Amt: Der Präsident wird neu gewählt. Das ist natürlich hochbrisant in einem Land, in dem ganze Landteile von kriminellen Banden (den Narcos) kontrolliert werden, die aber vor allem auch seit Jahren in die Politik drängen und wohl inzwischen das politische System, die Polizei und das Militär soweit unterwandert haben, dass im Grunde sie ganz Mexiko kontrollieren - zusammen mit der Geldelite und den verbliebenen korrupten Teilen der Regierung, die nicht direkt Narcos sind.
Andrés Manuel López Obrador ist ein linker Kandidat, der diesen Wahlkampf derzeit zu gewinnen scheint. Das ist höchst erstaunlich: Mexiko hat keine linke Mehrheit, nichtmal (mehr) eine linke Partei. Dazu hat Obrador schon früher kandidiert, und verloren - wobei mindestens einmal ziemlich sicher Wahlfälschung im Spiel war. Diesmal kandidiert er mit einer neuen Partei, ähnlich wie das Macron in Frankreich tat. Seine Führung im Wahlkampf bei einem endlich mal anderen Wahlprogramm, als dem mit dem die konservativen Parteien das Land in die Katastrohpe geführt haben, ist derzeit Mexikos großer Moment der Hoffnung.
Doch was ist in Amerika ein großes Trauma? Das vermeintliche Hoffnungsträger für ihr Land verheerend wirken. Chavez im Süden, Trump im Norden, aber warum nicht auch Kubas Castro dazuzählen? Populismus ist daher ein politisches Schimpfwort, wie auch hierzulande, so absurd das in einer Demokratie auch ist.
Und was macht Netflix in dieser Situation? Veröffentlicht in Mexiko eine Serie über Populisten. In der es zwar nicht um Andrés Manuel López Obrador direkt geht. Aber druckt dann Werbeposter mit seinem Konterfei neben Hugo Chavez (via). Hier im Video zu sehen:
Es ist die eine Sache, wenn sich Netflix eine politische Position zumaßt. Es ist eine andere, wenn diese Position eine Fortsetzung der US-amerikanischen Tradition ist, zugunsten von Diktatoren und Mördern gegen linke Kandidaten vorzugehen.
Mexiko ist für viele hier weit weg. Netflix ist es nicht. Netflix politisches Verhalten dort kann ein Vorläufer für baldige Manipulation in Deutschland sein. Zusammen mit Facebook haben wir dann gleich zwei demokratisch problematische, von fremder Hand gesteuerte und schon jetzt sehr mächtige Medien auch im deutschen Wahlkampf.