<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Dipl.-Ing. Peter Ehrenberg [dipe] - Home</title>
  <id>tag:dipe.de,2010:mephisto/</id>
  <generator uri="http://mephistoblog.com" version="0.7.3">Mephisto Noh-Varr</generator>
  <link href="http://dipe.de/feed/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://dipe.de/" rel="alternate" type="text/html"/>
  <updated>2010-08-07T12:32:29Z</updated>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2009-09-27:1780</id>
    <published>2009-09-27T09:15:00Z</published>
    <updated>2010-08-07T12:32:29Z</updated>
    <category term="Tipps"/>
    <category term="Html Https Iframe Dom"/>
    <link href="http://dipe.de/2009/9/27/dynamische-grenanpassung-bei-einem-iframe-mit-https-inhalt" rel="alternate" type="text/html"/>
    <title>Dynamische Gr&#246;&#223;enanpassung bei einem IFrame mit Https-Inhalt</title>
<summary type="html">&lt;p&gt;Zur Integration von Web-Anwendungen stellen sich IFrames immer noch
als ein adäquates Mittel dar, denn sie sind äußerst einfach anzuwenden
und stellen an die beteiligten Systeme denkbar geringe Anforderungen.&lt;/p&gt;

&lt;p&gt;Ein Nachteil von IFrames ist aber, dass sie keine dynamische Höhen-
oder Breitenanpassung auf ihren Inhalt mittels CSS erlauben. Hierfür
ist man dann auf den Einsatz von Javascript angewiesen.&lt;/p&gt;

&lt;p&gt;Ganz besonders knifflig ist dass dann, wenn das IFrame-Dokument (ich
meine das, welches innerhalb des IFrames zur Darstellung kommt) HTTPS
erfordert, das äußere Dokument (das Dokument mit dem IFrame-Element)
hingegen HTTP benutzt.  In diesem Fall hat keines der beteiligten
Dokumente Zugriff auf das DOM des anderen, so dass eine direkte
Javascript-Manipulation hier nicht möglich ist. Das selbe gilt auch
für den Fall, dass die Dokumente aus unterschiedlichen, sich nicht
gegenseitig vertrauenden Domains stammen.&lt;/p&gt;

&lt;p&gt;Lösung: Ein HTTP-Call-Back-Request. Wie das geht, steht im Artikel...&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Zur Integration von Web-Anwendungen stellen sich IFrames immer noch
als ein adäquates Mittel dar, denn sie sind äußerst einfach anzuwenden
und stellen an die beteiligten Systeme denkbar geringe Anforderungen.&lt;/p&gt;

&lt;p&gt;Ein Nachteil von IFrames ist aber, dass sie keine dynamische Höhen-
oder Breitenanpassung auf ihren Inhalt mittels CSS erlauben. Hierfür
ist man dann auf den Einsatz von Javascript angewiesen.&lt;/p&gt;

&lt;p&gt;Ganz besonders knifflig ist dass dann, wenn das IFrame-Dokument (ich
meine das, welches innerhalb des IFrames zur Darstellung kommt) HTTPS
erfordert, das äußere Dokument (das Dokument mit dem IFrame-Element)
hingegen HTTP benutzt.  In diesem Fall hat keines der beteiligten
Dokumente Zugriff auf das DOM des anderen, so dass eine direkte
Javascript-Manipulation hier nicht möglich ist. Das selbe gilt auch
für den Fall, dass die Dokumente aus unterschiedlichen, sich nicht
gegenseitig vertrauenden Domains stammen.&lt;/p&gt;

&lt;p&gt;Lösung: Ein HTTP-Call-Back-Request. Wie das geht, steht im Artikel...&lt;/p&gt;
&lt;h2&gt; Der HTTP-Call-Back-Request&lt;/h2&gt;

&lt;p&gt;Die Geometrie des IFrame-Inhaltes kennt nur das im IFrame dargestellte
Dokument selbst. Das IFrame-Element, dessen Höhen- und
Breiten-Eigenschaften angepasst werden müssen, befindet sich im
äußeren Dokument. Der gegenseitige DOM-Zugriff ist verboten. Was nun?&lt;/p&gt;

&lt;p&gt;Die Lösung ist ein &lt;em&gt;HTTP-Call-Back-Request&lt;/em&gt;: Das im IFrame
dargestellte Dokument ermittelt seine eigene Geometrie und löst dann
ein HTTP-Request aus, bei dem es seine Geometriedaten als
GET-Parameter mitgibt. Der Request richtet sich an die Site mit dem
äußeren Dokument und transportiert so die Geometriedaten über
Protokoll- und Domain-Grenzen hinweg.&lt;/p&gt;

&lt;p&gt;Das ist die Grundidee. Jetzt sind zwei Fragen sind zu lösen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Wie erzeugen wir in dem IFrame-Dokument den Http-Call-Back-Reguest
zum Transport der Geometriedaten?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wie nehmen wir den Request entgegen, so dass wir die Höhe des
IFrame-Elementes manipulieren können?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Am Ende ganz einfach&lt;/h2&gt;

&lt;p&gt;Mit Javascript und dem DOM als Technologie ist das am Ende ganz
einfach:&lt;/p&gt;

&lt;h3&gt;Http-Call-Back-Reguest mittels weiteren IFrame&lt;/h3&gt;

&lt;p&gt;Zunächst stellt das im Iframe dargestellte Dokument seine Geometrie
fest. Für die Höhe z.B. so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var body = document.getElementsByTagName(&quot;body&quot;)[0]
var body_heigth = body.heigth
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Dieser Code darf erst ausgeführt werden, wenn das Dokument fertig ist. Also 
z.B. beim &lt;code&gt;onload&lt;/code&gt;-Event des Bodies.&lt;/p&gt;

&lt;p&gt;Den Http-Request erzeugen wir dadurch, dass wir ein (unsichtbares)
IFrame-Element erzeugen.&lt;/p&gt;

&lt;p&gt;Nochmal zur Erinnerung: Gedanklich befinden wir uns im
IFrame-Dokument, welches mittels HTTPS geladen wird und möglicherweise
auf einer fremden Site liegt. Seine Größe wollen wir an unser äußeres
Dokument übermitteln. &lt;/p&gt;

&lt;p&gt;Hierfür wollen wir einen Request mit den Geometriedaten zu unserer
Site senden. Hierfür müssen wir eine Request-URL festlegen, an die wir
die Geometriedaten als Parameter anhängen. Dann können wir mittels
DHTML das Call-Back-IFrame-Element in dem IFrame-Dokument erzeugen. 
Wichtig ist: Die Call-Back-Url soll auf der selben Site liegen, wie das äußere
Dokument, welches das IFrame-Element enthält, dessen Geometrie wir
anpassen wollen:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var callback_url = &quot;http://myhost/mycallback.html?heigth=&quot; + body_height
body.innerHTML += &quot;&amp;lt;iframe src='&quot; + callback_url + &quot;' width=1 height=1 style='display: none'&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Dieser Code kommt in das IFrame-Dokument.&lt;/p&gt;

&lt;p&gt;Das war der erste Streich.  Der Zweite folgt sogleich.&lt;/p&gt;

&lt;h3&gt;Request-Entgegennahme und Höhenmanipulation&lt;/h3&gt;

&lt;p&gt;Als Request-URL haben wir
&lt;code&gt;http://myhost/mycallback.html?heigth=&lt;/code&gt;&lt;em&gt;höhe&lt;/em&gt; festgelegt.  Absichtlich
habe ich hierfür ein HTML-Dokument &lt;code&gt;mycallback.html&lt;/code&gt; gewählt, denn
mehr benötigen wir nicht.&lt;/p&gt;

&lt;p&gt;Das Dokument besitzt keinen darzustellenden Inhalt, sondern nur
Javascript. Das Javascript hat zwei Aufgaben:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Die übermittelten Geometriedaten aus der URL auslesen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Das IFrame-Element des äußeren Dokuments manipulieren.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Zu Erinnerung: Wir haben ein äußeres Dokument mit einem
IFrame-Element, dessen Geometrie wir an seinen Inhalt anpassen
wollen. Der Inhalt wird via HTTPS geladen und stammt möglicherweise
von einer fremden Site. In diese Dokument haben wir unser obiges
Javascript eingesetzt, so dass wir in dem IFrame einen weiteren &lt;em&gt;Call-Back-IFrame&lt;/em&gt;
erhalten, dessen URL auf unsere Site zeigt und mit dem Request die Geometriedaten zu
uns transportiert.&lt;/p&gt;

