Embedded Linux SS 2014

Größe: px
Ab Seite anzeigen:

Download "Embedded Linux SS 2014"

Transkript

1 Baulicht Embedded Linux SS 2014 Christoph Keller Pascal Schmid Fabian Weisshaar Projektbeschreibung Unser Setup Hardware Programmierumgebungen PyCharm Android Studio Qt Creator Entwicklung Aufbau der Hardware Aufsetzen des Toolchains Genauer Überblick der Dienste Webseite RESTful API PyBaulicht (MiddleWare) Android App Command Line Interface Ausgabe per Qt (Output Service) D Bus Einführung zu D Bus Busse Konfiguration Verbindungen Object Model Objekte Proxies Methods Signale Interfaces Basistypen Containertypen D Bus Tools Unsere definierten Interfaces Das aufgebaute Baulicht Geplante Erweiterungen Ausblick in die Zukunft 1

2 Projektbeschreibung Unser Projekt umfasst eine Schnittstelle, durch die man ein Baulich zum Darstellen von Text bzw. Morsen verwenden kann. Hierzu verwenden wir folgende verbreitete Techniken: D Bus: Einer der wichtigsten Systemdienste auf jedem Linux. Der D Bus Messagebus bietet Programmen die Möglichkeit, miteinander zu kommunizieren. Der Kommunikationspartner muss hierbei nicht immer direkt bekannt sein, da man auch ähnlich wie in einem Netzwerk Signale aussenden kann, um andere Teilnehmer über Geschehnisse zu informieren. Dienste, die D Bus implementieren, können sehr gut über die Kommandozeile getestet werden. Auf diesem Weg integrieren sie sich perfekt in die Linux Umgebung, da hier auch über Bash Skripte Dienste getestet werden können. Python: Python ist eine sehr beliebte Programmiersprache, die wenig Overhead besitzt und auch direkt C Bibliotheken verwenden kann, sollte doch einmal ein gewünschtes Modul fehlen. Die Sprache eignet sich sehr gut für Webdienste, da hier sehr viel zur Laufzeit angepasst bzw. erzeugt werden kann. C++/Qt: Das C++ Framework Qt bietet von Haus aus guten Support für D Bus auf Hochsprachenniveau. Andererseits kann man die GPIO Ports falls nötig doch direkt in C programmieren. Aufgeteilt wird das Projekt in drei Bereiche: API Service: Dies ist ein Webservice, der auf dem embedded Gerät läuft und eine HTTP Schnittstelle anbietet, mit der man die angebotenen Dienste steuern kann. Über diesen Webservice können auch noch weitere Anbindungen wie z.b. eine Smartphone App ermöglicht werden. Middleware Service: Dieser Dienst läuft ebenfalls auf dem embedded Gerät und bietet eine System Schnittstelle, die über einen D Bus Dienst bereitgestellt wird. Hier ist auch die eigentliche Logik des gesamten Projekts enthalten. Output Service: Der Middleware Service kommuniziert mit dem Output Service ebenfalls über die D Bus System Schnittstelle. Hier werden die eigentlichen Ausgabe aktionen durchgeführt. Wird das anzusteuernde Gerät ausgetauscht oder soll ein weiteres hinzugefügt werden, so muss nichts an der Middleware angepasst werden. 2

3 Unser Setup Hardware Als embedded board haben wir uns für das Raspberry Pi entschieden, da dieses Gerät jeder von uns bereits zuhause hat und wir so einzelne Module auch ohne ein gemeinsames Treffen weiter entwickeln bzw. testen können. Das Board in der von uns verwendeten Fassung (Model B) hat die folgenden Hardwaremerkmale: Dimensions 85mm x 56mm Chip Broadcom BCM2835 SoC full HD multimedia applications processor CPU 700 MHz Low Power ARM1176JZ F Applications Processor GPU Dual Core VideoCore IV Multimedia Co Processor RAM Storage USB 2.0 Ethernet Video Connections 512 MB 400 MHz SDCard 2x USB Ports 1x 10/100mb Ethernet RJ45 Jack HDMI, Composite RCA Supported Resolutions to , including 1080p, PAL & NTSC standards Audio Multi Channel HD Audio over HDMI, Stereo from 3.5 mm jack Operating Systems Raspbian, RaspBMC, Arch Linux, Risc OS, OpenELEC, Pidora Power Draw / voltage 750mA up to 5V 3

4 GPIO 26 Other Connectivity 1x CSI 2 for Raspberry Pi camera modules 1x DSI for Raspberry Pi displays Power Source 1x Micro USB (Quelle: ?ICID=RPi modelbplus compchart) Für uns war der ausschlaggebende Grund für dieses Board und Model der vorhandene Netzwerkanschluss, den wir für die Eingabemöglichkeit gewollt haben. Programmierumgebungen 1 Für den Django und Python teil haben wir PyCharm von Jetbrains verwendet, da die Hochschule hierfür Lizenzen hat (es gibt auch eine Open Source Community Edition, die unter der Apache Lizenz steht) und wir damit schon Erfahrungen hatten. 2 Für alles was C und C++ (samt Qt) anbelangt haben wir den Qt Creator genommen auch mit dem Hintergrund der vorhandenen sehr guten Erfahrungen. Er unterstützt das automatische Hochladen des Binarys auf das Board und remote debugging per GDB. 3 Die App für Android haben wir mit Hilfe des Android Studio entwickelt, welches ebenfalls aus der Softwareschmiede Jetbrains entspringt project.org/wiki/category:tools::qtcreator 3 https://developer.android.com/sdk/installing/studio.html 4

5 PyCharm Für die Webseite haben wir Django benutzt. Damit man die Webseite starten kann, braucht man folgende Abhängigkeiten zu Python 2.7: django django bootstrap form djangorestframework pybaulicht (für die Ansteuerung des D Bus Dienstes) Die nicht im Projekt vorhanden (die ersten 3 Abhängigkeiten) kann man mit pip (einer Paketverwaltung für Python) auf folgende Weise installieren: # sudo pip install django django bootstrap form djangorestframework PyCharm mit dem geöffneten Message model (Webinterface/) 5

6 Android Studio Um sein Projekt zu testen, braucht man entweder ein virtuelles Android, dass man sich per 4 Android SDK zusammenklickt, oder man kann es mit dem Programm adb (Android Debug Bridge) auf sein physikalisches Telefon hochladen und dort remote debuggen. Android Studio mit dem geöffneten Projekt unserer Androidapp (AndroidApp/) 4 https://developer.android.com/sdk/index.html 6

7 Qt Creator Qt Creator mit der geöffneten Mainfunktion unseres Baulichts (Service/) 7

8 Entwicklung Aufbau der Hardware Über die GPIOs setzen wir direkt das Signal, jenachdem, ob geradedaslicht komplett aus ist oder ein dit (kurzes Signal) bzw. ein dah (langes Signal bzw. Strich) kommt.die Länge kann durch die Variable dit (in Service/Baulichtexecutor.cpp) bestimmt werden. Ein dahist3mal so langwieein ditunddie Pause ist 7malsolang.EinePausezwischen denzeichenbestehtaus3maldemzeitintervalleinesdit5. Aufsetzen des Toolchains DownloadundInstallationdesQtCreatorsunterDebian basiertensystemen: 5 https://de.wikipedia.org/wiki/morsezeichen#zeitschema_und_darstellung 8

9 # sudo apt get install qtcreator Wenn man das Raspbian (oder irgendein anderes Linuximage für den Raspberry Pi) entpackt hat und das Image file auf eine SD Karte geschrieben hat, kann man sich das Rootfilesystem auf den Entwicklungsrechner kopieren. Sollte man keine SD Karte zur Hand haben, helfen folgende Befehle: # sudo fdisk lu disk.img Dies zeigt einem die Partitionen des Images an. Man muss sich die Sektorgröße und den Startblock der zweiten Partition (die als Linux markiert wird) merken. Die beiden Werte geben den Startblock der zweiten Partition an, den wir wieder brauchen: # sudo mount o loop,offset=$startblock image.img /mnt So kann man sich auch das Rootfilesystem kopieren. Zudem brauchen wir noch diverse Pakete, die zur Emulation des Geräts dienen: # sudo apt get install scratchbox2 qemu user static binfmt support \ # g++ arm linux gnueabi gdb Dann können wir auf dem virtuellen Gerät Einstellungen machen # cp /usr/bin/qemu arm static /mnt/usr/bin/ # sudo chroot /mnt/usr/bin # apt get install libqt4 dev gdb && exit Für die Scratchbox muss man folgende Einstellungen machen: # cd /mnt # sb2 init armel arm linux gnueabi gcc Damit qmake und make lokal im Rootfilesystem ausgeführt werden, muss man 2 Dateien erstellen, diese ausführbar machen und den eingerückten Text hineinschreiben: 9

