[svnbook commit] r3518 - * trunk/src/de/book/ch08-embedding-svn.xml
codesite-noreply at google.com
codesite-noreply at google.com
Fri May 22 21:28:00 CDT 2009
Author: jmfelderhoff at gmx.eu
Date: Fri May 22 15:27:08 2009
New Revision: 3518
Modified:
trunk/src/de/book/ch08-embedding-svn.xml
Log:
* trunk/src/de/book/ch08-embedding-svn.xml
- Fixes ticket #254 (cf. http://www.svnbook.de/report/6).
Modified: trunk/src/de/book/ch08-embedding-svn.xml
==============================================================================
--- trunk/src/de/book/ch08-embedding-svn.xml (original)
+++ trunk/src/de/book/ch08-embedding-svn.xml Fri May 22 15:27:08 2009
@@ -1558,8 +1558,12 @@
<!-- ===============================================================
-->
<sect2 id="svn.developer.usingapi.apr">
+<!--
<title>The Apache Portable Runtime Library</title>
+-->
+ <title>Die Bibliothek Apache Portable Runtime</title>
+<!--
<para>Along with Subversion's own datatypes, you will see many
references to datatypes that begin with
<literal>apr_</literal>—symbols from the Apache Portable
@@ -1576,7 +1580,29 @@
client compiles and runs anywhere that the Apache HTTP Server
does. Currently, this list includes all flavors of Unix,
Win32, BeOS, OS/2, and Mac OS X.</para>
+-->
+ <para>Neben den eigenen Datentypen von Subversion werden Sie
+ viele Verweise auf Datentypen entdecken, die mit
+ <literal>apr_</literal> beginnen – Symbole aus der
+ Bibliothek Apache Portable Runtime (APR). APR ist die
+ Portabilitätsbibliothek von Apache, ursprünglich aus dem
+ Server-Code herausgelöst, als ein Versuch, die
+ betriebssystemspezifischen Teile von den
+ betriebssystemabhängigen Bereichen des Codes zu trennen. Das
+ Ergebnis war eine Bibliothek, die ein generisches API für das
+ Ausführen von Operationen bietet, die sich je nach
+ Betriebssystem mehr oder weniger stark unterscheiden. Obwohl
+ der Apache HTTP-Server offensichtlich die APR-Bibliothek als
+ erster verwendete, erkannten die Subversion-Entwickler sofort
+ die Vorteile, die durch die Benutzung von APR entstehen. Das
+ bedeutet, dass es praktisch keinen betriebssystemspezifischen
+ Code in Subversion gibt. Es bedeutet auch, dass der
+ Subversion-Client sich auf jedem System übersetzen und
+ betreiben lässt, auf dem das auch für den Apache HTTP-Server
+ gilt. Momentan umfasst diese Liste alle Dialekte von Unix,
+ Win32, BeOS, OS/2 und Mac OS X.</para>
+<!--
<para>In addition to providing consistent implementations of
system calls that differ across operating systems,
<footnote>
@@ -1605,10 +1631,48 @@
using <function>svn_pool_create()</function>,
<function>svn_pool_clear()</function>, and
<function>svn_pool_destroy()</function>.</para>
+-->
+ <para>Neben der Bereitstellung konsistenter Implementierungen
+ von Systemaufrugen, die sich zwischen Betriebssystemen
+ unterscheiden,
+ <footnote>
+ <para>Subversion verwendet so weit wie möglich
+ ANSI-Systemaufrufe und Datentypen.</para>
+ </footnote>
+ bietet APR Subversion unmittelbaren Zugriff auf viele
+ maßgeschneiderte Datentypen, wie etwa dynamische Arrays und
+ Hashtabellen. Subversion macht von diesen Typen regen
+ Gebrauch. Der vielleicht am meisten verbreitete APR-Datentyp,
+ der sich in beinahe jedem Subversion-API-Prototypen
+ wiederfindet, ist <literal>apr_pool_t</literal> — der
+ APR-Speicherpool. Subversion verwendet Pools intern zum
+ Zuteilen all seines Speichers (außer wenn eine externe
+ Bibliothek eine unterschiedliche Speicherverwaltung für die
+ über ihre API ausgetauschten Daten voraussetzt),
+ <footnote>
+ <para>Neon und Berkeley DB sind Beispiele solcher
+ Bibliotheken.</para>
+ </footnote>
+ und obwohl jemand, der mit den Subversion-APIs programmiert
+ nicht gezwungen ist, dasselbe zu tun,
+ <emphasis>muss</emphasis> er Pools für die API-Funktionen zur
+ Verfügung stellen, die sie benötigen. Das heißt, dass Benutzer
+ der Subversion-API auch gegen die APR linken,
+ <function>apr_initialize()</function> zum Initialisieren des
+ APR-Subsystems aufrufen und Pools zur Verwendung mit
+ Subversion-API-Aufrufen erzeugen sowie verwalten müssen,
+ typischerweise unter Benutzung von
+ <function>svn_pool_create()</function>,
+ <function>svn_pool_clear()</function> und
+ <function>svn_pool_destroy()</function>.</para>
<sidebar>
+<!--
<title>Programming with Memory Pools</title>
+-->
+ <title>Programmierung mit Speicher-Pools</title>
+<!--
<para>Almost every developer who has used the C programming
language has at some point sighed at the daunting task of
managing memory usage. Allocating enough memory to use,
@@ -1617,7 +1681,17 @@
complex. And of course, failure to do those things properly
can result in a program that crashes itself, or worse,
crashes the computer.</para>
+-->
+ <para>Fast jeder C-Programmierer hat irgendwann mal gestöhnt,
+ wenn es um die abschreckende Aufgabe der Speicherverwaltung ging.
+ Genügend Speicher anzufordern, über den Speicher Buch zu
+ führen, den Speicher nach Benutzung wieder freizugeben
+ – diese Aufgaben können ziemlich kompliziert sein. Und
+ wenn es nicht richtig gemacht wird, kann es natürlich dazu
+ führen, dass sich das Programm oder, noch schlimmer, der
+ Rechner aufhängt.</para>
+<!--
<para>Higher-level languages, on the other hand, either take
the job of memory management away from you completely or
make it something you toy with only when doing extremely
@@ -1626,7 +1700,16 @@
allocating memory for objects when needed, and automatically
freeing that memory when the object is no longer in
use.</para>
+-->
+ <para>Andererseits nehmen Ihnen höhere Sprachen die Aufgaben
+ der Speicherverwaltung vollständig ab oder überlassen sie
+ Ihnen nur, falls Sie besonders starke Programmoptimierungen
+ vornehmen wollen. Sprachen wie Java und Python verwenden
+ <firstterm>Garbage Collection</firstterm>, indem sie
+ Speicher bei Bedarf zuweisen und diesen Speicher automatisch
+ wieder freigeben, wenn er nicht mehr benötigt wird.</para>
+<!--
<para>APR provides a middle-ground approach called
<firstterm>pool-based memory management</firstterm>. It
allows the developer to control memory usage at a lower
@@ -1644,6 +1727,24 @@
in a pool whose lifetime (the time between the pool's
creation and its deletion) matches the object's
needs.</para>
+-->
+ <para>APR bietet einen Mittelweg namens
+ <firstterm>pool-basierte Speicherverwaltung</firstterm>. Es
+ ermöglicht dem Entwickler, den Speicherbedarf auf einer
+ niedrigeren Ebene zu kontrollieren – pro
+ Speicherbrocken (oder <quote>Pool</quote>) statt pro
+ zugeteilten Objekt. Statt <function>malloc()</function> und
+ Konsorten zu verwenden, um ausreiched Speicher für ein
+ Objekt anzufordern, fordern Sie APR auf, Speicher aus einem
+ Pool zuzuteilen. Wenn Sie mit der Benutzung der im Pool
+ erzeugten Objekte fertig sind, löschen Sie den gesamten Pool
+ und geben somit den Speicher <emphasis>aller</emphasis>
+ Objekte frei, die Sie daraus erzeugt haben. Anstatt sich
+ also um einzelne freizugebende Objekte kümmern zu müssen,
+ betrachtet Ihr Programm nur die allgemeine Lebenszeit dieser
+ Objekte und erzeugt diese Objekte in einem Pool, dessen
+ Lebenszeit (zwischen seiner Erzeugung und seiner Zerstörung)
+ dem Bedarf der Objekte entspricht.</para>
</sidebar>
</sect2>
More information about the svnbook-dev
mailing list