&lt;p&gt;Das Auslesen der Höhe aus den URL-Parametern ist einfach (wir
verzichten hier auf Fehlerbehandlung):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; var height = /\?heigth=(\d+)/.exec(document.serach)[0]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Die an dem IFrame einzustellende Höhe haben wir jetzt. Nun müssten wir
das äußere IFrame-Element im DOM finden. Ich nehme hier mal an, dass das
IFrame-Element die ID &lt;code&gt;myiframe&lt;/code&gt; trägt. Dann geht das so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; parent.parent.document.getElementById('myiframe').height = heigth
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Mit &lt;code&gt;parent&lt;/code&gt; erreichen wir den via HTTPS eingebundenen IFrame. Dessen
&lt;code&gt;parent&lt;/code&gt; ist das Window unseres äußeren Dokuments.&lt;/p&gt;

&lt;p&gt;Diese beiden Zeilen sind alles, was wir in unserer Call-Back-Html-Seite benötigen.&lt;/p&gt;

&lt;h2&gt;Aussicht&lt;/h2&gt;

&lt;p&gt;Mancher wird jetzt erwarten, dass diese Lösung Sicherheitswarnungen des Browsers 
produziert, weil das HTTPS-Dokument ungesicherte Elemente (unseren call-Back-IFrame)
enthält. Dem ist nicht so.&lt;/p&gt;

&lt;p&gt;Eine richtig runde Lösung würde jetzt natürlich die &lt;code&gt;callback_url&lt;/code&gt; und die ID des äußeren IFrames
parametrisieren, so dass das ferne Sytem mit dem IFrame-Inhalt diese Dinge nicht wissen muss.&lt;/p&gt;

&lt;p&gt;Das zu tu überlasse ich dem geneigen Leser.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2009-01-04:1776</id>
    <published>2009-01-04T15:44:00Z</published>
    <updated>2009-01-04T16:05:37Z</updated>
    <category term="rails software-development komponenten infrastruktur"/>
    <link href="http://dipe.de/2009/1/4/komponenten-versus-infrastruktur" rel="alternate" type="text/html"/>
    <title>Komponenten versus Infrastruktur</title>
<content type="html">
            &lt;p&gt;&lt;a href=&quot;http://twitter.com/fastandfearless&quot;&gt;Ein Freund&lt;/a&gt; hat mich auf
&lt;a href=&quot;http://wicket.apache.org/&quot;&gt;Wicket&lt;/a&gt; aufmerksam gemacht. Wicket ist ein
Java-basierter Web-Applikations-Framework, deren Autoren (immer noch)
den Traum komponentenbasierter Software-Architektur träumen. Aus
meiner Sicht ein Alptraum.&lt;/p&gt;

&lt;p&gt;Wiederverwendbare Software zu schaffen ist eine der ganz schwierigen Aufgaben.
Wiederverwendbare &lt;em&gt;high-level&lt;/em&gt; Software-Komponenten zu schaffen ist
noch schwieriger &lt;a href=&quot;http://jroller.com/dancres/date/20050218&quot;&gt;[1]&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Bei der Wiederverwendung einer &lt;em&gt;high-level&lt;/em&gt; Komponente sieht oft
zuerst alles gut und einfach aus. Aber dann kommen die Details. Immer
umfangreichere Teile der Komponente müssen angepasst, also neu
implementiert werden. Manchmal ist gar nicht abschätzbar, ob ein gefragtes &lt;em&gt;Feature&lt;/em&gt; mit der
Komponente überhaupt realisierbar ist - geschweige denn zu welchem
Aufwand.  Spätestens aber wenn der Upgrade auf ein neues Release der
Komponente ansteht, ist der Spaß vorbei. &lt;/p&gt;

&lt;p&gt;Im Sinne der agilen Software-Entwicklung ist das Ergebnis jedenfalls
schon tot, bevor es ausgerollt wird. Das Ergebnis ist
überkomplex und damit kaum wart- und anpassbar. Es enthält Features
bei denen nicht bekannt ist, für was und ob sie überhaupt vom Kunden
benötigt werden.&lt;/p&gt;

&lt;p&gt;Am Ende war der Aufwand für die Anpassungen größer und schmerzvoller,
als hätte man die Funktionalität vom &lt;em&gt;scratch&lt;/em&gt; implementiert.&lt;/p&gt;

&lt;p&gt;Was ist die Alternative? Aus meiner Sicht macht es
&lt;a href=&quot;http://rubyonrails.org/&quot;&gt;Rails&lt;/a&gt; genau richtig. Statt auf
konfigurierbare und wiederverwendbare Komponenten zu setzen,
adressiert Rails die Verbesserung der Infrastruktur. Um so einfacher
es ist, eine Anwendung vom &lt;em&gt;scratch&lt;/em&gt; zu schreiben, um so weniger bedarf
es irgendwelcher &lt;em&gt;high-level&lt;/em&gt; Komponenten.&lt;/p&gt;

&lt;p&gt;Das Ergebnis ist dann eine einfache Anwendung mit wenig, leicht
lesbaren Code, die nur solche Features enthält, die der Kunde
benötigt. Agile Software eben.&lt;/p&gt;

&lt;p&gt;[1]: &lt;a href=&quot;http://jroller.com/dancres/date/20050218&quot;&gt;SOA doomed?&lt;/a&gt;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2008-12-30:1775</id>
    <published>2008-12-30T17:11:00Z</published>
    <updated>2008-12-30T17:32:54Z</updated>
    <category term="emacs rails textmate"/>
    <link href="http://dipe.de/2008/12/30/eight-megabytes-and-constantly-swapping" rel="alternate" type="text/html"/>
    <title>Eight Megabytes And Constantly Swapping*</title>
<content type="html">
            &lt;p&gt;Mac und Emacs - das ist ja ein Gegensatz schon beinahe biblischer
Dimension. Um so überraschender der Trend unter den Apple-vernarrten
Rails-Entwicklern von TextMate auf Emacs umzusteigen.  Geoffrey
Grosenbach (Peepcode) hat dazu jetzt sogar einen
&lt;a href=&quot;http://nubyonrails.com/articles/emacs-emacs&quot;&gt;Screencast&lt;/a&gt; produziert.&lt;/p&gt;

&lt;p&gt;Mich selbst erstaunt das insofern, als das ich Mac-OS nach einigen
tapferen Monaten gleich ganz wieder verlassen habe. Weniger weil mir
Emacs so sehr fehlte (mit TextMate hätte ich leben können), sondern
weil mir Mac-OS als Entwickler-System viel zu unkomfortabel ist. Die wesentlichen
Mac-OS-Macken sind meiner Ansicht nach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Mac-OS hat keinen Paket-Manager. Zwar gibt es Mac-Ports, aber das
endet in unerfreulichen, länglichen Compilations-Sitzungen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keine persistenten Sitzungen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keine brauchbare Multi-Desktop-Implementation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keine intelligente Window-Platzierung.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows kann man nur an der rechten unteren Ecke in der Größe
ändern. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Seither benutze ich wieder Linux/KDE (Debian) auf einem
Wald-und-Wiesen-PC. Alles was ich vermisse, ist die Mac-Hardware -
abgesehen von der Tastatur, die mies funktioniert und deren Layout
noch schlimmer als QERTZ ist (zumindest für Programmierer).&lt;/p&gt;

