Select Page

NETWAYS Blog

Daily business: der Editor vim

Es ist unerfreulich lange her, dass ich das erste Mal mit vim in Berührung kam — anno 1997, um genau zu sein, während meiner ersten verzweifelten Gehversuche in Sachen S.u.S.E. Linux. Oder war das noch vi? So irgendwie habe ich das Tool über die Jahre dann hinter mir her geschleift wie eine altmodische Handtasche, mich aber viel zu spät erst ernsthafter damit befasst — ein blöder Fehler, vor dem ich einige von euch ja vielleicht bewahren kann. Denn was viele (und gerade auch Neueinsteiger) gar nicht zu ahnen scheinen: vim ist üblicherweise auf Systemen vorhanden, kann viel, ist ziemlich cool und in der Handhabung auch gar nicht so widerlich, wenn man sich erst leidlich eingearbeitet hat.

Die Konfiguration des Editors erfolgt in einer Textdatei namens .vimrc, welche im $HOME-Verzeichnis des jeweiligen Nutzers liegen muss. Beginnen wir diese Datei mit nocompatible: denn ein compatible vim ist lediglich noch ein vi, sprich alle nützlichen Erweiterungen und Errungenschaften der letzten 20 Jahre würden abgeschaltet — und wer will das schon?

set nocompatible " Using vim settings and not vi

Widmen wir uns also einigen kleinen Kniffen, die mir für die tägliche Arbeit inzwischen unverzichtbar geworden sind: naturgemäß (und da ich gerade einen Haufen müffelnden Puppet-Codes in Richtung Ansible transportieren darf) editiere ich aktuell häufig an YAML-Dateien herum, und da ist das Thema „Einrückungen“ beispielsweise sehr relevant: YAML kennt, plump gesagt, keine Tabs, und so bewährt es sich sehr in der persönlichen .vimrc bereits festzuhalten, dass ein Tab beispielsweise durch zwei Leerzeichen ersetzt wird und Einrückungen ebenfalls zwei Leerzeichen betragen sollen. Protipp: Lasst außerdem über existierende Dateien ein :retab laufen, so dass alle eventuell vorhandenen Tabs gemäß eurer Konfiguration in Leerzeichen umgesetzt werden — die Einstellungen greifen nicht automatisch bei bereits bestehendem Text. Und: möchtet ihr YAML anders einrücken als beispielsweise C oder PHP, so beschäftigt euch mit den Möglichkeiten, die autocmd bietet!

set autoindent " Guess what?
filetype plugin indent on " Enable indenting for files
set backspace=indent,eol,start " Allow backspacing over indention/ line breaks/ insertion start
set softtabstop=2 " Indent 2 spaces when hitting TAB
set shiftwidth=2 " Indend 2 spaces when autoindent
set tabstop=2 " Show existing tab with 2 spaces width
set expandtab " Convert tabs into spaces

Gerade bei YAML hilft es mir häufig sehr wenn ich sehe, an welcher Stelle im Dokument ich mich gerade befinde; deshalb lasse ich mir die Zeilen durchnummerieren und mittels Unterstreichung die aktuelle Position anzeigen. Syntax Highlighting ist natürlich großartig, das will ich unbedingt, und durch eine einfache Anweisung sorgt zukünftig für die visuelle Hervorhebung zusammengehörender Klammern. Protipp: während number die Zeilen aufsteigend durchnummeriert, stellt relativenumber die Zeilennummern relativ zur aktuellen Position dar.

set number " Enable line numbers
syntax on " Set syntax highlighting
set showmatch " Show matching brackets
set cursorline " Highlight line under cursor
set cursorcolumn " Highlight column

Was bei der täglichen Arbeit hilft: eine Statuszeile, die mit genau jenen Informationen aufwartet, die persönlich hilfreich sind. In meinem Fall sind das Angaben wie Dateiname, beispielsweise, Dateityp oder an welcher Stelle — prozentual gesehen — ich mich innerhalb meiner Datei gerade befinde. Für euch sind hier vielleicht ganz andere Informationen wichtig, weshalb ich euch die Lektüre der entsprechenden Dokumentation ans Herz legen möchte.

