Ruby on Rails and Rapid Application Development
|
|
- Kilian Fromm
- vor 8 Jahren
- Abrufe
Transkript
1
2 Ruby on Rails and Rapid Application Development Hans Hasselberg 8. Juli 2008 Inhaltsverzeichnis 1 Ruby Einleitung Objektorientiert Open-Source Multi-Paradigma interpretiert Konzepte Typen Variablen, Klassen, Objekte Blöcke Reflection, Distrubuted Ruby Bestandteile Kritik Ruby on Rails Einleitung Konzepte Model-View-Controller Don t repeat yourself Convention over Configuration Komponenten ActiveRecord Kritik agile Methoden Fazit 12 4 Quellen 12 1 Ruby 1.1 Einleitung Ruby ist ein Multi-Paradigmen, Open-Source, interpretierte und hohe Programmiersprache. Die Sprache wurde von Yukihiro Matsumoto zwischen 1993 und 1995 entwickelt, weil die 2
3 vorhandenen Programmiersprachen seinen Ansprüchen nicht genügten. Dabei orientierte er sich an zahlreichen vorhandenen Sprachen, unter anderem Smalltalk, C, C++, Java. Außerdem orientierte er sich stark an Perl(Perle), nichtnur an dem Namen Ruby(Rubin) erkennbar, den er in Anspielung darauf gewählt hat. Interessanterweise besteht noch eine andere Verbindung: Die Perle ist der Geburtsstein des Monats Juni und der Rubin von Juli. Abgesehen von der Namensverwandtschaft sind laut dem Entwickler die Klassen-Bibliotheken zwischen Perl und Ruby sehr ähnlich, bis hin zu den Variablen $ und $&, die Matsumoto inzwischen als ugly style variables bezeichnet. Am 21. Dezember 1995 veröffentlichte er die erste Version Weil Ruby nur Japanisch dokumentiert war, erlangte es auch zunächst nur in Japan an Bedeutung und hatte einen ähnlichen Stellenwert wie Perl und Python. Seit 2000 wird versucht Ruby auch im Rest der Welt zu verbreiten und seitdem existiert auch eine englische Dokumentation. Dank dieser Bemühungen gelang Ruby inzwischen zu erheblicher Bekanntheit. Die Implementierung von Yukihiro Matsumoto ist jedoch nur beispielhaft und aktuell wird Ruby in einem Open Source Projekt weiter gepflegt und von diesem wird auch das nächste große Release erwartet. In den folgen Kapiteln werde ich verschiedene Konzepte in Ruby erläutern und ein wenig auf die sprachlichen Fein- und Besonderheiten eingehen. Zuerst werde ich kurz die Ojektorientierung und die Verfügbarkeit verschiedener Paradigmen erklären, bevor ich dann Konzepte wie Typen und Klassen erläutere. Abschließ gehe ich auf die Bestandteile von Ruby ein und bewerte diese Skriptsprache Objektorientiert Wie schon erwähnt ist Ruby objektorient und zwar von Anfang an und nicht wie z.b. bei PHP, wo es erst nachträglich hinzugefügt wurde. Somit ist alles ein Objekt(und zwar im wörtlichen Sinn, denn alle Objekte in Ruby erben von der Klasse Object) und natürlich auch nil, true und false. Ein Vorteil ist, dass Informationen über Objekte direkt an ihnen abgefragt werden können z.b.: 4 2. c l a s s => Fixnum 4 2. s i z e => 4 ohne Konstrukte, wie sizeof(42), bemühen zu müssen. Ruby unterstützt natürlich auch Vererbung, ein Beispiel wird im nachfolgen Kapitel gezeigt Open-Source Yukihiro Matsumoto hat Ruby entwickelt und auch gleich beispielhaft implementiert und dann unter der GPL veröffentlicht. Wie schon erwähnt wird Ruby nun in einem Open-Source Projekt weiterentwickelt Multi-Paradigma In Ruby kann jeder Programmierer so coden, wie er es gewohnt ist. Es wird sowohl objektorientiertes und prozedurales als auch funktionale Programmieren unterstützt. Ersteres ist klar und schon im vorhergehen Abschnitt erklärt. 3
4 Prozedurales Vorgehen impliziert, dass keine Klassen erstellt werden müssen. Gelöst wurde das durch eine globale Klasse in der alle Programme gestartet werden. Dadurch wird für den Programmierer die Illusion erzeugt, ohne Klassen zu programmieren. d e f quaken quak quak quaken => quak quak Das ist schon ein vollständiges Ruby-Programm. Das Zeichen = nach einen Aufruf zeigt das Ergebnis an. Weil in Ruby jeder Ausdruck einen Wert hat, kann man auch funktional Programmieren. h e l l o = case s p r a c h e when Deutsch then H a l l o Welt when E n g l i s c h then Hello, world e l s e r a i s e Unbekannte Sprache Diese Vielseitigkeit ist für Einsteiger natürlich von Vorteil, da er seinen Programmierstil nicht zu ändern braucht. Ausserdem kann man den Stil wechseln, sobald es nötig ist, denn für bestimmte Problemstellungen ist Funktionale und andere Prozedurale prädestiniert interpretiert Ruby wird interpretiert. Dafür benutzt man einen Interpreter, der den Ruby Quellcode zur Laufzeit einliest und ausführt. Dabei wird nicht wie von Compilern direkt maschinelesebarer Code vor der Laufzeit erzeugt. Der Interpreter leistet zwar ähnliche Arbeit wie ein Compiler, jedoch erst zu Ausführungszeit, was das ganze bedeut langsamer macht. Der Vorteil von interpretierten Sprachen ist die Plattformunabhängigkeit, unter der Voraussetzung, dass der Interpreter auf der Zielplattform läuft. Ausserdem erhöht die Interpretation die Flexibilität, da unter anderem zur Laufzeit Klassen modifiziert werden können. Das betrifft dann natürlich nur die nach der Modifikation erstellten Objekte und nicht die vorher existieren. Es gibt verschiedene Lösungen zur Erhöhung der Geschwindigkeit eines Interpreters z.b.: JIT-Compiler und Bytecode. Im Gegensatz zu einem normalen Compiler übersetzt der JIT(Just in Time)-Compiler das Programm erst zur Laufzeit in Maschinencode. Diese Methode ermöglicht eine bessere Maschinencode Optimierung. Zudem werden durch Zwischenspeicherung von Maschinencode, sich wiederhole Abschnitte nicht mehrfach übersetzt. Damit ist der JIT-Compiler jedoch nicht mehr plattformunabhängig, da er Code für eine bestimmte Architektur generiert. Eine weitere Möglichkeit ist die Erzeugung von Bytecode entweder vor oder zu Laufzeit. Bytecode ist eine einfache Zwischensprache, die dann von dem Interpreter schneller ausgeführt werden kann. In diesem Fall wird der Interpreter auch Virtual Machine genannt. Dieses Verfahren wird auch in Java erfolgreich eingesetzt und ist auch für die nächste Ruby Version 1.9 geplant. Dafür wurde das Projekt YARV(Jet Another Ruby VM) in den offizielle Ruby Projekt integriert und der Entwickler von YARV arbeitet jetzt direkt für Ruby. 4
5 1.2 Konzepte Typen Vorab nochmal zur Erinnerung: in Ruby ist alles ein Objekt und Variablen müssen nicht deklariert werden. Doch das heißt nicht, dass alles generisch ist oder keine Typen existieren. Davon gibt es nämlich einige (String, Number, Range, Regular Expression,...) die jedoch nicht wie z.b. in C alleinsteh sind, sondern natürlich alle von Object erben. Diese Typen sind das Grundgerüst aller Ruby Programme und müssen deshalb besonders intuitiv zu benutzen sein und nicht nur dafür ist es praktisch, dass alle Typen von Object erben. Unter den einfachen Typen, die auch schon aus anderen Programmiersprachen bekannt sind, treten besonders die Regular Expression - die Regulären Ausdrücke - hervor. Laut Wikipedia ist das eine Zeichenkette, die der Beschreibung von Mengen beziehungsweise Untermengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient. Die Regex werden für verschiedene Aufgaben verwandt, zum Filtern und als Schablone. Beim Filtern geht es darum aus einem Text eine Zeichenkette herauszusuchen und gegebenenfalls zu ersetzten, was ebenfalls mit Regex möglich ist. Weiterhin können Regex als Schablone für Zeichenketten dienen, ohne dass diese explizit angegeben wird. Die Entwickler haben die erkannt, wie nützlich die Regex sind und eine mächtig Bibliothek in Ruby integriert und dafür sogar Typen geschaffen. Die Erstellung eines Regex ist in Ruby denkbar einfach: p a t t e r n = /ˆha [ nu ] s / hans = p a t t e r n => 1 haus = p a t t e r n => 1 maus = p a t t e r n => 0 In diesem Beispiel, sieht man, wie ein Pattern erzeugt wird und mit = auf einen String angewet. Das Ergebnis entspricht unseren Erwartungen. Für die Regex gibt es zahlreiche Anwungsfälle, von der Validierung einer Eingabe bis hin zum Suchen und Ersetzten in Texten Variablen, Klassen, Objekte In Ruby können Klassen definiert und instanziert werden, wobei die Instanzen der Klassen auch Objekte genannt werden. Objekte wiederum können in Variablen gespeichert werden. In der Variable ist jedoch nie das Objekt selbst gespeichert, sondern nur ein Zeiger auf dasselbe. Das ist das gleiche Verhalten, wie in Java. Zusätzlich gibt es noch Konstanten, das sind Variablen, die ihren Wert nach der Initialisierung nicht mehr ändern. Konstanten erkennt man daran, dass der erste Buchstabe des Namens groß geschrieben ist. Im Gegensatz dazu fangen alle normalen Variablennamen mit einem kleinen Buchstaben an. Im folgen Code- Beispiel wird eine Klasse Duck und Donald erstellt, wobei Duck von Object erbt (denn das ist Fall, wenn nichts angegeben ist) und Donald von Duck. Die Vererbungsbeziehung wird in Ruby mit dem kleiner-zeichen angezeigt. 5
6 c l a s s Duck def quak quak quak c l a s s Donald < Duck def s l e e p ZZZzzzzzz donald = Donald. new donald. quak => quak quak donald. s l e e p => ZZZzzzzzz. In diesem Beispiel ist Donald eine Ente, die nicht nur quaken, sondern auch schlafen kann. Ein weiterer Bestandteil dieses Abschnittes ist Duck Typing. Duck Typing bedeutet, dass Objekte nicht anhand ihrer Klasse identifiziert werden, sondern anhand der Methoden, die es anbietet. Es gibt einen vielzitierten Ausspruch von James Whitcomb Riley: If it walks like a duck and quacks like a duck, I would call it a duck. Das führt dazu, dass Objekte nicht wie in streng typisierten Sprachen anhand ihres Typs unterschieden werden, sondern nur noch anhand der Methoden. Wie schon erwähnt unterstützt Ruby zwar Vererbung, aber keine Mehrfachvererbung. Doch es gibt einen Mechanismus um den selben Effekt zu erzielen, nämlich mithilfe von Mixins. Das sind Module, die Methoden zur Verfügung stellen und dann von mehreren Klassen inkludiert werden können Blöcke In diesem Abschnitt geht es um Code-Blöcke und zwar ist das Code, den man an Methoden sen kann. Das ist ein sehr mächtiges Feature und kann benutzt werden, um Callbacks zu implementieren, Code zu versen und Iteratoren zu erstellen. Dazu gleich mal ein kleines Beispiel, damit man sieht, was passiert. def c a l l puts s t a r t y i e l d puts c a l l { puts i n the b l o c k } s t a r t i n the b l o c k => n i l 6
7 Hier wird eine Methode call definiert, die start und zurückgibt und dazwischen steht yield, was der Platzhalter für den Block ist. Beim Aufruf von call mit einem Block(der in den geschweiften Klammern steht), wird zuerst start ausgegeben, danach yield ausgeführt und dann ausgegeben. Der Block kann zusätzlich Parameter enthalten, was dazu führt, dass er gern als Iterator benutzt wird: [ 1, 2, 3 ]. each {i p uts i } => [ 1, 2, 3 ] In der ersten Zeile wird ein Array mit dem Inhalt 1-3 erstellt und auf diesem each aufgerufen. Each wird hierfür mit dem Block { i puts i} aufgerufen, wobei zwischen den Strichen der Parameter steht und danach die Anweisung Reflection, Distrubuted Ruby Nachdem die Basis von Ruby erläutert wurde, geht es jetzt um Themen, die entweder noch nicht angesprochen oder mit Absicht übergangen wurden. Der Begin ist Reflection. Das bedeutet wörtlich die Spiegelung und bedeutet, dass Objekte Informationen über sich selbst, wie als wenn sie in den Spiegel sähen, kennen. name = hans name. respond \ t o?( r e v e r s e ) => true Das zeigt, dass das name-objekt selbst überprüfen kann, ob es eine Methode reverse besitzt. 1.3 Bestandteile Ruby besteht aus verschiedenen Komponenten, wie der Interactive-Ruby-Shell(irb), rdoc und den rubygems(gem). Die irb ist ein sehr nützliches Tool um kleine Ruby Experimente durchzuführen. Ausserdem kann man mit ihr auch debuggen, indem man in seinem Script einen breakpoint setzt, der sich wiederum in eine aktive irb einklinkt, falls vorhanden. Über die irb kann man dann auch die aktuellen Variablen zugreifen und alles machen, was man vom normalen debuggen gewöhnt ist. Zu rdoc gibt es nichts weiter zu sagen, als dass ein ganz normales Tool zum generieren von Dokumentationen ist, vergleichbar mit javadoc oder doxygen. Rubygem ist wiederum ein interessantes Tool, es ist nämlich eine Paketverwaltung für Ruby. Damit kann man alle Pakete, Plugins etc. installieren, verwalten und updaten. Es eignet sich vor allem, um die Plugins zu verwalten, die man ansonsten von unterschiedlichen Webseiten zusammen suchen müsste. 1.4 Kritik Kritik an Ruby gibt es nicht viel. Vor allem wird die Performance bemängelt und das zu Recht. Da Ruby interpretiert wird, gibt es diese Probleme. 7
8 Abbildung 1: Rails 2 Ruby on Rails 2.1 Einleitung Ruby on Rails(RoR) ist ein Web Application Framework, dass 2004 von David Heinemeier Hansson der Öffentlichkeit vorgestellt wurde. Es ist in Ruby programmiert und Open Source. Im folgen werde ich die Bezeichnungen Ruby on Rails, Rails und RoR benutzen und meine immer Ruby on Rails. Interessant ist, dass Rails aus der Webapplication Basecamp extrahiert wurde und nicht einfach entwickelt. Das liefert schonmal den Beweis der Nützlichkeit und praxisnähe, denn es stammt ja aus der Praxis. Seit Dezember 2007 gibt es Rails in der Version 2.0 die viele Neuerungen einführt. In diesem Text werde ich bemüht sein die Änderungen der neuen Version zu berücksichtigen und kennzeichne, falls das nicht möglich ist, diejenigen Eigenschaften, die die Version 1.x betrifft. Um die Funktionalität voneinander abzugrenzen wurde Rails in verschiedene Komponenten, hauptsächlich ActionPack, ActiveRecord und ActiveRessource aufgeteilt, wobei nur ActiveRecord aufgrund seiner Besonderheiten extra behandelt wird. Weiterhin gibt es in Rails die Konzepte DRY und Convention over Configuration, denen auch ein Kapitel gewidmet ist: 2.2. Bevor ich die Relevanz und Einsetzbarkeit von Rails in Projekten mit agilen Entwicklungsmethoden behandle, werde ich die Nachteile von diesem Framework erläutern. Das Bild 1 zeigt die Architektur von Rails. 8
9 Abbildung 2: Model-View-Controller 2.2 Konzepte Model-View-Controller Model-View-Controller(MVC) ist ein Architekturmuster und beschreibt die Aufteilung der Software in die drei Einheiten: Model (Datenmodell), View (Präsentation), Controller (Programmsteuerung). Abbildung 2 ist eine Abbildung des Musters, das die Komponenten und deren Beziehungen zeigt. Das Model repräsentiert in diesem Muster die Daten. Hier werden alle Anwungsdaten gespeichert und verwaltet, die im Betrieb der Application anfallen. Diese Einheit ist manchmal eng mit der Geschäftslogik verknüpft, in Rails ist das jedoch nicht der Fall. Im Gegensatz dazu ist das Model aber immer unabhängig von View und Controller.Diese Komponente wird durch ActiveRecord verwaltet. Der View ist die Ansicht, die der Nutzer auf das System hat und ist für die Anzeige der Daten aus dem Model zuständig und leitet dann Anfragen des Nutzers an den Controller weiter. Für diese Einheit ist ActionView zuständig, was ein Teil des ActionPacks ist. Der Controller ist der Kern der Anwung, hier findet die Datenverarbeitung statt. Er nimmt Benutzeraktionen vom View entgegen und reagiert entsprech. Ausserdem ist er für die Zuordnung zwischen Modell und Präsentation zuständig. In Rails ist der Controller ein Teil von ActionPack Don t repeat yourself Don t repeat yourself (DRY) bedeutet, dass man sich nicht wiederholen oder jede Information nur einmal im System vorhanden sein soll. Dieses Konzept ist relativ allgemein und findet sich auch in anderen Anwungsgebieten wieder, z.b.: in den Normalformen der Datenbank. Im Zusammenhang mit Rails bedeutet das, dass das Framework den Programmierer dabei zu unterstützen versucht. ActiveRecord bietet solche Möglichkeiten an (doch dazu mehr im Kapitel 2.3.1) und Ruby im allgemeinen. Ein weiterer Mechanismus, der dieses Konzept unterstützt ist das scaffolding(engl.: Gerüstbau). Rails stellt Generatoren zur Verfügung, die aus einem Model ein CRUD(Create-Update-Delete)-Interface erstellen. Dazu mal ein kleines Beispiel: 9
10 ruby s c r i p t / g e n e r a t e s c a f f o l d Movie t i t l e : s t r i n g Hier wird das generate-script mit dem Parameter scaffold, Movie und title:string aufgerufen. Daraus baut der Generator zuerst das Modell Movie mit dem Attribut titel, was ein String ist. Danach wird der Controller erzeugt und dann der View. Mit einem Einzeiler wird also in Rails ein CRUD-Interface erstellt, ohne sich selbst zu wiederholen, da man mit dem Generator natürlich CRUD-Interfaces für beliebig viele Modelle erstellen kann. DRY ist wichtig um Redundanz zu verhindern und Wartbarkeit und Fehlervermeidung zu unterstützen und hilf so direkt bei der Implementierung qualitativ hochwertiger Software Convention over Configuration Auch dieses Konzept ist sehr allgemein und beschreibt den Verzicht auf Konfiguration, wenn sich an die Konvention gehalten wird. Das kann man vielleicht am Beispiel eines Fahrstuhl verdeutlichen: Ein Fahrstuhl in einem Bürogebäude mit 10 Etagen wird von 98% der Mitarbeiter benutzt um in den 7. Stock zu gelangen. Wenn die Software Convention over Configuration(COC) unterstützt, würde der Fahrstuhl immer automatisch in die 7. Etage fahren, falls der Benutzer nichts anderes vorgibt. Das hat den enormen Vorteil, dass 98% der Mitarbeiter den Fahrstuhl nicht mehr konfigurieren müssen, währ für die restlichen 2% alles beim Alten bleibt. Ähnlich verhält es sich in Rails vor allem mit ActiveRecord, aber auch mit der Klassenbibliothek von Rails und den Tools, die mitgeliefert werden. Die Vorteile dieses Konzepts sind vor allem weniger Aufwand bei der Konfiguration, da die meisten Einstellungen durch Konventionen abgedeckt sind. 2.3 Komponenten ActiveRecord ActiveRecord ist das Datenbankabstraktions-Framework von Rails und basiert auf dem gleichnamigen Muster von Martin Fowler. Dieses Muster beschreibt die Abbildung der Tabellen, Zeilen und Spalten auf Klassen, Objekte und Attribute. Die nächsten Erwähnungen von ActiveRecord beziehen sich immer auf das Framework, das Teil von Rails ist und nicht auf das Pattern. ActiveRecord implementiert dieses Pattern und bietet damit die Möglichkeit leicht eine Verbindung zwischen Domäne-Objekten und der Datenbank herzustellen. Eine ActiveRecord-Klasse repräsentiert dabei eine Datenbank-Tabelle, ein Objekt eine Zeile und die Attribute des Objekts die Spalten. Im Unterschied zu Hibernate werden die Attribute nicht durch getter und setter in der Klasse definiert, sondern durch die Spalten in der Datenbank. Die Java-Implementation wäre eine DRY-Verletzung im Rails-System, weil für ein Attribut zwei Methoden benötigt werden, währ ActiveRecord zuerst die Datenbank ausliest und danach die Getter und Setter generiert. Auch hier können die Klassen zur Laufzeit erweitert werden, wie schon in... beschrieben. ActiveRecord generiert jedoch nicht nur die Getter und Setter, sondern auch spezielle Finder, die einfaches Suchen ermöglichen. Wenn zum Beispiel in der Tabelle Studenten ein Feld Name und Jahrgang existiert, so kann man den folgen Finden benutzen: Student. f i n d b y n a m e ( hans ) 10
11 Für die meisten Standartabfragen reichen diese generierten Finder vollkommen aus, zumal sie auch kombiniert werden können: Student. f i n d b y n a m e a n d j a h r g a n g ( hans, 1983) Da die meisten Methoden der Datenbank-Klassen generiert werden, ist diese Klasse meist leer. Für die Arbeit mit ActiveRecord arbeitet man häufig direkt auf der Datenbank, da das die Stelle ist, woher ActiveRecord die Informationen bezieht. So müssen unter anderem Join-Tabellen für n:m-beziehungen manuell angelegt werden. Diese Arbeitsweise betrachten einige als Nachteil im Vergleich mit Hibernate, wo man alles in den Klassen erledigen kann. Letztlich ist es jedoch nur eine Frage der Präferenz. Die Vorteile von ActiveRecord liegen jedoch auch in der einfachen Benutzung durch COC(siehe 2.2.3). In einem Rails-Projekt kann man sofort anfangen zu programmieren, da schon alles vorkonfiguriert ist, einschließlich ActiveRecord. 2.4 Kritik Die Nachteile von Rails beschränken sich hauptsächlich auf Geschwindigkeit und Performance im Vergleich zu den deutlich schnelleren HTML/PHP/JS-Lösungen. Das liegt zum Einen daran, dass Ruby interpretiert wird und andererseits an dem hohen Abstraktionsgrad, den es nicht umsonst gibt. Rails wäre nicht Rails, wenn es dafür keine Lösung gibt. Erstmal werden zwei Probleme unterschieden: Performance und Skalierbarkeit. Performance beschreibt das Antwortzeitverhalten des Systems, währ Skalierbarkeit die Eigenschaft des Systems beschreibt auch steiger Last nicht an Performance zu verlieren, bzw in einem Rahmen zu bleiben. Um performanter zu werden, unterstützt Rails verschiedene Caching Mechanismen. Caching bewirkt, dass der Server das Ergebnis einer Anfrage nicht jedesmal neu generiert, sondern beim ersten Mal speichert und es danach nur noch aus seinem Zwischenspeicher (Cache) holt. In Rails gibt es unter anderem das Seiten Caching, bei dem bestimmte - meist statische Seiten - markiert werden und nach dem ersten Erstellen direkt von Webserver zurückgeliefert werden. Ähnlich funktioniert auch das Fragment-Caching, bei dem jedoch nicht ganze Seiten, sonder nur Abschnitte markiert und gecached werden. Bezüglich dem zweiten Problem gibt es einen Ausspruch: Rails skaliert horizontal. Das bedeutet nichts weiter, als dass bei steiger Last die Anzahl der Server, die die Anfragen bearbeiten erhöht werden muss. Dafür wird ein Load-Balancer eingesetzt, der die Last auf die Server verteilt. An der Rails Applikation müssen dafür je nach System entweder keine oder nur kleine Änderungen, wie zum Beispiel an der Speicherung der Session, vorgenommen werden. 2.5 agile Methoden Dieses Kapitel behandelt, inwiefern sich Rails für die Software Entwicklung in Projekten mit agiler Vorgehensweise eignet und ob die Entwicklung mit Rails auch in großen Projekten möglich ist. Die Frage nach der generellen Eignung von Rails für die agile Entwicklung kann eindeutig bejaht werden, es ist sogar so, dass Rails nur dafür entwickelt wurde. Gegenstand vieler agiler Methoden sind die vielen Iterationen, das Prototyping und eine ständig lauffähige Version und die Kundenzufriedenheit. 11
12 Ruby on Rails ist für iteratives Vorgehen, wie schon gezeigt wurde, geeignet. Unter anderem durch die vielen Möglichkeiten die Klassen nachträglich oder zur Laufzeit zu verändern. Die Entwicklung mit Rails findet meistens featurebasiert statt, indem eins nach dem anderen implementiert wird. Schnell eine lauffähig Version einer Software zu erstellen ist mit Rails auch kein Problem durch die Umfangreiche Unterstützung durch die Generatoren und durch Convention over Configuration. Wenn es regelmäßig neue Prototypen gibt ist die Kundenzufriedenheit fast gewährleistet, da sich die Kunden die Prototypen ansehen und Änderungswünsche direkt einbringen können. Ein weiteres wichtiges Thema in der agilen Entwicklung das Testen wird ebenfalls von Rails vorbereitet indem für die benutzen Controller und Modelle initial Testscripte angelegt werden, die nur noch implementiert werden müssen. Auch hier funktioniert alles dank CoC ohne etwas zu konfigurieren. Nachdem klar ist, dass sich Rails zum Entwickeln mit agilen Methoden eignet ist die Frage, ob es skaliert in Hinsicht auf die Anzahl der Entwickler. Die Beantwortung der Frage ist nicht leicht, da es zu diesem Thema kaum Erfahrung gibt, geschweige denn Quellen. Hinweise können Erfahrungsberichte sein, die es von großen Rails-Projekten gibt, wobei deren Anzahl relativ gering ist. Der Grund dafür liegt aber eher in den Performance- und Skalierbarkeitsproblemen, die Rails hat. Doch leider gibt es keine öffentlichen Erfahrungsberichte dieser Projekte, sodass es bei Spekulationen bleibt. Spekulativ würde ich sagen, die Entwicklung mit Rails ist auch in einem großen Team möglich. Eigentlich ist es im Prinzip ja nichts anderes als bei Java oder ähnlichem. Die Entwickler bekommen Aufgaben und bearbeiten Klassen. Die Unterstützung durch Tools ist natürlich nicht so massiv wie bei Java vorhanden und das ist ein großer Nachteil. Abgesehen von diesem fallen mir jedoch keine Nachteile auf, die Rails in großen Teams haben soll. Ausgenommen natürlich die Nachteile agiler Methoden in großen Teams, die natürlich immer präsent sind, aber nichts mit Rails zu tun haben. 3 Fazit Abschließ möchte ich sagen, dass die Entwicklung mit Ruby on Rails zwar auf Web Applications beschränkt ist, mir dort aber sehr viel Spass gemacht hat. Für andere Anwungsgebiete kann man nur Ruby benutzen, was natürlich genausoviel Freude bringt. Der Spass und die Freude entstand bei mir dadurch, dass alles problemlos funktioniert hat, Ruby so einfach ist und alles klappt, wie ich es erwartet habe. Natürlich gibt es auch beim Programmieren mit Ruby on Rails Probleme, doch für diesen Fall gibt es eine freundliche Community. 4 Quellen Dave Thomas: Prorgamming Ruby 2. Auflage, The Pragmatic Programmers, 2005 Ralf Wirdemann, Thomas Baustert: Ruby on Rails 2. Auflage, Hanser, 2007 Jeremy McAnally: Ruby Book on Rails 12
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
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
MehrEine Anwendung mit InstantRails 1.7
Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen
MehrDiese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.
Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,
MehrQt-Projekte mit Visual Studio 2005
Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung
MehrAdobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost
Adobe Photoshop Lightroom 5 für Einsteiger Bilder verwalten und entwickeln Sam Jost Kapitel 2 Der erste Start 2.1 Mitmachen beim Lesen....................... 22 2.2 Für Apple-Anwender.........................
MehrOP-LOG www.op-log.de
Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server
MehrKostenstellen verwalten. Tipps & Tricks
Tipps & Tricks INHALT SEITE 1.1 Kostenstellen erstellen 3 13 1.3 Zugriffsberechtigungen überprüfen 30 2 1.1 Kostenstellen erstellen Mein Profil 3 1.1 Kostenstellen erstellen Kostenstelle(n) verwalten 4
MehrAnleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung
Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In
MehrSuche schlecht beschriftete Bilder mit Eigenen Abfragen
Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere
Mehrinfach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock
infach Ihr Weg zum finanzellen Erfolg Geld Florian Mock FBV Die Grundlagen für finanziellen Erfolg Denn Sie müssten anschließend wieder vom Gehaltskonto Rückzahlungen in Höhe der Entnahmen vornehmen, um
Mehrmysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank
mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man
MehrZwischenablage (Bilder, Texte,...)
Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen
MehrL10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016
L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele
MehrS/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine
PhotoLine S/W mit PhotoLine Erstellt mit Version 16.11 Ich liebe Schwarzweiß-Bilder und schaue mir neidisch die Meisterwerke an, die andere Fotografen zustande bringen. Schon lange versuche ich, auch so
MehrFachbericht zum Thema: Anforderungen an ein Datenbanksystem
Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank
MehrArbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
MehrEr musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt
Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen
MehrAnleitung über den Umgang mit Schildern
Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder
MehrTask: Nmap Skripte ausführen
Task: Nmap Skripte ausführen Inhalt Einfache Netzwerkscans mit NSE Ausführen des Scans Anpassung der Parameter Einleitung Copyright 2009-2015 Greenbone Networks GmbH Herkunft und aktuellste Version dieses
MehrHandbuch Fischertechnik-Einzelteiltabelle V3.7.3
Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3
MehrEs sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
MehrStundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten
Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten 2008 netcadservice GmbH netcadservice GmbH Augustinerstraße 3 D-83395 Freilassing Dieses Programm ist urheberrechtlich geschützt. Eine Weitergabe
MehrSEMINAR Modifikation für die Nutzung des Community Builders
20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen
MehrFastBill Automatic. Dokumentation Versand. FastBill GmbH. Holteyer Straße 30 45289 Essen Telefon 0201 47091505 Telefax 0201 54502360
FastBill GmbH Holteyer Straße 30 45289 Essen Telefon 0201 47091505 Telefax 0201 54502360 FastBill Automatic Dokumentation Versand 1 Inhaltsverzeichnis: 1. Grundlegendes 2. Produkteinstellungen 2.1. Grundeinstellungen
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
MehrDatenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware
Datenübernahme von HKO 5.9 zur Advolux Kanzleisoftware Die Datenübernahme (DÜ) von HKO 5.9 zu Advolux Kanzleisoftware ist aufgrund der von Update zu Update veränderten Datenbank (DB)-Strukturen in HKO
MehrGeoPilot (Android) die App
GeoPilot (Android) die App Mit der neuen Rademacher GeoPilot App machen Sie Ihr Android Smartphone zum Sensor und steuern beliebige Szenen über den HomePilot. Die App beinhaltet zwei Funktionen, zum einen
MehrNetzwerkeinstellungen unter Mac OS X
Netzwerkeinstellungen unter Mac OS X Dieses Dokument bezieht sich auf das D-Link Dokument Apple Kompatibilität und Problemlösungen und erklärt, wie Sie schnell und einfach ein Netzwerkprofil unter Mac
MehrAlbert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen
Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.
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
MehrStellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster
Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.
MehrHandbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken
Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen
MehrMORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH
MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte
MehrHANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG
it4sport GmbH HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG Stand 10.07.2014 Version 2.0 1. INHALTSVERZEICHNIS 2. Abbildungsverzeichnis... 3 3. Dokumentenumfang... 4 4. Dokumente anzeigen... 5 4.1 Dokumente
MehrWindows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1
Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen
MehrReporting Services und SharePoint 2010 Teil 1
Reporting Services und SharePoint 2010 Teil 1 Abstract Bei der Verwendung der Reporting Services in Zusammenhang mit SharePoint 2010 stellt sich immer wieder die Frage bei der Installation: Wo und Wie?
MehrKapitel 3 Frames Seite 1
Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den
MehrZahlen auf einen Blick
Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.
MehrZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN. Der Zauberwürfel-Roboter. Paul Giese. Schule: Wilhelm-Raabe-Schule
ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN Der Zauberwürfel-Roboter Paul Giese Schule: Wilhelm-Raabe-Schule Jugend forscht 2013 Kurzfassung Regionalwettbewerb Bremerhaven
MehrTevalo Handbuch v 1.1 vom 10.11.2011
Tevalo Handbuch v 1.1 vom 10.11.2011 Inhalt Registrierung... 3 Kennwort vergessen... 3 Startseite nach dem Login... 4 Umfrage erstellen... 4 Fragebogen Vorschau... 7 Umfrage fertigstellen... 7 Öffentliche
MehrIntranet E-Mail Moodle
Intranet E-Mail Moodle Manual für Lernende V1.0 1 / 8 Inhaltsverzeichnis Übersicht... 3 1. Intranet... 3 2. Anmeldenamen... 4 3. Passwort... 4 3.1 Erste Anmeldung... 4 3.2 Passwort ändern... 5 3.3 Passwort
Mehrschnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv
Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag
MehrDer Kalender im ipad
Der Kalender im ipad Wir haben im ipad, dem ipod Touch und dem iphone, sowie auf dem PC in der Cloud einen Kalender. Die App ist voreingestellt, man braucht sie nicht laden. So macht es das ipad leicht,
MehrBedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof
Bedienungsanleitung für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof Matthias Haasler Version 0.4 Webadministrator, email: webadmin@rundkirche.de Inhaltsverzeichnis 1 Einführung
MehrProfessionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
MehrGuide DynDNS und Portforwarding
Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch
MehrAnwendungsbeispiele. Neuerungen in den E-Mails. Webling ist ein Produkt der Firma:
Anwendungsbeispiele Neuerungen in den E-Mails Webling ist ein Produkt der Firma: Inhaltsverzeichnis 1 Neuerungen in den E- Mails 2 Was gibt es neues? 3 E- Mail Designs 4 Bilder in E- Mails einfügen 1 Neuerungen
MehrLokale Installation von DotNetNuke 4 ohne IIS
Lokale Installation von DotNetNuke 4 ohne IIS ITM GmbH Wankelstr. 14 70563 Stuttgart http://www.itm-consulting.de Benjamin Hermann hermann@itm-consulting.de 12.12.2006 Agenda Benötigte Komponenten Installation
MehrSeite 1 von 14. Cookie-Einstellungen verschiedener Browser
Seite 1 von 14 Cookie-Einstellungen verschiedener Browser Cookie-Einstellungen verschiedener Browser, 7. Dezember 2015 Inhaltsverzeichnis 1.Aktivierung von Cookies... 3 2.Cookies... 3 2.1.Wofu r braucht
MehrDatenbanken Kapitel 2
Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,
MehrInhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
MehrDatensicherung. Beschreibung der Datensicherung
Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten
MehrKonfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014
Konfiguration VLAN's Version 2.0.1 Deutsch 01.07.2014 In diesem HOWTO wird die Konfiguration der VLAN's für das Surf-LAN der IAC-BOX beschrieben. Konfiguration VLAN's TITEL Inhaltsverzeichnis Inhaltsverzeichnis...
MehrEinführung in Eclipse und Java
Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik
MehrBilder zum Upload verkleinern
Seite 1 von 9 Bilder zum Upload verkleinern Teil 1: Maße der Bilder verändern Um Bilder in ihren Abmessungen zu verkleinern benutze ich die Freeware Irfan View. Die Software biete zwar noch einiges mehr
Mehr4. BEZIEHUNGEN ZWISCHEN TABELLEN
4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe
MehrUrlaubsregel in David
Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5
MehrDokumentation von Ük Modul 302
Dokumentation von Ük Modul 302 Von Nicolas Kull Seite 1/ Inhaltsverzeichnis Dokumentation von Ük Modul 302... 1 Inhaltsverzeichnis... 2 Abbildungsverzeichnis... 3 Typographie (Layout)... 4 Schrift... 4
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
MehrWordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten
Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten Version 1.0 Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten In unserer Anleitung zeigen wir Dir, wie Du Blogbeiträge
MehrALF-BanCo - Chipkarte einrichten in 3 Schritten
ALF-BanCo - Chipkarte einrichten in 3 Schritten 1. Schritt: Installation ALF-BanCo und Chipkartenleser Installieren Sie zunächst die aktuellste Version von ALF-BanCo Stecken Sie das Chipkartenlesegerät
MehrOutlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang
sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche
MehrTELIS FINANZ Login App
Installation & Bedienung der TELIS FINANZ Login App 1. Voraussetzungen - Android Version 4.0 oder höher - Uhrzeit automatisch gestellt - Für die Einrichtung wird einmalig eine Internetverbindung benötigt
Mehr40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.
40-Tage-Wunder- Kurs Umarme, was Du nicht ändern kannst. Das sagt Wikipedia: Als Wunder (griechisch thauma) gilt umgangssprachlich ein Ereignis, dessen Zustandekommen man sich nicht erklären kann, so dass
MehrRobot Karol für Delphi
Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško
MehrTutorial. In diesem Tutorial möchte ich die Möglichkeiten einer mehrspracheigen Web-Site erläutern.
Tutorial In diesem Tutorial möchte ich die Möglichkeiten einer mehrspracheigen Web-Site erläutern. Zu Beginn müssen wir uns über die gewünschten Sprachen Gedanken machen. Zum einem, da eine professionelle
MehrGruppenrichtlinien und Softwareverteilung
Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden
MehrQTTabBar Einrichtung, ein Tutorial
QTTabBar Einrichtung, ein Tutorial Von Heiko Schulze Eines der ganz entscheidenden Dinge, das im Explorer fehlt ist das tabunterstützte Navigieren. Dafür gibt es bereits seit Jahren die QTTabBar. Sie wurde
MehrJederzeit Ordnung halten
Kapitel Jederzeit Ordnung halten 6 auf Ihrem Mac In diesem Buch war bereits einige Male vom Finder die Rede. Dieses Kapitel wird sich nun ausführlich diesem so wichtigen Programm widmen. Sie werden das
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:
MehrScala & Lift. Ferenc Lajko 04.02.2010
Scala & Lift Ferenc Lajko 04.02.2010 Gliederung 1. Scala 1.1. Allgemein 1.2. Merkmale 1.3. Unterschiede zu Java 1.4. Code-Beispiel 1.5. Vorteile zu anderen Sprachen 2. Lift 2.1. Allgemein 2.2. Idee 2.3.
MehrKapitel 4 Die Datenbank Kuchenbestellung Seite 1
Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung
MehrDokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation
Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation (Bei Abweichungen, die bspw. durch technischen Fortschritt entstehen können, ziehen Sie bitte immer das aktuelle Handbuch
MehrTutorial - www.root13.de
Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrNovell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar 2015. ZID Dezentrale Systeme
Novell Client Anleitung zur Verfügung gestellt durch: ZID Dezentrale Systeme Februar 2015 Seite 2 von 8 Mit der Einführung von Windows 7 hat sich die Novell-Anmeldung sehr stark verändert. Der Novell Client
MehrÄnderungsbeschreibung HWS32 SEPA Überweisungen
Änderungsbeschreibung HWS32 SEPA Überweisungen Inhaltsverzeichnis SEPA ÜBERWEISUNGEN... 2 INSTALLATION... 2 ÄNDERUNGEN IN DER ADRESSVERWALTUNG... 4 ÄNDERUNGEN IM RECHNUNGSEINGANGSBUCH... 5 DIE ÜBERWEISUNGSPROGRAMME
MehrBeispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis www.wir-lieben-shops.de 1
Beispiel Shop-Eintrag Ladenlokal & Online-Shop. Als Händler haben Sie beim Shop-Verzeichnis wir-lieben-shops.de die Möglichkeit einen oder mehrere Shop- Einträge zu erstellen. Es gibt 3 verschiedene Typen
MehrVisual Basic Express Debugging
Inhalt Dokument Beschreibung... 1 Projekt vorbereiten... 1 Verknüpfung zu Autocad/ProStructures einstellen... 2 Debugging... 4 Autocad/ProSteel Beispiel... 5 Dokument Beschreibung Debuggen nennt man das
MehrProfessionelle Seminare im Bereich MS-Office
Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet
MehrINSTALLATION VON INSTANTRAILS 1.7
INSTALLATION VON INSTANTRAILS 1.7 InstantRails 1.7 ist ein Paket, das Ruby, Rails, Apache, MySQL und andere Tools, z.b. phpmyadmin in vorkonfigurierter Form enthält. Das Paket muss in einem Verzeichnis
Mehricloud nicht neu, aber doch irgendwie anders
Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und
MehrDiplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008
Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen
MehrBauteilattribute als Sachdaten anzeigen
Mit den speedikon Attributfiltern können Sie die speedikon Attribute eines Bauteils als MicroStation Sachdaten an die Elemente anhängen Inhalte Was ist ein speedikon Attribut?... 3 Eigene Attribute vergeben...
MehrEinrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications
Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications Windows 8 Systemsteuerung > Programme > Windows Features aktivieren / deaktivieren > Im Verzeichnisbaum
MehrÜbung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
Mehr! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006
!"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst
MehrIst Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers
Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,
MehrISA Server 2004 - Best Practice Analyzer
ISA Server 2004 - Best Practice Analyzer Die Informationen in diesem Artikel beziehen sich auf: Microsoft ISA Server 2004 Seit dem 08.12.2005 steht der Microsoft ISA Server 2004 Best Practice Analyzer
MehrText-Zahlen-Formatieren
Text-Zahlen-Formatieren Beobachtung: Bei der Formatierung einer Zahl in eine Textzahl und umgekehrt zeigt Excel ein merkwürdiges Verhalten, welches nachfolgend skizziert werden soll: Wir öffnen eine neue
MehrAnleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE
Anleitung RÄUME BUCHEN MIT OUTLOOK FÜR VERWALTUNGSANGESTELLTE Dezernat 6 Abteilung 4 Stand: 14.Oktober 2014 Inhalt 1. Einleitung 3 2. Räume & gemeinsame Termine finden 3 3. Rüstzeit 8 4. FAQ: Oft gestellte
MehrBilder Schärfen und Rauschen entfernen
Bilder Schärfen und Rauschen entfernen Um alte Bilder, so wie die von der Olympus Camedia 840 L noch dazu zu bewegen, Farben froh und frisch daherzukommen, bedarf es einiger Arbeit und die habe ich hier
MehrSo richten Sie Outlook Express ein. Einrichten von Outlook Express (hier am Beispiel von Outlook Express 6) für den Empfang meiner E-Mails
Artikel-ID Produktkategorien Datum: 545 PowerWeb Pakete Premium Pakete WebVisitenkarte A / C / M 25.11.2004 So richten Sie Outlook Express ein Einrichten von Outlook Express (hier am Beispiel von Outlook
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
Mehretermin Einbindung in Outlook
etermin Einbindung in Outlook 1. Einführung Über etermin gebuchte Termine können bei Bedarf auch mit externen Terminkalendern, wie zum Beispiel Outlook, ical oder Google synchronisiert werden. Dieses Dokument
MehrGrundbegriffe der Informatik
Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen
MehrDownloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler
Downloadfehler in DEHSt-VPSMail Workaround zum Umgang mit einem Downloadfehler Downloadfehler bremen online services GmbH & Co. KG Seite 2 Inhaltsverzeichnis Vorwort...3 1 Fehlermeldung...4 2 Fehlerbeseitigung...5
MehrAufklappelemente anlegen
Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie
Mehr