&lt;p&gt;Wer benutzt alles Emacs? Im Ruby- und Rails-Umfeld habe ich neben Matz
&lt;em&gt;himself&lt;/em&gt; folgende Leute ausfindig gemacht:
&lt;a href=&quot;http://evang.eli.st/blog/2008/7/13/basic-emacs-rspec-stuff&quot;&gt;Pat Maddox&lt;/a&gt;
(rspec, cucumber), &lt;a href=&quot;http://ola-bini.blogspot.com/search/label/emacs&quot;&gt;Ola
Blini&lt;/a&gt; (jruby), &lt;a href=&quot;http://www.emacswiki.org/cgi-bin/wiki/RyanDavis&quot;&gt;Ryan
Davis&lt;/a&gt; (Ruby
Cookbook, ZenTest), &lt;a href=&quot;http://nex-3.com/posts?tag=emacs&quot;&gt;Nathan
Weizenbaum&lt;/a&gt; (Haml, Sass).  &lt;a href=&quot;http://weblog.jamisbuck.org/2008/10/10/coming-home-to-vim&quot;&gt;Jamis
Buck&lt;/a&gt;
(Capistrano) benutzt &lt;em&gt;den anderen Editor&lt;/em&gt;: &lt;code&gt;vi :-)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;[*] Die scherzhafte Auflösung des Akronyms Emacs zu 
  &lt;em&gt;Eight Megabytes And Constantly Swapping&lt;/em&gt; stammt aus Zeiten, wo acht Megabyte -
  nicht &lt;em&gt;Gigabyte&lt;/em&gt; - Hauptspeicher viel waren. Zu wenig allerdings für
  Emacs.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2008-08-23:752</id>
    <published>2008-08-23T09:44:00Z</published>
    <updated>2008-12-27T18:01:36Z</updated>
    <category term="camping"/>
    <link href="http://dipe.de/2008/8/23/camping_in_deutschland" rel="alternate" type="text/html"/>
    <title>Camping in Deutschland</title>
<content type="html">
            &lt;p&gt;Unsere letzte Wohnmobil-Tour durch die Eifel wurde mal wieder zu einem
unfreiwilligen Campingplatz-Test. Dabei trifft man auf auf manch 
&quot;faschistoides Kleinod&quot;, aber glücklicherweise auch auf sehr schöne Plätze.&lt;/p&gt;

&lt;p&gt;Zwei besonders schöne Platze, die wir auf unserer Tour kennen lernten sind der
Campingplatz-Platz &lt;a href=&quot;http://www.monschau-perlenau.de/&quot;&gt;Perlenau&lt;/a&gt; in
Monschau und der Platz am &lt;a href=&quot;http://www.maarsee.de/&quot;&gt;Pulvermaar&lt;/a&gt; in
Gillenfeld.&lt;/p&gt;

&lt;p&gt;Der Campingplatz in Monschau ist ganz besonders hübsch an einem
Wildbach, dem Perlenbach, 2km von Monschau entfernt gelegen. An das
schöne aus Naturstein errichtete Rezeptionsgebäude und Wohnhaus der
Platzbesitzers schließt sich ein gemütliches Restaurant an, welches
eine kleine Auswahl liebevoll zubereiteter Speisen bietet. Die
Sanitäreinrichtungen sind modern und großzügig. Duschen ist
gratis. Sehr zur Freude der Kinder fließt der Perlenbach mitten durch
den Platz. Die hintere Zeltwiese erreicht man über eine flache Furt.&lt;/p&gt;

&lt;p&gt;Der Platz am Pulvermaar ist einfach aber Preiswert. Mit Badestelle,
Imbiss und einfachen Sanitäranlagen mit Gratis-Duschen bietet er
alles, was ein Camper braucht. Das zwar kalte aber kristallklare
Wasser des Maars läd zu einem kurzen Bad oder einer Bootstour ein.&lt;/p&gt;

&lt;p&gt;Nach mehreren Erlebnisreichen Tagen wollten wir im Nord-Osten der
Eifel noch einmal Halt an einem See machen. Mit dem Finger auf der
Karte fiel die Wahl den &lt;a href=&quot;http://www.camping-laacher-see.de&quot;&gt;Campingplatz
Laacher See&lt;/a&gt;  in der Nähe von Maria
Laach.&lt;/p&gt;

&lt;p&gt;Die Einfahrt zum Campingplatz wird von einer Doppelschranke und einem
hohen Zaun dominiert.  Selbst längere Wartezeiten bei der Abfertigung
kann man sich  mit der Lektüre der aushängenden
&lt;a href=&quot;http://www.camping-laacher-see.de/fileadmin/template/main/bilder/platzordnung.pdf&quot;&gt;Platzordnung&lt;/a&gt;
vertreiben.&lt;/p&gt;

&lt;p&gt;Die klärt einen nicht nur darüber auf, dass das
Campingplatz-Personal jederzeit berechtigt ist, Fotokopien der
mitzuführenden Personalausweise zu machen, auch wird die
Zentimeter-genaue Höhe eines auf dem Platz zu benutzenden Grills in
dem umfangreichen Text festgelegt. &lt;/p&gt;

&lt;p&gt;Was geht eigentlich in einem Hirn vor, das sich sowas ausdenkt?&lt;/p&gt;

&lt;p&gt;Nicht als zahlender Gast, also als Kunde wird man begrüßt, sondern als
ein schlecht erzogener Nassauer, der bestenfalls geduldet wird, wenn
er sich denn den Erzieherischen Maßnahmen des Platzwarts unterwirft.&lt;/p&gt;

&lt;p&gt;Ich empfinde solches Gebaren gegenüber Kunden als Unverschämtheit.&lt;/p&gt;

&lt;p&gt;Besucher aus dem europäischen Nachbarländern, wie zum Beispiel aus Holland,
trifft man übrigens auf solchen Platzen selten. Die sind es offenbar
nicht gewohnt und nicht im geringsten bereit, sich derart behandeln zu
lassen.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2008-06-24:750</id>
    <published>2008-06-24T15:54:00Z</published>
    <updated>2008-08-23T09:46:09Z</updated>
    <category term="Tipps"/>
    <category term="Campagnola"/>
    <category term="Shimano"/>
    <link href="http://dipe.de/2008/6/24/spagetti-an-sushi" rel="alternate" type="text/html"/>
    <title>Spaghetti an Sushi</title>
<content type="html">
            &lt;p&gt;Jürgen und Meno haben angefangen, ich habe es nachgemacht: Campa 10-fach Kette auf
einer Shimano-Schaltung. &lt;/p&gt;

&lt;p&gt;Die Shimano Dura-Ace-Gruppe ist ja sehr gut - aber was Marathon-Fahrer nervt, ist die
extrem eingeschränkte Lebensdauer der Shimano-10-fach Kette von nur 800 bis 1100 km.
Das heißt teilweise alle zwei Wochen oder früher eine neue Kette. Auch die KMC-Ketten
halten nur wenig länger.&lt;/p&gt;

&lt;p&gt;Das Gute ist, dass die Campagnola 10-Fach Ketten kompatibel sind. Und diese Ketten halten 
ein vielfaches länger, was den höheren Preis mehr als wett macht -  denn auch Ritzel und 
Kettenblätter werden damit nicht so leicht von einer zu langen Kette heruntergefahren.&lt;/p&gt;

&lt;p&gt;&amp;lt;center&gt;
&lt;img src=&quot;/assets/2008/6/9/shimano-campa.jpg&quot; alt=&quot;Campa-Kette auf Shimano&quot; /&gt;&lt;br&gt;
&lt;em&gt;Chimere: Shimano mit Campa-Kette und Connex-Schloß&lt;/em&gt;
&amp;lt;/center&gt;&lt;/p&gt;

&lt;p&gt;Alternativ zum teuren Campa-Kettennieter kann man die Kette mit einem Ketten-Schloß verschließen. 
Dann kann man die Kette auch leicht zum Reinigen öffnen. Ich habe sowohl den KMC &lt;em&gt;missing link&lt;/em&gt; als auch das 
Connex-Schloß getestet. Es funktionieren beide - auch auf einem 11er Ritzel (was bei Campa angeblich 
nicht geht).&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2008-03-01:650</id>
    <published>2008-03-01T13:03:00Z</published>
    <updated>2008-04-03T12:50:48Z</updated>
    <category term="Supportqualit&#228;t"/>
    <link href="http://dipe.de/2008/3/1/besoffen-hinter-alice-service-theke" rel="alternate" type="text/html"/>
    <title>Besoffen hinter Alice' Service-Theke</title>
<content type="html">
            &lt;p&gt;Ende letzten Jahres bestellte ich bei &lt;a href=&quot;http://alice-dsl.de/&quot;&gt;Alice&lt;/a&gt; zwei Mobilfunk-Sim-Karten mit dem Ziel, 
die Rufnummern meiner auslaufenden T-Mobile-Verträge dorthin zu übernehmen. Ich erteilte Hansenet also
(per Fax) zwei entsprechende Portierungsaufträge und harrte der Dinge.&lt;/p&gt;

&lt;p&gt;Die Portierung der ersten Rufnummer war dann auch nach zwei Wochen abgeschlossen. Nur die Portierung der 
zweiten Rufnummer ließ auf sich warten. Böses ahnend, rief ich bei der Hotline an, nur um die üblichen 
Beschwichtigungen zu hören: &quot;Das dauert manchmal!&quot;, &quot;Ich kann Ihren Auftrag hier zwar nicht sehen, aber der ist 
ganz bestimmt in Arbeit!&quot;...&lt;/p&gt;

