Artikel

Hier befinden sich die längeren »klassischen« Blog-Artikel.

XML in Rails verarbeiten

xml rails ruby

XML! Kaum jemand ist ein großer Fan davon, man kann dem großen Klammern-Salat aber kaum entrinnen, wenn man mit externen Daten von »The Enterprise™« arbeiten muss. Zur Weiterverarbeitung in der eigenen Rails-Anwendung hatte ich dazu bisher stets eine große Parserei mit Nokogiri veranstaltet oder auf zur Datenquelle passende Gems zurückgegriffen.

Aber, TIL: Schon seit Rails 3.0.0 hat Active Support eine Erweiterung für Hash an Bord, die einen String voller hässliches XML in einen wohlgeformten Hash umwandelt.

Ein Beispiel, hier ist ein Stück XML:

  <?xml version="1.0" encoding="ISO-8859-1" ?>
  <produkt>
    <ean><![CDATA[4212345678901]]></ean>
    <name><![CDATA[Biereis am Stiel]]></name>
    <gruppe id="1">
      <name><![CDATA[Bierige Dinge]]></name>
      <merkmal id="kategorie">
        <name><![CDATA[kategorienname]]></name> 
        <wert><![CDATA[Gefrorenes Bier]]></wert>
      </merkmal>
    </gruppe>
  </produkt>

Das steckt in einer Variable productugly und soll zur vernünftigen Weiterverarbeitung in einen Hash umgewandelt werden. Dazu erweitert Active Support Rubys Hash um die Methode from_xml:

  productnice = Hash.from_xml(productugly)

Das Ergebnis ist ein schöner Hash:

  {"produkt"=>
    {"ean"=>"4212345678901", 
    "name"=>"Biereis am Stiel", 
    "gruppe"=>
      {"id"=>"1", 
      "name"=>"Bierige Dinge", 
      "merkmal"=>
        {"id"=>"kategorie", 
        "name"=>"kategorienname", 
        "wert"=>"Gefrorenes Bier"}
      }
    }
  }

So einfach! Peinlich, dass ich das erst nach 9 Jahren (Rails 3.0 erschien im August 2010…) mitbekommen habe. Aber besser spät als nie…

»JAMstack Fundamentals«

jamstack ssg

Bild: Ladder to sky clouds

Kürzlich hatten wir es hier vom aktuellen Hype-Begriff »JAMstack«. Smashing jetzt auch, in einem ausführlichen Webinar mit einem JAMstack- und »Serverless«-Protagonisten, Phil Hawksworth von Netlify:

JAMstack Fundamentals: What, What And How

Großartig: Smashing liefert eine komplette Transkription des einstündigen Videos mit!

Mr. Hawksworth erklärt das Thema etwas langatmig, aber ziemlich gründlich. Das ganze natürlich aus Sicht von Netlify. Er relativiert dabei den Mode-Begriff »JAMstack« (»Javascript- APIs- and Markup-Stack«) ein wenig (Zitat):

»Because the common misconception is that every JAMstack site has to be JavaScript and APIs, and Markup, but this kind of thing that we’ve overlooked is that we don’t have to use all three — every one one of these is, kind of, optional. We can use as much, or as little of these as we like. In the same way that a LAMP stack site wouldn’t necessarily need to be hitting a data base. Now, I’ve built things in the past that are served by an apache server, on a Linux machine, and I’ve been using PHP, but I haven’t been hitting a database and I wouldn’t start to rename a stack necessarily for that.«

Und hebt auf das seiner Ansicht nach perfekte Zusammenspiel von JAMstack und »Serverless« ab. »Serverless« ist ein anderer Modebegriff, im Prinzip bedeutet das nur, dass man statt eines eigenen Servers den eines Cloud-Anbieters nutzt und sich nicht um den eigenen Server kümmern muss (Zitat):

»Serverless and JAMstack, they just fit together really beautifully.«

Ein empfehlenswertes Video, um die Ideen der Webdevelopment-Glaubensrichtung »JAMstack« etwas genauer kennenzulernen.

Wir »Old-School«-Developer sind naturgemäß etwas skeptisch. Wenn man auf den vollen JAMstack-Pfad geht, erkauft man sich den Vorteil, sich nicht um einen eigenen Server (CMS, dynamische Komponenten…) kümmern zu müssen, mit der Abhängigkeit von diversen Cloud-Anbietern…

(Bild: Samuel Zeller auf Unsplash, thanx!)

Erlesenes IV

erlesenes git vuejs

Viele Browser-Tabs müssen mal wieder gedumpt werden!

Programmierer der einen Zettel mit der Beschriftung »Python« hochhält. Das kann nicht sein Ernst sein! (Bild: Hitesh Choudhary auf Unsplash, thanx!)

Python ist nicht gerade meine Lieblingssprache, alleine das seit Ewigkeiten parallele Existieren unterschiedlicher Versionen ist irgendwie »WTF?«. Heise läutet das Ende von Python 2 ein, worüber der Schockwellenreiter nur lachen kann.

Das Arbeiten mit git ist immer wieder eine Quell der Freude, besonders wenn mehrere Devs zusammmenarbeiten. Drev DeVault gibt »Tips for a disciplined git workflow«. Z.B.: »Pick a random git man page and read it now.«

»Oh Shit, git!« gibt Tipps für populäre »Notsituationen«, denn:

»Git is hard: screwing up is easy, and figuring out how to fix your mistakes is fucking impossible.«

