Archiv des Autors: Christopher

AngularJS in Visual Studio

AngularJS mit Visual Studio

Vielleicht hast du ein Projekt oder eine Idee und möchtest diese mit AngularJS
umsetzen. Normalerweise reicht dazu ein normaler Editor, jedoch mag es der ein oder andere
gerne über Visual Studio entwickeln, in diesem Beitrag möchte ich euch erläutern, wie ihr das
Angular JS Framework in ein Visual Studio Projekt einbindet und damit auch arbeitet.

Als Minimum Vorraussetzung, benötigen wir das Visual Studio Community (kostenlos)
https://www.visualstudio.com/en-us/products/visual-studio-community-vs
Zusätzlich solltet ihr es auf die letzten Versionen updaten und euch die letzte Version die
Visual Studio Web Essentials installieren. https://vswebessentials.com/

Auswahl einer Web Vorlage

Angular Js in Visualstudio
Angular JS in Visual Studio, Empty ASP.NET Projekt

In diesem Eintrag nehme ich als Beispiel ein leeres Web, ASP.NET Web Application Projekt.

Lassen wir das Projekt nun mit F5 loslaufen, erhalten wir den Fehler 403 Forbidden.

Index.html anlegen

Jetzt fügen wir eine Datei mit dem Namen: index.html, in das Wurzelverzeichnis hinzu.
In dieser können wir im <body> Bereich “Hallo Welt” reinschreiben.
Lassen wir das Projekt nun nochmal erstellen und laufen, sollte sich die Ausgabe geändert haben:

AngularJS Index.html
AngularJS Index.html

Angular JS Framework in das Projekt einbinden
Möchte man eine AngularJs Applikation schreiben, müssen wir dazu das nötige
AngularJS Framework einbinden. Dies geschieht am besten über NuGet.

NuGet Package installieren

NuGet Package Angular JS Core in dem Projekt hinzufügen
NuGet Package Angular JS Core in dem Projekt hinzufügen

Dazu klicken wir wie im Bild oben schon zu erahnen ist auf “Manage NuGet Packages…”.

Anschließend klicken wir auf Browse und suchen dort nach “angularjs”.
Hier wählen wir die AngularJS.Core aus und installieren diese.

Unsere Projektmappe erweitert sich um das Angular JS Framework:

Jetzt sollten wir in unserer index.html das Framework referenzieren mit dieser Zeile:

<script src=”Scripts/angular.min.js”></script>

Grundlegende Angular App Struktur erstellen
Als erstes erstellen wir uns in der Solution ein Ordner Namens: “app”.
In diesem Verzeichnis erstellen wir zwei JavaScript Dateien:
app.module.js und main.js

Solution Explorer nach Angular JS Installation
Solution Explorer nach Angular JS Installation

app.module.js bearbeiten

Die app.module.js beinhaltet ein “Single-level” Modul. In diesem Beispiel, die Applikation hat ein
Application-Level Modul, welches weitere Module aus dem Projekt lädt. Die Datei app.module.js
verfolgt das Konzept, der Module, Controllers, Services, Direktive und Views.
Die o.g. Datei sollte als Grundlage folgenden Inhalt haben:

(function() {
‘use strict’;

angular.module(‘app’, []);

})();

