An der Qualität gespart

gebrochenes Hoverboard - Titelbild

Seit ich den Vortrag über Moving Objects gehört habe, sind Hoverboards ein kleines Bastelprojekt in unserer Familie. Seither haben wir diverse defekte Hoverboard erstanden, zerlegt, umgebaut und manche davon auch wieder repariert. So auch dieses hier: ein Hoverboard 8,5-Zoll Rädern und dicken Reifen.

Schaut man unter die bunte Plastikhülle, finden sich bei allen Hoverboards die gleichen Komponenten. Die Elektronik ist gleich, die Beleuchtung, die Schalter, die Stecker und der mechanische Aufbau ist gleich. Da die Motoren in den Rädern verbaut sind, kann fast nicht von einer Mechanik sprechen. Im wesentlichen besteht diese aus zwei Alu-Guß-Schalen, deren Hauptaufgabe es ist die Räder stabil zu befestigen. Bei genauerem Hinsehen, können aber dennoch Unterschiede festgestellt werden. Wie es scheint, wurden die Einzelteile ständig weiter entwickelt - sicherlich um Produktionskosten zu sparen. So mutierte beispielsweise der Kühlkörper der Leistungselektronik von einem großflächigen (2mm starken) Alu-Blech zu einem Rahmen mit rund 50% weniger Aluminium. Weitere Änderungen kann man auf den Platinen ausmachen, da wurden hier und da Kondensatoren eingespart oder ganze Baugruppen ersetzt. Das sind sicherlich Einsparungen die sich im Centbereich bewegen, hochgerechnet auf große Stückzahlen, lohnt es sich aber einen Ingenieur dafür zu beschäftigen. Ärgerlich ist es allerdings, wenn Einsparungen mit einer Reduktion der Qualität erkauft werden.

Als meine 85 Kilo und ich neulich eine kleine Runde auf dem Hoverboard drehte, gab das Gerät unter mir plötzlich nach und stoppte: Das Rad war deutlich geknickt und streifte bereits am Kotflügel. Natürlich vermutete ich zuerst, dass wir die Schrauben nicht richtig befestigt oder sonst irgend etwas nicht richtig montiert hatten. Als wir das Hoverboard zerlegten, wurde klar, dass die Aluminuim-Schale einfach nicht stabil genug war. Ein klaffender Spalt zeigte wo die Halterung der Motorachse aus der Schale gerissen war. Das hatte ich nicht erwartet.

Ein Griff in die kaputte-Hoverboard-Sammlung förderte zum Glück noch ein paar Alu-Schalen in tadellosem Zustand hervor und ich machte mich daran das Defekte Teil auszutauschen. Dabei stellte ich fest, dass die Teile nicht exakt gleich waren. So war die defekte Achsverschraubung nur mit einem gebogenen Blech gesichert, die andere bestand aus einem rebusten Gußteil. Spaßeshalber verglich ich die beiden Alu-Schalen mit der Waage und auch hier zeigte sich ein Unterschied. Während die kaputte Schale 492g wog, brachte das Ersatzteil 100g mehr auf die Waage. Konnte es wirklich sein, dass hier mit dem Argument "das-wird-schon-halten" zwei mal 100g Aluminium eingespart wurden?

gebrochenes Hoverboard - 1 gebrochenes Hoverboard - 4 gebrochenes Hoverboard - 5 gebrochenes Hoverboard - 7 gebrochenes Hoverboard - 6 gebrochenes Hoverboard - 8 gebrochenes Hoverboard - 9

5. Apr. 2020 (10:29) | gERD Schaufelberger

Eine andere Welt

covid19-busfahrer.jpg

Seid der Allgemeinverfügung gelten in Dresden strengere Regeln und wir alle sind aufegfordert zu Hause zu bleiben. Bisher ist die Verfügung nur ein paar Tage alt, aber es zeigt sich schon, wie groß die Veränderungen doch sind. Auf den Straßen ist viel weniger Verkehr. Viele Läden haben geschlossen. Kindern spielen alleine im Garten. Die Gehwege sind leer. In den Parks sieht man Jogger. Im Grunde sind es nur Kleinigkeiten, die aber in Summe für ein ganz neues Stadtbild sorgen.

25. Mär. 2020 (12:26) | gERD Schaufelberger

Schöne Einstellungen und schöner ohne Einstellungen

htaccess with Apache web server

Betreiber von Webseiten kennen sie: .htaccess-Dateien. Einfach ausgedrückt sind das Konfigurationsdateien für den Webserver. Der Clue daran ist, dass die Einstellungen für das Verzeichnis gelten in dem die Datei liegt. Das macht htaccess besonders für Shared-Hosting interessant: dadurch kann jeder Kunde die Einstellungen des Webservers für sich anpassen ohne die anderen Kunden zu stören oder der Administrator des Servers Hand anlegen muss.

Die manigfaltigen Möglichkeiten verführen leider auch dazu diese exzessiv zu nutzen. So hatte ich neulich ein ShopSytem in den Händen, in dem über achtzig .htaccess-Dateien lagen. Die meisten waren dazu da Verzeichnisse für den Zugriff übers Web zu sperren. Es gab aber auch ein paar, die mit komplexen ReWrite-Rules Anfragen umleiteten. Spätestens an diesem Punkt sollte sich der begabte Entwickler fragen, ob das eine gute Idee ist.