JavaScript, wir alle lieben JavaScript! DWB hat »7 Useful JavaScript Tricks«. Den hier kannte ich noch nicht, »Get Unique Values of an Array«, ist ergreifend schlicht:

  var j = [...new Set([1, 2, 3, 3])]
  >> [1, 2, 3]

Apropos JavaScript, Vue.js ist hier noch stets ein Thema.

Wir Old-School-Developer lieben und kennen unser jQuery, »Making the Move from jQuery to Vue« bei CSS-Tricks führt in Vue.js aus der jQuery-Perspektive ein.

Zum tiefergehenden Einstieg hat Tania Rascia mit »Getting Started with Vue - An Overview and Walkthrough Tutorial« ein großartiges und umfassendes Tutorial geschrieben.

Weitere Vue.js-Links:

Die Auswahl des passenden JavaScript-Frameworks ist zwar bis zu einem gewissen Punkt »Religion«, aber sie haben trotzdem alle ihre Stärken und Schwächen. »Why I prefer React over Vue« vollzieht den Entscheidungsprozess nach.

Um zu entscheiden, muss man aber alle einigermaßen gut kennen. Deshalb ist es interessant, wenn sich Sunil Sandhu die Mühe macht, die selbe App mit React und Vue.js zu bauen: »I created the exact same app in React and Vue. Here are the differences.«.

Wenn es dann doch React sein soll, ist das ausführliche e-Book »React lernen und verstehen« von Manuel Bieh hilfreich.

Aber vielleicht braucht man das auch gar nicht: »You probably don't need that hip web framework«.

Und wenn all das zu langweilig wird, kann man sich auch esoterischen Dingen zuwenden. »legit« ist eine Programmiersprache, die in git-Commits programmiert wird:

»Programs written in legit are defined entirely by the graph of commits in a Git repository.«

Es ist schon erstaunlich, auf was für Ideen die Leute kommen…

Git-Integration in Sublime deaktivieren

sublime editor

Screenshot des MacOS-Desktops mit neun Sublime-Fenstern

Kürzlich kam die Version 3.2 meines aktuellen Lieblingseditors Sublime Text heraus. Eine der spektakulären Neuerungen: Git-Integration im Editor. Damit gab es ein handfestes Problem. Da ich in Sublime »lebe« (siehe Bild, alle Arbeits-, Neben- und Blog-Projekte sind ständig in einem eigenen Fenster offen), war Sublime dauerhaft damit beschäftigt, den Git-Status der vielen offenen Dateien zu ermitteln und hielt permanent die CPU auf Trab.

Die Lösung: Git-Integration abschalten! Das geht mit einer Zeile in der Konfiguration überraschend einfach, steht in der Doku aber ganz unten im letzten Absatz und war deshalb für »tl;dr«-Kandidaten wie mich schwer zu finden:

  "show_git_status": false

Davon abgesehen stehe ich als »Old-School-Developer« der IDE-isierung aller Dinge skeptisch gegenüber. Das produziert auf die Dauer nur »Bloatware«. Ein Programm soll eine Aufgabe erfüllen, und die gut. Sprich: Ein Editor soll editieren, mit Git interagiert der Git-Client…

Erlesenes III

erlesenes frontend css

Höchste Zeit, mal wieder die Browser-Tabs und Bookmarks abzuarbeiten!

Es gibt frische Handbücher und Checklisten! Wie die »Front-End Performance Checklist 2019«: »Let’s make 2019… fast! An annual front-end performance checklist (PDF/Apple Pages/MS Word), with everything you need to know to create fast experiences today. Updated since 2016.«

Und das »Front-end Developer Handbook 2019«. Soso, das soll man also alles wissen. ;-)

Ein Beitrag, der ausgesprochen »opiniated« ist: »7 web development practices challenged«. Zitat:

»There are many myths in the software business that have led to wrong best practices. In this post I will address 7 of these best practices and explain on which wrong assumptions they are based.«

Eine Handvoll Rezepte für die Arbeit mit Flexbox präsentiert Ahmad Shadeed: »CSS Flexbox: 5 Real World Use Cases«

Lazy-Loader-JS für bildlastige Sites könnte bald der Vergangenheit angehören: »Native image lazy-loading for the web!«. Im Moment macht es aber erst einmal mehr Arbeit…

console.log() kennen alle, aber Console API hat noch mehr zu bieten: »Getting creative with the Console API!«. console.table z.B…

Ein paar Links aus der Vue-Welt (einige gefunden bei F-LOG-GE, Linkfutter):

Apropos »Meta-Betrachtungen« und dem Meta-Thema dieses Blogs, »Old-School-Development«:

Bridget Stewart schaute sich ein Einführungsvideo zu Vue an und geriet darob ins Philosophieren über das Frontend und die Idee, die Business-Logic einer Web-Anwendung ins Frontend zu packen: »Stuffing the Front End«

Ein in dem Zusammenhang typischer Text: »Why I miss Rails«. Ein Developer, der in der »Business-Logik-mit-JavaScript-ins-Frontend«-Hölle steckt und die Entwicklung mit Ruby On Rails vermisst:

»Now, I know Rails isn’t universally beloved by developers, and I’m not suggesting that we give up React and es7 and go back to writing server-templated web-apps like it’s 2012 again.«

So, warum nicht? Manchmal ist genau das die Lösung, auch wenn »man« das angeblich 2019 nicht mehr macht…

Und wenn es trotz all dieser Dinge mal langweilig ist? Dann schreibt man ein Web-Framework in bash