website annotate de/devel/forge.php @ rev 1344

Resize balinor logo to 120px
author Christophe Lincoln <pankso@slitaz.org>
date Fri Jan 22 23:02:15 2021 +0100 (2021-01-22)
parents 6f448baa38a7
children
rev   line source
Hans-G?nter@1312 1 <!DOCTYPE html>
Hans-G?nter@1312 2 <html lang="de">
Hans-G?nter@1312 3 <head>
Hans-G?nter@1312 4 <meta charset="UTF-8">
Hans-G?nter@1312 5 <title>SliTaz-Schmiede</title>
Hans-G?nter@1312 6 <meta name="description" content="slitaz Entwickler Schmiede">
Hans-G?nter@1312 7 <meta name="keywords" lang="en" content="slitaz, devel, hg, bugs">
Hans-G?nter@1312 8 <meta name="author" content="Christophe Lincoln, HGT">
Hans-G?nter@1312 9 <?php include("../../lib/html/meta-link.html"); ?>
Hans-G?nter@1312 10 </head>
Hans-G?nter@1312 11 <body>
Hans-G?nter@1312 12
Hans-G?nter@1312 13 <?php
Hans-G?nter@1312 14 include("../../lib/html/header.de.html");
Hans-G?nter@1312 15 include("../../lib/html/nav.de.html");
Hans-G?nter@1312 16 include("../../lib/lang.php");
Hans-G?nter@1312 17 ?>
Hans-G?nter@1312 18
Hans-G?nter@1312 19 <!-- Content -->
Hans-G?nter@1312 20 <section id="content">
Hans-G?nter@1312 21
Hans-G?nter@1312 22 <h2>Gemeinschaftliche Verwaltung</h2>
Hans-G?nter@1312 23
Hans-G?nter@1312 24 <ul>
Hans-G?nter@1312 25 <li><a href="#kiss">„KISS“ und Standards respektieren.</a></li>
Hans-G?nter@1312 26 <li><a href="#tank">Rechner für die Entwicklung und die Internetpräsenz.</a></li>
Hans-G?nter@1312 27 <li><a href="#repos">Mercurial-Depots.</a></li>
Hans-G?nter@1312 28 <li><a href="#gui">Grafische Oberflächen in GTK und CGI</a></li>
Hans-G?nter@1312 29 <li><a href="#iconv">Implementierung von iconv().</a></li>
Hans-G?nter@1312 30 <li><a href="#pkgs">SliTaz-Pakete erzeugen.</a></li>
Hans-G?nter@1312 31 <li><a href="#website">Verwaltung der Internetpräsenz.</a></li>
Hans-G?nter@1312 32 </ul>
Hans-G?nter@1312 33
Hans-G?nter@1312 34 <h2 id="kiss">„KISS“ und Standards respektieren</h2>
Hans-G?nter@1312 35
Hans-G?nter@1312 36 <p>
Hans-G?nter@1313 37 „Keep it small and simple (KISS)“: befolgen Sie die besten Standards, entwerfen und schreiben
Hans-G?nter@1312 38 Sie sorgfältig Dokumentation von hoher Qualität, erzeugen Sie ein stabiles und robustes System und
Hans-G?nter@1312 39 halten Sie das Wurzeldateisystem <code>rootfs</code> in dem Direktstatrt-ISO-Abbild so klein, dass
Hans-G?nter@1312 40 es auf Rechnern mit mindestens 128 MiB Arbeitsspeicher geladen werden kann. Dennoch ist es möglich
Hans-G?nter@1313 41 GTK+2, Dialog, Kommandoprozeduren oder PHP-Werkzeuge in die Distribution zu übernehmen. Die Idee ist,
Hans-G?nter@1312 42 keine Doppelarbeit zu leisten und nicht schmalspurig zu denken...
Hans-G?nter@1312 43 </p>
Hans-G?nter@1312 44
Hans-G?nter@1312 45 <h2 id="tank">Entwicklungstank - Rechner für die Entwicklung und die Internetpräsenz</h2>
Hans-G?nter@1312 46
Hans-G?nter@1312 47 <p>
Hans-G?nter@1312 48 Jeder Mitwirkende kann sich über einen sicheren Zugang an dem Projekt-Rechner anmelden, kann dort
Hans-G?nter@1313 49 Plattenplatz belegen, ein Verzeichnis <code>Public</code> anlegen und alle Entwicklerwerkzeuge nutzen.
Hans-G?nter@1312 50 Entwickler können Pakete erzeugen und Verwalter der Spiegel-Depots können diese synchronisieren.
Hans-G?nter@1312 51 Auf diesem Rechner befindet sich auch der Kompilierungsautomat, die Dateien zum Laden über das
Hans-G?nter@1312 52 Netzwerk und „SliTaz Pro“: <a href="http://tank.slitaz.org/">tank.slitaz.org</a>
Hans-G?nter@1312 53 </p>
Hans-G?nter@1312 54
Hans-G?nter@1312 55 <p>
Hans-G?nter@1312 56 Anleitungen zum Erstellen von Paketen auf diesem Rechner finden sich im Kochbuch:
Hans-G?nter@1312 57 <a href="http://doc.slitaz.org/de:cookbook:buildhost">Entwicklungstank</a>.
Hans-G?nter@1312 58 </p>
Hans-G?nter@1312 59
Hans-G?nter@1312 60 <h2 id="repos">Mercurial-Depots</h2>
Hans-G?nter@1312 61
Hans-G?nter@1312 62 <p>
Hans-G?nter@1312 63 SliTaz-Mercurial- (oder Hg-) Depots können von jedem unter dem URL
Hans-G?nter@1312 64 <a href="http://hg.slitaz.org/">http://hg.slitaz.org/</a> angesehen und dupliziert werden.
Hans-G?nter@1312 65 Benutzer mit Schreibrecht können über die Adresse <code>repos.slitaz.org</code> direkt auf
Hans-G?nter@1312 66 die Depots zugreifen. Beim Schreiben müssen ein Benutzername und ein Kennwort angegeben werden.
Hans-G?nter@1312 67 Mercurial verwendet Python. Es kann auf SliTaz mit <code>tazpkg get-install mercurial</code>
Hans-G?nter@1312 68 installiert werden.
Hans-G?nter@1312 69 </p>
Hans-G?nter@1312 70
Hans-G?nter@1312 71 <h3>~/.hgrc</h3>
Hans-G?nter@1312 72
Hans-G?nter@1312 73 <p>
Hans-G?nter@1312 74 Vor dem Transfer des ersten Beitrags auf den Entwicklungsrechner (mit <code>hg push</code>)
Hans-G?nter@1312 75 muss eine korrekte Konfigurationsdatei <code>~/.hgrc</code> erstellt werden. Darin sollte
Hans-G?nter@1312 76 Ihre E-Mail-Adresse und Ihr richtiger Name enthalten sein. Hier ein Beispiel:
Hans-G?nter@1312 77 </p>
Hans-G?nter@1312 78 <pre class="script">
Hans-G?nter@1312 79 [ui]
Hans-G?nter@1312 80 username = Vorname Nachname &lt;name@example.de&gt;
Hans-G?nter@1312 81 </pre>
Hans-G?nter@1312 82
Hans-G?nter@1312 83 <h4>Duplizieren, Ändern, Änderungen lokal übernehmen und Änderungen transferieren</h4>
Hans-G?nter@1312 84
Hans-G?nter@1312 85 <p>
Hans-G?nter@1312 86 Ein Depot, z.B. der Wok <code>wok</code>, wird wie folgt lokal dupliziert:
Hans-G?nter@1312 87 </p>
Hans-G?nter@1312 88 <pre>
Hans-G?nter@1312 89 $ hg clone http://repos.slitaz.org/wok
Hans-G?nter@1312 90 </pre>
Hans-G?nter@1312 91 <p>
Hans-G?nter@1312 92 Jetzt muss das Verzeichnis <code>wok</code> als Arbeitsverzeichnis eingestellt werden, sonst funktionieren die
Hans-G?nter@1312 93 <code>hg</code>-Kommandos nicht. Zum Anzeigen aller oder nur der letzten Änderungen:
Hans-G?nter@1312 94 </p>
Hans-G?nter@1312 95 <pre>
Hans-G?nter@1312 96 $ hg log
Hans-G?nter@1312 97 $ hg head
Hans-G?nter@1312 98 </pre>
Hans-G?nter@1312 99 <p>
Hans-G?nter@1313 100 Nach dem Hinzufügen oder Ändern von einer oder auch mehrerer Dateien den Änderungsstatus anzeigen
Hans-G?nter@1313 101 und die Änderungen lokal übernehmen:
Hans-G?nter@1312 102 </p>
Hans-G?nter@1312 103 <pre>
Hans-G?nter@1312 104 $ hg add
Hans-G?nter@1312 105 $ hg status
Hans-G?nter@1312 106 $ hg commit -m "kurze beschreibung der vorgenommenen änderungen"
Hans-G?nter@1312 107 $ hg log
Hans-G?nter@1312 108 </pre>
Hans-G?nter@1312 109 <p>
Hans-G?nter@1312 110 Mit <code>hg rollback</code> können Sie die letzte Änderung rückgängig machen. Bevor Sie die
Hans-G?nter@1312 111 Änderungen in das Depot transferieren, sollten Sie zwischenzeitliche Änderungen anderer übernehmen:
Hans-G?nter@1312 112 </p>
Hans-G?nter@1312 113 <pre>
Hans-G?nter@1312 114 $ hg pull
Hans-G?nter@1312 115 $ hg push
Hans-G?nter@1312 116 </pre>
Hans-G?nter@1312 117 <p>
Hans-G?nter@1312 118 Das ist schon alles; Ihre Änderungen, Quellprogramme oder Korrekturen sind jetzt im Depot.
Hans-G?nter@1312 119 </p>
Hans-G?nter@1312 120
Hans-G?nter@1312 121 <h4>Ein lokal dupliziertes Depot aktualisieren</h4>
Hans-G?nter@1312 122
Hans-G?nter@1312 123 <p>
Hans-G?nter@1312 124 Ein lokal dupliziertes Depot kann aus dem SliTaz-Depot aktualisiert werden mit:
Hans-G?nter@1312 125 </p>
Hans-G?nter@1312 126 <pre>
Hans-G?nter@1312 127 $ hg pull -u
Hans-G?nter@1312 128 </pre>
Hans-G?nter@1312 129
Hans-G?nter@1312 130 <h4>Weitere nützliche Kommandos</h4>
Hans-G?nter@1312 131
Hans-G?nter@1312 132 <p>
Hans-G?nter@1312 133 Weitere <code>hg</code>-Kommandos:
Hans-G?nter@1312 134 </p>
Hans-G?nter@1312 135 <ul>
Hans-G?nter@1312 136 <li><code>hg help</code> : Zeigt alle möglichen Kommandos.</li>
Hans-G?nter@1312 137 <li><code>hg rollback</code> : Die letzte Aktion (commit, pull, push) rückgängig machen.</li>
Hans-G?nter@1312 138 <li><code>hg log &lt;package&gt;</code> : Das Änderungsprotokoll eines Paketes zeigen.</li>
Hans-G?nter@1312 139 <li><code>hg head</code> : Die letzte Änderung anzeigen.</li>
Hans-G?nter@1312 140 </ul>
Hans-G?nter@1312 141
Hans-G?nter@1312 142 <h2 id="gui">Grafische Oberflächen - reines C/GTK, Yad, Vala/Genie und CGI</h2>
Hans-G?nter@1312 143
Hans-G?nter@1312 144 <p>
Hans-G?nter@1312 145 Es gibt viele Möglichkeiten, mit „open source“-Produkten eine Benutzeroberfläche zu erzeugen.
Hans-G?nter@1312 146 Bis zur Version 3.0 von SliTaz haben wir hauptsächlich Gtkdialog verwendet, um gefällige
Hans-G?nter@1312 147 und komplexe Oberflächen in GTK zu erstellen, wobei die Anweisungen ausgeführt wurden ohne
Hans-G?nter@1312 148 übersetzt werden zu müssen. Aber gtkdialog wird nicht mehr gewartet und es fehlen viele
Hans-G?nter@1312 149 neuere GTK-Funktionalitäten. Daher sind wir bei einfachen Grafikfenstern auf Yad umgestiegen.
Hans-G?nter@1312 150 Bei der Verwaltung des Systems und der Pakete sowie bei den Konfigurationswerkzeugen sind wir
Hans-G?nter@1312 151 auf TazPanel umgestiegen, eine Web-Oberfläche mit CGI-Nutzung, die mit xHTML&nbsp;5 und CSS&nbsp;3
Hans-G?nter@1312 152 programmiert wird.
Hans-G?nter@1312 153 </p>
Hans-G?nter@1312 154 <p>
Hans-G?nter@1312 155 Yad ist sehr einfach, kann aber keine komplexen Oberflächen erzeugen: schon
Hans-G?nter@1312 156 zwei oder drei Einträge mit Marken und einige Schaltflächen sind nicht möglich. Daher mussten
Hans-G?nter@1312 157 wir eine andere Möglichkeit suchen. Der Vorteil eines Interpreters ist, dass die Anweisungen
Hans-G?nter@1312 158 nicht übersetzt werden müssen sondern zur Laufzeit verarbeitet werden, was die Anwendung
Hans-G?nter@1312 159 allerdings verlangsamt.
Hans-G?nter@1312 160 Programme in C zu schreiben ist komplex und daran werden sich weniger Mitwirkende beteiligen, da
Hans-G?nter@1312 161 Kommandoprozeduren leichter zu verstehen sind. Daher lautet die Richtlinie jetzt:
Hans-G?nter@1312 162 unsere Kommandoprozeduren beibehalten und verbessern und Benutzeroberflächen dafür in GTK oder CGI
Hans-G?nter@1312 163 zur Verfügung stellen.
Hans-G?nter@1312 164 </p>
Hans-G?nter@1312 165 <p>
Hans-G?nter@1312 166 Es gibt viele neue Programmiersprachen, die GTK verwenden, z.B. Genie, Vala oder GTKaml.
Hans-G?nter@1312 167 Beachten Sie aber, dass sie nicht so verbreitet sind wie C und GTK und nicht wirklich
Hans-G?nter@1312 168 leichter zu erlernen und zu nutzen sind. Für einfache Grafikfenster können Sie Kommandoprozeduren
Hans-G?nter@1312 169 benutzen. Sie können auch Vala benutzen, aber reines GTK braucht für ein einzelnes Fenster auch nur 14
Hans-G?nter@1312 170 Anweisungszeilen:
Hans-G?nter@1312 171 </p>
Hans-G?nter@1312 172 <pre>
Hans-G?nter@1312 173 #include &lt;gtk/gtk.h&gt;
Hans-G?nter@1312 174
Hans-G?nter@1312 175 int main(int argc, char *argv[])
Hans-G?nter@1312 176 {
Hans-G?nter@1312 177 GtkWidget *window;
Hans-G?nter@1312 178
Hans-G?nter@1312 179 gtk_init(&amp;argc, &amp;argv);
Hans-G?nter@1312 180 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
Hans-G?nter@1312 181 g_signal_connect (G_OBJECT (window), "destroy",
Hans-G?nter@1312 182 G_CALLBACK (gtk_main_quit), NULL);
Hans-G?nter@1312 183
Hans-G?nter@1312 184 gtk_widget_show(window);
Hans-G?nter@1312 185 gtk_main();
Hans-G?nter@1312 186 return 0;
Hans-G?nter@1312 187 }
Hans-G?nter@1312 188 </pre>
Hans-G?nter@1312 189 <p>
Hans-G?nter@1312 190 Wenn Sie sich nicht sicher sind, welche Programmiersprache Sie verwenden sollen, können Sie Ihre Wahl
Hans-G?nter@1312 191 bei der „Mailing“-Liste zur Diskussion stellen.
Hans-G?nter@1312 192 Wenn Sie nur eine einfache grafische Oberfläche brauchen, können Sie sich <code>tazbox</code> im
Hans-G?nter@1312 193 Depot <code>slitaz-tools</code> ansehen; das Paket enthält kleine Programme für die grafische Oberfläche
Hans-G?nter@1313 194 wie z.B. ein Abmeldefenster. TazWeb ist das erste Teilprojekt von SliTaz, das in reinem GTK geschrieben
Hans-G?nter@1313 195 wurde.
Hans-G?nter@1312 196 Sie können es ansehen um zu lernen, wie man die Funktion <code>system()</code> in einer grafischen
Hans-G?nter@1312 197 Oberfläche verwenden kann. So verwendet TazWeb beispielsweise <code>wget</code> zum Dateitransfer und
Hans-G?nter@1312 198 <code>sed</code> um Lesezeichen hinzuzufügen.
Hans-G?nter@1312 199 </p>
Hans-G?nter@1312 200 <p>
Hans-G?nter@1312 201 Yad-Anweisungsprozeduren sollten die TazYad-Richtlinien befolgen:
Hans-G?nter@1312 202 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/README">README</a> und
Hans-G?nter@1312 203 <a href="http://hg.slitaz.org/slitaz-dev-tools/raw-file/tip/tazyad/tazyad">Programmierbeispiele</a>
Hans-G?nter@1312 204 </p>
Hans-G?nter@1312 205
Hans-G?nter@1312 206 <h2 id="iconv">Implementierung von iconv()</h2>
Hans-G?nter@1312 207
Hans-G?nter@1312 208 <p>
Hans-G?nter@1312 209 SliTaz verwendet iconv() aus der GNU glibc - alle Pakete, die <code>libiconv</code> anbieten,
Hans-G?nter@1312 210 müssen die Bibliothek aus <code>glibc-locale</code> verwenden.
Hans-G?nter@1312 211 Daher gibt es kein Paket <code>libiconv</code> (1.2 MB) mehr in SliTaz.
Hans-G?nter@1312 212 </p>
Hans-G?nter@1312 213
Hans-G?nter@1312 214 <h2 id="pkgs">SliTaz-Pakete erzeugen</h2>
Hans-G?nter@1312 215
Hans-G?nter@1312 216 <p>
Hans-G?nter@1313 217 Für die offizielle Paketerzeugung werden die Kochwerkzeuge verwendet. Diese sind in dem Paket
Hans-G?nter@1313 218 <code>cookutils</code> enthalten, das in jedem SliTaz-System installiert ist, wie auch das
Hans-G?nter@1313 219 <a href="http://hg.slitaz.org/cookutils/raw-file/tip/doc/cookutils.de.html">Kochwerkzeuge-Handbuch</a>
Hans-G?nter@1313 220 für die Verwendung der Kochwerkzeuge. Damit werden Pakete erzeugt, die von Tazpkg verwaltet werden können.
Hans-G?nter@1312 221 </p>
Hans-G?nter@1312 222 <p>
Hans-G?nter@1312 223 Die Pakete werden bei SliTaz automatisch von <a href="http://cook.slitaz.org/">„Cooker“</a> aus einem
Hans-G?nter@1312 224 Quellpaket und einem Rezep im Wok erzeugt. Im Kochbuch ist das Format der
Hans-G?nter@1312 225 <a href="http://doc.slitaz.org/de:cookbook:receipt">Rezepte</a> beschrieben.
Hans-G?nter@1312 226 Die Beschreibung der Kochwerkzeuge und der Rezepte sollten Sie gelesen haben, bevor Sie mit der
Hans-G?nter@1312 227 Paketerzeugung beginnen.
Hans-G?nter@1312 228 </p>
Hans-G?nter@1312 229 <p>
Hans-G?nter@1312 230 Bei der Auswahl eines Paketes für SliTaz sollten nur solche in Betracht kommen, die
Hans-G?nter@1312 231 nützlich sind und funktionieren. Davon sollten Sie das kleinste verfügbare auswählen.
Hans-G?nter@1312 232 Es sollten nicht mehrere Pakete mit gleicher Funktionalität erstellt werden.
Hans-G?nter@1312 233 Die aktuelle Auswahl der Pakete ist aber nicht festgeschrieben. Wenn es eine Alternative zu einem Paket
Hans-G?nter@1312 234 gibt, die noch kleiner ist, mehr Funktionen enthält oder mit ein paar KB mehr <em>attraktiver</em> ist,
Hans-G?nter@1313 235 kann die Übernahme bei der „Mailing“-Liste diskutiert werden.
Hans-G?nter@1312 236 Besondere Anforderungen werden an Pakete gestellt, die in Direktstart-ISO-Abbilder
Hans-G?nter@1312 237 übernommen werden sollen. Bei diesen sollten Symbolinformationen aus den Objektprogrammen
Hans-G?nter@1312 238 sowie unnötige Abhängigkeiten und Übersetzeroptionen entfernt werden.
Hans-G?nter@1313 239 Im Allgemeinen werden solche Pakete vor der Freigabe ebenfalls bei der „Mailing“-Liste zur
Hans-G?nter@1312 240 Diskussion gestellt.
Hans-G?nter@1312 241 </p>
Hans-G?nter@1312 242 <p>
Hans-G?nter@1312 243 Bevor Sie beginnen, Pakete für SliTaz zu übersetzen und erzeugen, stellen Sie zur Vermeidung von
Hans-G?nter@1312 244 Doppelarbeit sicher, dass es etwas entsprechendes nicht schon im
Hans-G?nter@1312 245 <a href="http://download.tuxfamily.org/slitaz/packages/undigest/">inoffiziellen Wok</a>
Hans-G?nter@1313 246 gibt. Die Mitglieder der „Mailing“-Liste geben gerne Hinweise und das
Hans-G?nter@1312 247 <a href="http://hg.slitaz.org/cookutils/raw-file/tip/doc/cookutils.de.html">Kochwerkzeuge-Handbuch</a>
Hans-G?nter@1312 248 sollte für Anfänger hilfreich sein.
Hans-G?nter@1312 249 </p>
Hans-G?nter@1312 250
Hans-G?nter@1312 251 <h3 id="pkgs-naming">Benennung von Paketen</h3>
Hans-G?nter@1312 252
Hans-G?nter@1312 253 <p>
Hans-G?nter@1312 254 In den meisten Fällen stimmt der Name des Paketes mit dem Namen des Quellpaketes überein. Ausnahmen sind
Hans-G?nter@1312 255 Python, Perl, PHP, Ruby und Lua-Module. Beispielsweise heisst das Paket,
Hans-G?nter@1312 256 das ein „Kid template system“, in Python und XML geschrieben, enthält:
Hans-G?nter@1312 257 <code>python-kid</code>.
Hans-G?nter@1312 258 </p>
Hans-G?nter@1312 259
Hans-G?nter@1312 260 <h2 id="website">Verwaltung der Internetpräsenz</h2>
Hans-G?nter@1312 261
Hans-G?nter@1312 262 <p>
Hans-G?nter@1313 263 Die Internetpräsenz wird über das Mercurial-Depot <code>website</code> administriert. Dieses kann
Hans-G?nter@1313 264 dupliziert werden mit:
Hans-G?nter@1312 265 </p>
Hans-G?nter@1312 266 <pre>
Hans-G?nter@1312 267 $ hg clone http://hg.slitaz.org/website
Hans-G?nter@1312 268 oder wenn Sie die entsprechende Berechtigung haben:
Hans-G?nter@1312 269 $ hg clone http://repos.slitaz.org/website
Hans-G?nter@1312 270 </pre>
Hans-G?nter@1312 271
Hans-G?nter@1312 272 <h3>xHTML-Programmierstil</h3>
Hans-G?nter@1312 273
Hans-G?nter@1312 274 <p>
Hans-G?nter@1312 275 Die Seiten und verschiedene <em>Handbücher</em> sind in xHTML&nbsp;1.0&nbsp;transitional
Hans-G?nter@1312 276 programmiert. Die Überschrift der Stufe 1 wird nur einmal (ganz oben) verwendet,
Hans-G?nter@1312 277 Stufe 2 ist der Titel des Dokuments und die Stufen 3 und 4 werden für weitere Abstufungen
Hans-G?nter@1312 278 der Überschriften benutzt. Wenn eine Liste statt „smart anchors“ verwendet wird,
Hans-G?nter@1312 279 beginnt sie oben, direkt unterhalb einer Überschrift der Stufe 2.
Hans-G?nter@1312 280 Absätze werden in die Markierungen <code>&lt;p&gt;&lt;/p&gt;</code> eingeschlossen.
Hans-G?nter@1312 281 Für Einrückungen werden Tabulatoren verwendet. Dies ist in der Semantik begründet und sie
Hans-G?nter@1312 282 benötigen weniger Speicherplatz. Zur Darstellung von Kommandonamen oder ähnlichem innerhalb
Hans-G?nter@1312 283 eines Absatzes wird vorzugsweise <code>&lt;code&gt;</code> verwendet.
Hans-G?nter@1312 284 Beispiele für die Anwendung von Kommandos in einem Terminal werden als formatierter Text mit
Hans-G?nter@1312 285 <code>&lt;pre&gt;</code> ausgegeben, z.B.:
Hans-G?nter@1312 286 </p>
Hans-G?nter@1312 287 <pre>
Hans-G?nter@1312 288 $ command
Hans-G?nter@1312 289 </pre>
Hans-G?nter@1312 290 <p>
Hans-G?nter@1312 291 Zur Anzeige von Text, der kopiert und eingefügt werden kann, wie etwa Kommandoprozeduren,
Hans-G?nter@1312 292 Quellprogrammausschnitte, Konfigurationsdateien usw. wird ebenfalls
Hans-G?nter@1312 293 <code>&lt;pre&gt;</code> verwendet, aber mit einer CSS-Klasse namens “script”. Beispiel:
Hans-G?nter@1312 294 </p>
Hans-G?nter@1312 295 <pre class="script">
Hans-G?nter@1312 296 &lt;pre class="script"&gt;
Hans-G?nter@1312 297
Hans-G?nter@1312 298 code...
Hans-G?nter@1312 299
Hans-G?nter@1312 300 &lt;/pre&gt;
Hans-G?nter@1312 301 </pre>
Hans-G?nter@1312 302 <p>
Hans-G?nter@1312 303 <em>Hervorgehobene</em> Wörter erhalten das Merkmal <code>&lt;em&gt;</code>
Hans-G?nter@1312 304 und interne Verknüpfungen sind stets relativ. Denken Sie auch daran, Ihr Programm
Hans-G?nter@1312 305 mit dem <em>„validator“</em> des W3C auf Konformität zu prüfen.
Hans-G?nter@1312 306 </p>
Hans-G?nter@1312 307
Hans-G?nter@1312 308 <h2 id="diff">Diff und patch</h2>
Hans-G?nter@1312 309
Hans-G?nter@1312 310 <p>
Hans-G?nter@1312 311 Die Programme <code>diff</code> und <code>patch</code> dienen der Erstellung einer Datei, die
Hans-G?nter@1312 312 Unterschiede zwischen zwei Dateien enthält und mit deren Hilfe die Änderungen angewendet werden können.
Hans-G?nter@1312 313 Diese Technik wird oft angewendet, wenn mehrere Personen an einem Projekt arbeiten, damit Änderungen
Hans-G?nter@1312 314 an einer Originaldatei klar extrahiert werden können. Um eine <code>diff</code>-Datei zu erstellen,
Hans-G?nter@1312 315 die mit einem Texteditor für Menschen gut lesbar ist, muss die Option <code>-u</code> angegeben werden:
Hans-G?nter@1312 316 </p>
Hans-G?nter@1312 317 <pre>
Hans-G?nter@1312 318 $ diff -u file.orig file.new &gt; file.diff
Hans-G?nter@1312 319 </pre>
Hans-G?nter@1312 320 <p>
Hans-G?nter@1312 321 Zum Anbringen der Änderungen an der Originaldatei:
Hans-G?nter@1312 322 </p>
Hans-G?nter@1312 323 <pre>
Hans-G?nter@1312 324 $ patch file.orig file.diff
Hans-G?nter@1312 325 </pre>
Hans-G?nter@1312 326
Hans-G?nter@1312 327 <!-- End of content -->
Hans-G?nter@1312 328 </section>
Hans-G?nter@1312 329
Hans-G?nter@1312 330 <?php include("../../lib/html/footer.html"); ?>
Hans-G?nter@1312 331
Hans-G?nter@1312 332 </body>
Hans-G?nter@1312 333 </html>