&lt;p&gt;Nach drei Wochen war's mir zu dumm und ich schrieb per Einschreiben und Rückschein mit Fristsetzung &amp;ndash; 
keine Reaktion von Hansenet. Wieder Anrufe bei der Hotline. Ein Einschreiben läge nicht vor, der Auftrag sei aber 
in Bearbeitung. Sicherheitshalber solle ich ihn aber nochmal faxen. Ich faxte. Mehrfach. Weiterhin keine Reaktion von 
Hansenet.&lt;/p&gt;

&lt;p&gt;Nun erhielt ich heute zwei Briefe von Alice: In dem einen wurde mir erklärt, dass mein Auftrag noch in Arbeit sei. 
Der zweite Brief erklärte, die Bearbeitung sei nicht mehr möglich, weil die Frist von einem Monat seit Kündigung des
bisherigen Anbieters überschritten sei.&lt;/p&gt;

&lt;p&gt;Ich frage mich: &quot;Wann endlich wird der Faustpfand &amp;ndash; meine Telefonnummer &amp;ndash; den Telefonanbietern 
abgenommen und mir ausgehändigt?&quot; Mittels &lt;a href=&quot;http://de.wikipedia.org/wiki/Telephone_Number_Mapping&quot;&gt;ENUM&lt;/a&gt; 
könnte technisch schon heute der Verbraucher selbst entscheiden, welche seiner Rufnummern zu welchem Anbieter geleitet wird.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2008-02-14:649</id>
    <published>2008-02-14T15:16:00Z</published>
    <updated>2008-02-14T19:54:08Z</updated>
    <category term="Tipps"/>
    <category term="Ruby"/>
    <category term="oo"/>
    <link href="http://dipe.de/2008/2/14/objekt-oder-objekt-id-als-argument" rel="alternate" type="text/html"/>
    <title>Objekt oder Objekt-ID als Argument?</title>
<content type="html">
            &lt;p&gt;Implementiere ich eine Methode, die als Argument ein Modell-Objekte emfangen soll, 
frage ich mich oft &quot;Benötige ich hier tatsächlich das Exemplar des Objekts, oder genügt 
auch dessen ID?&quot;.&lt;/p&gt;

&lt;p&gt;Stellen Sie sich eine Methode &lt;code&gt;append&lt;/code&gt; vor, die einen gegeben Song an eine Playlist 
anhängen soll:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;class Playlist

  has_many :entries

   # Creates and returns a new playlist entry for given song
  def append(song)
    enties.create(:song_id =&amp;gt; song.id)
  end

end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Für den Benutzer dieser Methode bedeutet das, dass er das Song-Objekt zuvor laden 
muss. Die &lt;code&gt;append&lt;/code&gt; Methode benötigt aber letztlich nur dessen ID. Für eine 
Web-Anwendung kann das sehr teuer sein, da die Requests nur IDs liefern und 
die Objekte jedes mal neu aus der Datenbank geladen werden müssen.&lt;/p&gt;

&lt;p&gt;Die Signatur der Methode dahingehend zu ändern, dass sie grundsätzlich eine ID 
empfängt, geht oft nicht durchgängig und ist deshalb nicht schön.
Es kann also eine gute Idee sein, solche Methoden so zu implementieren, dass sie sowohl
Objekt-Exemplare als auch IDs empfangen können. &lt;/p&gt;

&lt;p&gt;Nur wie kann ich das implementieren, ohne durch eine zusätzliche Fallunterscheidung 
deren Komplexität zu erhöhen? Eine Lösung ist, für &lt;code&gt;Song&lt;/code&gt;s die Methode &lt;code&gt;to_s&lt;/code&gt; zu 
implementieren:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;class Song
  ...

  # Returns the record id
  def to_i
    id
  end

end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Nun kann ich die Eingangs erwähnte Methode so formulieren:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; # Creates and returns a new playlist entry for given song or song-id
def append(song_or_id)
  enties.create(:song_id =&amp;gt; song_or_id.to_i)
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Auf den Parameter &lt;code&gt;song_or_id&lt;/code&gt; wird die Methode &lt;code&gt;to_i&lt;/code&gt; angewendet. Sie 
liefert für einen gegebenen Song dessen Id und für eine gegebene ID deren Wert .&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2007-12-04:633</id>
    <published>2007-12-04T20:25:00Z</published>
    <updated>2007-12-05T07:39:53Z</updated>
    <category term="Tipps"/>
    <category term="Rails"/>
    <category term="link tracking"/>
    <category term="mass mailer"/>
    <link href="http://dipe.de/2007/12/4/tracking-von-link-klicks-in-newslettern" rel="alternate" type="text/html"/>
    <title>Tracking von Link-Klicks in Newslettern</title>
<content type="html">
            &lt;p&gt;Zur Erfolgskontrolle möchte das Marketing im Nachgang von Newsletter-Aktionen eigentlich immer wissen, wieviele Leser auf welche Links im Newsletter geklickt haben.&lt;/p&gt;

&lt;p&gt;Üblicherweise wird diese Aufgabe mittels spezieller Urls gelöst, die von einem &lt;em&gt;Mail-Link-Klick-Zähl&lt;/em&gt;-Controller entgegengenommen werden, dessen Aufgabe einzig darin besteht,
den jeweiligen Klick zu zählen und dann zur eigentliche Seite zu &lt;em&gt;redirect&lt;/em&gt;en. Beispiel: Anstelle das beworbene Produkt 4711 mit der Url &lt;code&gt;/product/show/4711&lt;/code&gt; im Newsletter direkt zu verlinken, wird der  &lt;em&gt;Mail-Link-Klick-Zähl&lt;/em&gt;-Controller mit &lt;code&gt;/maillink/product/4711&lt;/code&gt; verlinkt. Die jeweiligen Requests werden vom Controller gezählt (zum Beispiel durch &quot;Ziehen&quot; eines Google-Analytics-Urchin) und dann zur Url &lt;code&gt;/product/show/4711&lt;/code&gt; weitergeleitet.&lt;/p&gt;

&lt;p&gt;Die Marketing-Leute wollen aber auch wissen, aus &lt;em&gt;welchem&lt;/em&gt; Newsletter der jeweilige Klick erfolgte. Diese Daten bei jedem Link im Newsletter spezifizieren zu müssen ist recht umständlich. Mit Rails geht das aber auch viel einfacher mittels &lt;code&gt;default_url_options&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;class NewsletterMailer &amp;lt; ActionMailer::Base

  def monthly_newsletter(customer, subject, ...)
    default_url_options = {:newsletter =&amp;gt; 'monthly', :date =&amp;gt; Date.tody}

    subject subject
    body    :customer =&amp;gt; customer,
            ...
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;An alle mit &lt;code&gt;link_to&lt;/code&gt; im Template &lt;code&gt;monthly_newsletter.rhtml&lt;/code&gt; erzeugten Link werden jetzt  die Parameter &lt;code&gt;newsletter&lt;/code&gt; mit dem Newsletter-Namen und &lt;code&gt;date&lt;/code&gt; mit dem Erzeugungsdatum angehängt.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2007-11-11:587</id>
    <published>2007-11-11T15:21:00Z</published>
    <updated>2007-11-15T18:56:42Z</updated>
    <category term="Tipps"/>
    <category term="Debian"/>
    <category term="Linux"/>
    <category term="SSH"/>
    <category term="secuity"/>
    <link href="http://dipe.de/2007/11/11/ssh-anmeldung-mit-passwort-mglich-obwohl-disaled" rel="alternate" type="text/html"/>
    <title>SSH-Anmeldung mit Passwort m&#246;glich obwohl disabled</title>
<content type="html">
            &lt;p&gt;Standardmäßig verbiete ich aus Sicherheitsgründen die SSH-Anmeldung via  Passwort 