set laststatus=2 " Show status line
set statusline=%t " tail of filename
set statusline+=\ %{&ff} " File format
set statusline+=\ %y " Filetype
set statusline+=\ %c, " Cursor column
set statusline+=%l/%L " Cursor line/ total lines
set statusline+=\ %P " Percent through file

Was ich wirklich zu lieben lernte: undo und redo. Die Basics kennen noch die meisten: u macht die letzte Änderung rückgängig, uuu die letzten drei und 5u die letzten fünf. Wirklich interessant wird das allerdings, wenn man es mit Zeiträumen verbindet: so macht earlier 2m (alternativ: ea 2m) die Änderungen der letzten zwei Minuten rückgängig, wohingegen later 5m (alternativ: lat 5m) alle Änderungen der letzten fünf Minuten wiederherstellt. Die Sache hat nur einen Haken: wie fast überall sind diese Statements nur innerhalb der laufenden Sitzung möglich; wird der Editor beendet und die gleiche Datei später erneut editiert, ist keine History der bisherigen Änderungen verfügbar.
Wenig überraschend lässt sich auch das anpassen: über set undofile weisen wir vim an, die Änderungen jeder Datei zu persistieren; vim tut das dann jeweils in Form eines hidden file an gleicher Stelle, was auf Dauer etwas unübersichtlich werden könnte. Erstellen wir mittels mkdir ~/.vim/undo ein eigenes Verzeichnis für Dateien dieser Art, können wir vim aber auch instruieren all diese Änderunsdateien dort vorzuhalten. Das erlaubt dann auch umfangreiche Zeitsprünge: ea 3d wird die Änderungen der letzten drei Tage rückgängig machen.

set undofile " Undo history even between sessions
set undodir=~/.vim/undo " All undo files in one directory

Zuguterletzt verpassen wir unserem vim ein hübsches colorscheme — eine Auswahl solch vordefinierter Farbschemata findet sich, in Abhängigkeit verwendeter Version und Distribution, üblicherweise in /usr/share/vim/vim$VERSION/colors/ in Form von .txt-Dateien. Ich entscheide mich für desert, ihr könnt euch aussuchen was euch am besten gefällt und versiertere Nutzer erstellen sich ihre colorschemes später dann ohnehin selber… Und wenn wir ohnehin gerade mit Farbgebungen spielen lassen wir uns die Zeilennummer spaßeshalber rot hinterlegen, während die Hervorhebung der Spalte in einem aufdringlichen hellen Magenta erfolgen soll. Einschub: eine Liste verfügbarer Farben lässt sich aus vim heraus unkompliziert mit dem Kommando :h cterm-color abrufen.

colorscheme desert " Setting nice colors
highlight CursorLineNR ctermbg=red
highlight CursorColumn ctermbg=LightMagenta

Es gäbe noch So! Viel! Mehr! Belassen wir es für heute mal dabei. Eine einsatzbereite exemplarische vimrc-demo findet ihr auf GitHub; sie ist nicht als „finale Fassung“ zu verstehen sondern vielmehr als Ausgangspunkt für die Erarbeitung einer persönlichen und über die Zeit immer perfekteren Version. Und vielleicht wollt ihr über die Kommentare verraten, ob Artikel dieser Art hilfreich für euch sind — und welche Einstellung, welches Plugin, welcher Kniff für euch unverzichtbar ist?

Marianne Spiller
Marianne Spiller
Senior Consultant

Nachdem sie über Jahre immer wieder für eine NETWAYS Mitarbeiterin gehalten wurde, hat sie im März 2020 ernst gemacht und wurde eine. Als Senior Consultant unterstützt sie fortan Professional Services. Ihre Freizeit widmet sie in weiten Teilen dem Schreiben, man findet sie aber auch häufig mit Kamera und Stativ auf unwegsamem Gelände.

GTD ohne Equipment

Hallo Miteinand !

Ich wollte eigentlich aus dem Homeoffice nicht einen üblichen Home Office Blogpost veröffentlichen aber ich wollte euch kurz daran teilhaben lassen, wie man mit minimalsten Gegebenheiten doch noch sein Arbeitspensum ggf. durch die Tür bekommt.

