Archiv der Kategorie: Computer

Mein Beruf die Informatik. Müsste man auch ein Bisschen unter Hobby einordnen.

Telefon-Links mit Grav

Meine Begeisterung für das flat-file CMS Grav steigt stetig. In einem Twig-Template habe ich gerade relativ leicht tel: links generiert:
<a href="tel:+49{{ person.telefon|regex_replace(['/[^0-9]/', '/^0/'], ['', '']) }}">{{ person.telefon }}</a>

In einem Template werden in einer for-Schleife Adressen ausgegeben. Da es alles deutsche Telefonnummern sind, kann ich sie leicht mit Ersetzungen mit regulären Ausdrücken auf das gewünschte Zielformat +4989123456 bringen. Die Telefonnummer ist im obigen Ausdruck in person.telefon gespeichert, in einem Format wie 089-123456. Sie wird zweimal verwendet, einmal im Klartext des Links, einmal verändert im href-Attribut.

Da Twig regex-Ersetzung nicht von Haus aus mitbringt, muss die php-Funktion durchgereicht werden. Meine Annahme, das habe Grav bestimmt schon gemacht, war richtig: mit regex_replace ist ein entsprechender Twig-Filter definiert. Der macht alles mit zwei Ersetzungen: Alle Nicht-Ziffern werden entfernt, die führende 0 wird entfernt. Das tel:+49 wird statisch davor gesetzt.

Nach vielen Erfahrungen mit TYPO3 und contao ist Grav für mich eine Offenbarung, da ich hier flexibel im Code arbeiten kann, aber nicht auf niedrigste php-Ebenen gehen muss. Und dies bei der Aufbereitung von Inhalten genauso wie bei der Gestaltung mit Themes. So, wie es eines Entwicklers würdig ist 🙂

GIMP 2.10.2 Released

Nach ein paar Tagen schon wieder eine neue Version, da waren wohl noch einige größere Bugs drin. Unter einem habe ich selbst gelitten: Der Datei speichern Dialog zeigte unter Win 7 x64 keine Inhalte von Verzeichnissen dar, ich habe schon an mir gezweifelt. Die neue Version 2.10.2 kann es wieder, dringende Empfehlung sie über das erste 2.10 darüber zu spielen.

https://www.gimp.org/news/2018/05/20/gimp-2-10-2-released/

Gimp in der neuen Generation

Gimp Logo WilberGIMP 2.10.0 Released

The long-awaited GIMP 2.10.0 is finally here! This is a huge release, which contains the result of 6 long years of work (GIMP 2.8 was released almost exactly 6 years ago!) by a small but dedicated core of contributors.

Nach langer Arbeit wurde mit der (bescheidenen) Versionsnummer 2.10.0 eine neue GIMP-Version frei gegeben. Ungeachtet des kleinen Sprungs in der Nummer ist es ein riesiger Schritt in der Implementierung. Dabei wurde die gesamte Engine überarbeitet, so dass lange geforderte Dinge, wie größere Bittiefen, Farbkalibrierung, Hardwareunterstützung, jetzt möglich sind. Die Photoshop-Fans haben Gimp deswegen immer verworfen, diese Argumente sind damit passé. Neben Inkscape und Scribus ist Gimp ein Eckpfeiler in der Open-Source-Grafik.

Software ist Natur

Eine Meinung, der ich mich anschließen kann. Wir profitieren von Open Source mehr als von proprietärem Code. Und wenn Computer immer mehr für und sogar über Menschen entscheiden, ist es überaus wichtig, dass die Algorithmen nachprüfbar und verifizierbar sind.

Zu den natürlichen Ressourcen sind mit Anwendungen und Programmen technische hinzugekommen. Ähnlich wie Trinkwasser und Saatgut müssten auch Software-Codes in öffentlicher Hand sein, erklärt der Philosoph Matthias Gronemeyer.

DLF: Software-Codes und Algorithmen müssen öffentlich sein