10 # touch qmake # #! /bin/sh # sb2 qmake qt4 # chmod +x./qmake # # touch make # #! /bin/sh # sb2 make # chmod +x./make Möchte man die kompilierten Binaries per SSH auf das Board schicken, muss zuerst ein SSH Schlüsselpaar erzeugt werden: # ssh keygen t rsa # ssh copy id i.ssh/id_rsa.pub Die Einstellungen sollten an das eigene Setup ungefähr so aussehen: Nun muss man nur noch ein sogenanntes Kit anlegen sprich eine Verbindung aus Compiler für ARM und der dazugehörigen Qt Version. Dies geht in den Einstellungen unter Compiler. Dort muss man den ARM g++ angeben, den man vorhin installiert hat, sowie die Qt Version im Rootfilesystem, die man einfügt, indem man auf das erstellte qmake file hinweist, das ebenfalls im Rootfilesystem liegt. Möchte man nun ein Projekt starten, muss in die.pro Datei (das qmake spezifische Makefile) folgendes geschrieben werden: 10

11 target.path = /root/ INSTALLS += target Genauer Überblick der Dienste Im folgenden gehen wir genauer auf die einzelnen Aufgaben und Schnittstellen der Dienste ein. Webseite Schematischer Aufbau Die in Django/Python geschriebene Webseite gibt uns die Möglichkeit von jedem mobilen Endgerät aus Nachrichten zu versenden bzw. den aktuellen Status der Nachrichten zu überblicken. Ausschnitt aus der Hauptwebseite: 11

12 12

13 Man kann sich auch die aktuelle Warteschlange anzeigen lassen: Möchte man eine Nachricht eingeben, so kann man auf der Hauptseite auf den Button Sende deine Nachricht klicken und erhält folgenden Dialog: 13

14 Die Schritte zum Webseite starten lauten wie folgt: #./manage.py syncdb (muss einmalig zum Erstellen der Datenbank ausgeführt werden) #./manage.py runserver 8080 Somit läuft der Server auf Port 8080 und man kann im Browser unter die Webseite aufrufen. Es muss außerdem noch das Output Plugin laufen, ansonsten wird die Webseite nicht gestartet. RESTful-API Diese ist Teil der Webseite. Mit einem GET Request an kann man sich die aktuellen Nachrichten in der Queue als JSON kodiertes Objekt ansehen. Ferner können mit einem POST Request auch Nachrichten an den Server gesendet werden. Durch den Einsatz der REST schnittstelle können wir Entwicklern eine API bereitstellen, mit der sie nicht über den Browser, sondern wie von uns demonstriert eine mobile 14

15 Anwendung schreiben, mit der sie den gleichen Funktionsumfang haben wie über die Webseite. PyBaulicht (MiddleWare) Damit die Webseite Zugriff auf den D Bus Daemon hat, haben wir eine Schnittstelle namens pybaulicht geschrieben, die aus 3 Komponenten besteht: 1. BaulichtDbus 2. BaulichtSettings 3. BaulichtText Während in allen dreien der Namespace definiert, sowie allgemein die Verbindung zum Bus aufgebaut wird, wird der Klasse BaulichtDbus der Text übergeben (Instanz von BaulichtText, int oder str) bzw. darin der Status verwaltet. Zudem werden hier Texte hinzugefügt, gelöscht oder aufgelistet. In den BaulichtSettings werden die Pins des Boards sowie die Länge eines dits bzw. des text spacings festgelegt. BaulichtText repräsentiert die Nachricht, die man senden möchte. Sie enthält den Text, das Erstellungsdatum sowie eine Zahl, wie oft sie wiederholt werden soll. Android App Durch die REST Schnittstelle war es uns möglich eine Android App zu bauen, mit der man Texte senden und die Queue sowie aktive Texte ansehen kann. 15

16 Hauptbildschirm Aktive Texte Warteschlange Command Line Interface Nachdem wir ganz nach Objektorientiertem Programmierparadigma eine Schichtentrennung durchgeführt haben, ist es möglich, den Service auch per CLI zu steuern. Die Hilfeausgabe lautet wie folgt: usage: baulicht cli.py [ h] [ l] [ a <string>] [ r <int>] [ s <int>] [ p {on,off}] [ pin <int>] [ status] [ start] [ stop] Baulicht command line interface to list, add, remove texts and change settings. optional arguments: h, help show this help message and exit l, list List all active texts 16

17 a <string>, add <string> Add Text to morse r <int>, remove <int> Remove Text by ID s <int>, speed <int> length of a dit in ms p {on,off}, pause {on,off} Stop morse/blink pin <int> Set GPIO Pin status Show current status start Start morse/blink stop Stop morse/blink Das Binary greift hierbei auf das von uns geschriebene pybaulicht zurück, um die Werte 6 abzufragen bzw. zu verändern sowie argparse, da es die Aufgabe des Argumenten parsens wahnsinnig einfach macht. Ausgabe per Qt (Output Service) Anfangs wollten wir auf eine vorhandene C API zurück greifen, die man unter der folgenden URL findet: https://github.com/vegetableavenger/bbbiolib Da wir die Funktionen der Schnittstelle nicht vollständig gebraucht haben, haben wir versucht direkt die Schritte in C nachzubauen, die man so auch auf der Kommandozeile ausführt. Den Port auf GPIO festlegen: # echo 7 > /sys/kernel/debug/omap_mux/gpmc_ad4 Port exportieren: # echo 36 > /sys/class/gpio/export Den Port auf Output stellen: # echo out > /sys/class/gpio/gpio36/direction Mit echo kann man nun den GPIO ein und ausschalten: # echo 1 > /sys/class/gpio/gpio36/value # echo 0 > /sys/class/gpio/gpio36/value 6 https://docs.python.org/dev/library/argparse.html 17

18 Das Ganze als C Code: if ((fp = fopen("/sys/class/gpio/export", "w")) == NULL){ printf("cannot open export file.\n"); exit(1); } fprintf( fp, "%d", 30 ); fclose(fp); if ((fp = fopen("/sys/class/gpio/gpio30/direction", "rb+")) == NULL){ printf("cannot open direction file.\n"); exit(1); } fprintf(fp, "high"); fclose(fp); if ((fp = fopen("/sys/class/gpio/gpio30/value", "rb+")) == NULL){ printf("cannot open value file.\n"); exit(1); } Da aber nach dem zweiten Versuch der Code nicht laufen wollte, hat Christoph Keller sich dazu entschlossen, dass wir das Ganze gleich in Qt schreiben. Ein zentraler Teil der Programms auf nativer Seite ist die Baulicht Klasse, in deren Header sich unter anderem folgende Qt properties finden lassen: Q_CLASSINFO("D Bus Interface", "de.naptower.baulicht") Q_PROPERTY(int mode READ mode WRITE setmode NOTIFY modechanged) Dort werden 2 wichtige Funktionen (nicht programmiertechnisch, sondern funktional gesehen) definiert: Das DBus Interface, das die Klasse implementiert Ein Modusattribut, das bei einer Zustandsänderung ein SIGNAL ausgibt, auf das ein SLOT reagiert so wird in Qt asynchroner Programmfluss realisiert 18

19 Die main Methode instanziiert eine QDBusConnection auf dem Sessionbus, wobei diese vorerst noch keine Einstellungen besitzt. Danach werden die Settings sowie das Baulicht instantiiert, welchem die Settings übergeben werden. Danach werden sowohl die Settings als auch das Baulicht als Objekt am DBus registriert. Was beide Klassen machen, lässt sich leicht an den Headern der beiden Klassen sehen: Baulicht public: enum Mode { TextMode = 0, BlinkMode = 1 }; void setsettings(settings *settings); Settings* settings() const; public slots: void setmode(int mode); int mode() const; void setpaused(bool paused); bool paused() const; QString addtext(const QString& text, int repeat); void removetext(const QString& path); QStringList texts() const; void clear(); void start(); void stop(); signals: void modechanged(int mode); void pausedchanged(bool paused); void textadded(const QString& path); 19

