Montag, 22. Mai 2017

SSH

SSH

SSH Tipps

ssh config

Die ssh config (üblicherweise in der Datei ~/.ssh/config zu finden) beschreibt Defaults, die für bestimmte Hosts verwendet werden sollen. Somit kann auf einen Alias-Namen der Host und der Default-Benutzer eingestellt werden, so dass man statt ssh user@host.domain.com einfach ssh h schreiben kann:

Host h
    User user
    Hostname host.domain.com

Konfigurationsparameter, die für alle Verbindungen gelten sollen, kann man am Anfang ohne weitere Host-Aliase eintragen. Hier bieten sich u.a. folgende Parameter an:

Server alive checks

ServerAliveInterval 60
ServerAliveCount 2

Shared control connection

ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster auto
ControlPersist 4h

Falls die Verbindung mit einem Fehler “too long for Unix domain socket” abbrechen sollte, kann man statt dessen den Control-Path ~/.ssh/master-%C versuchen, das einen Hash-Wert verwendet. Bei der Wahl des Pfades ist darauf zu achten, dass dieser vor Lesezugriffen von anderen geschützt ist!

Weiterleitung des Key-Agents

ForwardAgent=yes

Donnerstag, 16. Juni 2016

Unix Befehle

Eine Liste von eher unbekannten Unix Befehlen und Ihre Anwendung

paste

paste kann als Join eingesetzt werden. Dabei werden die einzelnen Zeilen zu einer Zeile zusammengefügt. Als Trenner wird TAB eingesetzt. Alternativ können Trenner mit Hilfe des Parameters -d angegeben werden.

Beispiel:

ls -1 | paste -s 

comm

Vergleicht zwei sortierte Dateien Zeile für Zeile. Sind die Zeilen in beiden Dateien enthalten, werden sie in der dritten Spalte ausgegeben. Sind sie nur in der ersten Datei enthalten, werden sie in der ersten Spalte ausgegeben. Zeilen, die nur in der zweiten Datei enthalten sind, landen in der zweiten Spalte.
Mittels Parametern kann man die Ausgabe der Spalten unterdrücken.

Beispiel:

$ cat 1
a
b
c

tmp$ cat 2
b
c
d

$ comm 1 2
a
		b
		c
	d

column

Der column Befehl erstellt eine Tabelle aus dem Input. Dies kann z.B. verwendet werden, um eine einfache CSV Datei auf dem Bildschirm darzustellen.

Manchmal nützlich

factor

Zerlegt eine Zahl in ihre Primfaktoren

$ factor 666
666: 2 3 3 37

numfmt

Formatiert eine Zahl in SI oder IEC Einheiten und umgekehrt

$ echo 1000000 | numfmt --to=iec
977K
$ echo 1M | numfmt --from=iec
1048576

Dienstag, 7. Juni 2016

Java Fallen

Auch in Java gibt es ein paar Fallstricke, die man kennen muss, um nicht über sie zu stolpern.

Integer Caching

Eine relativ bekannte Sache betrifft das automatische Caching von Integer Werten. Hier werden per Default (JLS7 5.1.7) die Werte zwischen -128 und +127 gecached, so dass zum Beispiel ein Integer.valueOf(10) immer das gleiche Objekt zurückliefert. Die führt dazu, dass folgendes gilt:

Integer.valueOf(10) == Integer.valueOf(10); // true
Integer.valueOf(1000) == Integer.valueOf(1000); // false

Weniger bekannt ist, dass nur der untere Wert fix ist. Der obere Wert lässt sich über die Property java.lang.Integer.IntegerCache.high einstellen.

Double equals behavior

In der Dokumentation ist es zwar vermerkt, aber wer liest schon Dokumentation?

Für einige Grenzfälle verhält sich die equals Methode der Klasse Double anders, als der Vergleichsoperator == des double Typs.

So gilt für NaN (Not A Number) Werte:

Double.NaN == Double.NaN; // false
Double.NaN.equals(Double.NaN); // true

Weiterhin gilt für die vorzeichenbehaftete 0:

+0.0 == -0.0; // true
Double.valueOf(+0.0).equals(Double.valueOf(-0.0)); // false 

Montag, 6. Juni 2016

MacOS: Terminal Output ins Clipboard

Als langjähriger Unix Benutzer verwende ich gerne auch in MacOS ein Terminal, um mir meine Arbeit zu erleichtern. Kurze Ergebnisse lassen sich auch leicht per Copy&Paste in eine andere Applikation tragen. Was aber, wenn das Ergebnis mehr als ein paar Zeilen lang ist? Hier kann man das Ergebnis mittels des Befehls pbcopy in das Clipboard übernehmen. Zum Beispiel:

find . -name "*.java" | pbcopy

Mittwoch, 25. Mai 2016

Maven Dependencymanagement in Eclipse

Wenn man das Spring Plugin (STS) in Eclipse verwendet, kann es passieren, dass der Content-Assistent bei einem Import automatisch Einträge in die pom.xml hinzufügt, da STS Typen aus einer gängigen Liste von Paketen auswählt (siehe Spring Boot: Jar-type Content Assist).
Wenn man seine Dependencies lieber selbstständig verwaltet, kann man dieses Verhalten unter Preferences -> Java -> Editor -> Content Assist -> Advanced abschalten, indem man "Jar Type Search" abwählt.

Quelle: http://stackoverflow.com/questions/25887957/eclipse-automatically-adds-wrong-dependencies-into-pom-xml

Mittwoch, 18. Mai 2016

Lästige ESC Sequenzen in less

Wenn man sich den Output verschiedener log Operationen mit less ansehen möchte, laufen einem immer wieder ESC Sequenzen über den Weg, mit denen Zeilen in diesem Log eingefärbt wurden.

Diese tragen im direkten Output zur Übersichtlichkeit bei, sind im less Output aber störend.

Wenn man dagegen less mit dem Parameter -R startet, werden die ESC Optionen interpretiert und auch in less farbig dargestellt.

 Quelle: https://major.io/2013/05/21/handling-terminal-color-escape-sequences-in-less/

Donnerstag, 17. März 2016