Dieses Beispiel nutzt eine IIFE (Immediately-invoked function expression um den Code auszuführen.
(https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)
Dieses “Pattern” wird von der Struktur von jedem Modul genutzt.
Man beachte die zweite Zeile: ‘use strict’;
Dies triggert neuere Browser dazu an, JavaScript im StrictMode auszuführen.

‘use strict’; ist optional, jedoch empfehlenswert für eine saubere Programmierung.

 

main.js bearbeiten

In der main.js Datei erstellen wir ein Controller, um auch später bei umfangreicheren Projekten,
konsistent zu bleiben, empfehle ich in dem Dateinamen, den Begriff “Controller” nicht zu verwenden.
Erklärt wird dies in einem Post von John Papa
https://www.johnpapa.net/angular-app-structuring-guidelines/
Wo wir gerade bei der Namensnennung sind, lege ich euch diese
Naming Guideline an Herz:
https://github.com/johnpapa/angular-styleguide#naming
Nun zum Inhalt des Controllers zurück; wir fügen folgendes in unserer main.js:

(function () {
‘use strict’;
angular        .module(‘app’)
.controller(‘Main’, main);
function main() {
var vm = this;
vm.welt = ‘welt’;
}
})();

Die function main, ist der Controller.
Nun benötigen wir noch eine View in der wir alles anzeigen können.

Index.html bearbeiten

Wir füllen unsere zuvor angelegte index.html mit folgenden HTML-Code:

<!DOCTYPE html> <html ng-app=”app”><head>    <title></title></head><body ng-controller=”Main as vm”>     <input type=”text” ng-model=”vm.food” placeholder=”Enter Welt.” />     <p>Hallo {{vm.food}}!</p>     <script src=”Scripts/angular.min.js”></script>    <script src=”app/app.module.js”></script>    <script src=”app/main.js”></script> </body></html>

Projekt starten

Speichern wir nun das Projekt und lassen es mit F5 erstellen.
sollte sich der Browser öffnen und folgendes anzeigen (Nach der Eingabe, des Wortes “Welt” in dem Textfeld.

Hallo Welt, AngularJS mit Visual Studio
Hallo Welt, AngularJS mit Visual Studio

 

Im <body>-Kontext seht ihr nun die Benutzung der Controller-Syntax  in der View.

Das VM im Quelltext ist dabei unsere Sogenannte Scope.

Das kleine Beispiel Projekt könnt ihr euch auch hier herunterladen, um das ganze ggf. besser nach zu vollziehen. Möchte man mit Javascript bisschen rum probieren ohne gleich Dateien auf dem PC erstellen zu müssen, so habt ihr die Möglichkeit im Browser mit JSFiddle ein wenig zu experimentieren.

Raspberry Pi unterstützte Emulatoren

Raspberry Pi unterstützte Emulatoren

In diesem Beitrag möchte ich euch eine Liste der Raspberry Pi unterstützte Emulatoren die wir auf dem Raspberry Pi emulieren können. (In Anbetracht, dass man damit sehr einfach
einen Retro Pi basteln können). Hier eine kleine Übersicht:

  • Amiga (UAE4All)
  • Apple II (Basilisk II)
  • Arcade (PiFBA, Mame4All-RPi)
  • Playstation 1 (RetroArch)
  • NeoGeo (Genesis-GX, (Retro Arch)
  • PC Engine / TurboGrafx16 (Retro Arch)
  • N64 (Mupen64-RPi)
  • Sega Master / Genesis (DGEN, Picodrive)
  • Nintendo Enterainment System, NES (RetroArch)
  • Z Machine emulator (Frotz)
  • Scumm VM
  • PC/x86 (rpix86)
  • SNES Super Nintendo (Retro Arch, PiSNES, SNES-Rpi)
  • Sinclair ZX Spectrum (Fuse)
  • CaveStory (NXEngine)
  • NeoGeo /GnGeo)
  • Doom (Retro Arch)
  • MAME (AdvMAME)
  • MAME (Retro Arch)
  • Duke Nukem 3D
  • Intellivision (Retro Arch)
  • Final Burn Alpha (Retro Arch)
  • Game Gear (Osmose)
  • Game Boy Advance (gpSP)
  • Game Boy Color (Retro Arch)
  • C64 (VICE)
  • Atari 2600 (Retro Arch)
  • Atari 800
  • Atari ST/STE/TT/Falcon

Möchtet ihr noch mehr Informationen zum Retro Pi und die Emulation von den o.g.
Systemen könnt ihr auf den englischen Blog vorbeischauen:
petrockblock

C# Get directory size using LINQ, c# GetDirectorySize

C# Get directory size using LINQ, DirectorySize

Sometimes you need or must know the folder DirectorySize or frin more directories in C#.
In this case you can use this method, which get the folder size in c#, the output size is in bytes.

public static long DirectorySize(string parentDirectory)
{
return new DirectoryInfo(parentDirectory).GetFiles(searchPattern: "*", searchOption: SearchOption.AllDirectories).Sum(file =&gt; file.Length);
}

In this linq method you can also set an search pattern and choose if only TopDirectories or AllDirectories will be run through.

RaspberryPi shell

RaspberryPi shell

Raspberry Pi Einblick in die Shell

 

RaspberryPi shell ein kurzer Einblick

Viele Unix Anwender, Administratoren wissen die Shell auf Grund ihrer Leistungsfähigkeit zu schätzen.Mit ihr lässt sie das komplette System des Raspberry Pis konfigurieren, verwalten und steuern.

In diesem Artikel einen kleine Einblick in die raspberrypi shell und nützliche Kniffe erläutern.
In diesem Artikel gehe ich weniger auf die Erläuterung einzelner Befehle ein, sondern mehr um die effiziente und richtige Bedienung der raspberrypi shell sowie, dass Handling mit Dateien und Verzeichnissen.

 

Nutzt man einen Befehl in der raspberrypi shell und möchte diesen in abgeänderter Form ein weiteres mal nutzen, kann man einfach mit den Pfeiltasten, Oben und unten die letzten Befehle aufsuchen und wieder oder (in abgeänderter) Form wieder nutzen.

Möchte man in seinem Bash-Verlauf etwas durchsuchen kann man STRG+R drücken und man erhält die Möglichkeit, Buchstaben einzugeben, um nach einem Befehlssatz zu suchen.

Bash-History

Alle Bash-Befehle die ihr in der raspberrypi shell ausführt werden in einer Datei gespeichert.
Diese könnt ihr hier öffnen:

nano ~/.bash_history

oder ganze einfach mit dem Befehl:history

Die Zauberkiste “SuggestBox”

Als Konsolenanwender / Administrator solltet ihr euch das Tool “Suggest Box”, für die raspberrypi shell nicht entgehen lassen.
Wenn ihr einmal mit der SuggestBox vertraut geworden seit, möchtet ihr sie nie mehr missen,
bei mir gehört auf dem Raspberry Pi die SuggestBox bereits zur Standard Ausrüstung.
Da diese leider nicht “Out-of-the-box” mitgeliefert wird, müssen wir diese nachinstallieren:

sudo apt-get install libncurses5-dev libreadline-dev
sudo wget https://github.com/dvorka/hstr/releases/download/1.10/hh-1.10-src.tgz

 

sudo tar xf hh-1.10-src.tgz
cd hstr/
./configure && make && sudo make install

So nun haben wir die SuggestBox installiert.
Das Tool rufen wir mit “hh” auf.
Dort sehen wir nun nach Häufigkeit sortiert.

Möchte man die Sortierung ändern, können wir mit STRG+UMSCHALT+7.

Mit der ENTF-Taste können wir Befehle aus der Liste löschen.

Mit STRG-F, fügen wir ein Befehle als Favorit hinzu.

Ein Spaziergang durch Verzeichnisse
Öffnet ihr die Shell landet ihr in euer “Home”-Verzeichnis.
Um nun zu erfahren, was für Unterverzeichnis und Dateien in dem Verzeichnis sind,

geben wir den Befehl ls (List Directory) ein.

Möchten wir dies etwas genauer auflisten lassen nehmen wir den Parameter -l (List), also:

ls -l

Verzeichnis  wechseln

Möchten wir nun das Verzeichnis wechseln geben wir
cd Verzeichnisname, zb.: cd Desktop ein.
Ein Punkt symbolisiert, das aktuelle Verzeichnis,

cd ./Verzeichnis

Möchte man eine Verzeichnisebene höher, müssen wir zwei Punkte schreiben: cd ..
Das heißt, wenn wir uns im Verzeichnis /home/pi/Desktop/,
befinden und eine Ebene Höher möchten (in das /home/pi/), führen wir den Befehl cd .. aus.

Auf den meisten Linux Distributionen ist die  Tilde (~), bezeichnend für das Home-Verzeichnis.
Damit kommen wir egal in welchem Verzeichnis wir uns befinden direkt in das Home-Verzeichnis,

des angmeldeten Benutzers (cd ~).

Aktuelles Verzeichnis ausgeben lassen

Ist man im System und den Verzeichnis- sowie Dateistrukturen schwer am arbeiten
und weiß plötzlich nicht mehr wo man sich überhaupt befindet, kann man mit dem Befehl:

pwd, was für (print working directory), dass aktuelle Verzeichnis sich ausgeben lassen.

Verzeichnis erstellen

Möchte man ein Verzeichnis erstellen, können wir dies mit mkdir Verzeichnisname (mkdir = make directory).

mkdir NeuesVerzeichnis

Es ist auch möglich Verzeichnisse rekursiv zu erstellen, dazu hängen wir am mkdir
Befehl den Parameter “-p” an.

Beispiel: mkdir -p NeuesVerzeichnis/NocheinVerzeichnis.

Dateien und Verzeichnisse kopieren

Hat man vor eine Datei oder ein Verzeichnis kopieren, kann man dies mit dem Befehle

cp ausführen.Der Befehl hat folgende Syntax cp Source Target

Dabei ist es nicht zwingend notwendig, wenn man in dem Verzeichnis in dem
man sich befindet kopieren möchte diesen als Quelle anzugeben.

Beispiel: cp /home/pi/test /home/pi/test

Dateien und Verzeichnis verschieben

Ähnlich wie beim Kopieren (cp), funktioniert das Verschieben.

Verschieben, funktioniert mit dem Befehl: mv

mv Source Target

Beispiel: mv /home/pi/Desktop/test /home/pi/test

Löschen von Dateien und Verzeichnisse

Soll eine Datei gelöscht werden, bedienen wir uns dem rm-Befehl (remove)

Beispiel: rm /home/pi/Desktop/Trash.doc

Soll stattdessen ein Verzeichnis gelöscht werden, nehmen wir den rmdir-Befehl (remove directory)

Beispiel: rmdir /home/pi/Desktop/ZulöschendesVerzeichnis

Kurze Überschicht der vorgestellten Befehle:

Befehl  Beschreibung
ls Inhalts des Ordners ausgeben
cd Verzeichnis wechseln
pwd Aktuelles Verzeichnis anzeigen
mkdir Ordner erstellen
cp Datei oder Verzeichnis kopieren
mv Datei oder Ordner verschieben
rm Datei oder Ordner löschen
rmdir Verzeichnis löschen

Fazit

Die Shell ist ein sehr mächtiges Werkzeug,
welches eigentlich für jeden Anwender früher oder später unverzichtbar ist.
Dies sollte als kleinen Einblick in die Shell genügen.
Allen Nutzern kann ich aber die “SuggestBox”, wärmstens ans Herz legen.
Mit Sicherheit gibt es noch einige interessanteThemen,
auf diese noch weitere Artikel folgen.

 

Ausblick

Die Shell ist und bleibt für Administratoren ein beliebtes Werkzeug.
Im zweiten Teil möchte ich näher auf folgendes eingehen:

tail, sed, cd, mkdir, dd und chmod

Raspberry Pi GParted Partitionierung

Raspberry Pi GParted Partitionierung

GParted

Partitionen verwalten, erstellen, ändern und löschen mit

Klassische Partitionierungen lassen sich theoretisch mit FDisk ausführen,
auf der Kommandozeile, komfortabler gehts aber mit G-Parted.
Mitkannst du auch weit aus mehr machen, als nur Partitionen zu erstellen
oder zu löschen.
Es stehen weitere Funktionen bereit, wie das Verschieben einer Partition
oder die Partitionsgröße zu verkleinern oder zu vergößern.

Installation über die Shell:

sudo apt-get install gparted

Für die Ausführung der Partionsänderungen, greift auf Konsolenprogramme,
wie E2fs-progs zurück.

Die Änderungen werden nicht sofort übernommen, sonder in eine Liste geschrieben
und nach und nach abgearbeitet, dass heißt für den Anwender,
es können erst alle Änderungen vorgenommen werden, bevor die meisten, etwas
längeren Änderungen ausgeführt werden.
Sind alle Änderungen erstellt, kann man die Änderungsoperation starten,
in einem Ereignisprotokoll, können wir prüfen, ob auch alles geklappt hat.

Raspberry Pi Theme ändern

Raspberry Pi Theme ändern

Theme ändern auf dem Raspbian OS

Was man evtl. mit Sicherheit ändern möchte (ich nutze ein aktuelles Raspbian – Wheezy),
wenn man mit der grafischen Oberfläche arbeitet ist das Hintergrundbild.
Dazu klickt man mit der rechten Maustaste auf dem Desktop und wählt
“Desktop-Einstellungen”.Ihr könnt auch das Theme ändern indem ihr im Terminal
folgenden Befehl ausgeführt: obconf
Weitere Themes lassen sich mit dem Befehl installieren:

sudo apt-get install openbox-themes

Bitcoin Mining mit dem Raspberry Pi

Bitcoin-mining

Bitcoin-mining

Einstieg in die virtuelle Kryptowährung “Bitcoin” mit dem Raspberry Pi
Coins sgenerieren mit dem Raspberry pi

Was wir brauchen:

  • Raspberry Pi (minimum Model B)
  • aktualisiertes Rasbian Image
  • SSH-Zugriff
  • Remote Desktop Zugriff (XRDP)
  • cpuminer (cpuminer)

Bitcoin-Pool

Geldeinheiten wie Bitcoin und weitere alternative
Zahlungswährungen nehmen immer mehr fahrt auf.

Die Kryptowährung, könnt ihr mit regulären Geld kaufen, oder euren Rechner rechnen lassen(minen).
Den Raspberry Pi können wir nun dazu einrichten um virtuelle Coins zu generieren.

Was passiert beim minen?

Beim minen, stellt ihr eure Rechnerressourcen der Kryptowährung dem Netzwerk
zur Verfügung. Damit tragt ihr der Sicherheit der Kryptowährungs Netzwerks bei.
Als kleine Entschädigung für das minen, erhaltet ihr Einheiten.
In diesem Beitrag möchte ich euch eine Möglichkeit zeigen, wie ihr euren Raspberry Pi,
als “Bitcoin-miner-Maschine” nutzen könnt.

Nun geht´s los:

Step 1) System aktualisieren

sudo apt-get update && sudo apt-get upgrade

Step 2) Cpuminer Abhängigkeiten installieren

