Alle Beiträge

Markdown – eine Möglichkeit eBooks auszuzeichnen

Wie erstellt man eigene eBooks? Markdown? LaTex?

Dokumentenstatus: – in Entwicklung –
Stand: 13/01/2019

Als erstes mal  den Wikipedia-Artikel  lesen. Kurz gesagt ist Markdown eine Aufzeichnungssprache wie z.B HTML mit einem gewaltigen Vorteil: Markdown kann man auch ohne irgend einem Anzeigeprogramm mit einem ganz üblichen Editor wie vim, nano oder Notepad lesen. Dieses Format lässt sich nahezu in jedes beliebige Format übersetzen. Ich erstelle und Compiliere Markdown Dateien mit folgenden

Programmpaketen:

  • Editor: vim und texmaker sowie LyX
  • Parser: pandoc

Der allergrößte Vorteil von Markdown besteht tatsächlich darin das man es auch problemlos im reinen Textformat leicht lesen kann ohne irgend welche zusätzlichen Programme.


Linksammlung:

FAQ: vi und vim (deutsch)

Fragen und Antworten rund um den exzellenten Editor vi und vim

Stand: 28-07-2018
von Adam Jaquet

Diese FAQ richtet sich an Neueinsteiger die bereits das interne Tutorial durchgearbeitet haben. Vim ist meiner persönlichen Meinung nach der effektivste Texteditor den es gibt. Ich verwende ihn durchweg für alles was irgendwie mit Text zu tun hat. Im Buch „Der Pragmatische Programmierer“ lass ich irgendwann einmal sinngemäß die Aussage „Verwende anstatt für jedes Format einen anderen Editor lieber einen Editor für alles. Verwende nur einen Editor, den aber richtig!„. Vim ist für mich nicht nur ein Editor sondern eine IDE für alle Programmiersprachen. Ich mache alles mit Vim, egal ob im X-Window oder Terminal/ Konsole. Und dann gibt es noch gvim. Man kann vim mit GUI starten mit der Option vim -g (falls einkompiliert). Unter Debian ist es nur einhalten wenn zuvor gvim mit apt-get install gvim installiert wurde.

Mit Vim wird man erst richtig effektiv je besser man seine Funktionen verinnerlicht und beherrscht. Am Anfang, falls man nur das arbeiten mit der Maus gewöhnt ist scheint es etwas abschreckend zu sein. Mit der Zeit allerdings wird man die Vorteile zu schätzen wissen.

Ich empfehle das Buch „Vim in der Praxis“ von Drew Neil für den Anfang. Ich empfehle des weiteren mit Vim ohne irgendwelche Plugins oder besonderen Einstellungen zu arbeiten die man nicht selbst vorgenommen hat. Tut man dies nicht, wird der Einstieg um so schwerer!

Ich verwende hier Abkürzungen der Tastenanschläge. Ein <C-p> bedeutet STRG und Taste p. ein <A-k> entsprechend ALT + k. Befehle die mit : beginnen sind im normalen Modus (ESC) einzugeben. Des weiteren möchte ich unbedingt anmerken das alle Antworten immer nur die Thematik anschneiden und nicht ausführlich beantworten.

VIM-Links:
  • Projektseite und Bezugsquelle
  • Wikipedia-Eintrag
  • Deutsche Übersetzung der Vim Hilfedateien
  • Vim Tips and Tricks (EN)
  • Praxisorientiertes vim-Tutorial
Gibt es ein Tutorial zu vim?

Klar, hast Du es schon einmal mit vimtutor de versucht?


eVim (easy vim) und Cream der einfache Modus?

mit evim ist es möglich vim wie einen ganz normalen Editor zu verwenden. Es wird sofort um Einfügemodus gestartet und der Befehlsmodus steht nicht mehr direkt zur Verfügung.

Wem das noch immer nicht einfach genug ist kann auch Cream verwenden, damit stehen alle Funktionen über ein Menü zur Verfügung. Die Vorteile und Stärken von Vim gehen natürlich verloren aber man benötigt keinen zusätzlichen Editor.


Vim Syntax Higlighting

:syntax on

