Pich, Telefnica und koda

 Uncategorized  Kommentare deaktiviert für Pich, Telefnica und koda
Mrz 232017
 

Die Überschrift hätte auch „Schei? Encoding“ heißen können – ich denke, fast jeder ITler sollte dieses T-Shirt besitzen.

Das Thema Encoding – früher auch als Codepage-Problematik bekannt – verfolgt die IT schon seit der Gründerzeit. Auf den IBM-Großrechnern der Anfangszeit der kommerziellen elektronischen Datenverarbeitung war man noch ganz konsequent – nur Großbuchstaben und Ziffern waren möglich. Noch heute geht das Gerücht, dass die Adressdatenbestände der großen Banken und Versicherungen ausschließlich in Großbuchstaben vorliegen und von cleverer Software „mittendrin“ angepasst wird, bevor der Kunde es schwarz auf weiß auf Papier sieht.

Lange Zeit war in Stein gemeißelt, dass ein Zeichen („Character“) 8 Bit zu haben habe (E-Mail-Transport war sogar nur 7-Bit-sicher). Über Codepages wurde dann jedem Byte ein Zeichen zugeordnet. Bekannteste Vertreter dieser Art sind ISO-8859-1, auch Latin1 genannt, sowie dessen Spezialisierung WINDOWS-1252 (weitestgehend äquivalent zu ISO-8859-15, also mit Eurozeichen). Zu DOS-Zeiten war die Codepage 850 noch vorne dabei, auf dem Großrechner war die Cp273 (EBCDIC) der Standard, später zu IBM-1141 mit dem Eurozeichen erweitert.

Dann trat Unicode auf den Plan. Die Idee: eine Zeichencodierung für alles. Erste seriöse Implementierung war UTF-16, genutzt beispielsweise in den Joliet-Extensions zu ISO9660 (das CD-Image-Format, nicht etwa ein weiteres Encoding!) und in NTFS. 16 Bits pro Zeichen. Java war die erste verbreitete Programmiersprache, die Nägel mit Köpfen machte und dem char-Datentyp 16 Bits spendierte (und es gleich wieder teilweise versaute, weil der Datentyp signed definiert wurde – darauf muss man erst mal kommen. Aber der Datentyp byte ist auch signed, das ist zumindest eine Entschuldigung, dass man nicht alleine blöd war). Irgendwann merkte man: das ist stark suboptimal, weil erstens bei 65536 Zeichen Schluss ist, und zweitens Texte aus dem westlichen Sprachraum doppelt so viele Bits brauchen als bei einer 8-Bit-Codierung. UTF-8 war die Antwort. An UTF-16 wurde zusätzlich eine Erweiterung hingedoktort, so dass inzwischen ein Zeichen auch als 32bit-Wert codiert werden kann. Und weil Informatiker gerne mal Standards ignorieren und ihr eigenes Süppchen kochten, entstand CESU-8, weil es fehlerhafte Konvertierroutinen zwischen UTF-16 und UTF-8 gab. Wurde dann flugs zum eigenen Standard erkoren. Man muss sich manchmal schon schämen für unseren Berufsstand.

Nun ja. Jetzt ist überall UTF-8, sollte man meinen. Die üblichen Linux-Distributionen haben das als System-Encoding, nur das selten genutzte Windows tanzt mit WINDOWS-1252 etwas aus der Reihe. Ein steter Quell der Freude für sorglose Software-Entwickler, die sich unbewusst bei diversen Konvertierungen auf das System-Encoding verlassen. Statt WORA eben WODE (Write Once – Debug Everywhere). Sogar RISC OS hat inzwischen einen Font-Manager, der Unicode-fähig ist, es gibt nur keine Fonts dafür und der Rest des Systems besteht aus hauptsächlich englischen Anwendungen, die selbst von den deutschen Umlauten oft nicht viel halten. Da ist es wieder, das Schämen für den Berufsstand.