20 Settings public slots: void setdit(int milliseconds); int dit() const; void settextspacing(int milliseconds); int textspacing() const; void setpin(int pin); int pin() const; signals: void ditchanged(int dit); void textspacingchanged(int textspacing); void pinchanged(int pin); D-Bus Einführung zu D-Bus Was ist D Bus? Dazu die offizielle Beschreibung des Projekts: D Bus is a message bus system, a simple way for applications to talk to one another. In addition to interprocess communication, D Bus helps coordinate process lifecycle; it makes it simple and reliable to code a "single instance" application or daemon, and to launch applications and daemons on demand when their services are needed. D Bus supplies both a system daemon (for events such as "new hardware device added" or "printer queue changed") and a per user login session daemon (for general IPC needs among user applications). Also, the message bus is built on top of a general one to one message passing framework, which can be used by any two apps to communicate directly (without going through the message bus daemon). Currently the communicating applications are on one computer, or 20

21 through unencrypted TCP/IP suitable for use behind a firewall with shared NFS home directories. (Help wanted with better remote transports the transport 7 mechanism is well abstracted and extensible.) D Bus ist nur als IPC Ersatz gedacht, nicht für Kommunikation auf verschiedenen Hosts. Es ist verbindungsorientiert und hat einen Status (nicht wie bspw. UDP). Andererseits transportiert es immer Nachrichten fester Länge nicht einen Strom an Daten wie TCP. Es hat eine feste Varietät an ganzen Zahlen, Gleitkommazahlen und Strings. Dadurch kann eine falsch übertragene Nachricht erkannt werden. Für D Bus existieren diverse Bindings an Programmiersprachen, so dass niemand den C Code darunter direkt anfassen muss. In manchen Sprachen geht das sogar soweit, dass der Programmierer von D Bus gar nichts mit bekommt. Auf der offiziellen Webseite von D Bus findet sich folgender prägender Satz in der 8 Dokumentation der Referenzimplementierung : If you use this low level API directly, you're signing up for some pain. Selbst die Handhabung von D Bus mit der high level API GLIB ist immer noch sehr aufwendig und man sollte sich überlegen, ob man nicht dbus cxx oder ähnliches nimmt. Ein Beispiel für die Anwendung von D Bus ist zum Beispiel das Instant Messaging 9 Programm Pidgin, dass verschiedenste Signale aussendet und anhand derer etwa Desktopbenachrichtigungen angezeigt werden können, wenn ein Kontakt online kommt, eine Nachricht empfangen wird und ähnliches. Busse D Bus bietet 2 Arten der Kommunikation: Library oder daemon basiert. Während bei der Library theoretisch nur 2 Prozesse miteinander Daten austauschen können ist es bei der daemon basierten Kommunikation so, dass tatsächlich ein Bus bereit gestellt wird. Dadurch wird eine einmal gesendete Nachricht auf den Bus geschickt und jeder Empfänger, der sich dafür interessiert, fängt die Nachricht ab. Es ist möglich, dass mehrere Busse gleichzeitig auf einem System laufen, ohne sich gegenseitig zu stören. Unter Linux gab es zuvor immer 2 Arten von Bussen: Den Systembus, der z.b. dafür verantwortlich war, das Event eines angesteckten Geräts mit zu bekommen oder der Sessionbus, der benutzerabhängig Events verarbeitet hat. Dieser Sessionbus wurde von https://developer.pidgin.im/wiki/dbushowto 21

22 D Bus so erweitert, dass er Benutzer unterscheiden kann und sogar dazu noch Benutzer authentifizieren bzw. eine Zugangskontrolle bereitstellen kann. Schematische Übersicht über D Bus (Quelle Bus.freedesktop.org/doc/diagram.png) Jeder Bus hat eine Adresse, die genau beschreibt, wie man sich mit ihr zu verbinden hat. Normalerweise wird das durch einen Filenamen eines Unix domain sockets wie /tmp/.socket abgebildet. Durch die D Bus API wird dies aber komplett versteckt. Konfiguration Um D Bus zu konfigurieren, muss man ein so genanntes busconfig schreiben, was wiederum in einem XML basierten Format geschrieben wird Beispiele dazu findet man üblicherweise unter /etc/d Bus 1/system.conf oder /etc/d Bus 1/session.conf im Filesystem eines jeden Linux. 22

23 Verbindungen Jede Verbindung zu D Bus kann mit einem oder mehreren Namen assoziiert werden. Diese sind als die Bus names der Verbindungen bezeichnet. Die Namen sind Namen der Verbindungen, nicht Namen der Busse. Bus names bestehen aus einer Serie von eindeutigen Kennungen, die durch Punkte getrennt werden: Sie dürfen Buchstaben, Zahlen, Striche und Unterstriche enthalten. Damit besitzt die Verbindung den bus name, wie es im D Bus jargon heißt. Wenn eine Verbindung aufgebaut wird, nimmt sich der Bus sofort einen festen bus name, die ihm solang zugewiesen bleibt, wie der Bus existiert. Dies sind die unique connection names, denn keine andere Verbindung auf dem Bus wird den gleichen bus name haben auch wenn die Verbindung getrennt wird und andere erzeugt werden. Sie können daran erkannt werden, dass sie mit einem Doppelpunkt anfangen (etwa : ). Eine Verbindung kann auch zusätzliche Namen beantragen, um z.b. einen Service unter einem bekannten Namen anzubieten, die anhand einer Konvention ausgehandelt werden: Sie müssen aus zwei oder mehr punkt separierten Elementen bestehen: de.naptower.baulicht etwa. Nur eine Verbindung kann diesen Namen auf dem Bus gleichzeitig haben, aber abgesehen von den unique connection names, können bus names auch wieder abgegeben werden und von einem anderen Client genutzt werden. Object Model Objekte Bei der Kommunikation gibt es Endpunkte, die sich Objekte nennen. Diese werden vom Clientprozess erzeugt und existieren nur innerhalb der Verbindung des Clients zum Bus. Das Objekt bietet dem Clientprozess die Möglichkeit seine Services auf dem Bus anzubieten, dabei darf jeder Client eine beliebige Anzahl an Objekten erzeugen. Jede der Nachrichten fällt in eine der 3 Kategorien: 1. Anfragen des Clientprozesses an Objekte 2. Antworten auf die Anfragen sie gehen vom Objekt zurück zum Prozess 3. One way Nachrichten, die von Objekten ausgehen. Das sind Broadcasts an jeden verbundenen Client, der Interesse an den Nachrichten angegeben hat 23

24 Jeder Bus hat mindestens ein Objekt, das den Bus selbst repräsentiert. Clients können Informationen über den Busstatus abfragen, indem sie Anfragen an das Objekt schicken. Proxies Objekte können auf dem Bus durch Referenzen angesprochen werden, die im D Bus Jargon Proxies heißen. Ob man direkt mit dem Objekt oder aber mit einem Proxy spricht, kommt auf die Abstraktionsebene an, die durch das Languagebinding gegeben ist. Objekte haben Namen, die so genannten paths. Diesen Namen haben sie erhalten, da sie wie Dateisystempfade in der Unixwelt durch Slashes getrennt werden. Ein Objektname muss nur innerhalb der Verbindung zum Bus eindeutig sein. Da jedes Objekt innerhalb eines Kontextes der Verbindung lebt, braucht es eine Kombination aus der bus name Verbindung und dem Objektnamen, um es zu finden. Sobald man dies getan hat und es nochmal benutzen möchte, wird man sich eine Variable zulegen, die den Proxy zum Objekt darstellt. In machen Languagebindings bieten Proxies failovers an. Wenn man einen Proxy hat und dieser Client sich trennt, unter dem gleichen Namen wieder verbindet und das Objekt wieder belebt, kann es sein, dass das Programm, das auf dem Proxy aufbaut, von dem Vorgang gar nichts mit bekommt. Methods Wenn ein Client eine Anfrage an ein Objekt schickt sieht es diese Anfrage durch Aufruf einer Methode des Objekts: Das Objekt wird angewiesen, spezifische, benannte Aktion auszuführen. Normalerweise, wenn ein Client versucht eine Methode eines Objekts aufzurufen, die das Objekt nicht anbietet, wird ein Fehler ausgelöst. Die Methodendefinition kann verlangen, dass bestimmte Informationen in der Anfrage als Argumente übergeben werden. Für jede Anfrage enthält die Antwort das Ergebnis, neben entweder den Daten des Ergebnisses oder im Falle einer nicht durchführbaren Aktion Exceptioninformationen. Diese enthalten mindestens einen Exceptionnamen und eine Fehlernachricht. Die meisten D Bus Bindings bieten für den komplizierten Vorgang eine Vereinfachung. Wenn beispielsweise einem Objekt ein String als Argument übergeben wird, so wird dem 24