Mit :colorscheme [SCHEMA] kann man ein bestimmtes Schema auswählen. Diese befinden sich in der Regel unter /usr/share/vim/vim*/colors/


Kann man die Zeilennummern anzeigen?

:set number


Wie werden Einstellungen im vim dauerhaft gespeichert?

Die Datei ~/.exrc wird bei Ausführung vom vim automatisch aufgerufen. Dort können Einstellungen vorgenommen genau so wie direkt im vim. Interessant ist zu wissen das diese Datei auch in Unterverzeichnisse eine Projekts eingebracht werden kann und verarbeitet wird. Ist keine vorhanden wird die aus ~/ bevorzugt.

Beispiel einer .exrc:

" Das ist ein Kommentar:
set number
set showmode
set noautoindent
set tabstop=4

Es gibt noch die Umgebungsvariable EXINIT die verarbeitet wird, ist diese definiert wird sie bevorzugt.

Selbstverständlich kann man alle Einstellungen die man im Editor vornimmt mit : auch direkt in diese Datei eintragen.


Was ist der Unterschied zwischen .vimrc und .exrc?

Die .vimrc ist für VIM und die .exrc für VI. VIM nimmt die .exrc als Konfiguration falls die .vimrc nicht vorhanden ist.


Gibt es im vim einen Dateimanager?

:e [VERZEICHNIS] wobei z.B mit :e . das aktuelle Verzeichnis angezeigt wird von dem aus vim gestartet wurde. Navigiert wird wie gewohnt und mit ENTER das der aktuelle Eintrag gewählt wird.


Wie spinge ich mit VIM in eine bestimmte Zeile?

:[ZEILE]

Mit :23 sprint der Cursor also in Zeile 23.


Wie suche ich bestimmte Schlüsselwörter mit VIM?

Kurz gesagt, nach einem bestimmten Schlüsselwort sucht man mit /[Schlüsselwort] einmalig in einer Datei ab Cursorposition. Mit :1 springt man wieder in die erste Zeile.


Hat Vim Autovervollständigen?

Vi und Vim haben auch eine Autovervollständigung. Diese kann im Einfügemodus (i) mit <C -p> oder <C-n> aufgerufen werden. Wird diese aufgerufen, wird die aktuelle Datei durchforstet und eine Liste mit möglichen Wörtern erstellt.

In der Praxis gibt man also ein paar Zeichen ein und anschließend <C-P>, eine Liste wird eingeblendet mit den möglichen Wörtern die mit den bereits eingegebenen Zeichen beginnen.

Und jetzt kommt etwas das nicht jeder Editor kann, mit <C-x>+<C-l> kann man auf die gleiche Art und weise eine ganze Zeile vervollständigen.


Vim Splitscreen?

Mit Vi und Vim kann man den Arbeitsbereich teilen und mehrere Dateien Visuell gleichzeitig bearbeiten (kann man auch ohne Splitscreen mit Buffern). Den arbeitsbereich horizontal teilen/ splitten kann man mit :split [Dateiname] und vertikal mit :vsplit [Dateiname]. Den Dateinamen kann man optional auch weglassen.

Zwischen den Splitscreens wechseln:

<C-w w> Zum nächsten Fenster wechseln
<C-w i> Zum rechten Fenster wechseln
<C-w h> Zum linken Fenster wechseln
<C-w k> Zum oberen Fenster wechseln
<C-w j> Zum unteren Fenster wechseln

Die Anordnung der Fenser verändern:

<C-w x> Fenster tauschen
<C-w r> Alle Fenster rotieren


Alle Fenster und Dateien gleichzeitig schließen

Bekanntlich kann man mit :q und :q! die aktuelle Datei schließen. Mit dem Commando :qa und :qa! kann man alle Dateien und Splitfenster gleichzeitig schließen. Mit letzteren wird nicht gefragt ob gespeichert werden soll also vorsicht!


Kann man eigene Tastenbelegungen definieren?

Klar, das ganze nennt sich unter VIM Mapping und hat die Syntax: :map [TASTE] [BEFEHLSKETTE]. Dies könnte in der Praxis wie folgt aussehen:

:map <F5> :qa! <CR>