Und jetzt der Schwenk zur Überschrift: auch im Jahre 2017 trifft man das Encoding-Problem regelmäßig an. In meinem Fall im Kindle-Abo der Frankfurter Allgemeinen Zeitung. Im Wirtschaftsteil ist offenbar irgendwas grandios schiefgelaufen, und so wurde Ferdinand Piëch zu Herrn Pich, die Telekommunikationsfirma Telefónica zu Telefnica und der Autohersteller Škoda zu koda. Wie man sieht hat es nicht mal für ein Ersatzzeichen gereicht. Gut, bei einem Artikel über VW kann man den fehlenden Buchstaben bei Ferdinand Piëch leicht im Geiste erkennen und ergänzen. Aber bei Personen in Bezug auf weniger bekannte Betriebe kann das schon mal schwieriger werden.

Wer auch immer in der Kette von der FAZ über Amazon bis auf meinen Kindle das verbockt hat: Schämt Euch. Obwohl ich als Bewohner einer Straße mit Umlaut natürlich Kummer gewohnt bin – bis auf den Lieferscheinen von Amazon keine merkwürdigen Ersatzzeichen waren, sondern wirklich der richtige Umlaut auftauchte, das hat länger als ein Jahrzehnt gedauert. Ich rechne also mit einer fehlerfreien elektronischen FAZ gegen 2027 auf meinem Kindle. Gut Ding will Weile haben.

Die gehackte Webpräsenz

 Uncategorized  Kommentare deaktiviert für Die gehackte Webpräsenz
Jan 302016
 

Irgendwann zwischen Weihnachten und Neujahr ist es passiert – genauer ließ es sich nicht rekonstruieren. Meine Webpräsenz wurde gehackt. Alle vier WordPressInstallationen und die Drupal-Installation waren betroffen. Die dahinter liegenden Datenbanken waren Gott sei Dank sauber.

Wie äußerte sich der Hack? Einige Benutzer berichteten von Redirects auf Phishing-Seiten, die meisten waren aber nur von schlechterer Performance betroffen, weil in die HTML-Daten JavaScript injected wurde, das auf gewisse Fremdseiten zugriff, die unglaublich schlechte Antwortzeiten hatten. oil-hockey.ch und rardec.co.uk waren darunter. Das verzögerte den Aufbau der Webseiten erheblich.

Klassifiziert war das Problem als „JS:Injection-A“ (Avast) oder „Mass Injection Website 19“ (Symantec). Für mehr Details hier ein Link zu Symantec. Es dauerte nicht lange, bis die Webpräsenzen bei mindestens einem Dienst (Norton Safeweb) auf der Blacklist standen. Das zieht dann weitere Kreise – vor allem Firmen haben oftmals automatische Verfahren, um Zugriffe aus dem Intranet auf Seiten auf Blacklists zu unterbinden. Gott sei Dank gab es bei Norton Safeweb eine relativ unkomplizierte Möglichkeit, eine Reevaluierung des Zustands zu veranlassen.

Seit einer Woche ist nun wieder alles bereinigt – WordPress- und Drupal-Neuinstallation nebst zwei WordPress-Theme-Wechseln (die alten sind noch verseucht, die muss ich noch aufräumen) hat das Problem gelöst. Dazu natürlich die Routine-Dinge wie Wechseln aller Passwörter. Scheiss-Aufwand, aber man lernt ja was dabei (man soll ja alles positiv sehen).

Ich danke meinen aufmerksamen Blog-Lesern, die mich über das Problem informiert haben, weil ihre Sicherheitssoftware angesprungen ist. Wer seine Webpräsenz schnell online auf Malware checken will, dem sei der Online-Security-Scanner von Sucuri empfohlen.

Und was lernt man daraus? Früher war alles besser – da hätte man schnell ein paar alte Versionen der HTML-Dateien eingespielt und fertig wäre die Säuberungsaktion. In der heutigen Welt der CMS-Systeme mit ihrem üblen PHP-Verhau dauert eine Analyse viel länger. Und: nur weil eine Webpräsenz eine überschaubare Anzahl Besucher hat – man sollte also denken, dass so ein Hack ein wirklich schlechtes Preis-Leistungs-Verhältnis hat – heißt das nicht, dass nicht doch ein paar üble Gesellen Hand anlegen. Abgesehen davon ist es nie schlecht, regelmäßig Backups zu machen – ok, das ist eine IT-Binsenweisheit, das sollte man schon vorher gewusst haben.

Frohes Fest

 Uncategorized  Kommentare deaktiviert für Frohes Fest
Dez 242015
 

