Wissenswertes

Vim als einfache IDE nutzen

Vim bringt eigentlich schon alles mit um es als IDE zu nutzen.

Vim bringt eigentlich schon alles mit um es als IDE zu nutzen.

Eine IDE installieren und nutzen kann jeder, aber vim als IDE nutzen? Ich zeige ein paar Einstellungen, Shortcuts und Funktionen von vim, die es zu einer IDE machen. Dabei werde ich keine Plugins und keine Magie nutzen, denn vim kann bereits alles nötige.

Das sind die Funktionen, die ich zeige und um die ich die Standard Konfiguration erweitern werde:

  • Bedienung, die vim schon kann:
    • Standard zeug: Öffnen, speichern, schließen, …
    • Dateiexplorer
    • Tabs öffnen und nutzen
    • Bildschirm teilen
  • Navigation, die vim schon kann:
    • Suchen, ersetzen,
    • Springen (z.B. zum nächsten Vorkommnis, zur Definition, …)
  • Software bauen (build & run)
    • Debugging
  • Mit Anpassungen an vim:
    • Zeilennummern, Syntax highlighting, Cursor-Zeile hervorheben, …
    • Autovervollständigung mit drop-down Menü

Mehr Anpassungen sind das auch nicht.

Grundlegende Bedienung von vim

Das mit dem Modi sollte man schon drauf haben. Hier auch nur ganz kurz das Wichtigste:

  • Datei öffnen (ohne Tabs): :e /path/to/file
  • Datei speichern: :w
  • Datei schließen: :q und wenn du nicht vorher speichern möchtest: :q!
  • Hilfe anschauen: :help Befehl

Eingebauter Dateiexplorer

(mehr …)

CLI-Argumente in Bash-Scripten parsen

Argumente zu parsen ist nicht schwer. Auch nicht in Bash-Scripten.

Argumente zu parsen ist nicht schwer. Auch nicht in Bash-Scripten.

Es gibt viele Möglichkeiten Parameter, die an ein Bash Script übergeben wurden, zu verarbeiten. Hier zwei ähnliche Varianten, die das Parameterschema -o /foo/ und --output=/foo/ behandeln können. Das zweite Beispiel zeigt zudem noch die Verwendung von Kommandos.

String Manipulation mit Bash-Hausmitteln