Drückt man nun die F5 Taste, wird :qa! ausgeführt und da <CR> emuliert das Drücken der ENTER-Taste (alle Dateien werden sofort ungespeichert geschlossen und vim beendet).

Ausser <CR> gibt es noch andere Spezialzeichen wie <SPACE> oder <C-d>. Letzteres Emuliert <STRG-d>. Selbstverständlich kann man dies auch alles für den dauerhaften Einsatz in die .vimrc oder .exrc eintragen damit die Makros bereits ab Start von Vim bereitstehen.


Kann man Dateien in Tabs öffnen?

Vim ist zwar ein Konsolenprogramm und hat keine GUI (außer gvim) aber dennoch gibt es Tabs. Um eine Datei in einem neuen Tab zu öffnen verwendet man :tabe [Dateiname]. Navigieren zwischen den Tabs kann man  mit:

gt – zum nächsten Tab
gT – zum vorherigen Tab
4gT – springt zum Tab 4

Um Dateien direkt schon beim Start aufzurufen verwendet man den Parameter -p:

$ vim -p /home/musterman/datei1 /home musterman/datei2

Wie kann ich in einer laufender Sitzung Dateityp ändern?

Stell Dir vor Du hast eine Datei erstellt, nehmen wir mal an das es sich um eine Perl-Datei handelt. Diese enthält, warum auch immer, einen Abschnitt in HTML. Anderes Beispiel wäre das der Dateityp gar nicht erkannt wurde. Dann gibt es die Möglichkeit mit :set ft=[DATEITYP] den Typ zu ändern.

:set ft=HTML

würde für die aktuelle Sitzung das Syntax-Highlight für HTML aktivieren.


Kann man Dateien mit VIM verschlüsseln?

Ja, man kann mit dem VI und VIM ohne irgendwelche Plugins verschlüsseln. Dazu entweder vim mit der Option -x starten oder im interaktiven Modus :X einschalten. Man kann mit dieser Option auch bestehende Dateien öffnen zum verschlüsseln. Im Anschluss wird man nach einem neuen Passwort gefragt das man wiederholt eingeben muss. Anschließend wie gewohnt speichern.

Man kann mehrere Verschlüsselungsmethoden von start einstellen:

:setlocal cm?           " Zeigt aktuelle Methode an
:setlocal cm=zip        " schwach (voreinstellung)
:setlocal cm=blowfish   " besser
:setlocal cm=blowfish2  " beste (min. Vim version 7.4.399)

Möchte man die Verschlüsselung wieder entfernen einfach nochmal :X und das Passwort leer lassen.


 

Ich bitte um weitere Tipps zur Aufnahme in die FAQ.


Änderungslog:
  • 28.07.18
    Kommentarfunktion vorübergehend deaktiviert da wohl einige schwule russische Putin Anhänger meinen hier ihre Viagra-Werbung zu hinterlassen. Bitte Änderungs- und Erweiterungsvorschläge per eMail.

C – int in String umwandeln

C-Bibliothek (int2str)

Stand: 01/06/2018