sudo apt-get install gcc gcc-4.5 g++ g++4.5 libstdc++6.4.5-dev libprce3-dev libcurl3-dev make less

Step 3) Für weitere Datei Operationen Verzeichnis anlegen

mkdir bitcoind

cd bitcoind

Step 4) Cpuminer herunterladen

wget -O pooler-cpuminer-2.4.3-win32.zip https://sourceforge.net/projects/cpuminer/files/latest

Step 5) cpuminer entpacken

tar -zxvf pooler-cpuminer-2.4.3-win32.zip

Step 6) Cpuminer kompilieren

./configuremake

Step 7) Einen Bitcoin Pool beitreten
Um effektiver, mit weiteren Usern, welche auch Ressourcen zur Verfügung stellen (“minen”),
schließen wir uns einen Pool an.
Dazu registrieren wir uns zum Beispiel auf: klick hier

Step 8) Das Mining starten
Wir kehren in unser /bitcoind-Verzeichnis zurück (falls noch nicht geschehen) und starten das minen:
./minerd –url pool-adresse –userpass Benutername:Passwort
Nach erfolgreichem Login, bekommen wir die Hashrate angezeigt, welche sehr niedrig ist.

Step 9) Raspberry Pi Bitcoin Mining beschleunigen
Es gibt zwei Varianten das Minen zu beschleunigen.
Zum einen sollten wir wie in diesem Artikel beschrieben, die CPU übertakten
und wenn wir wirklich das maximum rausholen wollen, kaufen wir uns ein USB Bitcoin Miner
, mit dem wir expontiell mehr Leistung erzielen
und schließen diesen an unserem Raspberry Pi an.
(diesen gibt es bereits ab 28 Euro.(Stand: 02.02.2016)

Synaptic Paketverwaltung mit dem Raspberry Pi

Synaptic-Paketverwaltung

Synaptic auf dem RasPi: Installierte Pakete verwalten

Je nachdem was man mit dem Raspberry Pi vor hat, möchte man unnötigen Balast deinstallieren.
Dazu könnten wir das ganze mit dem Paketmanager nicht benötigte Anwendungen deinstallieren.
Einfacher geht es mit der grafischen Version eines Paketmanagers “Synaptic.
Wie folgt installieren wir das Programm:

 

sudo apt-get install synaptic

Nun können wir im Menü-> Einstellungen->Synaptic-Paketverwaltung starten
und unsere installierten Pakete verwalten.

Cronjobs auf dem Raspberry Pi einrichten

Raspberry Pi Cronjobs einrichten

Cronjobs einrichten

Möchte man ein Befehl zu einem bestimmten Zeitpunkt regelmäßig ausführen o
der nach jedem Raspberry Pi Neustart ein Programm starten, so kann man hier für ziemlich einfach einen Cronjobs einrichten.
So habe ich zum Beispiel ein Backup Skript, welches zu einem bestimmten Zeitpunkt ausgeführt werden soll.
Mit dem Befehl:

sudo crontab -e

Als Editor empfehle ich hier den Nano-Editor.
Die Eingabe hat folgende Syntax:
m (Minute) h (Stunde) dom (Tag des Monats) mon (Monat) dow (Wochentag) command (auszführbare Aufgabe).

Möchte man nun jeden Tag um Mitternacht ein Backup erstellen, so muss folgendes in die letzte
Zeile eingetragen werden:

0 0 * * * /home/pi/backup.sh

Um solche Aufgaben automatisch täglich, stündlich auszuführen gibt es noch bestimmte
Variablen, die am Anfang der Zeile geschrieben werden.
Es stehen uns folgende Variablen zur Verfügung:

 

  • @reboot (nach jedem Neustart)
  • @hourly (stündlich)
  • @daily (täglich)
  • @weekly (wöchentlich)
  • @monthly (monatlich)
  • @yearly (jährlich)

Wenn jetzt wöchentlich das Backup-Skript um Mitternacht starten soll, muss dies
in die Zeile eingetragen werden:
@weekly 0 0 * * * /home/pi/backup.sh

Raspberry Pi: Die Shell im Browser (PhpShell)

Ist man nicht zu Hause und muss an seinem RasPi arbeiten, jedoch
ist kein SSH Zugriff vorhanden oder möglich eignet sich Phpshell,
hervorragend als Notzugriff auf unserem RasPi.

Dazu wird wie man es sich vielleicht schon denken kann, da die Shell über den Browser
wie Google Chrome, Firefox oder Microsoft Edge drauf zugegriffen wird.

Alle Befehle die aus der Distribution kommen stehen uns in der Konsole zur Verfügung.

Natürlich muss man Abstriche machen, da es sich um eine Browser-Anwendung,
handelt, können wir keine grafischen Anwendungen steuern, auch längere
Befehlszeilen, sollten wir vermeiden wi, Pipes und das Find-Command.
Leider muss auch ein Abstrich in der <Tab> Autovervollständigung gemacht werden.

Step 1) Lighttpsd installieren, Php aktivieren

