PuTTY: Session automatisch laden

Posted: Januar 29th, 2014 | Filed under: Betriebsysteme, Software, Tutorials, Windows, Windows 7, Windows 8 | Tags: , , , , | 3 Comments »

image

PuTTY ist der wohl beliebteste SSH-Client unter Windows. Trotz der manchmal eigenwilligen Bedienung, bin ich selbst ein großer Fan des Klienten. Ich nutze PuTTY um mich beispielsweise mit meinem NAS oder mit dem SSH-Server meiner Hochschule zu verbinden. Um mich unter Windows noch effizienter und schneller zu verbinden gibt es einen Trick mit dem ihr via Desktop-Verknüpfung direkt eine vordefinierte Session aufbaut.

 

Hier im Beispiel möchte ich nun die vordefinierte Session mit dem Namen “synology” per Doppelklick auf eine Verknüpfung aufbauen.

image

image

Zuerst müsst ihr eine einfache PuTTY-Verknüpfung erstellen; Rechtsklick auf das Icon, und unter dem Formular-Feld “Ziel” folgenden Parameter anhängen:

“C:\Programme\putty.exe” -load “session-name”

image

Jetzt noch mit Buttonklick auf “OK” speichern und gut ist… Nun könnt ihr einfach per Doppelklick auf die jeweilige Desktop-Verknüpfung sofort eure gewünschte Session öffnen ohne sich durch die GUI von PuTTY zu klicken.


Java: JSON als Konfigurationsdatei / properties.ini Alternative

Posted: Januar 18th, 2014 | Filed under: Java, Programmieren, Software, Tutorials | Tags: , , , , , , | No Comments »

imageIn meiner langjährigen Programmiererfahrung hatte ich schon öfters die Ehre mit sogenannten .ini- bzw. Property-Dateien zu arbeiten. Ich muss sagen, wirklich zufrieden war ich damit nie. Oft gab es Probleme mit der Identifikation von boolean Werten. Auch das behandeln von Listen in der jeweiligen Property-Datei war stets ein Sonderfall und handelte mir manchmal Schwierigkeiten ein. Ich glaube nicht mal das meine Abneigung an den prinzipiellen Aufbau und Grundgedanken einer .ini-Dateie gerichtet ist, vielmehr stören mich die mangelhaften Implementierungen der jeweiligen Programmiersprachen.

In folgendem Artikel möchte ich euch meine Implementierung einer Konfigurationsdatei auf Basis von JSON vorstellen. Diese verwendet die Bibliothek GSON und wird für folgende Implementierung benötigt. Wie ihr die Bibliothek in euer Projekt einbinden könnt erfahrt ihr hier nachlasen.

Die Klasse Config.java verwendet den Singleton-Mechanismus. Vorteil: Ihr müsst die Konfigurationsdatei nur einmal laden und erhält im Anschluss darauf Zugriff auf die jeweiligen Attribute innerhalb jeder anderen Klasse in eurer Applikation.

Config.java

package de.roth.json.config;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Config {

    // Hier schreibst du deine Attribute hin
    public String TITLE;
    public int WIDTH;
    public int HEIGHT;
    public double RATIO;
    public ArrayList<String> NAMES;

    public Config() {
        // Hier die Standardwerte der Attribute, falls diese
        // nicht in der Konfigurationsdatei
vorhanden sind. 
          
this.TITLE = "Titel der Anwendung";
        this.WIDTH = 800;
        this.HEIGHT = 600;
        this.RATIO = 0.6;
        this.NAMES = new ArrayList<String>();
        this.NAMES.add("Peter");
        this.NAMES.add("Paul");
    }

    // DON'T TOUCH THE FOLLOWING CODE
    private static Config instance;

    public static Config getInstance() {
        if (instance == null) {
            instance = fromDefaults();
        }
        return instance;
    }

    public static void load(File file) {
        instance = fromFile(file);

        // no config file found
        if (instance == null) {
            instance = fromDefaults();
        }
    }

    public static void load(String file) {
        load(new File(file));
    }

    private static Config fromDefaults() {
        Config config = new Config();
        return config;
    }

    public void toFile(String file) {
        toFile(new File(file));
    }

    public void toFile(File file) {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        String jsonConfig = gson.toJson(this);
        FileWriter writer;
        try {
            writer = new FileWriter(file);
            writer.write(jsonConfig);
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static Config fromFile(File configFile) {
        try {
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(configFile)));
            return gson.fromJson(reader, Config.class);
        } catch (FileNotFoundException e) {
            return null;
        }
    }

    @Override
    public String toString() {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        return gson.toJson(this);
    }
}

Die Verwendung dieser Klasse ist sehr einfach. Schaut selbst:

Test.java

package de.roth.json.config;

public class Test {

    public static void main(String[] args) {
        // Konfigurationsdatei laden, falls vorhanden.
        // Ansonsten werden die Werte im Konstruktor verwendet
        Config.load("config.json");

        // Zugriff auf Attribut
        Config.getInstance().TITLE = "Neuer Titel";
        Config.getInstance().RATIO = 0.4;
        for (String s : Config.getInstance().NAMES) {
            System.out.println(s);
        }

        // Speichern der Konfigurationsdatei
        Config.getInstance().toFile("config.json");
    }
}

Da in unserem Beispiel noch keine Konfigurationsdatei vorhanden war ergibt sich nach dem ändern und sichern der Konfiguration folgende JSON-Datei.

{
  "TITLE": "Neuer Titel",
  "WIDTH": 800,
  "HEIGHT": 600,
  "RATIO": 0.4,
  "NAMES": [
    "Peter",
    "Paul"
  ]
}