Ich hatte das grosse Pech das mein privates Macbook Pro aus dem Jahr 2016 den Weg allen irdischen gegangen ist und sich mit einer kombi aus exhausted Battery und Display/Grafikkarten Fehler + Wlan Modul Tod verabschiedet hat. Die Batterie ist ersetzbar, aber die anderen Sachen wären aktuell nicht mehr rechtfertigbar. So kurz vor dem Release neuer Hardware.

Ich musste also 2 Tage bis mein Firmenersatzlaptop kam etwas Zeit überbrücken. Das funkionierte sogar besser als geplant und an einigen Stellen schlechter.

Als Ersatz hatte ich nicht viel zur Hand. Ich hatte mein privat genutztes IPad Pro (IOs 13.x) eine Tastatur + Maus der Marke Logitech. IOs 13 wegen dem Maussupport welcher brauchbar ist als OS auf dem IPad. Alternativ läge hier auch noch ein Kindle Fire 7 rum welcher auch seinen Dienst getan hätte.

Keyboard

Keyboard


Das Keyboard ist das K380 in weiss + eine M171 Funkmaus. Man kann das ganze wenn man einen aktuellen Screen hat gemütlich per USB-C verbinden damit wenigstens von der Bildschirmgrösse etwas mehr sichtbar ist. Das ist aber schon purer Luxus.

Das Tablet kann man aber auch durch ein beliebiges Android Tablet der Marke X austauschen. Ich versuche hier Software bzw. Hardware Agnostisch zu sein. Für Office schreibsachen bin ich auf Office 365 Web zurückgefallen. Was Datenschutztechnisch für eine menge Leute nicht in Frage kommt. Es gibt aber auch die dedizierten Apps für IOs und Android somit muss nichts in die Cloud geladen werden.