Ich wünsche allen meinen Lesern – die sich allein deshalb glücklich schätzen können, weil sie zu einem ganz kleinen elitären Kreis gehören – ein Frohes Fest und einen guten Rutsch ins neue Jahr. Wir dürfen gespannt sein, was 2016 so bringt. Am Ende vielleicht sogar mehr Blog-Einträge?

Ein wenig Historie

 Uncategorized  Kommentare deaktiviert für Ein wenig Historie
Okt 282015
 

Die Gründerzeit der IT aus meiner Sicht war die Heimcomputerzeit. Zwar gab es zuvor jede Menge EDV, aber doch hauptsächlich im Umfeld größerer Firmen oder bei Universitäten, also nichts für den einfachen Mann von der Straße. Erst die Heimcomputerzeit Anfang der 80er brachte den Computer in den Privatbereich. Jede Menge kleine, innovative Firmen entstanden und brachten allerlei Computer auf den Markt. Viele verschwanden genauso schnell wieder in der Versenkung. An die, die länger blieben, haben wir die besten Erinnerungen: Acorn und Sinclair, Commodore und Atari, Amstrad und Apple.

Paul Fellows, ein Software-Entwickler genau aus dieser Gründerzeit, hat auf der RISC OS Show London 2015 einen launigen, kurzweiligen Vortrag gehalten über die Geschichte des Acorn BBC Model B und die frühe Zeit des Acorn Archimedes, als man in größter Not ARTHUR aus dem Boden stampfte. Anschauen! Ab 4:30min geht es los. Eine frühere, ausführlichere Variante kann man hier nachlesen.

Die Abstraktionskaskade

 Uncategorized  Kommentare deaktiviert für Die Abstraktionskaskade
Apr 162015
 

Jeder Informatiker kennt das: wenn man heutzutage Software entwickelt, kämpfen zig Frameworks und andere Technologien um die Gunst der Nutzung bei der Implementierung. Dabei versprechen letztlich alle, die Komplexität der Welt zu verstecken hinter einem mächtigen Schutzschild der Abstraktion. Mit Java ist es uns egal, auf welchem Betriebssystem wir laufen. Mit Hibernate ist es uns egal, welches DB-System wir nutzen. Mit JEE ist es uns egal, auf welchem Application Server wir laufen und mit welcher Middleware wir kommunizieren. Mit GWT ist es uns egal, in welchem Browser unsere Oberfläche dargestellt wird. Und mit Spring ist uns alles egal.

Das Problem ist nur: keine Abstraktion ist perfekt. Und damit meine ich nicht das Phänomen, das Joel Spolsky mit „leaky abstraction“ benannt hat. Manche Abstraktion verhindert, dass wirklich gute Software entstehen kann. „Gut“ im Sinne von performant, ins System integriert, ressourcenschonend. Allgemein könnte man sagen: Abstraktion verhindert eine spezifische Problemlösung.

Nehmen wir Java als Beispiel. Das „WORA“-Prinzip – „Write Once Run Anywhere“ – ist das große Versprechen. Bei der graphischen Oberfläche war der erste Versuch „AWT“, ein Toolkit, das das Prinzip der Abstraktion schon im Namen trägt. Um „WORA“ zu garantieren, implementierte AWT schlicht den kleinsten gemeinsamen Nenner bei den graphischen Oberflächen dieser Zeit. Es war erschreckend, wie klein dieser Nenner wirklich war. Der zweite Versuch – Swing – basierte auf dem Ansatz, dass es wenigstens möglich sein müsste, anständige graphische Oberflächen so zu bauen, dass sie wenigstens überall gleich aussehen, wenn auch nicht wirklich „nativ“. Mit der „pluggable Look&Feel“-Technik gab es immerhin die Möglichkeit, sich den einzelnen Plattformen aussehensmäßig anzunähern. Im Detail gab es trotzdem immer Unterschiede, weil Swing bis heute z.B. nicht das plattform-native Font-Rendering verwendet hat. Und auch Swing litt durchaus unter dem Ansatz des kleinsten gemeinsamen Nenners, der erst partiell durch das JDIC-Projekt entschärft wurde.

Wenn man es kritisch formuliert, könnte man sagen: wenn man ein Cross-Plattform-UI-Toolkit verwendet, hat man zwar auf vielen Plattformen ein UI, aber eben auch überall ein suboptimales UI. Erinnert ein wenig an die Situation im Bereich der mobilen Plattformen, wo die „im-Browser-aber-dafür-überall“-Lösungen gegen die „native-und-dafür-nicht-überall-oder-überall-anders“-Lösungen kämpfen.