25 Funktionsaufruf auch nur ein String übergeben. Man muss hier nicht den String konvertieren und diesen dann in ein Datenfeld einer Nachricht überführen. Der Vorgang der Datenkapselung in Nachrichten wird marshalling genannt. Wird eine Nachricht gesendet, so hat man nicht unbedingt auf das Ergebnis zu warten, so dass der Programmfluss solange in einer Schleife verharrt. D Bus bietet Möglichkeiten mehrere Anfragen asynchron zu handhaben. Signale Eine andere Form der Kommunikation sind Signale. Diese one way Kommunikation kommt von einem Objekt und geht nirgendwo bestimmtes hin (broadcast). Clientprozesse können ihr Interesse an einem Signal eines bestimmten Namens bekunden und sobald ein passendes Signal ausgelöst wird, werden alle interessierten Clients eine Kopie dieses Signals empfangen. Für Signale gibt es keine Antworten: Das Objekt, dass das Signal aussendet, kann also nicht wissen, ob ein oder mehrere oder vielleicht auch gar kein Empfänger das Signal verarbeitet. Signale können Parameter übertragen, Clients können bestimmten, dass sie nur Signale empfangen wollen, deren Parameter bestimmten Werten entspricht. Interfaces Jedes Objekt hat bestimmte Methoden und schickt bestimmte Signale zusammengefasst bezeichnet man das als die member des Objekts. Alle Member werden in einem Interface spezifiziert. Genauso wie in der Objektorientierten Programmierung ist ein Interface ein Set an Deklarationen. Wenn man dieses Interface implementieren will, so muss man alle Methoden bereitstellen und die Verfügbarkeit der Signale an alle Listener verkünden.. Jeder der Member muss die Parameter akzeptieren oder bereitstellen, wie sie im Interface genannt werden. Jedes Objekt kann ein Interface implementieren, genauso wie in Java kann eine beliebige Anzahl an Objekten ein Interface implementieren. Genauso kann ein Objekt aber auch eine beliebige Anzahl an Interfaces implementieren. Die Kombination aus allen unterstützten Interfaces nennt man den type eines Objekts. 25