Kommen wir zum Codehacking Part. Nun da man schlecht direkt auf dem IPad eine virtuelle Maschine mit Vagrant hochziehen kann musste ich wohl oder übel auf gehostete Services zurückgreifen. Zum einen unser einges (https://cloud.netways.de) welches es mir ermöglichte per Openstack Teststellungen zu bauen und testen. Als auch Azure (Terraform) und Bernds Schmuddelkind Nummer eins (AWS). Keines machte grossartig Zicken per Safari. Dies sollte auch per Android (Chrome) keine Probleme darstellen. Es braucht aber einen Sinnvollen SSH Client für das jeweilige Tablett damit man sich in der gehosteten VM zumindest Anmelden kann Ich benutze Termius (https://www.termius.com/) auf IOs. Es hat auch bezahl Features welche ich eigentlich aber gar nicht brauche (SFTP). Die funktionale Alternative auf Android ist Juice (https://juicessh.com/).

Termius Screenshot


Oh natürlich kommt nun die Frage auf wie man nun denn Code editiert. Klar ich muss mir von der VM die Sachen nochmal ziehen oder auf den virtuellen Desktop was aber per dedizierter VNC Viewer App (IOs/Android) (https://www.realvnc.com/en/connect/download/viewer/ios/) oder dem Microsoft Remote Desktop gut gelingt. (https://apps.apple.com/de/app/microsoft-remote-desktop/id714464092?l=en) 
Auch die anderen Remote Desktop Tools sind vertreten wie der bei uns benutzte Anydesk Client (https://anydesk.com/en/downloads/ios) und das nicht Todzubekommende Webex ist am Start (https://apps.apple.com/de/app/cisco-webex-meetings/id298844386?l=en). Beide Tools sind natürlich auch in einer Android Version erhältlich.

Aber zurück zu dem Editor. Ich muss gestehen das ist der Part welcher mich am meisten begrenzt hat. Mit Begrenzt meine ich nicht das es keine Auzwahl gibt. Ich bin eher ein barebones Nutzer der nicht viele Ansprüche hat. Ich brauch keine Codeergänzung, keine Autokorrektur usw. Ich gestehe ich bin mit Vim auf den VMs vollkommen zufrieden gewesen. Auch mit git welches in den VMs installiert war.

Ich würde aber zu cloud9 tendieren (Bernd ist sicher begeistert 🙂 ) (https://aws.amazon.com/cloud9/). Die alten Hasen von Panic Software haben noch Coda 2 zur Hand. (https://www.panic.com/coda/). Wobei mir deren Preisgestaltung bitter aufstösst.

Last But not least gibt es sicher auch noch für Selbsthoster Eclipse CHE. (https://www.eclipse.org/che/). Zu der kann ich leider nichts sagen, keinerlei Erfahrung meinerseits im Handling.
Gitlab hat auch eine Web IDE welche aber einen seltsamen Workflow hat. Man muss die einzelnen Files nach änderung mergen :S.

Die üblichen Kollaborationstools wie Slack, Rocketchat, Microsoft Teams gibt es auch bzw. Funktionieren auch auf mobile Geräten relativ Problemlos. Wenn alles versagt muss man halt sich per Handy in die Online Telko einwählen was manchmal doch erstaunliche Sprachqualitaet zu Tage fördert. (NO More VBR in VOIP).

Fazit:
So bin ich bis mein Arbeitslaptop da war per UPS gut durch die Zeit gekommen und konnte meinen Aufgaben gerecht werden.
Ich würde einen nativen USB-C Monitor favorisieren und ggf. Im Nachblick mir einen Browser wünschen welcher an einem externen Monitor die seitlichen schwarzen 4:3 Balken verschwinden lässt. (IOs Problem)(Lost Screen Estate) und eine IDE welche entweder als App mit frei einhängbaren Online Speicher funktioniert oder eine simpel funktionierende Web IDE.

Ich freue mich wenn ihr mir Sagen würdet  wie ihr so etwas überbrückt.

Gruss

David

Nachtrag:
Just als ich den Blogpost fertig hatte fand ich die folgende App.
Shiftscreen (https://apps.apple.com/de/app/shiftscreen/id1498683180?l=en) scheint zumindest teilweise das Black Bars Problem (IOs) zu beheben.

David Okon
David Okon
Support Engineer

Weltenbummler David hat aus Berlin fast den direkten Weg zu uns nach Nürnberg genommen. Bevor er hier anheuerte, gab es einen kleinen Schlenker nach Irland, England, Frankreich und in die Niederlande. Alles nur, damit er sein Know How als IHK Geprüfter DOSenöffner so sehr vertiefen konnte, dass er vom Apple Consultant den Sprung in unser Professional Services-Team wagen konnte. Er ist stolzer Papa eines Sohnemanns und bei uns mit der Mission unterwegs, unsere Kunden zu...

Gitlab Johnyj12345 Hack

Yesterday we received the information that there is a new Gitlab “hack” which could affect older versions of Gitlab. If affected it will behave like this:

The publicly visible procedure is always the same: Johny creates one or more issues that are linked with each other and at the end of the link cascade there’s either an attached file or a link to a file which holds Gitlab’s secrets.yml.

Source: https://blog.philipp-trommler.me/posts/2020/07/13/security-possible-gitlab-hack-johnyj12345/

It seems like the vulnerability was fixed with these security release:
https://about.gitlab.com/releases/2020/03/26/security-release-12-dot-9-dot-1-released/

The NWS team wrote some scripts to see if any of the Gitlab CE / Gitlab EE apps are affected, which was not the case, also because NWS apps are running on the latest version of Gitlab.

This issue is very critical since the secrets.yml can be found with a simple web search and contains informations like:

  • secret_key_base
  • db_key_base
  • otp_key_base

 

If you are affected, you should

  • take down your Gitlab instance
  • remove the user
  • remove the issues
  • update your instance.

Best would be to also reset the “secrets.yml”, but as far as i know, there is currently no way to do so.

 

Here is a short script to check quick if the user exists (if you don’t want to check via web interface):

#!/bin/bash

echo "User.all" | gitlab-rails console | grep "Johny12345" 2>&1
response=`echo $?`

if [ $response == "0" ]; then
echo "[ALERT] Johny was here ... "
else
echo "[OK] No Johny found ..."
fi

Marius Gebert
Marius Gebert
Systems Engineer

Marius ist seit 2013 bei NETWAYS. Er hat 2016 seine Ausbildung zum Fachinformatiker für Systemintegration absolviert und ist nun im Web Services Team tätig. Hier kümmert er sich mit seinen Kollegen um die NWS Plattform und alles was hiermit zusammen hängt. 2017 hat Marius die Prüfung zum Ausbilder abgelegt und kümmert sich in seiner Abteilung um die Ausbildung unserer jungen Kollegen. Seine Freizeit verbringt Marius gerne an der frischen Luft und ist für jeden Spaß zu...

Die Out of the Box Experience

Hallo!

Ich würde gern ein aktuelles Thema aufgreifen, das in letzter Zeit viele Leute beschäftigt. Da aus aktuellem Anlass viele Leute ins Homeoffice gehen mussten und nun von dort ihre Arbeit verrichten, haben viele neue Monitore, Rechner, Mikros und Software erhalten, um dies zu bewältigen.

Nun gibt es aber die schon oben beschriebene Erfahrung, die aus rein subjektiver Sicht entscheidet, ob man mit dem neuen Produkt zufrieden ist oder es gleich wieder einpacken und zurückschicken will.

Das Feld ‘Videokonferenzen’ will ich hier gar nicht betreten. Da hat jeder andere Präferenzen.

Mir geht es in dem Blogpost eher um die “Experience”, ein tolles Marketing-Buzzword, bei dem sich am liebsten jeder unter der Couch verstecken möchte. Die Erfahrung, die man mit dem jeweiligen Produkt direkt nach dem Auspacken macht, ist sehr variabel.

Nehmen wir mal als Beispiel einen neuen Firmenlaptop. Wir haben ihn aus der Verpackung gepult und drücken auf den Powerknopf und unsere neue Kiste mit SSD und mehr Speicher & CPU Kraft aller Großrechner in den 80zigern dümpelt 5 Minuten in einem Regenbogenfarbenen Waiting Screen von Windows umher in dem uns mitgeteilt wird das wir uns freuen dürfen das ‘now’ etwas für uns passiert.

NOT!!!! Jemanden warten zu lassen ist keine ‘Gute’ Out of the Box Erfahrung. Auch 4-5 Sicherheitsfragen welche sowas lustiges wissen wollen wie “Was war ihr erstes Haustier” … sind eher Anti Security .. Rein statistisch hat man hier schon in den USA mit sowas wie ‘Spot’ einen Treffer um in einen Benutzeraccount rein zu kommen.

Idealerweise sollte man nicht warten müssen . NEVER make your Customer wait.

Das wussten selbst Betriebssysteme aus der prähistorischen Ära. Einschalten, Loslegen. C64 => Einschalten und READY.
Selbst die Amiga Workbench war nach dem Starten direkt verfügbar und auch Atari TOS auf dem ST. Nun sind wir im Jahr 2020 AD.

Aus Sicht eines Endbenutzers ist das keine gute Erfahrung (Warten, abgreifen personenbezogener Daten für Marketing-Zwecke, Sicherheitsexploit-Fragen) und zum goldenen Abschluss, nachdem man die ganze Prozedur hinter sich hat, kommt noch ein haufen Autoupdates, die noch installiert werden müssen, bevor man effektiv anfangen kann zu arbeiten.

Selbst bei Konsolen ist die Out of the Box Erfahrung … inzwischen hundsmiserabel.
Früher: SNES Spiel in die Konsole stecken und läuft. Heute: Mindestens 2 Anmeldungen. Einmal Hersteller spezifisch XBox Account/STEAM Account/PSX Account und dann gegebenenfalls nochmal die des Spieleherstellers und dessen Plattform inkl. Werbung.

Das künstliche Gold der Marketing/Wertschöpfungskette von Daten, die nur um deren Selbstwillen für User Tracking generiert werden, ist bis in das einfachste Produkt vorgedrungen. Selbst meine Bose Wireless Kopfhörer wollen meinen Alex Account Zugriff um mir ‘Mehr Info’ liefern zu können.

Da ich nun sehr abgedriftet bin von der Thematik: Die “Auspack und sofort Loslegen Erfahrung” ist sehr “Simplismus” geprägt, man findet die “Out of the Box” Erfahrung am idealsten, wenn man direkt loslegen kann.
Kein wenn und kein aber.
Zu einem späteren Zeitpunkt können die Settings des Produktes verfeinert werden. Also ggf. einen Account anlegen, höhere Security Settings setzen und andere Einstellungen vornehmen.

Aber die Defaults sollten IMMER zu einem produktiven Ergebnis führen.

Software ist auch ein Werkzeug wie ein Schraubenzieher. Der will auch nicht, dass ich bei ‘Binford’ einen Account anlege. bevor ich die erste Schraube in das Holzbrett drehe. Software & Betriebssysteme sollten allgemein wieder auf Funktionalität ausgelegt werden anstelle von Subscription ‘featureitis’ …

Das baut nur unnötige Hürden und Fehlerquellen auf und dient nur dem Selbstzweck.
Einstecken, Einschalten & Loslegen war mal die Devise – ich hoffe, dass nach all den bitteren Erfahrungen der letzten Zeit wieder auf diese Out of the Box Erfahrung Wert gelegt wird.

In dem Sinne ‘Good Luck and Good Night’

Bis zum nächsten Mal

David

Das Nette Katzenfoto wurde bereitgestellt von

Photo by DNK.PHOTO on Unsplash.

David Okon
David Okon
Support Engineer

Weltenbummler David hat aus Berlin fast den direkten Weg zu uns nach Nürnberg genommen. Bevor er hier anheuerte, gab es einen kleinen Schlenker nach Irland, England, Frankreich und in die Niederlande. Alles nur, damit er sein Know How als IHK Geprüfter DOSenöffner so sehr vertiefen konnte, dass er vom Apple Consultant den Sprung in unser Professional Services-Team wagen konnte. Er ist stolzer Papa eines Sohnemanns und bei uns mit der Mission unterwegs, unsere Kunden zu...

Neue Icinga Web Themes verfügbar! – Bayerisch, Fränkisch, Österreichisch

Zum Abschluss der Woche möchte ich noch unseren April-Scherz auflösen. Solltet ihr ernsthaft gedacht haben, dass wir diese Themes wirklich bauen…

 

Dann habt ihr genau richtig gelegen!

 

Bayerisch

Github: https://github.com/NETWAYS/icingaweb2-theme-bayerisch

 

 

 

 

Fränkisch

Github: https://github.com/NETWAYS/icingaweb2-theme-fraenkisch

 

 

 

 

Österreichisch

Github: https://github.com/NETWAYS/icingaweb2-theme-oesterreichisch

 

 

 

 

 

 

Viel Spaß damit!

 

Tobias Redel
Tobias Redel
Head of Professional Services

Tobias hat nach seiner Ausbildung als Fachinformatiker bei der Deutschen Telekom bei T-Systems gearbeitet. Seit August 2008 ist er bei NETWAYS, wo er in der Consulting-Truppe unsere Kunden in Sachen Open Source, Monitoring und Systems Management unterstützt. Insgeheim führt er jedoch ein Doppelleben als Travel-Hacker, arbeitet an seiner dritten Millionen Euro (aus den ersten beiden ist nix geworden) und versucht die Weltherrschaft an sich zu reißen.

Veranstaltungen

Tue 27

GitLab Training | Online

October 27 @ 09:00 - October 28 @ 17:00
Tue 27

Graylog Training | Online

October 27 @ 09:00 - October 28 @ 17:00
NETWAYS Headquarter | Nürnberg
Nov 04

Vorstellung der Monitoring Lösung Icinga 2

November 4 @ 10:30 - 11:30
NETWAYS Headquarter | Nürnberg
Nov 24

Elastic Stack Training | Online

November 24 @ 09:00 - November 26 @ 17:00
Dec 01

Foreman Training | Nürnberg

December 1 @ 09:00 - December 2 @ 17:00
NETWAYS Headquarter | Nürnberg