Wie wir den Webserver richtig installieren und konfigurieren, habe ich bereits hier beschrieben.

 

Step 2) Phpshell herunterladen

sudo wget -O phpshell-2.4.zip https://sourceforge.net/projects/phpshell/files/latest/download

 

Step 3) Skript entpacken

sudo unzip phpshell-2.4.zip -d /var/www/phpshell

Step 4) Zip-Datei löschen

sudo rm phpshell-2.4.zip

 

Step 5) Pwhash generieren

Nun können wir uns überlegen wie wir den Shell Administrator nennen
und uns dazu ein Passwort ausdenken, von welchem wir uns ein Hash
generieren lassen.
Im Browser, lokal auf eurem Rechner oder auf dem RasPi rufen wir die pwhash.php auf:

https://Addresse-zum-Raspberry/phpshell/pwhash.php

Beispiel:
https://192.168.178.100/phpshell/pwhash.php

Step 6) Config.php anpassen

sudo nano /var/www/phpshell/phpshell-2.4/config.php

Wir ersetzen username auf einem Benuternamen,
welchen wir zuvor in der pwhash eingegeben haben
Die generiete Zeile einfach kopieren und ersetzen.
Beispiel:

;     username = “password”

admin = “HOI5IUHO3UHGZ6UGU33ZGUP6JPO77OHN88IZG”

Möchten wir noch erlauben, dass man von außerhalb mit dem Skript
Dateien hochladen kann setzen wir in Zeile 78 das false
auf true.
Änderungen speichern und nano beenden.

Fertig, nun können wir die Shell nutzen.
Der Aufruf geschieht wie folgt:

https://192.168.178.100/phpshell/phpshell-2.4/
/phpshell.php

Möchten wir das ganze nun noch außerhalb unseres lokalen Netzwerks
nutzen müssen wir ein DynDNS-Service einrichten und ggf den Port 8080
im Router rforwarden.

Wenn wir uns je nach System die gepackte Datei heruntergeladen,
haben, müssen wir zuerst die config.php anpassen.
Im Bereich <users> müssen wir ein Passwordhash angeben,
diesen erstellen wir uns mit der pwhash.php.

Weitere Informationen zur Shell findet ihr unter:
shell