Next: Ein kurzes Interview
  Contents
 
Geleitwort
In den frühen 80er Jahren war ein Student in Japan hingerissen von
Programmiersprachen. Er träumte von einer eigenen Sprache. Etliche
Jahre später wurde sein Traum Wirklichkeit. Er schuf Ruby, das
in diesem Buch beschrieben wird, und der Junge war ich!
1993 sprach ich mit Kollegen über Skriptsprachen, über deren Stärken und
vor allem deren Zukunft. Aber ich war nicht glücklich über die zu
diesem Zeitpunkt verfügbaren Sprachen (Perl und Python).
Ich wollte eine Sprache, die mächtiger als Perl und objektorientierter
als Python sein sollte. Da es keine solche Sprache gab,
entschied ich mich dazu, meine eigene Sprache zu schreiben.
Ich glaube, dass der Sinn des Lebens, zumindest teilweise, darin besteht,
glücklich zu sein. Ich gebe auch zu, dass ich ein
fauler Programmierer war. Deshalb fühle ich mich wohl, wenn der Computer mehr
arbeitet und ich weniger. Auch sind meine Gehirnwindungen träge und deshalb
genieße ich es, wenn ich mich auf die wirklichen Probleme konzentrieren kann
und von den Ungereimtheiten der Sprache verschont bleibe. Ruby wurde geschaffen,
um Programmierer glücklich zu machen. Zumindest hatte ich sie entwickelt, um
glücklich zu werden.
Gegen Ende 1995 wurde Ruby 0.95 der Öffentlichkeit als freie Software
vorgestellt. Ich hatte Ruby mit Emacs und gcc unter Linux entwickelt,
die alle frei verfügbar sind, also lag es für mich auf der Hand,
Ruby ebenfalls der freien Softwarewelt beizusteuern.
Einige Jahre war Ruby sozusagen eine rein japanische Programmiersprache.
Dann aber entdeckte das nichtjapanische Publikum Ruby. Zuerst wurde ein
englisches Buch publiziert und jetzt haben wir auch dieses erste
deutsche Buch über Ruby.
Ich verdanke der Ruby-Gemeinschaft außerordentlich viel.
Sie hat mir sehr geholfen. Ruby ist durch die Gemeinschaft gewachsen.
Ohne deren Hilfe hätte ich Ruby nicht zu dem machen können,
was es jetzt ist.
Ich bin froh darüber, dass es jetzt auch ein deutsches Ruby-Buch gibt.
Der erste Nicht-Japaner, der ernsthaftes Interesse an Ruby hatte,
war übrigens ein Deutscher. Ich wünschte, ich hätte Deutsch
an der Universität intensiver studiert. Ich habe beinahe alles verlernt,
bis auf das ABC, die Zahlen und Begrüßungen habe ich alles vergessen,
das ist traurig.
Ich hoffe, dass Ihnen Ruby, zusammen mit diesem Buch, den Programmieralltag
erleichtert und versüßt. Seien Sie glücklich. Danke schön.
Yukihiro "`matz"' Matsumoto
August 2001, Japan
Vorwort
In my eyes it is never a crime to steal knowledge. It is a good theft.
The pirate of knowledge is a good pirate.
-Michel Serres
- Geleitwort
- Contents
- Ruby kennen lernen
- Einführung in Ruby
- Ruby als Zahlenjongleur
- Ganze und Fließkommazahlen
- Rechenoperatoren
- Das Math-Modul
- Zeichenketten, Strings
- String-Literale
- Indizierung
- Mit Strings arbeiten
- Reguläre Ausdrücke
- Das MatchData-Objekt
- Reguläre Ausdrücke - ein Überblick
- CSV-Parser
- Arrays und Hashtabellen
- Arrays erzeugen und kombinieren
- Mit Arrays arbeiten
- Iteratoren für Arrays
- Hashtabellen erzeugen und verwalten
- Auf Hashelemente zugreifen
- Iteratoren für Hashtabellen
- Miniprojekt: Papier, Schere und Stein
- Operatoren
- Operatoren
- Zuweisungen
- Anordnung
- Gleichheit
- Kontrollstrukturen und Wertebereiche
- Einfache Verzweigungen
- Mehrfachverzweigung
- Schleifen und Schleifenkontrolle
- Bereiche
- Throw und Catch
- Variablen, Blöcke und Iteratoren
- Verzeichnisse
- Dateien erzeugen und löschen
- Dateien einlesen
- Dateien beschreiben
- Pipelines
- Fehlerbehandlung bei Dateioperationen
- Tastatur und Standardausgabe
- Ausnahme- und Fehlerbehandlung
- Continuations
- Prozesse und Threads
- Prozesse (schwergewichtig)
- Threads (leichtfüßig)
- Projekt: Logfile-Analyse
- Objektorientiertes Programmieren in Ruby
- Objekte, Klassen und Methoden
- Module
- Fortgeschrittene Konzepte
- Dynamisch erstellte Anweisungen
- Basisklassen erweitern und Metaprogrammierung
- Design Patterns inklusive
- Projekt: Databinding Framework
- Das Ruby-Kochbuch
- Netzwerkprotokolle
- FTP
- HTTP
- POP3 und SMTP
- telnet
- Sockets
- Grundlagen
- Das Socket-API in Ruby
- CGI-Skripte mit Ruby
- HTML-Seiten mit Ruby
- Bilder und Links
- escape und unescape
- Formulare
- Upload von Dateien
- Tabellen
- Cookies und Sessions
- Miniprojekt: Header und Cookies
- Sicherheit (nicht nur) fürs Internet
- Sicherheitsstufen
- Eine Sandbox für Ruby-Programme
- eRuby und mod_ruby
- Installation
- eRuby-Syntax und Anwendung
- mod_ruby
- Optimierung
- Facet: Web Application Framework
- Übersicht
- MVC
- Bestandteile von Facet
- Installation und Aufsetzen von Applikationen
- Action-Controller
- IOWA: Interpreted Objects for Web Applications
- Konzept
- Wieso noch ein Web-Framework?
- Grundlagen
- Links, Listen und Iteratoren
- Formulare mit IOWA
- Datenbankanbindung
- DBI installieren
- Logfiles mit MySQL analysieren
- Erstellen der Datenbank
- Logfiles in die Datenbank übertragen
- Auswertungen mit sqlsh.rb
- Ergebnismengen in Ruby bearbeiten
- Projekt: Einkaufskorb in Ruby
- Datenbank konfigurieren
- Login
- Warenbestand einsehen
- Einkaufen
- XML
- Parser und Writer
- Beispiele
- Formale Korrektheit überprüfen
- Der sequenzielle Parser
- Der Baumparser
- XML erstellen
- XSLT
- Ein Ruby-Client/Server-1x1
- Koordination von Threads
- Semaphore und die Klasse Mutex
- ConditionVariable
- Monitore
- Datenaustausch per Pipeline
- rb_spread
- Message Passing Interface (MPI)
- Grundlagen
- Pi und kein Ende
- DRb: Distributed Ruby
- XML-RPC
- Grundlagen
- Ein Client
- Server
- SOAP
- Ein SOAP-Client
- Ein einfacher SOAP-Server
- GUI-Programmierung
- RubyTk
- Grundlagen
- Konzept
- Beispiele
- FXRuby
- Ruby und Borlands VCL
- Ruby und Windows
- rubyw.exe und rubywin.exe
- Ruby ohne Konsole
- Entwicklungsumgebungen unter Windows
- COM im Griff mit win32ole
- Direkter Zugriff auf DLLs
- Ruby und der Rest der Welt
- Ruby/Python
- JRuby: Ruby grüßt Java
- Code in Bibliotheken auslagern
- Auslagern von Hand
- Erweiterungen mit SWIG
- Ruby "`einbetten"'
- Externe Funktionen aufrufen
- Ruby-Interpreter einbauen
- Editoren
- Nützliche Tools und Module
- Aspektorientierte Programmierung
- Fehlersuche
- Bordmittel
- Debugger-Befehle
- Konkretes Beispiel
- Profiler
- Garbage Collection
- RubyUnit
- XP - Extremes Programmieren
- Einsatz von RubyUnit
- Ein Beispiel
- RubyDoc und RDTool
- ri - interaktive Ruby-Referenz
- Anhang
- Schnelleinstieg für Perl-Umsteiger
- Schnelleinstieg für Java-Umsteiger
- Interfaces und Module
- Packages und Module
- Zugriffskontrolle
- Alias-Methoden
- Ausnahmen
- Schnelleinstieg für C++-Umsteiger
- Ruby Style Guide
- Ruby installieren
- Allgemeines
- Windows
- Linux/Unix
- Der elegante Weg mit rpm
- Installation von Hand
- Sandbox, Code pur
- Bibliography
- Index
Next: Ein kurzes Interview
  Contents
 
Armin Roehrl, Stefan Schmiedl und Clemens Wyss
2002-01-16