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

Mittwoch, 17. Februar 2016

Eclipse Shortcuts

Eine kleine Sammlung von sinnvollen Shortcuts

  • CTRL+SHIFT+Y: Markierten Bereich lowercase setzen
  • CTRL+SHIFT+X: Markierten Bereich uppercase setzen

(wird bei Bedarf ergänzt)

Dienstag, 16. Februar 2016

Sample einer Oracle-Table

Um ein Sample einer Oracle Table zu bekommen, kann man das folgende Statement benutzen:
SELECT * FROM table123 SAMPLE (0.0001) SEED (4711);
Dieses Statement wählt 0.0001 Prozent der Zeilen der Tabelle aus. Durch das fixe Seed wird auch bei mehreren Aufrufen das gleiche Ergebnis zurückgeliefert (solange sich die Tabelle nicht ändert). Wird das fixe Seed weggelassen, wird ein zufälliges Seed gewählt.