echo@tu-berlin.de eingestellt

Das wird jeder IT-Administrator kennen: Der Echo-Mailer echo@tu-berlin.de ist ideal zum Testen eines frisch eingerichteten Email-Kontos, da er jede Email nahezu unverzögert als Antwort zurückschickt. Damit kann man senden (SMTP) und Empfangen (IMAP) auf einmal testen, den nicht IT-Kundigen ist meist nicht bewusst, dass es sich um zwei relativ unabhängige Mechanismen handelt.

Leider ist das auch Geschichte: Der Dienst ist seit 2018 eingestellt und antwortet nicht mehr. Ich vermute im Zuge der Umstellung auf Exchange-Server wurde das weggekürzt.

Die Wikipediaseite https://de.wikipedia.org/wiki/Echo-Mailer nennt andere, ich denke echo@univie.ac.at ist momentan der beste Ersatz.

Trump schleift Netzneutralität

Donald Trump ist gerade in der Phase der Einlösung der Wahlversprechen. War die Entscheidung für Jerusalem als Hauptstadt von Israel schon gruselig genug (darüber müsste eigentlich ein eigener Post geschrieben werden), hat er nun die unter Obama wirklich mühsam errungenen und ungeheuer wichtigen Regelungen zur Netzneutralität gekippt. An und für sich haben die beiden Entscheidungen nicht viel miteinander zu tun, gemeinsam ist beiden: Sie kosten Trump nichts und vielen anderen Menschen eine Menge.

Über Netzneutralität habe ich schon geschrieben, hier nochmal kurz meine Sicht:

Internet-Anschlüsse vergleiche ich veranschaulicht immer mit Wasseranschlüssen von Gebäuden: In den Anfangszeiten konnten die Menschen es immer nicht fassen, dass sie Netz an zwei Computern gleichzeitig nutzen können, hier war der Vergleich von zwei gleichzeitig offenen Wasserhähnen hilfreich. Dies ist er auch bei der Versorgung generell: Wohnen Sie in einem Haus in der Nähe eines Krankenhauses machen sie sich trotzdem keine Sorgen darüber, ob sie Duschen können, denn die Wasserversorgung ist so dimensioniert, dass beide Gebäude gut versorgt sind, sie können gut duschen ohne das das Wasser nur tröpfelt, auch wenn im Krankenhaus gerade operiert wird. Genau so verhält sich das mit dem Netz: ist es überall ausreichend dimensioniert kommen alle Pakete mit geringer Latenz und ausreichend Bandbreite an, es muss nichts geregelt werden. Netzneutralität ist damit eigentlich selbstverständlich, wir müssten uns darüber ebenso wenig Gedanken machen, wie beim Wasseranschluss.

Anders aber wenn die Kapazität nicht ausreicht, vielleicht der Fall wenn die ganze Welt Fernsehen und Filme nur noch on Demand streamt, manche Leitungen könnte Engpässe darstellen, hier muss investiert werden. Wird das Netz verbessert, wäre das Problem wieder gelöst. Aber ohne Netzneutralität ergibt sich sogar ein neues Geschäftsfeld: Ich spare mit als Netzbetreiber die Investition, nehme dafür Premium-Kunden für einen „priorisierten Betrieb“ Zusatzgebühren ab. Wahrscheinlich überwiegen die Zusatzgebühren vom Ertrag bei weitem sogar die Einsparungen der Investition, die Frage kann davon sogar entkoppelt werden. Ist das Netz nicht neutral kann ich auch Einfluss nehmen: Kommt eine neuer angesagter Streaming-Dienst als Konkurrenz hoch, kann ich ihn ausbremsen, so dass beim Kunden der Eindruck von Langsamkeit oder Unzuverlässigkeit entsteht. Die Netzanbieter könnten so großen Einfluss auf Geschäftsmodelle im Netz haben. Was das heißt, kann man am Beispiel von Telekom StreamOn schon gut sehen, hier werden die „Content-Partner“ bevorzugt.

