Refactoring von Zeichenketten unter IntelliJ IDEA unterbinden

Die Java-IDE IntelliJ IDEA verfügt über eine Reihe von Refactoring-Methoden. So können Variablen umbenannt, Methoden extrahiert und vieles mehr mit Hilfe der Refactoring-Werkzeuge bewerkstelligt werden. Manchmal schießt die IDE beim Refactoring über das Ziel hinaus. So kann es passieren, das bei der Umbenennung einer Variable nicht nur diese, sondern auch Zeichenketten mit dem gleichen Namen umbenannt werden.

Der Rename-Dialog der IDE

Verantwortlich hierfür ist eine optionale Funktionalität in der Rename-Funktionalität. Um diese zu deaktivieren muss der Rename-Dialog geöffnet werden. Dies geschieht indem die Tastenkombinationen Shift + F6 knapp eine habe Sekunde gedrückt wird, bis der entsprechende Dialog erscheint. In diesem Dialog muss nun die Checkbox mit der Beschreibung Search in comments and strings deaktiviert werden. Anschließend werden nur noch die gewünschten Strukturen im Quellcode umbenannt, ohne dass sich die Umbenennung auf weitere Zeichenketten auswirkt.

Wo befinden sich die Crontab-Dateien?

Wenn Cronjobs auf einem Linux-System angelegt werden sollen, so geschieht dies meist mit dem Befehl:

crontab -e

Damit wird die Crontab-Datei des aktuellen Nutzern in einem Editor geöffnet. Leider verschleiert der Befehl den Ort an dem die eigentlichen Crontab-Dateien liegen. Dies ist z.B. dann interessant wenn ein Backup der Cronjobs eingespielt werden soll. Die entsprechenden Crontab-Dateien befinden sich hierbei im Ordner:

/var/spool/cron/crontabs

Für jeden Nutzer existiert dort eine Datei mit dem entsprechenden Nutzernamen, in welchem die Cronjobs hinterlegt sind. Meistens wird ein solches Backup nach dem Befehl:

crontab -r

benötigt werden. Dieses Befehl löscht die Crontab-Datei des aktuellen Nutzers. Leider ist die E-Taste ein direkter Nachbar der R-Taste. Dies führt dazu das die Crontab-Datei beim Versuch sie zu bearbeiten, bedingt durch einen kleinen Vertipper, ohne Rückfrage gelöscht wird.

3D-Buch-Mockups erzeugen

Wenn ein Buch dargestellt werden soll, so kann natürlich einfach das Cover gezeigt werden. Allerdings wirkt dieses meist etwas künstlich, da die dritte Dimension fehlt.

Ein 3D-Mockup eines Buches

Für dieses Problem bieten sich Dienste an, welche 3D-Mockups aus einem beliebigen Cover erzeugen. Einer dieser Dienste ist der 3D-Mockup-Generator von DIY Book Design. Dort wird ein Cover hochgeladen und anschließend kann der gewünschte Mock-Typ gewählt werden. Neben klassischen Büchern, ist es ebenfalls möglich Mockups von elektronischen Lesegeräten wie dem Kindle zu generieren. Wenige Sekunden später kann das gewünschte 3D-Mockup heruntergeladen werden.

Telemetrie unter Windows 10 deaktivieren

Unter Windows 10 existieren eine Reihe von Telemetrie-Funktionalitäten. Diese senden Daten an Microsoft, welche zur Verbesserung des Nutzererlebnisses und angeblich für die Nutzung der Windows Updates benötigt werden.

In der Diensteverwaltung kann der Dienst abgeschaltet werden

Verantwortlich für die Aufzeichnung der Telemetrie ist der Dienst DiagTrack. Dieser kann über die Diensteverwaltung abgeschaltet werden. Dabei muss nach dem Dienst Benutzererfahrung und Telemetrie im verbundenen Modus gesucht werden. In den Eigenschaften des Dienstes wird anschließend der automatische Start unterbunden und der aktuell laufende Dienst beendet. Damit ist die Telemetrie unter Windows 10 abgeschaltet. Nach größeren Windows-Updates sollten die Einstellungen für den Dienst überprüft werden und der Dienst gegebenenfalls wieder deaktiviert werden.

Enumerationen unter Java mit Eigenschaften ausstatten

Im Gegensatz zu vielen anderen Programmiersprachen sind Enumerationen unter Java ein wenig anders gestrickt. Wird eine Enumerationen dort kompiliert entsteht als Ergebnis eine Klasse. Dieser Umstand kann für interessante Dinge genutzt werden. Während in C# der Enum:

public enum Unit {
    PASCAL,
    PSI
}

eine reine Enumeration, mit zwei Werten, darstellt, kann die Enumeration unter Java mit zusätzlicher Funktionalität ausgestattet werden:

public enum Unit {

    PASCAL("Pascal", 1),
    PSI("Pound-force per square inch", 6.895);

    Unit(String name, double conversionFactor) {
        this.name = name;
        this.conversionFactor = conversionFactor;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getConversionFactor() {
        return conversionFactor;
    }

    public void setConversionFactor(double conversionFactor) {
        this.conversionFactor = conversionFactor;
    }

    private String name;
    private double conversionFactor;
}

In diesem Fall erhält die Enumeration zwei zusätzliche Eigenschaften, einen Namen und einen Faktor zur Umrechnung in Pascal. Bei der Definition der einzelnen Werte der Enumeration werden diese zusätzlichen Eigenschaften über den Konstruktor übergeben. In der Nutzung sieht das Ganze dann wie folgt aus:

Unit unit = Unit.PSI;

System.out.println(unit.getName());
System.out.println("Conversion factor to Pascal: " + unit.getConversionFactor());

Mit dieser Herangehensweise lassen sich Enumerationen unter Java einfach mit dazugehörigen Metadaten bzw. zusätzlichen Informationen anreichern.