Falls du mit String Manipulation (z.B. ${var#=*} oder Ähnliches) noch nicht vertraut bist, rate ich dir hier weiter zu lesen. In den folgenden Scripten holen wir uns aus Strings immer einen Teilstring. Der Befehl dabei sieht immer wie folgt aus: ${<VARIABLE><SPLIT-CHARS><REGEX>}

Die Split-Chars definieren was hinterher raus kommt, denn das Ergebnis ist immer ein zusammenhängender String. Von denen gibt es vier verschiedene: (mehr …)

Passwort Seite überarbeitet

Ein sicheres Passwort muss nicht kompliziert sein, aber ein paar Kriterien erfüllen.

Ein sicheres Passwort muss nicht kompliziert sein, aber ein paar Kriterien erfüllen.

Nur kurz ein Hinweis in eigener Sache: Ich habe die Seite über das Erstellen von Passwörtern überarbeitet.

Was sich geändert hat

Was ich geändert habe ich eigentlich alles. Jetzt ist es mehr Fakten gestützt, leichter verständlich und es wird eher die Frage nach dem „warum“ und nicht mehr ausschließlich die nach dem „wie“ behandelt.

Zudem gibt es jetzt viele Gedankenexperimente, die sehr anschaulich zeigen was für ein Unterschied z.B. die Länge eines Passwortes für dessen Sicherheit aus macht.

Was ihr dort finden werdet

  • Hintergrundwissen
    • Wie werden Passwörter gespeichert und geknackt?
    • Grober Überblick über Hashwerte und Hashfunktionen
    • Kriterien an sichere Passwörter?
  • Passwort Erstellung und Umgang
    • Methoden: Diceware und Generator
    • Hinweise zum sicheren Umgang

Viel Spaß damit und her mit Kritik und Verbesserungsvorschlägen 🙂

Zur Seite

OS-Internals #2: Ext2 und Dateien in Linux

In Linux ist alles eine Datei, selbst Ordner und Geräte.

In Linux ist alles eine Datei, selbst Ordner und Geräte.

In Linux gibt es bezüglich Dingen wie Dateien, Ordnern, Geräten, Schnittstellen und Verknüpfungen eine schöne Regel: „On a UNIX system, everything is a file; if something is not a file, it is a process.“. Bei Linux ist also alles eine Datei (ja, auch Ordner sind Dateien), darum sollten wir mal einen genaueren Blick darauf werfen.

Dateisystem: ext2 und inodes

Da man Dateien nicht einfach hintereinander weg speichern kann (da sich z.B. die Größe ändern kann), greifen UNIX-Systeme meist auf das Konzept der inode (index node) zurück. Um zu verstehen, was eine inode ist, sollte man sich aber anschauen, wie z.B. das ext2 Dateisystem (welches inodes benutzt und auf dem viele weitere Dateisysteme basieren) funktioniert.

Zunächst zur Hardware: Ein Block ist eine Menge von Sektoren einer Festplatte, wobei ein Sektor die kleinste zu adressierende Einheit einer Festplatte ist. Ein Block ist normalerweise 1, 2, 4 oder 8 KiB groß (also ggf. ein Zusammenschluss von Sektoren), was bei der Formatierung der Festplatte angegeben wird. Fasst man mehrere Blöcke zusammen ist es eine block group.

Kommen wir jetzt zur inode, was im Prinzip nichts weiter als eine block group ist. Sie ist 128 bytes groß und enthält Metadaten und Referenzen auf weitere Blöcke.
Jede Datei ist eine Referenz auf genau eine inode, wobei die eigentlichen Daten eben in anderen inodes liegen und referenziert werden. Es gibt 12 direkte Referenzen und 3 weitere Referenzen, die jeweils auf cluster zeigen. Ein cluster enthält 256 Referenzen auf weitere cluster oder inodes. Dadurch kann eine Datei bis zu 2 TiB groß werden. (mehr …)

Seminar-Arbeit über peer-to-peer Netzwerke

Da ich mit etwas Verspätung endlich meine Note für meine Seminararbeit über peer-to-peer Netzwerke bekommen habe, stelle ich nun auch die Arbeit hier zur Verfügung.

Es geht dabei um P2P (peer-to-peer) Netzwerke und ihr Einsatz in der verteilten Software Entwicklung, wobei der Fokus eher auf technische Details liegt. Wer also einen groben Einblick in BitTorrent und ein darauf basierendes Protokoll (apt-p2p) bekommen möchte, kann sich die Arbeit gerne durchlesen.

BitTorrent als peer-to-peer Protokoll steht in der Arbeit stark im Fokus.

BitTorrent als peer-to-peer Protokoll steht in der Arbeit stark im Fokus.

In der ersten Hälfte der Arbeit geht es hauptsächlich im die technischen Details rund um BitTorrent. Das Protokoll apt-p2p implementiert eine leicht veränderte Variante von BitTorrent mit interessanten Ideen zur Performance Optimierung. Für viele sehr kleine Dateien (eben Pakete vom apt-Paketmanager) ist BitTorrent nämlich richtig schlecht. Auch gibt es ein verteiltes Versionierungssystem, welches an BitTorrent angelehnt ist.

Hier sind die Dateien

PDF
der Arbeit, wie sie bei der Abgabe war.

ZIP
der Quelldateien (inklusive Vortrag, BibTeX und Bilddateien)

Alle anderen Paper befinden sich natürlich weiterhin unter Wissenswertes → Paper.