Der Server, von dem Sie diesen Post lesen, ist derzeit gut erreichbar. Wenn ich für diese Erreichbarkeit viel zahlen müsste, würde ich ihn wahrscheinlich nicht betreiben, die Unabhängigkeit von anderen Diensten wäre damit weg. Damit kann ich ohne Netztneutralität sogar mittelbar die Meinungsvielfalt beeinflussen und zensieren.

Die Netzneutralität ist also wirklich ein wertvolles Gut, ohne Netzneutralität regiert und reguliert das Geld auch das Internet und damit unsere Informations- und Meinungsfreiheit.

Schön finde ich, dass das Thema jetzt beim Trump-Bashing soviel Aufmerksamkeit genießt. Diese Medienaufmerksamkeit hätte ich mir schon vor zwei Jahren gewünscht, als das Thema in der EU heiß war und auch nicht ganz sauber gelöst wurde. Hier war der Aufschrei deutlich ruhiger. Frau Merkel war übrigens auch für die Abschaffung der Netzneutralität, ist ihnen das in gleicher Weise aufgefallen, wie bei Donald Trump?

Und weil das Video von TotalBiscuit einfach so gut ist, will ich es hier abermals wiederholen:

 

Algorithmen visualisieren

Zur Zeit arbeite ich mich vermehrt in Javascript ein, dort auch in die Visialisierungs-Bibliothek D3 von Mike Bostock. Der Informatiker hat lange für die New York Times aufwendige interaktive Grafiken erstellt, daraus ist diese Bibliothek entstanden. Eine tolle Funktionalität, die aber auch verstanden sein will.

Dabei bin ich über eine sehr schöne Seite gestolpert, wo Bostock an Beispielen für die Visualisierung von Algorithmen zeigt, dass die Qualität der Algorithmen dadurch in vielen Fällen gesteigert werden kann. Schon als Student habe ich ähnlich Demos programmiert, ich errinnere mich noch an einen Bubble- und Quicksort in Assembler auf einem Commodore PET 2001, der direkt auf dem Bildschirmspeicher arbeitet und so die Buchstaben sortierte. Spassig. In Perfektion macht dies allerdings Bostock:

https://bost.ocks.org/mike/algorithms/

Chrome unterstützt ES6 Module

Wer wie ich als Java-Entwickler in die Javascript-Welt eintaucht, vermisst eine vernünftige Gliederung in Module und die Definition von Abhängigkeiten dazwischen. In der alten Javascript-Welt wurden dafür viele Mechanismen geschaffen, deren Gebrauch für den Neuling verwirrend ist. 

Mit EcmaScript 6 (auch EcmaScript 2015) ist eine Definition von Modulen und imports bzw.  exports mit sauberen Sprachmitteln möglich. Ein Beispiel:

<!DOCTYPE html>
<html>
    <head>
        <title>ES6 Module</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script type="module">
            import {getGreeting} from "./js/greeting.js";
            
            document.getElementById("content").textContent = getGreeting();
        </script>
    </head>
    <body>
        <div id="content">placeholder for content</div>
    </body>
</html>
import * as my from "./mylib.js";

export function getGreeting() {
        return my.addMy("Hello World!");
}
export function addMy(str) {
    return "My " + str;
}

Die gute Nachricht: Moderne Browser wie Chrome (ab Version 61 ohne Flags), Firefox, Safari und Edge (Edge und Firefox allerdings hinter Flags) unterstützen das bereits ohne Zusatzmittel wie Transpiler etc.:

https://medium.com/dev-channel/es6-modules-in-chrome-canary-m60-ba588dfb8ab7

https://caniuse.com/#feat=es6-module

In EcmaScript 6 (synonym ES6 und EcmaScript 2015) sind aber noch viele andere gute Features und syntaktische Erleichterungen enthalten:

http://es6-features.org

JavaScript ist damit eine richtig erwachsene Sprache und wird damit Java immer ähnlicher 😉