Software-Architektur Reactive Streams
|
|
- Alma Scholz
- vor 8 Jahren
- Abrufe
Transkript
1 Reactive Streams Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Streams große Datenmengen, Live-Daten, etc. können nicht als Ganzes verarbeitet werden Datenteile müssen während er Anlieferung sofort verarbeitet werden dies geschieht in sog. Streams Streams müssen in asynchronen Systemen verarbeitet werden sonst ist die App nur damit beschäftigt den Streams zu verarbeiten Hauptproblem: schnelle Datenquelle überschwemmt langsamer Datensenke Reactive Streams Reactive Streams steuern den Austausch von Datenströmen und stellen sicher, dass die Empfangsseite keine große Menge an Daten puffern muss d.h. Gegendruck ist ein integraler Bestandteil dieses Modells um Queues die zwischen den Threads vermitteln zu begrenzen wichtig dabei ist, dass das gesamte System ein asynchrones und nicht blockierendes Verhalten vorweist 1
2 Reactive Streams Initiative Ziel: Minimale Menge von Interfaces, Methoden und Protokolle für asynchrone Datenströme mit nicht blockierendem Gegendruck Arbeitsgruppen Basic Semantics JVM Interfaces * Version am fertig spezifiziert JavaScript Interfaces Netzwerkprotokolle übrigens auch andere Ansätze Microsofts Rx (Reactive Extensions) Einschub: Publisher-Subscriber-Pattern ein Messaging Pattern für die Software-Architektur der Sender (publisher) sendet nicht direkt an die Empfänger (subscriber) Messages werden veröffentlicht und können in Klassen eingeteilt werden Subscriber können dann die Klassen abonnieren Reactive Streams auf der JVM README.md API Komponenten Publisher Subscriber Subscription Processor 2015 Oliver Braun 2
3 API ein Publisher bietet eine potentiell unendliche Anzahl aufeinanderfolgender Elemente veröffentlicht diese gem. der Nachfrage der Subscriber als Antwort auf Publisher.subscribe(Subscriber) stehen dem Subscriber die Methoden in der folgenden Sequenz zur Verfügung onsubscribe onnext* (onerror oncomplete)? Publisher public interface Publisher<T> { public void subscribe(subscriber<? super T> s); die Signalisierungen (onsubscribe, ) müssen sequentiell erfolgen ein Publisher sendet höchstens soviele onnext-signale wie vom Subscriber engefordert wurden Subscriber public interface Subscriber<T> { public void onsubscribe(subscription s); public void onnext(t t); public void onerror(throwable t); public void oncomplete(); Subscription public interface Subscription { public void request(long n); public void cancel(); request(n) fordert die nächsten n onnext-signale an kann aus onnext und onsubscribe synchron aufgerufen werden 2015 Oliver Braun 3
4 Processor public interface Processor<T, R> extends Subscriber<T>, Publisher<R> { repräsentiert eine (Zwischen-)Verarbeitungsphase sie ist beides, Subscriber und Publisher Beispiele examples Akka Streams Akka Streams and HTTP Module ( : 1.0-RC3) nutzen intern Reactive Streams typisches Beispiel: Konsumieren und filtern von Tweets Beispiel: Datenmodell final case class Author(handle: String) final case class Hashtag(name: String) final case class Tweet( author: Author, timestamp: Long, body: String) { def hashtags: Set[Hashtag] = body.split(" ").collect { case t if t.startswith("#") => Hashtag(t).toSet val akka = Hashtag("#akka") 2015 Oliver Braun 4
5 Einfache Streams der materializer ist für die Streams implicit val system = ActorSystem("reactive-tweets") implicit val materializer = ActorFlowMaterializer() eine Quelle für die Tweets val tweets: Source[Tweet, Unit] eine Quelle für die Autoren val authors: Source[Author, Unit] = tweets.filter(_.hashtags.contains(akka)).map(_.author) Konsumieren und Ausgeben, z.b. mit authors.runwith(sink.foreach(println)) oder in Kurzform authors.runforeach(println) Aus einem Element mehrere machen val hashtags: Source[Hashtag, Unit] = tweets.mapconcat(_.hashtags.tolist) Einen Stream broadcasten val writeauthors: Sink[Author, Unit] =??? val writehashtags: Sink[Hashtag, Unit] =??? val g = FlowGraph.closed() { implicit b => import FlowGraph.Implicits._ val bcast = b.add(broadcast[tweet](2)) tweets ~> bcast.in bcast.out(0) ~> Flow[Tweet].map(_.author) ~> 2015 Oliver Braun 5
6 writeauthors bcast.out(1) ~> Flow[Tweet].mapConcat(_.hashtags.toList) ~> writehashtags g.run() Gegendruck die aktuellen Tweets mit einem Puffer von 10 Elementen tweets.buffer(10, OverflowStrategy.dropHead).map(slowComputation).runWith(Sink.ignore) Elemente zählen obwohl so ein Strom potentiell unendlich ist, kann es sinnvoll sein, für einen endlichen Teil die Elemente zu zählen oder ähnliches Beispiel val sumsink: Sink[Int, Future[Int]] = Sink.fold[Int, Int](0)(_ + _) val counter: RunnableFlow[Future[Int]] = tweets.map(t => 1).toMat(sumSink)(Keep.right) val sum: Future[Int] = counter.run() sum.foreach(c => println(s"total tweets processed: $c")) sumsink ist eine FoldSink mit dem counter wird ein Element gezählt und an die FoldSink weitergegeben * Keep.right besagt nur den materialisierten Teil weiter geben (2. Typparameter bei Sink) run materialisiert den Stream und berechnet die Anzahl der Elemente zum Aufrufzeitpunkt (und kann daher mehrfach aufgerufen werden) Kurzform für sum im Beispiel val sum: Future[Int] = tweets.map(t => 1).runWith(sumSink) 2015 Oliver Braun 6
7 Reactive Streams in Play in Play werden sog. Iteratees, Enumerators und Enumeratees verwendet wir sprechen von dem iteratees API Fokus auf: Datenströme erzeugen, konsumieren und transformieren verschiedene Datenquellen einheitlich behandeln (Dateien auf der Festplatte, Websockets, File Upload, ) Komponierbar non-blocking, reactive und kontrollierbar Iteratees ein Iteratee konsumiert einen Datenstrom und berechnet einen Wert, z.b. Iteratee[String,Int] konsumiert Strings und produziert einen Int hat drei mögliche Zustände: Done, Cont und Error und eine Methode def fold[b](folder: Step[E, A] => Future[B]): Future[B] Step hat auch drei Zustände object Step { case class Done[+A, E](a: A, remaining: Input[E]) extends Step[E, A] case class Cont[E, +A](k: Input[E] => Iteratee[E, A]) extends Step[E, A] case class Error[E](msg: String, input: Input[E]) extends Step[E, Nothing] +A bedeutet kovariant. Dadurch kann auch ein Subtyp B von A genutzt werden, denn es gilt dadurch z.b. Done[B,E] ist Subtyp von Done[A,E] Iteratees: Beispiel 1 ein Iteratee im Zustand Done erzeugt eine 1 und gibt Empty als Rest des letzten Inputs zurück 2015 Oliver Braun 7
8 val doneiteratee = new Iteratee[String,Int] { def fold[b]( folder: Step[String,Int] => Future[B])( implicit ec: ExecutionContext) : Future[B] = folder(step.done(1, Input.Empty)) oder kürzer val doneiteratee = Done[String,Int](1, Input.Empty) um den Iteratee zu nutzen, benötigen wir noch die folder-funktion def folder(step: Step[String,Int]):Future[Option[Int]] = step match { case Step.Done(a, e) => future(some(a)) case Step.Cont(k) => future(none) case Step.Error(msg,e) => future(none) und dann: val eventuallymayberesult: Future[Option[Int]] = doneiteratee.fold(folder) eventuallymayberesult.oncomplete(i => println(i)) Iteratees: Beispiel 2 Iteratee der einen Input konsumiert val consumeoneinputandeventuallyreturnit = new Iteratee[String,Int] { def fold[b]( folder: Step[String,Int] => Future[B])( implicit ec: ExecutionContext): Future[B] = { folder(step.cont { //Assuming 0 for default value case Input.EOF => Done(0, Input.EOF) case Input.Empty => this case Input.El(e) => Done(e.toInt,Input.EOF) ) def folder(step: Step[String,Int]):Future[Int] = step match { 2015 Oliver Braun 8
9 case Step.Done(a, _) => future(a) case Step.Cont(k) => k(input.eof).fold({ case Step.Done(a1, _) => Future.successful(a1) case _ => throw new Exception("Erroneous or diverging iteratee") ) case _ => throw new Exception("Erroneous iteratee") Iteratee.fold Funktion um einen Iteratee zu bauen def fold[e, A](state: A)(f: (A, E) => A): Iteratee[E, A] Beispiele: val inputlength: Iteratee[Array[Byte],Int] = { Iteratee.fold[Array[Byte],Int](0) { (length, bytes) => length + bytes.size val consume: Iteratee[String,String] = { Iteratee.fold[String,String]("") { (result, chunk) => result ++ chunk oder kurz val consume = Iteratee.consume[String]() daneben gibt es noch andere nützliche Funktionen in Iteratee, z.b. foreach val printlniteratee = Iteratee.foreach[String](s => println(s)) Enumerators dienen als Quelle und übergibt eine Eingabe an einen Iteratee trait Enumerator[E] { /** * Apply this Enumerator to an Iteratee */ 2015 Oliver Braun 9
10 def apply[a](i: Iteratee[E, A]): Future[Iteratee[E, A]] Enumerators: Beispiel ein String-Enumerator val enumerateusers: Enumerator[String] = { Enumerator("Guillaume", "Sadek", "Peter", "Erwan") auf einen Iteratee anwenden: val consume = Iteratee.consume[String]() val newiteratee: Future[Iteratee[String,String]] = enumerateusers(consume) und nutzen // We use flatmap since newiteratee is a promise, // and run itself return a promise val eventuallyresult: Future[String] = newiteratee.flatmap(i => i.run) //Eventually print the result eventuallyresult.onsuccess { case x => println(x) // Prints "GuillaumeSadekPeterErwan" oder so nutzen //Apply the enumerator and flatten then run the resulting iteratee val newiteratee = Iteratee.flatten(enumerateUsers(consume)) val eventuallyresult: Future[String] = newiteratee.run oder alles kürzer val eventuallyresult: Future[String] = { Iteratee.flatten(enumerateUsers >> consume).run Enumerators komponieren Enumerators können auch komponiert werden, z.b Oliver Braun 10
11 val colors = Enumerator("Red","Blue","Green") val morecolors = Enumerator("Grey","Orange","Yellow") val combinedenumerator = colors.andthen(morecolors) val eventuallyiteratee = combinedenumerator(consume) oder per Operatoren: val eventuallyiteratee = { Enumerator("Red","Blue","Green") >>> Enumerator("Grey","Orange","Yellow") >> consume Enumerators für Dateien etc. selbstverständlich gibt es bereits Funktionen um Enumerators aus vorhandenen Datenquellen zu erzeugen Beispiel für einen Enumerator der den Inhalt einer Datei repräsentiert: val fileenumerator: Enumerator[Array[Byte]] = { Enumerator.fromFile(new File("path/to/some/file")) mit Enumerator.fromStream kann aus java.io.inputstream ein Enumerator erzeugt werden oder mit generatem ein Enumerator der alle 100ms einen Datewert erzeugt: Enumerator.generateM { Promise.timeout(Some(new Date), 100 milliseconds) Enumeratees mit Enumeratees können Streams angepasst und transformiert werden, z.b. mit Enumeratee.map Beispiel: wir haben einen Iteratee und einen Enumerator: val sum: Iteratee[Int,Int] = Iteratee.fold[Int,Int](0){ (s,e) => s + e val strings: Enumerator[String] = Enumerator("1","2","3","4") mit Hilfe des Enumeratees 2015 Oliver Braun 11
12 val toint: Enumeratee[String,Int] = Enumeratee.map[String]{ s => s.toint können wir die beiden dann zusammenschalten: strings >> toint &>> sum wir können auch erst nur den Iteratee oder den Enumerator mit dem Enumeratee verknüpfen val adaptediteratee: Iteratee[String,Int] = toint.transform(sum) val adaptedenumerator: Enumerator[Int] = strings.through(toint) Und zum Schluß noch der Hinweis auf das Activator-Template Play Iteratees How to use Play Iteratees to build a custom body parser, using as an example an mp3 file metadata parser Oliver Braun 12
Zählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrBenutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.
Benutzerhandbuch Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer. 1 Startseite Wenn Sie die Anwendung starten, können Sie zwischen zwei Möglichkeiten wählen 1) Sie können eine Datei für
MehrInhaltsverzeichnis. 1. Empfängerübersicht / Empfänger hinzufügen 2. Erstellen eines neuen Newsletters / Mailings 3. Versand eines Newsletters
Erste Schritte Wir heißen Sie herzlich willkommen im Newslettersystem der Euroweb Internet GmbH. Hier erfahren Sie die grundlegendsten Informationen, die Sie zur Erstellung und zum Versand eines Newsletters
MehrKonzept zur Push Notification/GCM für das LP System (vormals BDS System)
Konzept zur Push Notification/GCM für das LP System (vormals BDS System) Wir Push Autor: Michael Fritzsch Version: 1.0 Stand: 04. Februar 2015 Inhalt 1. Was ist eine Push Notification? 2. Wofür steht GCM?
MehrWeb Sockets mit HTML5. Quelle: www.html5rocks.com/de
Web Sockets mit HTML5 Quelle: www.html5rocks.com/de Intensive Client-Server-Kommunikation: Beispiele Online-Spiele mit mehreren Mitspielern Chat-Anwendungen Live-Sport-Ticker Echtzeit-Aktualisierungen
MehrDokumentation für das Spiel Pong
Dokumentation für das Spiel Pong BwInf - Turnierserver Didaktik der nformatik BWINF KI Wettbewerbs-Plattform Stand: 02.09.2014 Grundlagen In diesem KI-Turnier programmiert ihr einen Schläger für das Retro-Spiel
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrDelegatesund Ereignisse
Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
MehrFacharbeit Informatik. Thema:
Facharbeit Informatik Thema: Rechneraufbau Mit Locad 2002 1 Inhaltsangabe Inhalt: Seite: 1. Einleitung 3 2. Inbetriebnahme der Schaltung 3 3. Eingabe 4 4. CPU 5 5. RAM/HDD 8 6. Ausgabe 10 7. Auf einer
MehrPrüfung Software Engineering II (IB)
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 4 A Sommersemester 2015 Prüfung Software Engineering II (IB) Datum : 20.07.2015, 12:30 Uhr Bearbeitungszeit
MehrPython SVN-Revision 12
Python SVN-Revision 12 Uwe Ziegenhagen 7. Januar 2012 Vorwort Dieses Skript erhebt keinen Anspruch auf Vollständigkeit oder Richtigkeit. Es wird geschrieben, um mir als Gedächtnisstütze für den Umgang
MehrAlgorithmische Kryptographie
Algorithmische Kryptographie Walter Unger Lehrstuhl für Informatik I 16. Februar 2007 Quantenkryptographie 1 Einleitung Grundlagen aus der Physik 2 Datenübertragung 1. Idee 2. Idee Nochmal Physik 3 Sichere
Mehr2. Speichern und öffnen
2. Speichern und öffnen In diesem Modul lernen Sie, ein Dokument zum ersten Mal zu speichern, zu öffnen, nochmals zu speichern unter demselben Namen, nachdem Sie etwas geändert haben, zu speichern als
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrSichere E-Mail Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere E-Mail. der
Sichere E-Mail der Nutzung von Zertifikaten / Schlüsseln zur sicheren Kommunikation per E-Mail mit der Sparkasse Germersheim-Kandel Inhalt: 1. Voraussetzungen... 2 2. Registrierungsprozess... 2 3. Empfang
MehrWas ist Sozial-Raum-Orientierung?
Was ist Sozial-Raum-Orientierung? Dr. Wolfgang Hinte Universität Duisburg-Essen Institut für Stadt-Entwicklung und Sozial-Raum-Orientierte Arbeit Das ist eine Zusammen-Fassung des Vortrages: Sozialräume
MehrErstellen einer digitalen Signatur für Adobe-Formulare
Erstellen einer digitalen Signatur für Adobe-Formulare (Hubert Straub 24.07.13) Die beiden Probleme beim Versenden digitaler Dokumente sind einmal die Prüfung der Authentizität des Absenders (was meist
MehrSMS/ MMS Multimedia Center
SMS/ MMS Multimedia Center der BEYOND THE NET GmbH BEYOND THE NET GmbH Seite 1 Unser Multimedia Center ist eine WEB basierende Anwendung, die es ermöglicht von einer Zentrale aus, viele Mitarbeiter zu
MehrApplet Firewall und Freigabe der Objekte
Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable
MehrKapiteltests zum Leitprogramm Binäre Suchbäume
Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm
MehrITF2XML. Transferservice. Version 1.0. infogrips GmbH, Zürich client10.doc, Revision 1.1. Tel.: 01 / 350 10 10 Fax: 01 / 350 10 19.
GmbH Obstgartenstrasse 7 Informationssysteme Engineering & Consulting CH-8035 Zürich Tel.: 01 / 350 10 10 Fax: 01 / 350 10 19 ITF2XML Transferservice Version 1.0 infogrips GmbH, Zürich client10.doc, Revision
MehrInformationsblatt Induktionsbeweis
Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln
MehrDokumentation zur Versendung der Statistik Daten
Dokumentation zur Versendung der Statistik Daten Achtung: gem. 57a KFG 1967 (i.d.f. der 28. Novelle) ist es seit dem 01. August 2007 verpflichtend, die Statistikdaten zur statistischen Auswertung Quartalsmäßig
MehrStrom in unserem Alltag
Strom in unserem Alltag Kannst du dir ein Leben ohne Strom vorstellen? Wir verbrauchen jeden Tag eine Menge Energie: Noch vor dem Aufstehen klingelt der Radiowecker, dann schalten wir das Licht ein, wir
MehrEinrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000
Folgende Anleitung beschreibt, wie Sie ein bestehendes Postfach in Outlook Express, bzw. Microsoft Outlook bis Version 2000 einrichten können. 1. Öffnen Sie im Menü die Punkte Extras und anschließend Konten
MehrStudentische Lösung zum Übungsblatt Nr. 7
Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int
MehrMobile Anwendungen Google Cloud Messaging
Mobile Anwendungen Google Cloud Messaging 1. Allgemeines zu Google Cloud Messaging (GCM): - 60% der Top 100 Apps nutzen Google Cloud Messagging - 200.000 Messages pro Sekunde = 17 Milliarden Messages pro
MehrFolge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrInstallationsanleitung Maschinenkonfiguration und PPs
Installationsanleitung Maschinenkonfiguration und PPs Release: VISI 19 Autor: Nikodemus Braun Datum: 24. September 2010 Update: Anja Gerlach Datum: 31. Mai 2011 Inhaltsverzeichnis 1 Einbinden der Postprozessoren
MehrInformatik 2 Labor 2 Programmieren in MATLAB Georg Richter
Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und
MehrKurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.
Humboldt-Universität zu Berlin Juristische Fakultät Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.de Stand: 1. Juni 2010
MehrWas ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,
Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Wie kann ein PDF File angezeigt werden? kann mit Acrobat-Viewern angezeigt werden auf jeder Plattform!! (Unix,
MehrPrimzahlen und RSA-Verschlüsselung
Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also
MehrTechnische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll. Aufgabe 1 Transferfragen (Lösungsvorschlag)
Technische Universität München SS 2006 Fakultät für Informatik 12. Oktober 2006 Prof. Dr. A. Knoll Lösungsvorschläge der Klausur zu Einführung in die Informatik II Aufgabe 1 Transferfragen (Lösungsvorschlag)
MehrLeitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)
Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...
MehrScala kann auch faul sein
Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?
MehrHerzlich Willkommen bei der nfon GmbH
efax Handbuch Herzlich Willkommen bei der nfon GmbH Wir freuen uns, Ihnen unser efax vorstellen zu dürfen. Mit dem efax können Sie zu jeder Zeit mit Ihrem Rechner Faxe empfangen. Sie bekommen diese dann
MehrPartnerportal Installateure Registrierung
Partnerportal Installateure Registrierung Ein Tochterunternehmen der Süwag Energie AG Allgemeine Hinweise Diese Anleitung zeigt Ihnen, wie Sie sich als Nutzer für das Partnerportal Installateure registrieren
MehrInternet Explorer Version 6
Internet Explorer Version 6 Java Runtime Ist Java Runtime nicht installiert, öffnet sich ein PopUp-Fenster, welches auf das benötigte Plugin aufmerksam macht. Nach Klicken auf die OK-Taste im PopUp-Fenster
MehrPrüfung Software Engineering I (IB)
Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 3 A Wintersemester 2014/15 Prüfung Software Engineering I (IB) Datum : 21.01.2015, 14:30 Uhr Bearbeitungszeit
Mehr3 Konfiguration OfficeMaster 3.10 SNMP
3.10 SNMP Mit OfficeMaster 4.1 wird das Simple Network Management Protocol (SNMP) unterstützt. Dieses Netzwerkprotokoll dient der zentralen Überwachung von Netzwerkelementen. Um SNMP auf dem Ferrari Messaging
MehrSie müssen sich für diesen Fall mit IHREM Rechner (also zeitgut jk o.ä.) verbinden, nicht mit dem Terminalserver.
Sie müssen sich für diesen Fall mit IHREM Rechner (also zeitgut jk o.ä.) verbinden, nicht mit dem Terminalserver. Am 15.08.2015 um 21:03 schrieb Jürgen Kleindienst : bei einer Terminalsitzung steht mir
MehrKurbeschreibung Produktmerkmale
Kurbeschreibung Produktmerkmale In wenigen Schritten zur Visualisierung ihres Planungs- und Beschaffungsprozesses als Bildfolge des Ablaufs und der Ergebnisse. Lassen Sie sich inspirieren! das intelligente
MehrSo erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten
So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten http://tradingtutorialautomation.de/wp-content/uploads/2015/04/so-erstellen-sienuetzliche-beschreibungen-zu-ihren-tradingdaten_20150406.mp3
MehrObjektorientierung: Klassen und Objekte
Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in
MehrSchluss mit langweiligen Papierexposees! Die Zukunft heißt immodisplay. Vision Displays GmbH Schnackenburgallee 41b 22525 Hamburg
Schluss mit langweiligen Papierexposees! Die Zukunft heißt immodisplay. Vision Displays GmbH Schnackenburgallee 41b 22525 Hamburg Tel.: 040-500 505 60 Fax: 040-500 505 61 E-Mail: info@visiondisplays.de
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrWorkshop: Eigenes Image ohne VMware-Programme erstellen
Workshop: Eigenes Image ohne VMware-Programme erstellen Normalerweise sind zum Erstellen neuer, kompatibler Images VMware-Programme wie die Workstation, der ESX-Server oder VMware ACE notwendig. Die Community
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
MehrSynchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73
Synchronisierung Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73 Übertragungsprozeduren Die Übertragung einer Nachricht zwischen Sender und Empfänger erfordert die Übertragung des Nutzsignals
MehrJahresabschluss Finanzbuchhaltung INGARA. Provisorisch und Definitiv. INGARA Version 2008.001
Provisorisch und Definitiv INGARA Version 2008.001 JahresabschlussFinanzbuchhaltung2008.001 Seite 1 3. Januar 2008 Einleitung Der provisorische Jahresabschluss der Finanzbuchhaltung kann ab dem 1.1. des
MehrDas erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.
Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen
Mehrrobotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand: 28.05.2014
robotron*e count robotron*e sales robotron*e collect Anwenderdokumentation Version: 2.0 Stand: 28.05.2014 Seite 2 von 5 Alle Rechte dieser Dokumentation unterliegen dem deutschen Urheberrecht. Die Vervielfältigung,
MehrRegeln für das Qualitäts-Siegel
Regeln für das Qualitäts-Siegel 1 Inhalt: Die Qualitäts-Regeln vom Netzwerk Leichte Sprache 3 Die Übersetzung in Leichte Sprache 5 Die Prüfung auf Leichte Sprache 6 Wir beantworten jede Anfrage 7 Wir schreiben
MehrDokumentation: Selbstregistrierung
Dokumentation: Selbstregistrierung Prozess: Kunden - Selbstregistrierung/ Passwort vergessen Version 1.1 Autor: SM (Stand Okt.2014) Inhaltsverzeichnis Zugang zum Demando Ticketsystem... 2 Neukunden-Registrierung
MehrNavigieren auf dem Desktop
Navigieren auf dem Desktop Sie kennen Windows 7 noch nicht? Obwohl Windows 7 viel mit den Versionen von Windows gemein hat, die Ihnen ggf. bereits vertraut sind, werden Sie möglicherweise an der einen
MehrEinfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
MehrAutoformat während der Eingabe
Vorbereitung der Arbeitsumgebung Herbert Utz Verlag Endlich! Der Text ist abgeschlossen und die letzten Korrekturen sind eingearbeitet. Herzlichen Glückwunsch. Jetzt bleibt nur noch die richtige Formatierung,
Mehriphone-kontakte zu Exchange übertragen
iphone-kontakte zu Exchange übertragen Übertragen von iphone-kontakten in ein Exchange Postfach Zunächst muss das iphone an den Rechner, an dem es üblicherweise synchronisiert wird, angeschlossen werden.
MehrLehrer: Einschreibemethoden
Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder
MehrDas sagt die UN-Behinderten-Rechts-Konvention zu Barriere-Freiheit Wie barriere-frei ist Deutschland?
Das sagt die UN-Behinderten-Rechts-Konvention zu Barriere-Freiheit Wie barriere-frei ist Deutschland? Vortrag von Andreas Bethke Er ist der Vorsitzende vom Bundes-Kompetenz-Zentrum Barriere-Freiheit. Er
MehrC++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet
C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()
Mehr1. Weniger Steuern zahlen
1. Weniger Steuern zahlen Wenn man arbeitet, zahlt man Geld an den Staat. Dieses Geld heißt Steuern. Viele Menschen zahlen zu viel Steuern. Sie haben daher wenig Geld für Wohnung, Gewand oder Essen. Wenn
MehrKURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE
KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung...Seite 03 2. Zugriff auf Cloud Object Storage mit Cyberduck...Seite 04 3. Neuen Container
MehrFax einrichten auf Windows XP-PC
Um ein PC Fax fähig zu machen braucht man einen sogenannten Telefon Anschluss A/B das heißt, Fax funktioniert im Normalfall nur mit Modem nicht mit DSL. Die meisten neueren PCs haben ein Modem integriert.
MehrBERECHNUNG DER FRIST ZUR STELLUNGNAHME DES BETRIEBSRATES BEI KÜNDIGUNG
Frist berechnen BERECHNUNG DER FRIST ZUR STELLUNGNAHME DES BETRIEBSRATES BEI KÜNDIGUNG Sie erwägen die Kündigung eines Mitarbeiters und Ihr Unternehmen hat einen Betriebsrat? Dann müssen Sie die Kündigung
MehrWiderrufsbelehrung der Free-Linked GmbH. Stand: Juni 2014
Widerrufsbelehrung der Stand: Juni 2014 www.free-linked.de www.buddy-watcher.de Inhaltsverzeichnis Widerrufsbelehrung Verträge für die Lieferung von Waren... 3 Muster-Widerrufsformular... 5 2 Widerrufsbelehrung
MehrSchiller-Gymnasium Hof 20.12.2004
Erstellen eines HTML-Dokumentes Zum Erstellen einer Homepage benötigen wir lediglich einen Editor. Zum Ansehen der fertigen Site benötigen wir wir natürlich auch einen Browser, z.b. Firefox oder Netscape
MehrWas meinen die Leute eigentlich mit: Grexit?
Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?
Mehrgeben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen
geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Vollständigkeit halber aufgeführt. Gehen wir einmal davon aus, dass die von uns angenommenen 70% im Beispiel exakt berechnet sind. Was würde
MehrWeb Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen
9 3 Web Services 3.1 Überblick Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen mit Hilfe von XML über das Internet ermöglicht (siehe Abb.
MehrITF2XML. Transferservice. Version 1.1. Tel.: 044 / 350 10 10 Fax: 044 / 350 10 19. CH-8005 Zürich
GmbH Technoparkstrasse 1 Informationssysteme Engineering & Consulting CH-8005 Zürich Tel.: 044 / 350 10 10 Fax: 044 / 350 10 19 ITF2XML Transferservice Version 1.1 infogrips GmbH, 2001-2014 06.01.2014
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
MehrSupport-Tipp Mai 2010 - Release Management in Altium Designer
Support-Tipp Mai 2010 - Release Management in Altium Designer Mai 2010 Frage: Welche Aufgaben hat das Release Management und wie unterstützt Altium Designer diesen Prozess? Zusammenfassung: Das Glück eines
MehrMPEG2Schnitt (Freeware) - demuxte Videodaten schneiden und verketten. framegenauer Schnitt mit Bild-Ton-Synchronisierung und Fehlerkorrekturen
MPEG2Schnitt (Freeware) - demuxte Videodaten schneiden und verketten framegenauer Schnitt mit Bild-Ton-Synchronisierung und Fehlerkorrekturen www.mdienert.de/mpeg2schnitt/index.htm MPEG2Schnitt kann Video
MehrKurze Anleitung zum Guthaben-Aufladen bei. www.blau.de
Kurze Anleitung zum Guthaben-Aufladen bei www.blau.de Seite 1 von 8 Inhaltsverzeichnis 1 blau.de aufrufen... 3 2 Ihr Konto bei blau.de... 4 2.1 Aufladen über das Internet... 5 2.2 Aufladen direkt am Mobiltelefon
MehrWorkflow, Business Process Management, 4.Teil
Workflow, Business Process Management, 4.Teil 24. Januar 2004 Der vorliegende Text darf für Zwecke der Vorlesung Workflow, Business Process Management des Autors vervielfältigt werden. Eine weitere Nutzung
Mehr1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:
Zählen und Zahlbereiche Übungsblatt 1 1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage: Für alle m, n N gilt m + n = n + m. in den Satz umschreiben:
MehrWPF Steuerelemente Listbox, ComboBox, ListView,
WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,
MehrSJ OFFICE - Update 3.0
SJ OFFICE - Update 3.0 Das Update auf die vorherige Version 2.0 kostet netto Euro 75,00 für die erste Lizenz. Das Update für weitere Lizenzen kostet jeweils netto Euro 18,75 (25%). inkl. Programmsupport
MehrHow to do? Projekte - Zeiterfassung
How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...
MehrTelefonmodem ISDN DSL VDSL. Telekom 1&1 Telefónica/O2. Vodafone Unitymedia HSE Medianet
Fragenkatalog zur Verbesserung der Breitbandversorgung im Südhessischen Ried I. Bestandsaufnahme der Internetzugangssituation Ist in Ihrem Haushalt ein Internetanschluss vorhanden? Falls nein, haben Sie
MehrSIMULATION. example Data Transfer (XDT) Protocol. entwickelt im Rahmen der Bachelor-Arbeit. von. Tobias Weimann. User-Manual
SIMULATION example Data Transfer (XDT) Protocol entwickelt im Rahmen der Bachelor-Arbeit von Tobias Weimann User-Manual Copyright 2004 Lehrstuhl Rechnernetze und Kommunikationssysteme Institut für Informatik
MehrBedienungsanleitung für den Online-Shop
Hier sind die Produktgruppen zu finden. Zur Produktgruppe gibt es eine Besonderheit: - Seite 1 von 18 - Zuerst wählen Sie einen Drucker-Hersteller aus. Dann wählen Sie das entsprechende Drucker- Modell
MehrErstellen von x-y-diagrammen in OpenOffice.calc
Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei
MehrSchulungsunterlagen zur Version 3.3
Schulungsunterlagen zur Version 3.3 Versenden und Empfangen von Veranstaltungen im CMS-System Jürgen Eckert Domplatz 3 96049 Bamberg Tel (09 51) 5 02 2 75 Fax (09 51) 5 02 2 71 Mobil (01 79) 3 22 09 33
MehrAGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b
AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrEH2000 Ablauf am Morgen
EH2000 Ablauf am Morgen Preiswartung 2. Button IMPORT drücken 3. Button ZEITUNGEN drücken 4. Button STAMM AKTUALISIEREN drücken 5. Button BEENDEN drücken 6. Button BEENDEN/VERBINDUNG TRENNEN drücken 1.
Mehr14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt
14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...
MehrWichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)
Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher) CS-TING Version 9 Das Programm CS-TING Version 9 für Microsoft Word 2000 (und höher) verwendet Makros bei der
MehrIntelliRestore Seedload und Notfallwiederherstellung
IntelliRestore Datensicherung IntelliRestore Seedload und Notfallwiederherstellung Daten. Sichern. Online Vorwort Auch größere Datenmengen lassen sich für gewöhnlich schnell über den IntelliRestore SoftwareClient
Mehr1 Robert Klaßen: Photoshop Elements 8 für digitale Fotos
1 Robert Klaßen: Photoshop Elements 8 für digitale Fotos 1.1 Offline-Dateien einbinden Nachdem Sie nun sämtliche Fotos archiviert haben, die sich auf Ihrer Festplatte befinden, wollen wir noch einen Schritt
MehrStep by Step Softwareverteilung unter Novell. von Christian Bartl
Step by Step Softwareverteilung unter Novell von Softwareverteilung unter Novell 1) Starten von einfachen *.EXE-Dateien: Starten sie ConsoleOne Erstellen sie eine eigene Organisationseinheit für ihre Anwendungen
MehrUpdatehinweise für die Version forma 5.5.5
Updatehinweise für die Version forma 5.5.5 Seit der Version forma 5.5.0 aus 2012 gibt es nur noch eine Office-Version und keine StandAlone-Version mehr. Wenn Sie noch mit der alten Version forma 5.0.x
MehrVersion 1.0.0. NotarNet Bürokommunikation. Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook
Version 1.0.0 NotarNet Bürokommunikation Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook Seite 1 Vorgehensweise bei der Einrichtung... 2 2 Vorbereitung... 2 3 Ablauf des Imports... 3 4 Allgemeine
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
Mehr