Synology NAS: Raid-1 einrichten

Posted: Januar 23rd, 2014 | Filed under: Hardware | Tags: , , , , , , | 24 Comments »

Endlich sind meine 2x4TB Festplatten und das NAS mit dem Namen DS213j aus dem Hause Synology eingetroffen. Diese tolle Kombination will ich verwenden um meine Heimserver-Infrastruktur neu zu gestalten. Nachdem ich die zwei Platten mittlerweile eingebaut und die DS213j gestartet habe, bin ich auf das erste Problem gestoßen.

Speicher-Management

Beim Installationsassistent wurde ich nicht danach gefragt, ob ich ein “normales” RAID-System einrichten möchte; was mich ein wenig stutzig stimmte. “Und wo kann ich jetzt ein RAID1 erstellen”? Falls ihr euch im Unklaren seid, was RAID1 denn überhaupt eigentlich ist, hier eine kleine Erläuterung. Kurz und knapp formuliert bedeuted RAID1, dass eure Daten gleichzeitig auf zwei verschieden Festplatten gespeichert werden. Fällt eine der beiden aus, habt ihr die Daten noch sicher auf eurer zweiten Festplatte.

In folgendem Tutorial will ich euch zeigen, wie ihr aus euren leeren Platten in Windeseile ein RAID1 einrichtet. Öffnet hierzu über den Start-Dialog den Speicher-Manager.

image

Falls bereits ein Volumen existiert könnt ihr dieses problemlos entfernen.

Aber ACHTUNG ALLE DATEN GEHEN VERLOREN . Nachdem ihr das Volumen erfolgreich entfernt habt klickt ihr unter dem Reiter Volume auf den Erstellen-Button (siehe Abbildungen).

image

image

image

image

image

image

image

Das war es schon. Eure zwei Festplatten in der Disk-Station werkeln nun unter dem sichern Schutz von Raid-1…


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.


Aktuelles zum Thema Prozessor

Posted: Januar 16th, 2014 | Filed under: Allgemein, Hardware | Tags: , , , | No Comments »

Wir alle wissen was ein Prozessor ist, dabei handelt es sich im Grunde um das Herz eines Computers oder anderer elektronischer Geräte. Prozessoren dienen hierbei als Recheneinheit, die für die Steuerung eines Rechners zuständig sind. Computer haben Prozessoren, Smartphones haben sie natürlich auch, ebenso Waschmaschinen oder DVD-
Player. Je schneller der Prozessor, desto schneller arbeitet auch das entsprechende Gerät. Wenn ein Computer also über einen eher langsameren Prozessor verfügt, dann dauert es eine Weile, bis Programme aufgerufen werden können und die Arbeit des Computers wird dementsprechend dann langsamer, wenn mehr und mehr Programme gleichzeitig laufen und zu viele Fenster geöffnet wurden. Es erstaunt also nicht, dass die Technik in Bezug auf immer schneller arbeitende Prozessoren entwickelt wird, wo es nur geht.

Aktuell sind verschiedene Prozessoren aber nicht nur in Bezug auf Computer oder Smartphones im Gespräch sondern auch im Hinblick auf die Autos der Zukunft. Wofür braucht man einen Prozessor in einem Auto? Man braucht ihn dann, wenn man das Auto dazu bringen will, sozusagen eigenständig zu denken, zu fahren und zu reagieren. Dies soll die Zukunft der Automobile werden. Selbstfahrende Autos könnten in nur wenigen Jahren Realität sein, auch wenn man sich das heute noch nicht so recht vorstellen kann und will. Auf der CES 2014, der großen Consumer Electronics Show, die jedes Jahr in Las Vegas im US-Bundesstaat Nevada stattfindet, wurde nun ein Prozessor vorgestellt, der es ermöglichen soll, dass ein Auto selbstständig Fußgänger erkennt und Schilder einordnen kann.

image

Bildquelle: saebaryo

Möglich gemacht wird dies vom Chiphersteller Nvidia, der für seine Grafik-Chips bekannt ist. Auf der CES in Las Vegas stellte das Unternehmen den Prozessor Tegra K1 vor. Er wurde extra für die Bildverarbeitung in Fahrzeugen hergestellt und soll mit Kameras ausgerüstete Assistenz-Systeme steuern. Diese Systeme wären mit Hilfe des Prozessors also zum Beispiel dazu in der Lage, Fußgänger rechtzeitig zu bemerken, die über die Straße gehen, den toten Winkel unter Kontrolle zu behalten und Straßenschilder zu erkennen. Ein wahrer Durchbruch im Bereich der selbstständig fahrenden Autos, davon sprechen Experten schon jetzt. Damit könnte sich Nvidia eine Schlüsselposition im Bereich der intelligenten Fahrzeugsysteme sichern.

Um dies möglich zu machen, wurde die Rechenleistung beim Tegra K1 im Vergleich zu bisherigen Prozessoren bei gleichem Stromverbrauch verzehnfacht. Außerdem könne man mit dem K1 die Kontrolle der Bildschirme übernehmen, die im Cockpit die traditionelle Zeigeranzeige für Geschwindigkeit und ähnliches ersetzen sollen. Wird all dies in die Tat umgesetzt, dann könnte es möglicherweise wirklich nicht mehr lange dauern, bis uns ein selbstfahrendes Fahrzeug auf der Straße begegnet. Was im Grunde wie ein Traum für jeden Fahrer klingt, könnte allerdings spätestens dann zum Alptraum werden, wenn die Technik versagt und somit Menschenleben auf dem Spiel stehen. Es bleibt also zu hoffen, dass diese Möglichkeiten erst dann in die Tat umgesetzt werden, wenn die Technik entsprechend ausgereift ist und die Prozessoren die erwünschten Leistungen erbringen können, die dafür nötig sind, dass kein Unfall passieren kann.

Mehr über weitere Innovationen auf der CES 2014 gibt es hier: www.cesweb.org.


Farbtemperatur des Bildschirms an Tageszeit anpassen

Posted: Januar 7th, 2014 | Filed under: Software | Tags: , , , , | 2 Comments »

image

Vor einigen Wochen bin ich auf eine sehr interessante Software mit dem Namen f.lux gestoßen. f.lux passt abhängig vom Standort und der Uhrzeit die Farbtemperatur eures Bildschirmes an. Tagsüber “Sonnenlicht”-ähnlich und am Abend und in der Nach sehr warme Farben. f.lux schont die Augen und ermöglicht euch dadurch besser schlafen zu können. Anbei eine kleines Video bei dem ein vollständiger Tag simuliert wird. Wie ihr sehen könnt verändert sich das Bild von “sehr hell und grell” zu “gemütlich”…

Video

Screenshot

image


Linux: Prozesse anhand der verwendeten Ports darstellen

Posted: Dezember 23rd, 2013 | Filed under: Betriebsysteme, Linux | Tags: , , , | 3 Comments »

Mit folgendem Befehl könnt ihr ausgeben welche Prozesse welchen Port belegen oder verwenden. Ganz praktisch wenn ihr einen kleinen Heimserver betreibt oder bei der Fehlerdiagnose falls ein Port bereits durch einen anderen Prozess belegt wird.

sudo netstat -ntpl

image

Eine Filterung ist wie immer mittels grep-Befehl möglich. Wollt ihr zum Beispiel die Applikation ausgeben, welche Port 8000 verwendet, könnt ihr wie folgt vorgehen:

sudo netstat -ntpl | grep 8000

image