mit Hilfe der &lt;em&gt;open_sshd&lt;/em&gt;-Konfigurationsoption&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;PasswordAuthentication no
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;in &lt;code&gt;/etc/ssh/sshd_conf&lt;/code&gt;. Danach sollte es nur noch möglich sein, sich 
mittels eines &lt;a href=&quot;http://sial.org/howto/openssh/publickey-auth/&quot;&gt;autorisierten SSH-Keys anzumelden&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Zu meiner Überaschung ist das zumindest bei Debian 4.0 nicht so! Die Ursache ist schnell 
gefunden. Es ist die Konfigurationsoption&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;UsePAM yes
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Diese muss ebenfalls auf &lt;code&gt;no&lt;/code&gt; gesetzt (oder auskommentiert) werden.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2007-10-05:542</id>
    <published>2007-10-05T20:06:00Z</published>
    <updated>2007-10-21T10:37:52Z</updated>
    <category term="Hamburg-Politik"/>
    <category term="Volksentscheid"/>
    <link href="http://dipe.de/2007/10/5/volksentscheid-in-hamburg-hamburg-strkt-den-volksentscheid" rel="alternate" type="text/html"/>
    <title>Volksentscheid in Hamburg</title>
<summary type="html">&lt;p&gt;In den letzten Wochen macht der Hamburger
&lt;a href=&quot;http://www.cduhamburg.de/27002/Uploaded/brief-von-ole-von-beust.pdf&quot;&gt;Bürgermeister&lt;/a&gt;,
die Hamburger &lt;a href=&quot;http://www.rettet-die-verfassung.de/&quot;&gt;CDU
Bürgerschaftsfraktion&lt;/a&gt;, der
&lt;a href=&quot;http://www.welt.de/hamburg/article1232924/Das_letzte_Wort_dem_Parlament_.html&quot;&gt;Präsident der Handelskammer
Hamburg&lt;/a&gt;
sowie das &lt;a href=&quot;http://www.abendblatt.de/z/search/index.php/ha_advanced_search?terms[0]=Volksentscheid&amp;amp;amp;search_x=11&amp;amp;amp;search_y=15&amp;amp;amp;offset=0&amp;amp;amp;sort=date&quot;&gt;Hamburger
Abendblatt&lt;/a&gt;
kräftig Stimmung gegen den aktuell zur Abstimmung stehenden
Volksentscheid »Hamburg stärkt den Volksentscheid« und das nicht nur
mit fadenscheinigen, unredlichen Argumenten, sondern auch mit einer
großen Angstkampagne.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;In den letzten Wochen macht der Hamburger
&lt;a href=&quot;http://www.cduhamburg.de/27002/Uploaded/brief-von-ole-von-beust.pdf&quot;&gt;Bürgermeister&lt;/a&gt;,
die Hamburger &lt;a href=&quot;http://www.rettet-die-verfassung.de/&quot;&gt;CDU
Bürgerschaftsfraktion&lt;/a&gt;, der
&lt;a href=&quot;http://www.welt.de/hamburg/article1232924/Das_letzte_Wort_dem_Parlament_.html&quot;&gt;Präsident der Handelskammer
Hamburg&lt;/a&gt;
sowie das &lt;a href=&quot;http://www.abendblatt.de/z/search/index.php/ha_advanced_search?terms[0]=Volksentscheid&amp;amp;amp;search_x=11&amp;amp;amp;search_y=15&amp;amp;amp;offset=0&amp;amp;amp;sort=date&quot;&gt;Hamburger
Abendblatt&lt;/a&gt;
kräftig Stimmung gegen den aktuell zur Abstimmung stehenden
Volksentscheid »Hamburg stärkt den Volksentscheid« und das nicht nur
mit fadenscheinigen, unredlichen Argumenten, sondern auch mit einer
großen Angstkampagne.&lt;/p&gt;
&lt;p&gt;Über das Hamburger Abendblatt wundere ich mich nicht. Die Redakteure
dieser Zeitung aus dem Springer-Verlag üben sich gern in
Hofberichterstattung erzählen irgendwelchen Unsinn nach. Die dessen
Abonenten müssen selbst entscheiden, ob sie dass ertragen können.&lt;/p&gt;

&lt;p&gt;Ärgerlicher ist die Stellungnahme des Handelskammers-Präsidenten. Denn
schließlich wird er von Zwangsmitgliedern durchgefüttert. Im Gegensatz
zu den Abendblatt-Abonenten, können die hier nicht kündigen. Offenbar
gehen aber bereits einige von ihnen &lt;a href=&quot;http://www.abendblatt.de/daten/2007/09/28/799259.html&quot;&gt;gerichtlich gegen die
Äußerungen&lt;/a&gt; des
&quot;heimlichen Bürgermeisters von Hamburg&quot; vor.&lt;/p&gt;

&lt;p&gt;Geradezu feist sind aber die Argumente von Ole von Beust und der
CDU-Fraktion. In ihrer Angstkampagne versteigen sie sich dazu zu
suggerieren, dass bei einer Annahme des Volksentscheids bereits durch
eine Minderheit die Hamburger Verfassung geändert werden könne. 
Tatsächlich aber sieht der Volksentscheid für Verfassungsänderungen
eine 75% Mehrheit und eine Mindestbeteiligung von 35% aller Hamburger
Wahlberechtigten vor.&lt;/p&gt;

&lt;p&gt;Machen wir's doch mal genau so und schauen auf die absoluten Zahlen. 
Bei der &lt;a href=&quot;http://de.wikipedia.org/wiki/Politik_in_Hamburg#1945_bis_zur_letzten_B.C3.BCrgerschaftswahl&quot;&gt;letzten
Bürgerschaftswahl&lt;/a&gt;
haben 68,7% der Wahlberechtigten ihre Stimme abgegeben. Davon
entfielen 47,2% auf die CDU. Demnach haben gerade mal 32,4% aller
Hamburger Wahlberechtigten die CDU gewählt. Würde Ole von Beust und
die CDU-Fraktion den von ihnne verbreiteten Unsinn glauben, müssten
sie schnellstens abtreten. Sie repräsentieren tatsächlich nur eine
Minderheit der Hamburger Wähler.&lt;/p&gt;

&lt;p&gt;Die in der Bürgerschaft für eine Verfassungsänderung nötigen 75% der
Abgeordneten-Stimmen, repräsentiern übrigens gerade mal 30,5% der
Wahlberechtigten.&lt;/p&gt;

&lt;p&gt;Als frech empfinde ich die Entrüstung darüber, dass Volksentscheide
zukünftig finanzielle Folgen haben dürfen. Hier offenbart sich ein
gradezu absolutistisches Selbstverständnis. Steuereinnahmen scheinen
Eigentum der Politik zu sein, aus dem dann großzügig Wohltaten
finanziert werden. Wäre es nicht viel mehr angemessen, dass die
Bürgerschaft bevor sie Massnahmen mit großen finanziellen Folgen
beschließt, die Bevölkerung zu fragen hat?&lt;/p&gt;

&lt;p&gt;Die größten Aufgaben unseres Landes - Staatsverschuldung,
Arbeitslosigkeit, Sozialkosten, Bildungsmangel - sind über 30 Jahre
alt. Die von den Parteien dominierte Politik hat sich als weitgehend
unfähig bei ihrer Lösung erwiesen. Die Parteien haben zunehmenden
Mitgliederschwund und erhebliche Probleme ihre Posten mit wenigstens
einigermaßen geignetem Personal zu besetzen.&lt;/p&gt;

&lt;p&gt;Es wird allerhöchste Zeit unsere Parteinendemokratie durch eine
wirkliche Volksdemokratie zu ergänzen.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2006-06-15:5</id>
    <published>2006-06-15T15:08:00Z</published>
    <updated>2007-10-06T14:12:46Z</updated>
    <category term="Rezensionen"/>
    <category term="Entwicklungsprozess"/>
    <link href="http://dipe.de/2006/6/15/37signals_getting_real" rel="alternate" type="text/html"/>
    <title>&#187;Getting Real&#171; von 37signals</title>
<summary type="html">&lt;p&gt;»Getting Real« ist eine erfrischend unorthodoxe Sicht auf den
Software-Entwicklungsprozess. Der Augenmerk des Buches liegt auf
Web-Anwendungen, aber die Ideen sind auch auf nicht-Software-Vorhaben
übertragbar. Es richtet sich an Manager, Entwickler und Designer.&lt;/p&gt;