bei ncurses bin  ich einmal auf ein Problem gestoßen das mvprintw() einen Pointer auf char-Array (int printw(const char *fmt, …) erwartet. Ich hatte aber nur Zahlen die dargestellt werden sollten. Es musste also eine Funktion her die den int in einen String, Char oder Array  umwandelt. Ein itoa() ist ja nicht immer verfügbar. Hier meine eigene Implementation, das sie nicht unbedingt die schnellste ist leuchtet ein aber es geht mir hier eher um die Vorgehensweise:

 

#include <stdlib.h>
#define ASCII_SHIFT 48

/**
 * Wandelt einen int in *char um
 *
 * @param i als Integer
 * @return unsigned *char
 */
unsigned char *int2str(int i) {
  unsigned char *str;
  int len, tmp, c;

  /* Platz schaffen fuer negatives Vorzeichen falls i negativ ist */
  len = (i < 0) ? 2 : 1;

  /* berechnen wieviele Zeichen benötigt werden */
  for (tmp = i; tmp != 0; tmp /= 10) {
    len++;
  }

  /* Unbedingt an der Stelle an der aufgerufen wird den Speicher wieder
   * freigeben! */
  str = malloc(sizeof (char) * len);

  /* Den gesamten String füllen
   * Ohne Fuellen habe ich am ende des Strings immer undefinierte Zeichen */
  for (tmp = 0; tmp <= len; tmp++) {
    str[tmp] = '\0';
  }

  /* Ein Zeichen zurueckspringen, letztes Zeichen ist bereits
   *  0-terminiert */
  len--;

  /* Übergebene Zahl ist negativ?*/
  if (i < 0) {
    str[0] = '-';
  }

  /* Ist die übergebene Zahl etwa eine 0? 
   * Wenn ja nur eine 0 einfuegen an erster Stelle.
   */
  if (i == 0) {
    str[0] = '0';
  } else {
    /* Die Zahlen in Zeichen umwandeln */
    for (tmp = i, len--; tmp != 0;) {
      c = (tmp >= 0) ? (tmp % 10) : (tmp % 10) * -1;
      str[len--] = (char) (c + ASCII_SHIFT);
      tmp /= 10;
    }
  }
  return str;
}

Wichtig ist hier das man den Speicherplatz mit free() wieder freigibt der mit malloc reserviert wurde! Wenn jemand Verbesserungsvorschläge hat dann bitte her damit.

Alternativ kann man das ganze natürlich auch mit sprintf() machen.

 

CodeBlocks auf deutsch umstellen

Code:Blocks auf deutsch umstellen

(Debian und Derivate)

Stand: 29/04/2018
letzte Änderung: 2022-01-14 08:25:47 Friday

Code:Blocks auf deutsche Sprache umstellen? Ganz kurz in eigener Sache: eigentlich sollte man als Programmierer nicht unbedingt eine IDE in seine Landessprache stellen und in Englisch arbeiten. Ich habe es manchmal aber dennoch ganz gerne und so stieß ich irgendwie auf dieses kleine aber kniffelige Problem.

Die Originalwiki zu Codeblocks [1] lässt sich da nicht so ganz eindeutig aus und bezieht sich da irgendwie auf Windows etc. Die Anleitung dort lässt sich zumindest nicht eindeutig auf Debian umsetzen.

Zuerst muss man sich die bereits übersetze .mo Datei besorgen. Ich habe die gesuchte .mo Datei auf dem FTP-Server geladen [2] und das Original findet man hier [3]. Je nachdem wann Du das hier ließt, wäre es sicherlich besser, wenn Du Dir eine neuere Version besorgst.

Anschließend wird diese Datei nach
/usr/share/codeblocks/locale/de_DE kopiert. Sollten die letzten beiden Verzeichnisse nicht vorhanden sein, müssen diese natürlich erstellt werden. Dieser Pfad ist bei mir unter Debian 9 so, Codeblocks wurde über atp installiert.
Zum Schluss muss Codeblocks gestartet werden und unter Settings -> Environment -> View finden sich im oberen Bereich Kontrollkästchen, die anzuwählen sind. In Anschluss nur noch die Sprache auswählen und Codeblocks neu starten.

Unter anderen Betriebssystemen kann es durchaus sein, dass die Schritte ein wenig abweichen, vor allem was Pfade angeht. Insgesamt sollte es aber sinngemäß überall gleich sein. Solltest Du Probleme haben, kannst Du mich auch direkt kontaktieren.


  1. http://wiki.codeblocks.org
  2. ftp://ionivation.com/pub/codeblocks.mo (Download-FTP)
  3. https://www.ionivation.com/download/codeblocks.mo (Download-HTTP)
  4. https://translations.launchpad.net

wget und die robots.txt

Ganze Internetprojekte herunterladen mit wget – robots.txt ignorieren

Ich wäre fast verzweifelt. Mit wget kann man bekanntlich ganze Internetprojekte rekursiv herunterladen. Mit einem einfachen wget -r -l2 [URL] kann man ein ganzes Projekt inklusive links bis zur zweiten Ebene herunterladen. Dies mache ich öfter wenn zB ein Tutorial auch offline verfügbar sein soll oder ich die Gefahr wittere das es eines tages einfach verschwinden könnte.

Nun hatte ich einmal so ein Tutorial [1] das sich nicht herunterladen lies. Die Ursache war mir völlig unbekannt und man wget brachte mich auch nicht wirklich weiter bis ich in einer Dokumentation [2] auf -e robots=off stieß.

Ich schaute in die robots.txt auf der besagten Seite und stellte fest das dort folgendes eingetragen war:

User-agent: *
Disallow: /

Die robots.txt ist eigentlich an Suchmaschinen gerichtet um anzuweisen das eine Seite nicht indexiert wird. In diesem Fall ist das natürlich völliger Unfug den Anleitungen im Internet sind selbstverständlich zum gefunden und gelesen zu werden. Da wget aber die robots.txt beachtet fühlt er sich angesprochen und lädt die besagten Dateien nicht herunter.

Die obige Anweisung wird also erweitert: wget-e robots=off -r -l2 [URL] und wget wird die robots.txt ignorieren und wie gewünscht alles herrunterladen.


Nachtrag:

möchte man das wget dauerhaft die robot.txt ignoriert kann man diese Option auch in die Konfigurationsdatei von wget schreiben. diese befindet sich im im home (~/.wgetrc). Falls nicht muss sie noch erstellt werden.


  1. http://bladehunter.lima-city.de/lua/book/index.html
  2. https://wiki.ubuntuusers.de/wget/

Kurztipp: Chrome und Firefox

Chrome und Firefox, Seite neuladen ohne den Cache zu verwenden

Wenn man gerade dabei ist Webseiten zu bearbeiten und Kleinigkeiten am Design durchführt, ist es manchmal lästig den Cache des Browsers auf null zu stellen. Macht man dies nicht, nützt ein Reload mit F5 recht wenig den dann läd der Browser einfach aus dem Cache.

Die meisten die mit so etwas zutun haben werden es sicherlich wissen aber es gibt da einen kleinen Banalen Trick: STRG+F5

Root oder Sudo?

Root oder Sudo? Die Frage der Fragen …

Stand: 13/03/2018 -> log

Achtung, dieser Artikel ist an erfahrene Benutzer gerichtet. Nichtbefolgen oder eigenmächtiges Handeln kann zum Verlust des Systems und/ oder Daten führen!

Oft höre und lese ich die Frage „Soll ich als root oder lieber mit sudo administrationsarbeiten durchführen?“ Genauso oft höre ich „Bei Ubuntu habe ich gar kein root-Passwort!„. Ich möchte in diesem Beitrag ganz kurz auf diese beiden Fragen eingehen. Also, der Benutzer root wird grundsätzlich nur mit login-passwort benötigt wenn der eigentliche Systemverwalter gar keinen Benutzeraccount auf diesem Computer/ System  hat oder benötigt. Dies trifft z.B auf einer Serverfarm zu, da wäre es Unsinn wenn der root sich extra einen Benutzer anlegen müsste um irgend welche Veränderungen vorzunehmen.

Ist der Computer eine Arbeitsstation, wie sie jeder zuhause hat, an der ganz normal gearbeitet wird und jemand im Haushalt auch die Administration übernimmt, ist der Benutzer root absolut unnötig. Dies bedeutet nicht das man ihn nicht benötigt, sondern das man für diesen kein Passwort benötigt. Wieso das so ist? Ganz einfach …

Diejenigen die sowieso einen Benutzeraccount auf diesem Rechner besitzen, können jederzeit (falls sie ein sudoers sind, dazu gleich mehr) mit sudo einen Befehl mit root-rechten ausführen. Benötigt man wirklich einmal eine echte root-login shell hilft der Befehl sudo -i

Dieser startet ohne weitere Parameter eine root-login-shell! In der Datei /etc/sudoers befinden sich alle Benutzer die sudo einsetzen dürfen. Bearbeiten darf man diese Datei nur mit dem dafür speziel vorgesehenen Tool visudo, nur dann ist gewährleistet das die Datei syntaktisch einwandfrei ist. Hat man den neuen sudo-Zugang getestet und ist dieser einwanfrei kann man getrost in der Datei /etc/shadow das Passwort des Benutzers root herrauslöschen. Die Zeile könnte dann so aussehen:

root::17068:0:99999:7:::

Die Passwörter in dieser Datei sind übrigends verschlüsselt und das Passwort würde sich hinter dem ersten Doppelpunkt befinden. Will man ein Passwort wieder herstellen und den root-Zugang wieder zulassen hilft ein sudo passwd root … zack ist alles wieder beim alten.

So, das sollte ersteinmal gekärt sein, root ist also absolut unnötig. Ist root auf diese weise deaktiviert gibt es noch einen positiven Nebeneffekt: Für root benötigt man zwei Passwörter, einmal für den eigentlichen Benutzer und ein zweites mal für sudo -i. Vor alleim bei rootservern für die Wartung aus der Ferne ist es Gold wert.

Kleiner Tipp zum Schluss: Bei solchen Arbeiten am System, bei dem man sich bei einem kleinen Tippfehler selbst aussperren kann, IMMER eine zweite Konsole öffnen mit z.B STRG-ALT-F2! Bei Fernwartung entsprechend ein zweites mal per ssh einloggen im Hintergrund. DANN ERST LOSLEGEN!


Änderungslog des Beitrags:

  • 03/02/2018 – erste Version des Beitrags
  • 13/03/2018 – kleine unbedeutende Änderungen wie zB Rechtschreibung.

Zurück zum Hauptseite Linux

Java-Preferences-API

Einführung in die Java-Preferences-API der java.util.prefs.Preferences Klasse

Stand: 09/02/2018 – Version 0.2
< zurück zur Java-Programmierung-Übersicht >

Dieser Artikel basiert in der ersten Version auf eigenen Gedanken und dieser Quelle[1]. Oft ist es notwendig bestimmte Angaben eines Programms dauerhaft zu speichern. Diese Angaben stellen die grundlegendsten Einstellungen dar wie z.B welche Datenbank soll beim Programmstart verwendet werden. Alle weiteren Einstellungen könnte man aus der Datenbank laden doch hier geht es um die absoluten Basisdaten.

Grundsätzlich ist es ja bei den ersten Gedanken überhaupt kein Problem solche Angaben zu speichern, da gibt es viele Möglichkeiten. Zum einen einfach in eine Testdatei schreiben oder die alte Properties aus java.util.Properties[2]. Problematisch wird das ganze erst wenn wir uns Plattform-übergreifend bewegen. Hier beschäftigen wir uns aber erst einmal rein mit der java.util.prefs.Preferences [3] Klasse.

Die Preferences Klasse geht bei dem ganzen noch einen Schritt weiter, wir müssen uns als Entwickler gar nicht mehr darum kümmern wo diese Daten gespeichert werden, das erledigt für uns das jeweilige Betriebssystem. Unter Linux liegt es im ~/.java/ Verzeichnis und unter Windows je nach Version im Dokumenten-Ordner, Appdata oder auch der Registry. Dazu später mehr.

Von der o.g Quelle hole ich mal den dort vorliegenden Quelltext, übersetze die Kommentare und arbeite das ganze etwas auf. Zum Schluss gibt es das ganze fertig zum Download und zum ausprobieren. Jetzt eber erst einmal den original Quelltext:

import java.util.prefs.Preferences;

public class PreferenceTest {
  
    private Preferences prefs;

    public void setPreference()
    { 
        prefs = Preferences.userRoot().node("/data");
        
        String ID1 = "Test1";
        String ID2 = "Test2";
        String ID3 = "Test3";

        System.out.println(prefs.getBoolean(ID1, true));
        System.out.println(prefs.get(ID2, "Hello World"));
        System.out.println(prefs.getInt(ID3, 50));

        prefs.putBoolean(ID1, false);
        prefs.put(ID2, "Hello Europa");
        prefs.putInt(ID3, 45);

        prefs.remove(ID1);
    }

    public static void main(String[] args)
    {
        PreferenceTest test = new PreferenceTest();
        test.setPreference();
    }
}

Was passiert hier nun also?
Ich habe bewusst die Kommentare aus dem Code herausgelassen und hole es hier nun nach. Also:

Zeile 10:

Definieren wir einen „node“, wo die Daten gespeichert werden können. Es gibt da mehrere Möglichkeiten. Hier einfach nur als String in Form eines Pfades. Schau Dir die Klasse im javadoc [3] genauer an, es gibt noch andere Möglichkeiten die nodes zu definieren.

Der überwiegende Teil bezieht sich auf die Nutzerrechte. Globale und lokale Konfiguration als Stichwort.

Zeile 15-17:

Wir laden Werte testweise aus einer eventuell vorhandenen Konfiguration mit der Methode .get diese läd die Daten in eine Variable. Hinter dem Kommata können default-Werte eingetragen werden falls es die Daten oder den ganzen node nicht gibt.

Zeile 19-21:

Hier speichern wir die aktuellen Werte aus den Variablen in unsere Konfiguration.

Zeile 23:

Hier löschen wir testweise einen Wert aus dem node.

Wo werden die Daten gespeichert?

Genau das ist nun der Trick an der ganzen Sache. Wir müssen uns eben nicht darum kümmern WO diese Daten gespeichert werden. Überlassen wir das dem Betriebssystem wo der Container ausgeführt wird. Wie dies allerdings unter Windows und Ubuntu aussieht zeige ich eben an zwei Screenshots.

Ja genau, ein und der gleiche Code aber unter Linux wird dies unter ~/home/.java/.userPrefs/data/prefs.xml gespeichert und unter Windows in der Registry im Zweig HKEY_CURRENT_USER -> Software -> JavaSoft -> Prefs -> data

Wo dies genau gespeichert wird legen in Zeile 9 fest. Es lässt sich auch definieren das dies im System Zweig der Registry oder /etc/.java unter Linux gespeichert wird. Dazu muss der Container allerdings als Administrator oder root gestartet werden. Ich nehme an es ist verständlich worum es geht.

Eine komplette Liste, wo auf welchem System die nodes gespeichert werden, liefere ich nach aber dies sollte für Dich als Entwickler allerdings zweitrangig sein.

— Fortsetzung folgt …

Achja, ein Tipp am rande. Viele Anfänger tendieren dazu darauf zu bestehen das ihre Daten relativ zum Container gespeichert werden. Am besten in einem Unterverzeichnis unterhalb des Containers. Geht bitte davon ab, das ist nicht wirklich sinnvoll. Stellt euch vor jemand möchte euer Programm an einer globalen Stelle für alle Benutzer installieren. An dieser Stelle hätte der Benutzer der das Programm ausführt gar keine Schreibrechte. Für diesen Einsatz wäre also euer Programm unbrauchbar. Falls es wirklich unbedingt nötig sein sollte, musst Du Dir die Klasse java.util.Properties [2] anschauen die allerdings schon ein paar Jahre auf dem Buckel hat. Dazu gibt es bald noch einen eigenen Beitrag.

Du hast Fragen zur java.util.prefs.Preferences Klasse, Anmerkungen oder bist völlig anderer Meinung? Teile es bitte hier im Forum  mit.


Quellen:

  1.  http://www.vogella.com/tutorials/JavaPreferences/article.html
  2. https://docs.oracle.com/javase/7/docs/api/java/util/Properties.html
    https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html
  3. https://docs.oracle.com/javase/8/docs/api/java/util/prefs/Preferences.html

 

 

 

Netbeans – Konsole

Integrierte Konsole/ Shell von Netbeans

Netbeans 8.2 – Stand 02/2018
<zurück zur Hauptseite – Netbeans >

Netbeans besitzt eine eigene Konsole die man schnell aufrufen kann. Unter Dateien (Bild 1) wählt man einen Pfad und anschließend unter „Extras“ -> „Open in Terminal„.

Ich verwende hier in diesem Beispiel die deutschsprachige Version direkt von Oracle. In der Englischen Version kann der Weg lauten: „IDE Tools“ -> „Terminal„. Den sich öffnenden Reiter kann man anschließend überall hinziehen, wo man ihn gerade braucht. Sinnvoll wäre es im unteren Bereich, wo auch die Ausgabe erfolgt bei einem RUN, oder auch im Editor-Bereich.

<zurück zur Hauptseite – Netbeans >


Du hast Fragen zu Netbeans? Gerne beantworte ich oder andere diese im IDE-FORUM