Wenn man ganz weit zurückgeht, könnte man die CISC-CPUs als erste Abstraktionsschicht begreifen. Beim Z80 zum Beispiel gab es den schönen Speicherblockkopierbefehl „LDIR“ (echte Nerds mit Vertiefung in Z80-Assembler wissen durch jahrelanges Studium von Hexdumps sofort den Op-Code auswendig: ED B0). Man hat drei Register geladen, LDIR aufgerufen und 21 Zyklen pro kopiertem Byte verbraten. Hat man das Kopieren „von Hand“ übernommen, konnte man allerdings zwei Bytes in nur 16 Zyklen (über clevere Manipulation des Stack-Pointers und Verwendung von Push und Pop) kopieren. Also damals schon ein Fall von Performance vs. Bequemlichkeit, und auch ein wenig „einfacher zu verstehen aufgrund der Abstraktion“ – eine Eigenschaft, die nicht alle Abstraktionen haben, denn oftmals abstrahieren sie so weit vom Problem, dass es eher komplizierter wird.

Ich persönlich fühle mich hinter zuviel Abstraktionen unwohl. Zu oft sind die Implementierungen fehlerhaft, so dass man beim Finden von Workarounds von der abstrakten Ebene hinabsteigen muss in den Maschinenraum. Oft wird dann die Problemlösung deutlich komplizierter – eben weil sie irgendwie wieder in die Abstraktion passen muss. Trotzdem habe ich mich über die Jahre mit Java angefreundet, begrenzt auch mit Swing und Vaadin. Trotzdem genieße ich die Abstecher zu C und ARM Assembler unter RISC OS, wo man per SWI-Aufruf mit dem Betriebssystem spricht und die Register dazu direkt befüllt – es ist instruktiv sowohl in Hinsicht auf damit erreichbare Performance und Kompaktheit als auch als Erinnerung an die eigene Fehlbarkeit.

Letztlich gibt es keinen Königsweg. Wer alles selbst machen will, wird niemals in akzeptabler Zeit fertig werden. Wer alles aus Fremdkomponenten zusammenstöpselt, wird bei der Qualität der Lösung immer Abstriche machen müssen. Time to market, Quality and Performance, Price. Choose any two. Und die Kunden nicht aus den Augen verlieren – nicht immer werden Argumente vom Schlage „kann man nix machen, das Framework macht das halt so“ akzeptiert. Auf der anderen Seite kann es böse ins Auge gehen, dem Fehlschluss „wenn die Abstraktion eh nix taugt, kann ich es gleich selbst machen“ zu erliegen.

Dez 242014
 

Ich wünsche allen Lesern des hubersn.IT-Blogs ein Frohes Weihnachtsfest und einen guten Rutsch ins neue Jahr.

Ich hoffe, ich kann Qualität und Frequenz der Blogeinträge auch in 2015 halten oder sogar ausbauen. Naturgemäß gibt es in der schnelllebigen IT im Rückblick viel zu viele Themen, die man nicht behandelt hat – mit dem Start als Neublogger in 2014 bin ich dennoch ganz zufrieden, ich hoffe meine Leser sind es auch. Anregungen und Kritik gerne jederzeit per Kommentar oder per Mail.

Gibt es was neues unter der Sonne?

 Uncategorized  Kommentare deaktiviert für Gibt es was neues unter der Sonne?
Sep 082014
 

Nach meinem Studium der Informatik habe ich mein Hobby zum Beruf gemacht. Das bringt mit sich, dass ich versuche immer auf dem neuesten Stand in der Informationstechnik, hier vor allem der Softwareentwicklung, zu sein. Dieser Blog dient deshalb nicht nur der Information der hoffentlich zahlreichen Leserschaft, sondern auch als eine Art Archiv, als Gedächtnisstütze, wie ich wann über was dachte – denn „ich hab’s ja gleich gesagt“ kann hinterher nur der glaubwürdig behaupten, der dokumentiert hat, was er vorher tatsächlich gesagt hat.

Kommentare sind hier üblicherweise deaktiviert. Wer Anmerkungen hat, darf mailen.