&lt;p&gt;Behandelt werden Prinzipien der Betriebswirtschaft, des Designs und
Programmierens sowie der Vermarktung von Web-Anwendungen. Es enthält
keine technischen Dinge, sondern Vorschläge zum Vorgehen, angefangen
bei der Idee eines neuen Produktes, bis zu dessen Vermarktung.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;»Getting Real« ist eine erfrischend unorthodoxe Sicht auf den
Software-Entwicklungsprozess. Der Augenmerk des Buches liegt auf
Web-Anwendungen, aber die Ideen sind auch auf nicht-Software-Vorhaben
übertragbar. Es richtet sich an Manager, Entwickler und Designer.&lt;/p&gt;

&lt;p&gt;Behandelt werden Prinzipien der Betriebswirtschaft, des Designs und
Programmierens sowie der Vermarktung von Web-Anwendungen. Es enthält
keine technischen Dinge, sondern Vorschläge zum Vorgehen, angefangen
bei der Idee eines neuen Produktes, bis zu dessen Vermarktung.&lt;/p&gt;
&lt;p&gt;Bei ihrer Kritik am tradierten Vorgehen, nehmen die Autoren kein Blatt
vor den Mund. Ihrer Meinung nach ist der alte Weg der
Software-Entwicklung ein »länglicher, bürokratischer,
wir-machen-das-um-unseren-Arsch-zu-schützen Prozess«. Und der führt
typischerweise zu »aufgeblasener, mittelmäßiger Software«, »die man
vergessen kann.«&lt;/p&gt;

&lt;p&gt;Wir kennen das ja alle: Es werden Pläne gemacht, die die perfekte
Zukunft versprechen, es werden nutzlose Diagramme erstellt, es werden
Termine für die kommenden Monate oder gar Jahre festgezurrt,
grenzenlose Meetings veranstaltet. Das alles braucht »tonnenweise
Geld«, viel Zeit und ein großes Team.&lt;/p&gt;

&lt;p&gt;Das Gegengift, der Rote Faden der sich durch das gesamte Buch zieht,
lautet »keep it simple« und»weniger ist mehr«. Komplexität ist der
erklärte Feind und zu großer Umfang das erkannte Risiko. Komplexität
kostet Zeit, macht die Kunden nicht glücklich und das Geschäft weniger
erfolgreich. Zu großer Umfang macht unbeweglich.&lt;/p&gt;

&lt;p&gt;Das Buch zeigt uns, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;wie man mit einem kleinen Team schnell von einer Idee zum ersten
Ergebnis kommt,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;warum es wichtig ist, eine Philosophie zu haben, &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;wie man Prioritäten setzt, &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;wie man durch weniger Umfang bessere Software macht,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;wie man sein Produkt bewirbt und&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;die Geheimnisse eines erfolgreichen Supports. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Die Themen Kalkulation, Personalplanung, Organisation und
Dokumentation werden ebenfalls behandelt. &lt;/p&gt;

&lt;p&gt;Das Buch zeigt auf einer anderen Ebene, wie agile und pragmatische
Software-Entwicklung angewendet wird. Ich lege es jedem ans Herzen,
der Einfluss auf Software-Entwicklungsprozesse nehmen kann und will.&lt;/p&gt;

&lt;p&gt;Das Unternehmen &lt;a href=&quot;http://www.37signals.de/&quot;&gt;37signals&lt;/a&gt; ist ein
erfolgreicher Software-Hersteller und Application-Service-Provider
mit Sitz in Chicago, der mit seinem Open-Source Web-Framework 
&lt;a href=&quot;http://www.rubyonrails.org/&quot;&gt;&lt;em&gt;Ruby on Rails&lt;/em&gt;&lt;/a&gt; überaus bekannt wurde.&lt;/p&gt;

&lt;h3&gt;Bestellhinweis:&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;Getting Real
37signals
englische Erstausgabe 2006
als E-Book im Selbstverlag
Seiten 171 
Preis USD 19,00
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Online-Bestellung: &lt;a href=&quot;http://gettingreal.37signals.com/&quot;&gt;http://gettingreal.37signals.com/&lt;/a&gt;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2006-05-20:7</id>
    <published>2006-05-20T09:24:00Z</published>
    <updated>2007-10-06T14:14:05Z</updated>
    <category term="Tipps"/>
    <category term="Administration"/>
    <category term="Linux"/>
    <category term="Oracle"/>
    <link href="http://dipe.de/2006/5/20/howto_copy_oracle" rel="alternate" type="text/html"/>
    <title>Copy an Oracle installation</title>
<summary type="html">&lt;p&gt;Almost for all Linux and Unix programs it is possible to copy them
from one to another Linux node (as long as both nodes are of the same
architecture). What you need to know is the complete list of all files
you have copy. Sometimes there are some &quot;hidden&quot; information that you
have to copy also, e.g. user accounts, crontab entries or other
configuration file entries.&lt;/p&gt;

&lt;p&gt;This text describe how to make a instantly runable copy of an existing Oracle installation from one Linux node to another one.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Almost for all Linux and Unix programs it is possible to copy them
from one to another Linux node (as long as both nodes are of the same
architecture). What you need to know is the complete list of all files
you have copy. Sometimes there are some &quot;hidden&quot; information that you
have to copy also, e.g. user accounts, crontab entries or other
configuration file entries.&lt;/p&gt;

&lt;p&gt;This text describe how to make a instantly runable copy of an existing Oracle installation from one Linux node to another one.&lt;/p&gt;
&lt;p&gt;This is also true for Oracle. Suppose you've made a fresh new Linux
installation on a new disk and now want to migrate your Oracle from
the old installation to the new one.&lt;/p&gt;

&lt;p&gt;Wouldn't it be nice if you could make a simple copy of your Oracle
installation? Here is how.&lt;/p&gt;

&lt;p&gt;First of all you have to collect some information of the source of
your copy. This is best doing while having the source system up and
running. The output of the following commands are the one of mine. 
Yours are different.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Find your Oracle databases. Your databases are collected in the
file &lt;code&gt;/etc/oratab&lt;/code&gt;. Note the SID and oracle installation-directory
of every entry in this file you want to copy:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# cat /etc/oratab
adb:/opt/oracle/product/9.2.0:Y
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For every database found in step 1 connect to Oracle as DBA and get
the list of your database files. You have to log in via &lt;code&gt;sqlplus&lt;/code&gt;
with a suitable account, run the following command and note the
result:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ sqlplus /nolog
SQL&amp;gt; connect / as sysdba
SQL&amp;gt; SELECT name FROM v$datafile
    UNION SELECT name FROM v$tempfile 
    UNION SELECT name FROM v$controlfile;
NAME
-----------------------
/dbs1/adb/control01.ctl
/dbs2/adb/control02.ctl
/dbs1/adb/data.dbf
/dbs2/adb/indx.dbf
/dbs1/adb/system01.dbf
/dbs2/adb/undo01.dbf
/dbs1/adb/temp01.dbf