26 Wenn ein Client eine Methode aufruft oder auf ein Signal horcht, muss es das Objekt und die Member, auf die es sich bezieht deutlich machen. Zusätzlich dazu kann der Client das Interface, in welchem der Member erstellt wurde, benennen. Das kann in manchen Fällen notwendig sein: Wenn ein Objekt zwei Interfaces erstellt, die beide eine Methode namens foo spezifizieren, so muss man sie noch unterscheiden können. (Quelle: Basistypen Char y b n q i u x t Code Data Type 8 bit unsigned integer boolean value 16 bit signed integer 16 bit unsigned integer 32 bit signed integer 32 bit unsigned integer 64 bit signed integer 64 bit unsigned integer d double precision floating point (IEEE 754) s o g a UTF 8 string (no embedded null characters) D Bus Object Path string D Bus Signature string Array ( ) Structure start and end v Variant { } Dictionary/Map begin and end h Unix file descriptor 26

27 Containertypen D Bus erlaubt 4 verschiedene Containertypen: 1. Structs Structs sind von Klammern begrenzt und können jeden D Bus Basistyp enthalten. Z.B. enthält (ii) zwei Integer und ((ii)s) enthält ein Struct aus 2 Integern und einem darauf folgenden String. 2. Arrays Definieren eine Liste an member eines festen Typs. Der Buchstabe a muss direkt vor den im Array enthaltenen Typ geschrieben werden. Beispiele wären ai für ein int Array oder a(ii) für ein Array aus structs. 3. Variants Dürfen jeden validen Typ enthalten. Ein enthaltener Wert ist neben der Typsignatur automatisch gespeichert. 4. Dictionaries Dicts sind structs in der Syntax ähnlich, allerdings mit geschweiften Klammern. Sie enthalten immer 2 Werte für key value. Beispiel: a{ss} string key string value. Der Key muss ein Basistyp sein (kein Container), während der value jeder Wert sein darf. (Quelle: https://pythonhosted.org/txdbus/dbus_overview.html) D-Bus Tools 27

28 10 Mit dem Tool D Feet, das vom Gnome Projekt entwickelt wird, kann man sich Systemund Session bus anschauen. 11 D Bus liefert standardmäßig aber auch ein Tool namens dbus monitor mit, mit dem man untersuchen kann, was zurzeit für Nachrichten über den Bus gehen, was wie folgt aussieht: method call sender=:1.15 > dest=org.freedesktop.dbus serial=941 path=/org/freedesktop/dbus; interface=org.freedesktop.dbus; member=namehasowner string "org.kde.activitymanager" method call sender=:1.17 > dest=org.kde.klauncher serial=686 path=/klauncher; interface=org.kde.klauncher; member=start_service_by_desktop_path string "/usr/share/applications/turpial.desktop" array [ ] array [ string "DISPLAY=:0" ] string "scumm pc; ;80815;626_time953707" boolean true method return sender=:1.1 > dest=:1.17 reply_serial=686 int32 0 string "" string "" int Das Tool dbus send erlaubt es einem eine Nachricht auf den Bus zu schicken. Standardmäßig wird der Sessionbus genommen. Ein Ziel wird keines definiert, außer man gibt die Option dest an. 13 Eine Übersicht über die verschiedenen Werte bietet die manpage von dbus send: <contents> ::= <item> <container> [ <item> <container>...] 10 https://wiki.gnome.org/apps/dfeet 11 monitor.1.html 12 send.1.html 13 send 28

29 <item> ::=<type>:<value> <container>::=<array> <dict> <variant> <array> ::=array:<type>:<value>[,<value>...] <dict> ::=dict:<type>:<type>:<key>,<value>[,<key>,<value>...] <variant> ::=variant:<type>:<value> <type> ::=string int16 uint16 int32 uint32 int64 uint64 double byte boolean objpath Unsere definierten Interfaces WirhabenmehrereD BusInterfacesdefiniert: de.naptower.baulicht.blink de.naptower.baulicht.settings de.naptower.baulicht.text DiesewerdenallebeieinemDienstnamens de.naptower.baulicht Dienstregistriert. Wasmanhiersehenkann,istderBaumartigeAufbauderD BusInterfaces. Das aufgebaute Baulicht DasaufgehängteBaulichtimoberenDritteldesHotelturms 29

30 Geplante Erweiterungen Kontroll LCD (Ein LCD Display mit einer Zeile, um den aktuellen Text anzuzeigen) Gehäuse Hardware Button zum Ein und Ausschalten Zeitschaltung ohne Cron Job Settings über Webinterface Ausblick in die Zukunft Momentan gibt es noch keine öffentliche Möglichkeit, das Baulicht Nachrichten morsen zu lassen, aber sobald Fabian Weisshaar das Portforwarding eingerichtet hat, wird es unter möglich sein die Webseite zu erreichen. 30

DBUS Interprozess-Kommunikation für Embedded-Plattformen

DBUS Interprozess-Kommunikation für Embedded-Plattformen DBUS Interprozess-Kommunikation für Embedded-Plattformen Andreas Schwarz Neratec Solutions AG Firmenprofil Neratec Solutions AG Produkt-Entwicklungen für kundenspezifische elektronische Produkte Produkte

Mehr

Smartphone Entwicklung mit Android und Java

Smartphone Entwicklung mit Android und Java Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter

Mehr

Mark Fink at. VHS Augsburg 2014. Erste Schritte mit dem Raspberry PI. mark@mark-fink.de

Mark Fink at. VHS Augsburg 2014. Erste Schritte mit dem Raspberry PI. mark@mark-fink.de Mark Fink at VHS Augsburg 2014 mark@mark-fink.de Mark Fink Testautomation & PerformanceEngineering Finance, Telco, Logistic Mark Fink Webmaster for Media-Site Open-Source @ Github Robotics Mein aktuelles

Mehr

Theorie und Praxis einer JSON-RPC-basierten Web-API

Theorie und Praxis einer JSON-RPC-basierten Web-API Theorie und Praxis einer JSON-RPC-basierten Web-API Christian Krause Christian.Krause@raritan.com Raritan Deutschland GmbH Chemnitzer LinuxTage 2015 Gliederung 1 2 Remote Procedure Call Interface Definition

Mehr

Einführung in die Programmierung mit Qt

Einführung in die Programmierung mit Qt Einführung in die Programmierung mit Qt Dr. Ralf Schüler 5.11.2009 Was ist Qt? sprich: [kju:t] Klassenbibliothek für C++ (ferner Java, Python u.a.) sehr umfangreich: GUI, Stringverarbeitung, reguläre Ausdrücke,

Mehr

Praktikum Internetprotokolle - POP3

Praktikum Internetprotokolle - POP3 Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik/Rechnernetze 19. Mai 2008 1 Aufgabenstellung Praktikum

Mehr

Connecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg

Connecting Android. Externe Hardware mit dem grünen Roboter verbinden. Alexander Dahmen Dominik Helleberg Connecting Android Externe Hardware mit dem grünen Roboter verbinden Alexander Dahmen Dominik Helleberg Speaker Dominik Helleberg Mobile Development Android / Embedded Tools http://dominik-helleberg.de/+

Mehr

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging Das Beispiel orientiert sich am selben Code, der im Teil 1 der Serie verwendet wurde. Text Styles: Shell Prompt mit

Mehr

Embedded-Linux-Seminare. Toolchains

Embedded-Linux-Seminare. Toolchains Embedded-Linux-Seminare Toolchains http://www.embedded-linux-seminare.de Diplom-Physiker Peter Börner Spandauer Weg 4 37085 Göttingen Tel.: 0551-7703465 Mail: info@embedded-linux-seminare.de Kopier-Rechte

Mehr

Apps-Entwicklung mit Netbeans

Apps-Entwicklung mit Netbeans JDroid mit Netbeans Seite 1 Apps-Entwicklung mit Netbeans Version 2.2, 30. April 2013 Vorbereitungen: 1. JDK SE neuste Version installieren, (http://www.oracle.com/technetwork/java/javase/downloads/index.html)

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

1. Vorbereiten das Host, folgende Software Pakete müssen installiert werden: gnome-devel bison flex texinfo libncurses5-dev git codeblocks putty

1. Vorbereiten das Host, folgende Software Pakete müssen installiert werden: gnome-devel bison flex texinfo libncurses5-dev git codeblocks putty 1. Vorbereiten das Host, folgende Software Pakete müssen installiert werden: gnome-devel bison flex texinfo libncurses5-dev git codeblocks putty 2. Buildroot installieren Buildroot (www.buildroot.org)

Mehr

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer Kapitel 4.1 bis 4.3 1. zu bearbeitende Aufgaben: 4.1 4.1: done 2. Was verstehen Sie unter einem "Java-Package"? Erweiterungen verschiedener Klassen welche in Java benutzt werden können. 3. Sie möchten

Mehr

Whitepaper. Produkt: combit List & Label 16. List & Label Windows Azure. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit List & Label 16. List & Label Windows Azure. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit List & Label 16 List & Label Windows Azure List & Label Windows Azure - 2 - Inhalt Softwarevoraussetzungen 3 Schritt 1: Neues Projekt

Mehr

Mobile Application Development

Mobile Application Development Mobile Application Development Android: Einführung Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Lernziele Der/die Kursbesucher/in kann

Mehr

embedded projects GmbH

embedded projects GmbH embedded projects GmbH e Quickstart GNUBLIN 32 MB (700641) Montage- und Aufbauanleitung Beispielanwendung (Rote LED auf dem Gnublin ) 1/12 Lieber Kunde, wir versuchen mit unseren Datenenblättern Ihnen

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Embedded Linux gnublin Board Programmieren Sonstiges. Embedded Linux am Beispiel des Gnublin-Boards

Embedded Linux gnublin Board Programmieren Sonstiges. Embedded Linux am Beispiel des Gnublin-Boards Embedded Linux am Beispiel des Gnublin-Boards Was ist Embedded Linux? Wikipedia Als Embedded Linux bezeichnet man ein eingebettetes System mit einem auf dem Linux-Kernel basierenden Betriebssystem. In

Mehr

Spezifikationen und Voraussetzung

Spezifikationen und Voraussetzung Projekt IGH DataExpert Paynet Adapter Spezifikationen Voraussetzungen Datum : 21.07.08 Version : 1.0.0.2 21.07.2008 Seite 1 von 7 Inhaltsverzeichnis 1 Einleitung... 3 2 Architektur... 3 2.1 Grundsätze

Mehr

JDroidLib mit Eclipse (Mac/Linux/Windows)

JDroidLib mit Eclipse (Mac/Linux/Windows) JDroidLib mit Eclipse (Mac/Linux/Windows) Version 1.3, 25. März 2013 (Unter Windows besser die ADT-Bundle Version installieren, siehe entsprechende Anleitung) Vorbereitungen: 1. JDK SE neuste Version installieren,

Mehr

Isabel Arnold CICS Technical Sales Germany Isabel.arnold@de.ibm.com. z/os Explorer. 2014 IBM Corporation

Isabel Arnold CICS Technical Sales Germany Isabel.arnold@de.ibm.com. z/os Explorer. 2014 IBM Corporation Isabel Arnold CICS Technical Sales Germany Isabel.arnold@de.ibm.com z/os Explorer Agenda Introduction and Background Why do you want z/os Explorer? What does z/os Explorer do? z/os Resource Management

Mehr

Spezifikationen und Voraussetzung

Spezifikationen und Voraussetzung Projekt IGH DataExpert Yellowbill Adapter Spezifikationen Voraussetzungen Datum : 22.08.2013 Version : 1.0.0.2 22.08.2013 Seite 1 von 7 Inhaltsverzeichnis 1 Einleitung...3 2 Architektur...3 2.1 Grundsätze

Mehr

Technology for you. Media Solutions

Technology for you. Media Solutions Technology for you Media Solutions Media Units / Media Units Media Units Robuste Installationstechnik für jeden Klassenund Schulungsraum Robust installation technology for each class- and conference room

Mehr

GmbH, Stettiner Str. 38, D-33106 Paderborn

GmbH, Stettiner Str. 38, D-33106 Paderborn Serial Device Server Der Serial Device Server konvertiert die physikalische Schnittstelle Ethernet 10BaseT zu RS232C und das Protokoll TCP/IP zu dem seriellen V24-Protokoll. Damit können auf einfachste

Mehr

p^db=`oj===pìééçêíáåñçêã~íáçå=

p^db=`oj===pìééçêíáåñçêã~íáçå= p^db=`oj===pìééçêíáåñçêã~íáçå= Error: "Could not connect to the SQL Server Instance" or "Failed to open a connection to the database." When you attempt to launch ACT! by Sage or ACT by Sage Premium for

Mehr

Tutorial. zur Einbindung einer Seafile Bibliothek in das Linux-Dateisystem. (gültig für 'Dual Cubie Homeserver SD-Card Images' V3n u.

Tutorial. zur Einbindung einer Seafile Bibliothek in das Linux-Dateisystem. (gültig für 'Dual Cubie Homeserver SD-Card Images' V3n u. Tutorial zur Einbindung einer Seafile Bibliothek (gültig für 'Dual Cubie Homeserver SD-Card Images' V3n u. V4n) 2015 Stefan W. Lambert kontakt@stefanius.de Copyright-Hinweis Dieses Dokument obliegt den

Mehr

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer 2015. Andreas Zeller, Universität des Saarlandes

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer 2015. Andreas Zeller, Universität des Saarlandes Erste Schritte Programmieren für Ingenieure Sommer 2015 Andreas Zeller, Universität des Saarlandes Das Arduino-Board Ihr Fundino-Board Anschluss über USB Anschluss über USB Programmierumgebung Download

Mehr

Renée Bäcker. Perl $foo Magazin

Renée Bäcker. Perl $foo Magazin Renée Bäcker Renée Bäcker Perl Renée Bäcker Perl $foo Magazin Renée Bäcker Perl $foo Magazin OTRS Renée Bäcker Perl $foo Magazin OTRS u.v.m Früher... Am Anfang steht der Kunde... dann kommt der Auftrag

Mehr

Programmierung eines GIMP-Plugin

Programmierung eines GIMP-Plugin Programmierung eines GIMP-Plugin Was ist GIMP? GNU Image Manipulation Program Bildbearbeitungssoftware Bildkonvertierer Open Source Erweiterbar durch Plugins Mögliche Programmiersprachen für Plugin-Entwicklung

Mehr

Raspberry Pi. Einführung Pi and More 5 Nico Maas

Raspberry Pi. Einführung Pi and More 5 Nico Maas Raspberry Pi Einführung Pi and More 5 Nico Maas Zur Person Nico Maas IT Systemelektroniker (RZ UNI SB) Praktische Informatik (HTW SB) mail@nico-maas.de www.nico-maas.de @nmaas87 29.05.2014 Nico Maas /

Mehr

Effizienz im Vor-Ort-Service

Effizienz im Vor-Ort-Service Installation: Anleitung SatWork Integrierte Auftragsabwicklung & -Disposition Februar 2012 Disposition & Auftragsabwicklung Effizienz im Vor-Ort-Service Disclaimer Vertraulichkeit Der Inhalt dieses Dokuments

Mehr

Firmware. Dokument-Version 1

Firmware. Dokument-Version 1 Fortinet TFTP Prozess Datum 02/12/2011 11:01:00 Hersteller Modell Type(n) Fortinet Fortigate Firmware Copyright Autor Boll Engineering AG, Wettingen mp Dokument-Version 1 Fortinet TFTP Prozess Dieser Artikel

Mehr

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. Java Connection Architecture Teil 3

Mainframe Internet Integration. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013. Java Connection Architecture Teil 3 UNIVERSITÄT LEIPZIG Mainframe Internet Integration Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013 Java Connection Architecture Teil 3 CICS Transaction Gateway el0100 copyright W. G. Spruth,

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit

Mehr

NEWpixi* API und die Umstellung auf REST. Freitag, 3. Mai 13

NEWpixi* API und die Umstellung auf REST. Freitag, 3. Mai 13 NEWpixi* API und die Umstellung auf REST Fakten NEWpixi* API Technik REST-basierend.NET Webservice IIS Webserver Release 31. August 2013, zusammen mit dem NEWpixi* ELI Release Legacy API und erste NEWpixi*

Mehr

Raspberry Pi. Einführung Pi and More 6 Nico Maas

Raspberry Pi. Einführung Pi and More 6 Nico Maas Raspberry Pi Einführung Pi and More 6 Nico Maas Zur Person Nico Maas IT Systemelektroniker (RZ UNI SB) Bachelor of Science (HTW SB) mail@nico-maas.de www.nico-maas.de @nmaas87 28.01.2015 Nico Maas / www.nico-maas.de

Mehr

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java Grundlagen von Java Aufgabe 1: Typen und Zuweisungen in Java Welche der folgenden Java-Anweisungen sind fehlerhaft? Handelt es sich um einen Compiler- oder einen Laufzeitfehler? Anmerkung: Folgefehler

Mehr

Satellite 6. Next Generation System Provisioning, Configuration and Patch Management

Satellite 6. Next Generation System Provisioning, Configuration and Patch Management Peter Mumenthaler Head of System Engineering Senior Systems Architekt Andreas Zuber Senior System Engineer Philipp Gassman System Technician Satellite 6 Next Generation System Provisioning, Configuration

Mehr

SchlieSSen Sie Ihren Lemur an

SchlieSSen Sie Ihren Lemur an 1 SchlieSSen Sie Ihren Lemur an Der Lemur ist nicht irgendein durchschnittlicher MIDI-Controller. Er spricht 1000 Mal schneller und mit der 4-fachen Auflösung. Also finden Sie auf der Rückseite auch nicht

Mehr

AVR-Programmierung unter Mac OSX

AVR-Programmierung unter Mac OSX AVR-Programmierung unter Mac OSX im Studiengang BEL3 Lehrveranstaltung Embedded Systems Tutorial ausgeführt von: Jürgen Hausladen A-2460 Bruck/Leitha, Obere Neugasse 6 Wien 01.02.2011 Inhaltsverzeichnis

Mehr

Linux basierendes NAS auf Seagate Goflex Net installieren. Christian Eppler 21162, Stefan Möbius 21165

Linux basierendes NAS auf Seagate Goflex Net installieren. Christian Eppler 21162, Stefan Möbius 21165 Linux basierendes NAS auf Seagate Goflex Net installieren Christian Eppler 21162, Stefan Möbius 21165 Inhaltsverzeichnis Wieso das Ganze? Nachteile Pogoplug/Debian Vorteile Pogoplug/Debian Wieso diese

Mehr

Organisatorisches. Übungsleiter: Karsten Otto (otto@inf.fu-berlin.de) Homepage: http://www.inf.fu-berlin.de/lehre/ss06/netzsicherheit Aufgaben

Organisatorisches. Übungsleiter: Karsten Otto (otto@inf.fu-berlin.de) Homepage: http://www.inf.fu-berlin.de/lehre/ss06/netzsicherheit Aufgaben Organisatorisches Übungsleiter: Karsten Otto (otto@inf.fu-berlin.de) Homepage: http://www.inf.fu-berlin.de/lehre/ss06/netzsicherheit Aufgaben Mittwochs im Netz Vorbesprechung Freitag/Montag in der Übung

Mehr

Netduino Mikroprozessor für.net Entwickler

Netduino Mikroprozessor für.net Entwickler Netduino Mikroprozessor für.net Entwickler Patrick Herting Softwareentwickler BlueTem Software GmbH Blog E-Mail www.wdev.de pher@live.de Ablaufplan - Theorieteil Was ist der Netduino? Welche Modelle gibt

Mehr

www.heimetli.ch Heimetli Software AG HSWModule ... Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5.

www.heimetli.ch Heimetli Software AG HSWModule ... Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5. www.heimetli.ch. Heimetli Software AG HSWModule........ Senden und Empfangen von SMS-Meldungen mit einem GSM-Modul Version 1.01 5. August 2005 Inhaltsverzeichnis Was ist HSWModule?... 1 Installation...

Mehr

Apps-Entwicklung mit Eclipse

Apps-Entwicklung mit Eclipse JDroid mit Eclipse Seite 1 Apps-Entwicklung mit Eclipse Version 1.1, 30. April 2013 Vorbereitungen: 1. JDK installieren JDK SE neuste Version (64 oder 32 Bit) herunterladen und installieren (http://www.oracle.com/technetwork/java/javase/downloads/index.html)

Mehr

Einführung in Android. 9. Dezember 2014

Einführung in Android. 9. Dezember 2014 Einführung in Android 9. Dezember 2014 Was ist Android? Software für mobile Geräte: Betriebssystem Middleware Kernanwendungen Android SDK: Tools und APIs zur Entwicklung von Anwendungen auf der Android-Plattform

Mehr

Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold

Installationsanleitung MS SQL Server 2005. für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Installationsanleitung MS SQL Server 2005 für Sage 50 Ablage & Auftragsbearbeitung Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold Inhaltsverzeichnis 1. GRUNDSÄTZLICHES... 3 2. SQLExpress Installationsanleitung

Mehr

MVB3. Einrichten eines Servers für MVB3 ab Version 3.5. Admin-Dokumentation. Inhalt V3.05.001

MVB3. Einrichten eines Servers für MVB3 ab Version 3.5. Admin-Dokumentation. Inhalt V3.05.001 V3.05.001 MVB3 Admin-Dokumentation Einrichten eines Servers für MVB3 ab Version 3.5 Inhalt Organisatorische Voraussetzungen... 1 Technische Voraussetzungen... 1 Konfiguration des Servers... 1 1. Komponenten

Mehr

Enigma2 Plugin Entwicklung mit Eclipse

Enigma2 Plugin Entwicklung mit Eclipse Enigma2 Plugin Entwicklung mit Eclipse Enigma2 Plugin Entwicklung mit Eclipse 1/15 Inhaltsverzeichnis 1 ÜBER... 3 2 INSTALLATION... 4 2.1 INSTALLATION VON ECLIPSE... 4 2.2 INSTALLATION VON PYDEV... 4 3

Mehr

Systemvoraussetzungen CustomX. Customer Relationship Management

Systemvoraussetzungen CustomX. Customer Relationship Management Systemvoraussetzungen CustomX Customer Relationship Management ThinX networked business services August 2005 Inhaltsverzeichnis ThinX networked business services Inhaltsverzeichnis 1 Einleitung 3 2 Webserver

Mehr

Entwicklungswerkzeuge & - methoden

Entwicklungswerkzeuge & - methoden Entwicklungswerkzeuge & - methoden Debugging und Logging von mobile Apps Jürgen Menge Sales Consultant, Oracle Deutschland E-Mail: juergen.menge@oracle.com +++ Bitte nutzen Sie die bevorzugte Telefonnummer

Mehr

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht. Technisches Design Inhalt Design Übersicht Menü und DispatcherServlet DWR Servlet Viewer Servlets Controllers Managers Sicherheit Anwendung Architektur Component Diagram Deployment Diagram Komponente Sequence

Mehr

KompaSbilität zu Standards (WS- I) Contracts. Interfaces und Generics Umfangreiche AXribuSerung. Mehr Spielraum auf Transportebene

KompaSbilität zu Standards (WS- I) Contracts. Interfaces und Generics Umfangreiche AXribuSerung. Mehr Spielraum auf Transportebene Komponenten WCF (.NET Framework) WCF Verfeinerung und Reifung der ursprünglichen Version Geringere Unterschiede zu ASMX 2.0 (.NET 2.0) + WSE 3.0 Schwerpunkte KompaSbilität zu Standards (WS- I) Contracts

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

OpenNebula. public and private cloud management.! Martin Alfke

OpenNebula. public and private cloud management.! Martin Alfke <martin.alfke@buero20.org> public and private cloud management! Martin Alfke - Martin Alfke - Freelancer - Berlin/Germany Automation and Cfg Mgmt epost Development GmbH Migration von HW auf VM Umzug Bonn

Mehr

Merkblatt: HSM. Version 1.01. Systemvoraussetzungen, Setup und Trouble Shooting. pdfsupport@pdf-tools.com

Merkblatt: HSM. Version 1.01. Systemvoraussetzungen, Setup und Trouble Shooting. pdfsupport@pdf-tools.com Merkblatt: HSM Version 1.01 Systemvoraussetzungen, Setup und Trouble Shooting Kontakt: pdfsupport@pdf-tools.com Besitzer: PDF Tools AG Kasernenstrasse 1 8184 Bachenbülach Schweiz www.pdf-tools.com Copyright

Mehr

Kurzanleitung - XVA Provider unter Mac OSX 10

Kurzanleitung - XVA Provider unter Mac OSX 10 Kurzanleitung - XVA Provider unter Mac OSX 10 Installation und Bedienung- Inhalt Allgemeine Hinweise:... 1 Kapitel 1 Installation und Konfiguration... 2 Schritt 1: Java SE Development Kit 6 installieren:...

Mehr

German Metasploit Framework Tutorial 16. August 2005 dav

German Metasploit Framework Tutorial 16. August 2005 dav German Metasploit Framework Tutorial 16. August 2005 dav Inhalt 1. Einleitung 2. Exploit Datenbank 2.1. Neue Exploits integrieren 3. Payload Datenbank 4. Konfiguration und Anwendungen eines Exploits 4.1.

Mehr

Managed VPSv3 Was ist neu?

Managed VPSv3 Was ist neu? Managed VPSv3 Was ist neu? Copyright 2006 VERIO Europe Seite 1 1 EINFÜHRUNG 3 1.1 Inhalt 3 2 WAS IST NEU? 4 2.1 Speicherplatz 4 2.2 Betriebssystem 4 2.3 Dateisystem 4 2.4 Wichtige Services 5 2.5 Programme

Mehr

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de

Das Build Tool Ant. Sebastian Mancke, mancke@mancke-software.de Das Build Tool Ant Sebastian Mancke, mancke@mancke-software.de Grundlagen Motivation Bei der Übersetzung und Pflege von Software treten viele, gleich bleibende Arbeitsschritte auf. Übersetzen des Codes

Mehr

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework

1. Software-Plattform Android Android. Was ist Android? Bibliotheken, Laufzeitumgebung, Application Framework 1. Software-Plattform Android Android Was ist Android? Plattform und Betriebssystem für mobile Geräte (Smartphones, Mobiltelefone, Netbooks), Open-Source Linux-Kernel 2.6 Managed Code, Angepasste Java

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Anleitung zur Webservice Entwicklung unter Eclipse

Anleitung zur Webservice Entwicklung unter Eclipse Entwicklungsumgebung installieren Sofern Sie nicht an einem Praktikumsrechner arbeiten, müssen Sie ihre Eclipse-Umgebung Webservice-fähig machen. Dazu benötigen Sie die Entwicklungsumgebung Eclipse for

Mehr

http://www.cis.upenn.edu/~bcpierce/unison/download/stable/unison- 2.9.1/

http://www.cis.upenn.edu/~bcpierce/unison/download/stable/unison- 2.9.1/ Einführung Was ist Unison? Unison ist ein Dateisynchronisationsprogramm für Windows und Unix. Es teilt sich viele Funktionen mit anderen Programmen, wie z.b. CVS und rsync. Folgend einige Vorteile des

Mehr

MySQL Community Server 5.1 Installationsbeispiel

MySQL Community Server 5.1 Installationsbeispiel MySQL Community Server 5.1 Installationsbeispiel Dieses Dokument beschreibt das Herunterladen der Serversoftware, die Installation und Konfiguration der Software. Bevor mit der Migration der untermstrich-datenbank

Mehr

So bringst du Prolog zum Laufen...

So bringst du Prolog zum Laufen... Diese Anleitung soll dir dabei helfen den freien Prolog-Interpreter SWI-Prolog zu installieren einen geeigneten Texteditor auszuwählen, mit dem du Prolog-Programme schreiben kannst das erste kleine Programm

Mehr

Um überhaupt produktiv arbeiten zu können, sind eine Reihe grundlegender Vorbereitungen notwendig:

Um überhaupt produktiv arbeiten zu können, sind eine Reihe grundlegender Vorbereitungen notwendig: Abgabe Dieses Übungsblatt ist bis Freitag, 02.05. um 12:00 per E-Mail an den eigenen Tutoren abzugeben. Bennennung beispielsweise $Matrikelnummer_Abgabe_$Blattnummer.$Format. 1 Erste Schritte mit dem Arduino

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST 2. Interaktive Web Seiten GET und POST Die Übertragungsmethoden GET und POST sind im http Protokoll definiert: POST: gibt an, dass sich weitere Daten im Körper der übertragenen Nachricht befinden: z.b.

Mehr

Installationsanleitung Tivoli Storage Manager für Mac OS

Installationsanleitung Tivoli Storage Manager für Mac OS 11. März 2009, Version 1.0 Installationsanleitung für Mac OS X Verwaltungsdirektion Informatikdienste Installationsanleitung für Mac OS Inhaltsverzeichnis...1 Installation... 1 Voraussetzungen...1 Version

Mehr

Installation Anleitung für JTheseus und MS SQL Server 2000

Installation Anleitung für JTheseus und MS SQL Server 2000 Installation Anleitung für JTheseus und MS SQL Server 2000 Inhaltsverzeichnis 1 Installation der Datenbank 3 1.1 Erstellen der Datenbank 3 1.2 Tabellen und Minimal Daten einlesen 4 1.3 Benutzer JTheseus

Mehr

Technische Beschreibung: EPOD Server

Technische Beschreibung: EPOD Server EPOD Encrypted Private Online Disc Technische Beschreibung: EPOD Server Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee JKU Linz Institut für

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

webpdf für VMware SoftVision Development GmbH Kurfürstenstraße 15 36037 Fulda, Deutschland Tel.: +49 (0)661 25100-0 Fax: +49 (0)661 25100-25

webpdf für VMware SoftVision Development GmbH Kurfürstenstraße 15 36037 Fulda, Deutschland Tel.: +49 (0)661 25100-0 Fax: +49 (0)661 25100-25 webpdf für VMware SoftVision Development GmbH Kurfürstenstraße 15 36037 Fulda, Deutschland Tel.: +49 (0)661 25100-0 Fax: +49 (0)661 25100-25 E-Mail: sales@softvision.de Web: www.softvision.de Inhaltsverzeichnis

Mehr

Programmierung einer Windows Store App mit C# und XAML

Programmierung einer Windows Store App mit C# und XAML Neuer Abschnitt 1 Seite 1 Programmierung einer Windows Store App mit C# und XAML Einleitung In diesem Fachbericht der im Rahmen meines 8 Wochen langem Praktikums entstand geht es um die Programmierung

Mehr

SINT Rest App Documentation

SINT Rest App Documentation SINT Rest App Documentation Release 1.0 Florian Sachs September 04, 2015 Contents 1 Applikation 3 2 Rest Service 5 3 SOAP Service 7 4 Technologiestack 9 5 Deployment 11 6 Aufgabe 1: Google Webservice

Mehr

Embedded Webserver. Einleitung. Jürgen Pauritsch und Stefan Thonhofer

Embedded Webserver. Einleitung. Jürgen Pauritsch und Stefan Thonhofer Jürgen Pauritsch und Stefan Thonhofer Embedded Webserver Einleitung Ziel unseres Projekts war es, einen Webserver auf einer einzigen Platine ( Embedded system, System on a chip ) aufzusetzen. Der Vorteil

Mehr

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org)

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Dynamische Plug-ins mit Eclipse 3 Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Überblick Die Ausgangslage Dynamische Plug-ins Warum? Eclipse 3 Die OSGi-basierte

Mehr

SWIG Simplified Wrapper and Interface Generator. Christian Claus

SWIG Simplified Wrapper and Interface Generator. Christian Claus SWIG Simplified Wrapper and Interface Generator Christian Claus 1 Inhaltsübersicht 1. Einführung in SWIG 2. Funktionsweise von SWIG 3. Beispiel 4. SWIG im Detail 5. Fazit 2 Einführung in SWIG 3 Was ist

Mehr

Präsentation. homevisu Familie. Peter Beck. Juni 2011. www.p-b-e.de. 2011 p b e Peter Beck 1

Präsentation. homevisu Familie. Peter Beck. Juni 2011. www.p-b-e.de. 2011 p b e Peter Beck 1 Präsentation homevisu Familie Peter Beck Juni 2011 2011 p b e Peter Beck 1 Funktionensumfang Der Funktionsumfang das provisu Framework. Modular und durch Plug-In erweiterbar / anpassbar. Plug-In Schnittstelle

Mehr

KONFIGURATION DES MOZILLA E-MAIL CLIENT

KONFIGURATION DES MOZILLA E-MAIL CLIENT KONFIGURATION DES MOZILLA E-MAIL CLIENT Copyright 2004 by 2 ways - media & design, Inh. Lars Plessmann, Paulinenstr. 12, D-70178 Stuttgart. http://www.2-ways.de Lars.Plessmann@2-ways.de Der Mozilla Email

Mehr

KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE

KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung...Seite 03 2. Einrichtung des Systems...Seite 04 3. Erzeugen eines Backup-Skripts...Seite

Mehr

Hier folgt eine kurze Aufstellung über die verwendete Architekur. Die Angaben sind ohne Gewähr für Vollständigkeit oder vollständige Richtigkeit.

Hier folgt eine kurze Aufstellung über die verwendete Architekur. Die Angaben sind ohne Gewähr für Vollständigkeit oder vollständige Richtigkeit. 1. ODBC 1.1 Problemstellung Die Informationen über die Microsoft SQL Server Datenbanken sind zur Zeit nicht auf der TIMD Website verfügbar. Der Grund ist, dass kein Interface zur Abfrage der benötigten

Mehr

DSLinux Skriptbasierte Inventarisierung für Linux

DSLinux Skriptbasierte Inventarisierung für Linux DSLinux Skriptbasierte Inventarisierung für Linux www.docusnap.com TITEL DSLinux AUTOR Docusnap Consulting DATUM 21.04.2015 Die Weitergabe, sowie Vervielfältigung dieser Unterlage, auch von Teilen, Verwertung

Mehr

Security. Stefan Dahler. 6. Zone Defense. 6.1 Einleitung

Security. Stefan Dahler. 6. Zone Defense. 6.1 Einleitung 6. Zone Defense 6.1 Einleitung Im Folgenden wird die Konfiguration von Zone Defense gezeigt. Sie verwenden einen Rechner für die Administration, den anderen für Ihre Tests. In der Firewall können Sie entweder

Mehr

Oracle Enterprise Manager Cloud Control 12c: Installation von Ralf Durben, ORACLE Deutschland B.V. & Co. KG

Oracle Enterprise Manager Cloud Control 12c: Installation von Ralf Durben, ORACLE Deutschland B.V. & Co. KG Nach Abschluß der Softwareinstallation konfigurieren Sie den Listener (mit netca) und erzeugen eine Datenbank. Der einfachste Weg zur Erzeugung der Datenbank ist die Nutzung des Database Config Assistants

Mehr

Securepoint Security Systems

Securepoint Security Systems HowTo: Virtuelle Maschine in VMware für eine Securepoint Firewall einrichten Securepoint Security Systems Version 2007nx Release 3 Inhalt 1 VMware Server Console installieren... 4 2 VMware Server Console

Mehr

Nagios Erweiterungen Der Rest. Nagios / Icinga. OpenSource Network-Monitoring im großen Stil. Manuel Landesfeind

Nagios Erweiterungen Der Rest. Nagios / Icinga. OpenSource Network-Monitoring im großen Stil. Manuel Landesfeind Erweiterungen Der Rest / Icinga OpenSource Network-Monitoring im großen Stil Manuel Landesfeind Institut für Mathematik Georg-August-Universität Göttingen This presentation can be used under the terms

Mehr

Bedienungsanleitung. Model No. : ETUS HD BOX. Deutsch

Bedienungsanleitung. Model No. : ETUS HD BOX. Deutsch Bedienungsanleitung Model No. : ETUS HD BOX Deutsch Inhaltsverzeichnis 1. Auschalten & Neustarten des Gerätes... 3 2. Hauptmenü... 3 3. Menüpunkt Einstellung... 4 3.1 PIN CODE:... 4 3.2 Reiter Video :...

Mehr

Beispiel droidremoteppt

Beispiel droidremoteppt Arthur Zaczek Nov 2014 1 Beispiel droidremoteppt 1.1 Beschreibung Powerpoint soll mit ein Android Handy über Bluetooth gesteuert werden Folien wechseln (Vor/Zurück) Folien am Handy darstellen Am Handy

Mehr

Typo 3 installieren. Schritt 1: Download von Typo3

Typo 3 installieren. Schritt 1: Download von Typo3 Typo 3 installieren Bevor Sie Typo3 installieren, müssen Sie folgende Informationen beachten: Typo3 benötigt eine leere Datenbank. Mit Ihrem Abonnement verfügen Sie über eine einzige Datenbank. Sie können

Mehr

DataNAUT 4.x Server-Installation

DataNAUT 4.x Server-Installation DataNAUT 4.x Server-Installation Dieses Dokument beschreibt, wie Sie aus einer lokalen Installation von DataNAUT 4.x in ein zentral gemanagtes System mit einem MS-SQL Server umziehen. Diesen und weitere

Mehr

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010 Gerald.Ehmayer@borland.com

Praktikum aus Softwareentwicklung 2. Web Services. Java Praktikum SS 2010 Gerald.Ehmayer@borland.com Web Services Java Praktikum SS 2010 Gerald.Ehmayer@borland.com 1 Web Services Einführung Definition, Eigenschaften, Anwendungen... JAX-RPC Überblick, Architektur... JAX Übersicht, Architektur Java Praktikum

Mehr

TSM-Client unter RedHat/CentOS-Linux einrichten

TSM-Client unter RedHat/CentOS-Linux einrichten TSM-Client unter RedHat/CentOS-Linux einrichten Inhaltsverzeichnis TSM-CLIENT UNTER REDHAT/CENTOS-LINUX EINRICHTEN 1 1. INSTALLATION DES TSM-CLIENTEN 3 2. KONFIGURATION 4 3. EINRICHTUNG DES SCHEDULER ZUR

Mehr

Session Storage im Zend Server Cluster Manager

Session Storage im Zend Server Cluster Manager Session Storage im Zend Server Cluster Manager Jan Burkl System Engineer, Zend Technologies Agenda Einführung in Zend Server und ZSCM Überblick über PHP Sessions Zend Session Clustering Session Hochverfügbarkeit

Mehr