Open-Source-Beiträge 2017

Ende 2015 hatte ich das letzte Mal über unsere Open-Source-Aktivitäten geschrieben, mittlerweile hat sich wieder das ein oder andere Erwähnenswerte angesammelt.

Weiterlesen…

Syntaktischer Zucker: Ruby-Methoden mit Annotationen versehen

Ruby enthält ein nettes Feature, das es ermöglicht, Methoden bei ihrer Definition leicht mit Annotationen zu versehen. Wir haben das ausgenutzt, um “schnelle” Methodenvarianten zur Verfügung zu stellen, die ihren Rückgabewert cachen.

Weiterlesen…

Oh je, Meta-Gems!

In meinen Beiträgen Nww-Devtools und Projekt-übergreifende RuboCop-Konfiguration habe ich darüber geschrieben, wie wir Gemeinsamkeiten in den Entwicklungsumgebungen unserer Projekte vereinheitlichen. Wir nutzen Gems, in denen wir genau diese Gemeinsamkeiten paketieren.

Von dieser Strategie werden wir jetzt wieder Abstand nehmen.

Weiterlesen…

Unsere letzten Open-Source-Beiträge

Wir sind nicht nur große Open-Source-Nutzer, sondern auch gerne mal -Geber. Die Bandbreite der Beiträge ist groß, wir haben fremde und eigene Projekte im Angebot.

Weiterlesen…

RGB-Farbraum unter Mac OS X für spezielle Monitore

Der Ultrawide-Monitor 298P4QJEB von Philips funktioniert, wie viele andere Displays dieser Kategorie, unter Mac OS X von Haus nicht vernünftig. Farben und Kontrast sind miserabel.

Weiterlesen…

Projekt-übergreifende RuboCop-Konfiguration

Wenn man im Team Software baut, dann einigt man sich oft auf Code-Konventionen, so auch wir. Diese zu überprüfen darf nicht Hauptbestandteil von Code-Reviews sein, sonst reiben sich alle Beteiligten aneinander auf. Dazu braucht es Tools, die diese Aufgabe möglichst automatisch übernehmen. In der Ruby-Welt hat sich dazu RuboCop etabliert.

Hat man sich im Team einmal auf einen Regelsatz geeinigt, dann möchte man diesen auch auf möglichst alle Projekte anwenden, trotzdem aber zentral an einer Stelle pflegen. Für dieses Problem möchte ich unsere Lösung vorstellen.

TL;DR: rubocop-nww bzw. lib/rubocop/rspec/inject.rb!

Weiterlesen…

Cheatsheets mit Dasheets

Programmierer versuchen ständig, ihre Arbeitsumgebung zu optimieren. Dazu beschäftigen sie sich mit einer Vielzahl von Tools, picken interessante heraus, erlernen deren Bedienung und versuchen dann, Befehle und Tastenkombinationen irgendwie ins Langzeitgedächtnis zu befördern.

Learning by doing heißt es immer so schön, oft ist es aber eher ein learning by RTFM, immer und immer wieder. Um diesen wiederkehrenden Wälzen der Referenzdokumentation zu entgehen, legen sich viele Leidensgenossen Spickzettel an. Genau um die geht es bei Dasheets, einem Tool zum Erzeugen und zum Suchen in Spickzetteln.

Weiterlesen…

Rails-Anwendung mit HTTP-/HTTPS-Kombination

Unser Seitenprojekt Hotelbewertung.de wurde umfassend neu aufgelegt. Eine Anforderung dabei war, bestimmte Seiten per SSL sicher zu übertragen, andere wiederum nicht. Was sich nach einem trivialen Problem anhört, hatte es dann doch ganz schön in sich, weil Rails vor allem beim Routing bzw. der Routengenerierung diesbezüglich nicht viel zu bieten hat. An diesem Punkt haben wir angesetzt und eine elegante Lösung entwickelt.

Weiterlesen…

Nww-Devtools

Zur Unterstützung der Entwicklung von Ruby-Anwendungen setzen wir immer wieder die gleichen Gems ein, z. B. Pry und Better Errors. Ein erster Versuch, diese Entwicklungsumgebung zu vereinheitlichen, stellen unsere Gems nww_devtools und nww_devtools_rails dar.

Weiterlesen…

VMware ESX: Netzwerk nach vMotion tot?

Neulich im VM-Cluster passiert: Wir migrierten mit vMotion eine VM von einem ESX-Host auf einen anderen, anschließend war sie im Netzwerk nicht mehr erreichbar. Dabei funktionierte vMotion immer tadellos.

Weiterlesen…

Gem in a Box: Private Gems unternehmensintern veröffentlichen

Die Ruby-Welt verwendet als Paketsystem RubyGems. Es ist die erste Wahl beim Modularisieren und anschließenden Verteilen von Code aller Art (Bibliotheken, Anwendungsteile, …). Dabei hat sich zur Abhängigkeitsverwaltung Bundler etabliert, es kann die Gems aus verschiedenen Quellen installieren und verwenden. Soll die Quelle allerdings privat und geschützt sein, dann scheiden viele Optionen aus. Gem in a Box kann bei dieser Aufgabenstellung die Lösung sein.

Weiterlesen…