7 rows selected.
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Determine the Oracle installation user and group. For every
oracle-home directory found in step 1 analyse the directory and
note down the user and group:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ls -ld /opt/oracle/product/9.2.0
drwxr-sr-x 53 oracle oinstall 4096 2004-04-20 08:48 /opt/oracle/product/9.2.0
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Determine the Oracle installation user and group details for the
user and group found in step 3 and also for the Oracle os-groups
&lt;code&gt;dba&lt;/code&gt; and &lt;code&gt;opr&lt;/code&gt; if they exists and note them down:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ grep oracle /etc/passwd
oracle:x:1010:1011:Oracle:/opt/oracle:/bin/bash
$ grep &quot;oinstall\|dba\|opr&quot; /etc/group
dba:x:200:oracle,peter
oinstall:x:1011:oracle
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find the start-stop-script and belonging links from the runlevel
directories on your system. On most systems you find the script in
&lt;code&gt;/etc/init.d&lt;/code&gt;. On mine the name it is &lt;code&gt;/etc/init.d/oracle&lt;/code&gt; and the
sym-links are these:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ ls /etc/rc*.d/*oracle
lrwxrwxrwx 1 root root 16 2006-05-15 15:08 /etc/rc0.d/K20oracle -&amp;gt; ../init.d/oracle
lrwxrwxrwx 1 root root 16 2006-05-15 15:08 /etc/rc1.d/K20oracle -&amp;gt; ../init.d/oracle
lrwxrwxrwx 1 root root 16 2006-05-15 15:08 /etc/rc2.d/S20oracle -&amp;gt; ../init.d/oracle
lrwxrwxrwx 1 root root 16 2006-05-15 15:08 /etc/rc3.d/S20oracle -&amp;gt; ../init.d/oracle
lrwxrwxrwx 1 root root 16 2006-05-15 15:08 /etc/rc4.d/S20oracle -&amp;gt; ../init.d/oracle
lrwxrwxrwx 1 root root 16 2006-05-15 15:08 /etc/rc5.d/S20oracle -&amp;gt; ../init.d/oracle
lrwxrwxrwx 1 root root 16 2006-05-15 15:08 /etc/rc6.d/K20oracle -&amp;gt; ../init.d/oracle
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Prepare your destination system&lt;/h2&gt;

&lt;p&gt;Now you have the desired information together to prepare your
destination system. All what you have to do is creating the necessary
user and groups:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; $ addgroup --system oinstall 
 $ addgroup --system dba
 $ addgroup --system opr
 $ adduser --group=oinstall --no-create-home --home=/opt/oracle oracle
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Instead of &lt;code&gt;/opt/oracle&lt;/code&gt; specify the right home-directory of your
oracle user from step 4. &lt;/p&gt;

&lt;p&gt;If you want to have the same UID and GID as on your source system, you
have to specify them with the &lt;code&gt;--gid&lt;/code&gt; and &lt;code&gt;--uid&lt;/code&gt; option. This is not
mandatory.&lt;/p&gt;

&lt;p&gt;My be you have to add some users to the DBA and OPR group::&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; $ adduser oracle dba
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Plan the copy&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Caution:&lt;/strong&gt; You must not change the installation path of your oracle on your
destination system. The installation path is hard coded in some
binaries by the oracle installer. So your Oracle wouldn't run if you
change the path.&lt;/p&gt;

&lt;p&gt;How many different directories you have to copy depends on your setup. 
In the following I assume there is only one Oracle installation on
your source system or you want to copy all of them [1].&lt;/p&gt;

&lt;p&gt;You have to pay attention to tree points:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Where is the oracle installation directory located? See above step 1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where are the database files located? See above step 2.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Where is the home-directory of the oracle user located? See above
step 4.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There are some possible layouts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Base-directory layout&lt;/strong&gt; The home-directory of the oracle user is the
base-directory of the oracle installation-directory. In this case
you have to make a copy of only this base-directory. This is Easy!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Separate oracle user-directory&lt;/strong&gt; The home-directory of the
oracle user is located outside of the base-directory of the oracle
installation-directory. In this case you have to copy the oracle
installation-directory and the home-directory of the oracle user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Separate database files&lt;/strong&gt; The database files are located
outside these trees. You have additionally to copy these files.&lt;/p&gt;

&lt;p&gt;In every case you have to copy the &lt;code&gt;/etc/oratab&lt;/code&gt; file from step 1
and the start-stop-script from step 5.&lt;/p&gt;

&lt;p&gt;At this point sit back a moment to think about how to transport
these copies. In my praxis I see often three possibilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;copy via pipe over the network&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;writing a archive file and copy that (via tape, NFS etc. pp.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;plugging the source disk to the new system and copy over to the
new disk&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My preferred way is to copy via pipe over the network. This is most
times the fastes and reliable way and you will not need temporary
disk space for the archive file. But you need a almost fast and
working network link between the source and destination system.&lt;/p&gt;

&lt;h2&gt;Copy via Pipe over the Network&lt;/h2&gt;

&lt;p&gt;Before you copy your database files you have to shut down your
Oracle database.&lt;/p&gt;

&lt;p&gt;In the following, connecting at the destination
system as root is mandatory. Your Oracle installation include some setuid
and setgid files. To get the files copyed with the right modes you
have to do it as root. Also don't forget the &lt;code&gt;cd /&lt;/code&gt; in front of the tar
command.&lt;/p&gt;

&lt;p&gt;Please replace &lt;code&gt;dest.sys&lt;/code&gt; with the network name or IP-address of
your destination system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If you have a &lt;em&gt;base-directory layout&lt;/em&gt; you can copy with one single
tar-command. Replace the &lt;code&gt;/opt/oracle&lt;/code&gt; with the base-directory:&lt;/p&gt;

&lt;p&gt;$ tar cf - /opt/oracle | ssh root@dest.sys &quot;cd /; tar xpvf -&quot;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2006-05-10:1</id>
    <published>2006-05-10T13:04:00Z</published>
    <updated>2007-10-06T14:14:34Z</updated>
    <category term="Gesch&#228;ftsprozess"/>
    <category term="Modellierung"/>
    <link href="http://dipe.de/2006/5/10/produktivitaet-und-it" rel="alternate" type="text/html"/>
    <title>Produktivit&#228;t und IT?</title>
<summary type="html">&lt;p&gt;Auch wenn lästernde Zungen behaupten, mit
  einem Computer löse man nur Probleme, die man ohne Computer gar
  nicht hätte, wird niemand ernsthaft bestreiten, dass der breiten
  Einführung der Informationstechnologie in allen Branchen eine
  erhebliche Produktivitätssteigerung folgte.&lt;/p&gt;

&lt;p&gt;Ich aber behaupte, in weiten Bereichen wird das
  Produktivitätspotential durch den Einsatz von IT gar nicht
  ausgeschöpft. Als Ursache ist meistens der Einsatz von nicht auf die
  jeweiligen Geschäftsprozesse angepasster Software auszumachen. Bei
  der Entwicklung von Software werden die Geschäftsprozesse des Kunden
  oft gänzlich außer acht gelassen. Denken Sie nur an das
  obligatorische Office-Paket. Selbst Platzhirsch Microsoft ist es
  bisher nicht gelungen, bürotypische Arbeitsabläufe mehr als nur
  ansatzweise zu unterstützen.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Auch wenn lästernde Zungen behaupten, mit
  einem Computer löse man nur Probleme, die man ohne Computer gar
  nicht hätte, wird niemand ernsthaft bestreiten, dass der breiten
  Einführung der Informationstechnologie in allen Branchen eine
  erhebliche Produktivitätssteigerung folgte.&lt;/p&gt;

&lt;p&gt;Ich aber behaupte, in weiten Bereichen wird das
  Produktivitätspotential durch den Einsatz von IT gar nicht
  ausgeschöpft. Als Ursache ist meistens der Einsatz von nicht auf die
  jeweiligen Geschäftsprozesse angepasster Software auszumachen. Bei
  der Entwicklung von Software werden die Geschäftsprozesse des Kunden
  oft gänzlich außer acht gelassen. Denken Sie nur an das
  obligatorische Office-Paket. Selbst Platzhirsch Microsoft ist es
  bisher nicht gelungen, bürotypische Arbeitsabläufe mehr als nur
  ansatzweise zu unterstützen.&lt;/p&gt;
&lt;p&gt;So sind die Anwender auf sich selbst gestellt. Das Ergebnis ist
  bestenfalls mangelhafte Produktivität. Da werden Daten aus dem
  Online-Shop manuell in das Lieferschein-Dokument übertragen,
  Kundendaten an mehreren Stellen erfasst, der jeweilige Status ist
  aus keiner Datenbank zu erfahren, sondern steht auf Papier in dicken
  Aktenordnern. Beim manuellen Übertragen von Kundendaten schleichen
  sich Fehler ein, Kundenanfragen gehen gänzlich verloren oder werden
  fehlerhaft beantwortet.&lt;/p&gt;

&lt;p&gt;Schlimmstenfalls aber erhalten unberechtigte Personen Zugang zu
  vertraulichen Informationen. Sie erinnern sich sicherlich noch an
  den peinlichen Lapsus der amerikanischen Behörden bei Ihrem Report
  zum Fall der im Irak entführten Journalistin Giuliana Sgrena. In der
  veröffentlichten Version waren Passagen geschwärzt, welche aber
  durch eine einfache Operation wieder lesbar gemacht werden konnten.&lt;/p&gt;

&lt;p&gt;Es sind in Unternehmen schon Kündigungsschreiben an Mitarbeiter,
  aber auch geheime Entwicklungspläne versehentlich veröffentlicht
  worden, nur weil der zuständige Mitarbeiter beim Kopieren mit der
  Maus auf den falschen Zielordner geklickt hat. Kleiner Klick,
  großer Schaden.&lt;/p&gt;

&lt;p&gt;Paul Virilio sagt: &amp;bdquo;Die Erfindung der Eisenbahn bringt die
  Erfindung der Entgleisung mit sich.&amp;rdquo; Also alles unvermeidliche
  Kollateralschäden? Ich meine, so einfach kann es sich die
  Softwarebranche nicht machen. Aber auch das IT-Personal des Kunden
  ist gefordert, beim Einsatz von Software mehr auf die Unterstützung
  der Geschäftsprozesse zu achten.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2006-03-08:4</id>
    <published>2006-03-08T11:01:00Z</published>
    <updated>2007-10-06T14:17:03Z</updated>
    <category term="Rezensionen"/>
    <category term="SVN"/>
    <link href="http://dipe.de/2006/3/8/pragmatic_subversion" rel="alternate" type="text/html"/>
    <title>&#187;Pragmatic Version Control Using Subversion&#171; von Mike Mason</title>
<summary type="html">&lt;p&gt;Pragmatische Einführung in den CVS-Nachfolger Subversion mit praxisorientierten Rezepten. Empfehlenswert gleichermaßen für Ein- und Umsteiger.&lt;/p&gt;

&lt;p&gt;Der &lt;em&gt;de facto&lt;/em&gt;-Standard bei den Versionskontrollsystem war lange Jahre
&lt;a href=&quot;http://www.nongnu.org/cvs/&quot;&gt;CVS&lt;/a&gt;. Inzwischen hat &lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;SVN&lt;/a&gt; ihm längst den Rang abgelaufen. Höchste Zeit, sich damit zu beschäftigen.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Pragmatische Einführung in den CVS-Nachfolger Subversion mit praxisorientierten Rezepten. Empfehlenswert gleichermaßen für Ein- und Umsteiger.&lt;/p&gt;

&lt;p&gt;Der &lt;em&gt;de facto&lt;/em&gt;-Standard bei den Versionskontrollsystem war lange Jahre
&lt;a href=&quot;http://www.nongnu.org/cvs/&quot;&gt;CVS&lt;/a&gt;. Inzwischen hat &lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;SVN&lt;/a&gt; ihm längst den Rang abgelaufen. Höchste Zeit, sich damit zu beschäftigen.&lt;/p&gt;
&lt;p&gt;Trotz seines bahnbrechenden Ansatzes, in-Bearbeitung befindliche
Dateien, anders als beim Vorgänger &lt;a href=&quot;http://www.cs.purdue.edu/homes/trinkle/RCS/&quot;&gt;RCS&lt;/a&gt;, nicht zu sperren,
sondern statt dessen konkurierende Änderungen zuzulassen und diese
durch &lt;em&gt;Merge&lt;/em&gt;-Operationen zusammenzuführen, hatte CVS ein Reihe von
Schwächen.&lt;/p&gt;

&lt;p&gt;Die schwerwiegendsten waren:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;CVS betrachtet nur (einzelne) Dateien.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Es liefert keine Versionskontrolle beim Verschieben von Dateien
und Verzeichnissen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Commit-Operationen sind bei CVS nicht atomar; was zu
Inkonsistenzen führen kann.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Die Entwickler des CVS-Nachfolgers &lt;em&gt;Subversion&lt;/em&gt; haben genau diese
Punkte im Blick gehabt. Ihr Ziel war dabei nicht, einen radikal-neuen
Ansatz zu verfolgen, sondern lediglich das alternde CVS durch eine
neue flexible Implementation abzulösen und dabei die CVS-Schwächen
zu beheben:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Versionisierung von Dateien, Verzeichnissen und Metadaten&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Atomare &lt;em&gt;Commits&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unterstützung auch für Binärdaten&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Branching&lt;/em&gt;, &lt;em&gt;Tagging&lt;/em&gt; und &lt;em&gt;Merging&lt;/em&gt; sind keine teuren Operationen&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Darüberhinaus bietet Subversion all' derer Vorteile, für die CVS
bekannt ist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Gleichzeitiges Ändern von gemeinsamen Dateien möglich; kein
Sperren nötig.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Netzwerkzugriff auf das Zentrale Repository.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ökonomische Speicherung und Übertragung aller Änderungen als
Deltas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unterstützung für Verzweigungen (Branches) in der
Entwicklungshistorie.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Textuelle Markierung (Tags) von Entwicklungsständen.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Über das Buch&lt;/h2&gt;

&lt;p&gt;Das hier vorgestellte Buch richtet sich an alle, die zukünftig
Subversion einsetzen, oder sich über dessen Funktionalität in der
Praxis informieren wollen. Es richtet sich dabei auch ausdrücklich
auch an diejenigen, die bisher noch gar kein Versionskontrollsystem
einsetzen.&lt;/p&gt;

&lt;p&gt;Aber auch jene, die bereits Erfahrungen mit Versionskontrollsystemen
gemacht haben, kommen bei diesem hervorragend geschriebenen Buch
auf ihre Kosten.&lt;/p&gt;

&lt;p&gt;Über vier Kapitel führt der Autor in die Theorie der Versionskontrolle
ein, gibt Hinweise zur Installation von Subversion auf verschiedenen
Plattformen, das Aufsetzen des Repositorys und dem Start mit dem
ersten Projekt. Das alles in einer rezeptartigen, pragmatischen Weise.&lt;/p&gt;

&lt;p&gt;Daran schließen sich drei weitere Kapitel an, welche die
Subversion-Praxis näher beleuchten: Netzwerkzugriffe auf das
Repository, die Subversion-Kommandos, die Repository-Organisation.&lt;/p&gt;

&lt;p&gt;Schließlich geht der Autor über drei weitere Kapitel praxisorientiert
auf fortgeschrittene Themen ein: Den Gebrauch von Tags und Branches,
das Aufsetzen eines Projektes im Detail und das Verwalten fremden
Codes im Repository.&lt;/p&gt;

&lt;p&gt;Im Umfangreichen Anhang werden unter anderem die Themen Sicherheit,
Administration, Migration (von CVS nach Subversion) und Fremd-Tools
abgehandelt. Ein Referenz-Abschnitt rundet das Buch ab.&lt;/p&gt;

&lt;p&gt;Der Autor Mike Mason ist bei ThoughtWorks angestellt und entwickelt
dort Unternehmensanwendungen. In seinem &lt;a href=&quot;http://mikemason.ca/&quot;&gt;Blog&lt;/a&gt;
findet man unter Anderem eine FAQ zu Subversion.&lt;/p&gt;

&lt;h3&gt;Bestellhinweis:&lt;/h3&gt;

&lt;pre&gt;&lt;code&gt;Pragmatic Version Control Using Subversion
Mike Mason
O'Reilly, Pragmatic Bookshelf 
Englische Erstausgabe 2005-02
ISBN 0-9745140-6-3
Seiten 207
EUR 29,00
&lt;/code&gt;&lt;/pre&gt;
          </content>  </entry>
  <entry xml:base="http://dipe.de/">
    <author>
      <name>pe</name>
    </author>
    <id>tag:dipe.de,2005-09-19:9</id>
    <published>2005-09-19T14:19:00Z</published>
    <updated>2007-10-06T14:44:05Z</updated>
    <category term="Tipps"/>
    <category term="Oracle"/>
    <category term="Replikation"/>
    <category term="Standby"/>
    <link href="http://dipe.de/2005/9/19/einrichtung-einer-standby-datenbank-mit-oracle" rel="alternate" type="text/html"/>
    <title>Einrichtung einer Standby-Datenbank mit Oracle</title>
<summary type="html">&lt;p&gt;Oracle erlaubt die Unterhaltung von bis zu neun Standby-Datenbanken zur Sicherung gegen fehlerhaft und unbrauchbar werden der Daten, gegen Benutzer- und Administratorfehler sowie gegen Katastrophen. Tritt in der Produktionsdatenbank primäre Datenbank) ein Fehler auf, dann wird eine der Standby-Datenbanken (sekundäre Datenbanken) durch Rollentausch zur neuen primären Datenbank.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;Oracle erlaubt die Unterhaltung von bis zu neun Standby-Datenbanken zur Sicherung gegen fehlerhaft und unbrauchbar werden der Daten, gegen Benutzer- und Administratorfehler sowie gegen Katastrophen. Tritt in der Produktionsdatenbank primäre Datenbank) ein Fehler auf, dann wird eine der Standby-Datenbanken (sekundäre Datenbanken) durch Rollentausch zur neuen primären Datenbank.&lt;/p&gt;
&lt;p&gt;Dieser Artikel ist nur als PDF-Dokument verfügbar. &lt;a href=&quot;http://knopf:3000/assets/2007/9/29/Standby.pdf&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
          </content>  </entry>
</feed>