Zur ersten .htaccess-Anwendung, nämlich Dateien und Ordner für den Browser nicht verfügbar zu machen, kann ich nur sagen: was nicht ins Web gehört, gehört nicht ins Web ! Anstatt umständlich den Zugriff zu verbieten, empfehle ich diese Dateien einfach auserhalbt des WebRoot zu speichern. Das spart viele .htaccess-Dateien, veringert die Komplexität und damit die Fehleranfälligkeit des Gesamtsystems. Auch die Konfiguration von ReWrite-Rules kann ich nicht gut heißen. Aber nicht nur ich, selbst in der Dokumentation von Mod_Rewrite wird aufgeführt, dass es für viele, viele Fälle bessere Lösungen gibt. So sind ReWrite-Rules als letzte Hoffnung beschrieben, wenn es sonst keine Möglichkeiten mehr gibt. So ist beispielsweise ein simpler "Alias" in jedem Fall einer komplexen ReWrite-Rule vorzuziehen - schon allein aus Performanzgründen. Darüber hinaus ist natürlich zuerst der Programmierer gefragt. So wage ich zu behaupten, dass allein durch eine halbwegs gute Softwarearchitektur und die Verwendung von PATH_INFO etc. auf ReWrite-Rules komplett verzichtet werden kann.

Ein weiterer Punkt, der wenig Beachtung findet, ist, dass durch .htaccess-Dateien und insbesondere durch den Gebrauch on ReWrite-Rules ein Teil der Applikationslogik in die Konfiguration des Web-Servers ausgelagert wird. Und spätestens jetzt sollten dem erfahrenen Entwickler alle Alarmglocken schrillen. Die Logik gehört in das Programm und nicht auf achtzig .htaccess-Dateien verteilt. Naja, zumindest sollte die Logik an einer - und nur einer - zentralen Stelle implementiert sein. Abhängigkeiten diser Art sorgen früher oder später für Probleme.

Ich will .htaccess-Dateien nicht verteufeln, rate aber jedem, der sich versucht sieht dieses Feature zu nutzen, diese Entscheidung vor dem jüngsten Gericht mit guten Gründen und reinem gewissen vertreten zu können.

19. Mär. 2020 (17:54) | gERD Schaufelberger

Bus gesponsert vom Staat

Bus finanziert vom Staat

Neulich fuhr ich mit einem großen PS-starken Wagen mit Chauffeur - dem Bus. Hinter dem Fahrer prankte in Aufkleber auf dem zu lesen war, dass der Bus durch das Staatsministerium gefordert wurde. Sollten wir da nicht gleich den Luxemburger Weg einschlagen und den ÖPNV kostenlos anbieten?

Wenn wir ehrlich sind, ist das Geschäft mit dem ÖPNV alles andere als gewinnbringend. Die paar Euro, die durch den Ticketverkauf rein kommen, werden zu rund 30% durch Fahrkartenautomaten und Kontrolleure wieder aufgefressen. Ganz zu schweigen von den versteckten Kosten, die entstehen weil Ticketautomaten nur schwer zu bedienen sind und nicht das Kleingeld annehmen, das in der Tasche klimpert. Oder die Aufwände die entstehen wenn Preise erhöht werden sollen. Und wer bezahlt eigentlich die Leute, die sich das "Wabensystem" der Tarifzonen mit den verschiedenen Tarifen für Erwachsene, Kinder, Hunde, Gruppen, Fahrräder, Monatskarten und Jahresabos ausdenken? Wäre es da nicht einfacher der ÖPNV konzentriert sich auf sein Kerngeschäft - Menschen von A nach B zu bringen - und wir finanzieren den Spaß direkt aus Steuergeldern? Das hätte übrigens den hübschen Nebeneffekt, dass reiche Menschen mehr für den ÖPNV zahlen als Mindestlohnbezieher.

1. Mär. 2020 (17:34) | gERD Schaufelberger

Hässliche Codeline

Ugly Kit Code

Für mich hat Entwicklung (Programmierung) durchaus etwas mit Ästhetik zu tun und ich habe da durchaus meine persönlichen Ansrpüche an Schönheit. Quellcode ist für mich dann schön, wenn er gut lesbar ist und einer Reihe von Paradigmen folgt:

  • Offen für Erweiterung aber geschlossen für Veränderung
  • Robust gegenüber Fehlbedieung und defekten Dritt-Systemen
  • KILL - Keep It Left Looser (tiefe Verschachtelung vermeiden)
  • KISS - Keep It Simple and Stupid (keine komplizierten Codekonstrukte)
  • Trennung von Content und Layout (MVC)

Darüber hinaus gibt es natürlich noch viele weitere Grundregeln (Favour Composition over Inheritance, etc.) die es zu beachten gilt, will man nicht in Teufels Küche landen. Dabei sind diese Weisheiten nicht neu - globale Variablen wurden bereits von der heiligen Inquisition als Werk des Teufels entlarvt und mit dem Scheiterhaufen geahndet - zu Recht!

Man könnte also meinen, die Aufklärung hat das Mittelalter der Informatik hinter sich gelassen und zumindest die schlimmsten Kinderkrankheiten seien ausgerottet. Leider ist das nicht der Fall. So habe ich doch immer wieder mit Programmcode zu tun, bei dem sich mir die Nackenhaare stellen. Das beginnt damit, dass Dateien "letzerInclude" genannt werden, führt vorbei an schier endlos langen Eierlegendenwollmilchsau-Quelltext-Dateien, dabei stollpert man ständig über globale Variablen und fehlende Kapselung (wenn doch mal Objekte verwendet werden) und es endet mit schrecklichen Funktionsnamen zusammengesetzt aus schlechtem Deutsch und noch schlechterem Englisch: "gibPreisStringLocalized".

Leider bleiben die Fragen offen: Kann man für hässlichen Code Schmerzensgeld velangen? Und von wem?

4. Feb. 2020 (17:57) | gERD Schaufelberger

Suche

Aktuelle Artikel