Mit Hilfe dieser Implementierung und GSON ist es natürlich auch möglich vollständige Objekte als Konfigurationsattribut abzulegen. GSON löst automatisch jedes Objekt in primitive Datenstrukturen auf und speichert es im Anschluss darauf als JSON-Objekt in der Konfigurationsdatei ab.

GitHub

Den Quellcode zu dem Projekt könnt ihr euch auch auf GitHub ansehen:

https://github.com/frankred/json-config-file

Download

Das ganze Beispiel könnt ihr euch zusätzlich hier als vollständiges Eclipse-Projekt herunterladen.


Windows 8 Bildschirm drehen (via Tastenkombination)

Posted: November 27th, 2013 | Filed under: Betriebsysteme, Tutorials, Windows 8 | Tags: , , , , | 5 Comments »

In Windows8 hat Microsoft Tastenkürzel, sogenannte Hotkeys, eingeführt um den Bildschirm zu drehen. Mit Hilfe der Tasten: STRG + ALT + [PFEILTASTE] könnt ihr eure Bildschirmausgabe entsprechend verändern. Bis der Bildschirm tatsächlich vom Betriebssystem gedreht wurde, vergehen allerdings circa 4 bis 8 Sekunden.

image

image

image

image

Praktisch, falls man gegenüber einer anderen Person sitzt und dieser etwas zeigen möchte. Einfach den Laptop nach hinten kippen und STRG + ALT + [PFEIL NACH UNTEN] drücken.


Java String in Base64 konvertieren

Posted: November 26th, 2013 | Filed under: Java, Programmieren, Tutorials | Tags: , , , , , , , | No Comments »

Mittels Base64 kann man beliebige Binärdaten oder Strings in eine Zeichenfolge aus lesbaren ASCII-Zeichen umwandeln. Momentan setzte ich Base64 ein, um sonderzeichenbehaftet Datei-Pfade in “harmlose” Strings umzuwandeln.  Ein wenig erstaunt hat mich, dass Java dies von Haus aus nicht kann.

Um ein String in Java problemlos in eine Base64-Zeichenketten umzuwandeln könnt ihr die Bibliothek commons-codec aus dem Hause Apache verwenden:

Herunteladen der Bibliothek

Ladet die aktuelle Version der Bibliothek hier runter:

http://commons.apache.org/proper/commons-codec/download_codec.cgi

Zum Beispiel diese hier: http://apache.mirror.iphh.net//commons/codec/binaries/commons-codec-1.8-bin.zip

Entpacken

In der Zip-Datei befinden sich häufig viele *.jar-Dateien, ihr benötigt lediglich die rot markiert Datei. Entpackt diese.

image

Bibliothek ins Projekt importieren

Jetzt müsst ihr die Bibliothek in Form der Jar-Datei in euer Projekt importieren. In eclipse könnt ihr das über die Projekteigenschaften umsetzen. Idealerweise kopiert ihr eure verwendeten Bibliotheken in ein Verzeichnis innerhalb des Projektes, zum Beispiel in den Ordner Libs: [projektname]\lib\commons-codec-1.8.jar

image

image

image

image

image

String in Base64

Nachdem ihr die Bibliothek commons-codecs erfolgreich eingebunden habt, könnt ihr wie folgt Strings nach Base64 codieren.

import org.apache.commons.codec.binary.Base64;

public class ConvertStringToBase64 {

    public static void main(String[] args) {

        String text = "Hallo, was geht ab!";

        // Einen String in Base64 konvertieren (encode)
        String base64 = new String(Base64.encodeBase64(text.getBytes()));

        System.out.println(base64);

        // Einen Base64-String wieder zurück konvertieren (decode)
        String text2 = new String(Base64.decodeBase64(base64));

        System.out.println(text2);
    }
}

Konsolenausgabe:

SGFsbG8sIHdhcyBnZWh0IGFiIQ==
Hallo, was geht ab!

Das war’s auch schon, hoffe ich konnte dem ein oder anderen von euch helfen  😉


Windows 8 Ruhezustand aktivieren

Posted: November 7th, 2013 | Filed under: Betriebsysteme, Software, Tutorials, Windows 8 | Tags: , , , , | No Comments »

Aus meiner Sicht ist der Ruhezustand die effektivste Art um seinen Laptop in den Tiefschlaf zu schicken. Im Gegensatz zu dem “Energie sparen”-Modus ist der Rechner im Ruhezustand vollständig ausgeschaltet. Alle Zustände laufender Programme werden auf die Festplatte geschrieben und beim Start des Rechners wieder aktiviert. Beim “Energie sparen”-Modus hingegen bleiben die Programmabbildungen im RAM gesichert, dieser muss dann dauerhaft mit Strom versorgt werden, welches dann unnötigerweise Saft aus dem Akku zieht.

Wieso Microsoft den Ruhezustand in jedem seiner Betriebssystem nur versteckt zur Verfügung stellt weiß ich nicht genau, aber es könnte daran liegen dass manche Programme nicht mehr einwandfrei wieder gestartet werden können, das macht mir persönlich jedoch gar nichts.

Ihr könnt wie folgt den Ruhezustand in Windows 8 aktivieren:

1) Energieoptionen öffnen

Die Energieoptionen könnt ihr mit Hilfe folgender Tastenkombination öffnen: WINDOWS + X   => Energieoptionen

image

2) Auswählen, was beim Drücken des Netzschalters geschehen soll

image

3) Einige Einstellungen sind momentan nicht verfügbar

image

4) Haken setzen bei “Ruhezustand”

Nach unten scrollen und den Haken setzen bei “Ruhezustand”, Änderungen speichern und fertig!

image

5) Fertig

image

Viel Spaß mit eurem neuen Ruhezustand =)