Notiz: Alice in Wonderland

Gehört zu: Literatur

Alice in Wonderland (aus Notizbuch)

Alice came to a fork in the road. ‘Which road do I take?’ she asked. ‘Where do you want to go?’, responded the Cheshire cat. ‘I don’t know.’ Alice answered. ‘Then,’ said the cat, ‘it doesn’t matter.

Computer: DocBook (aus Wiki)

Gehört zu: Internet
Siehe auch: WebAuthoring

Stand: 30.10.2021

DocBook (aus Wiki)

Auf das Thema “DocBook” kam ich, als ich das Sourceforge-Projekt DocBookWiki gestoßen bin.
Zum Experimentieren habe ich zunächst folgendes installiert:

 Installation docbook-xsl

  • Definitive Software Library ID: docbook-xsl
  • Name: DocBook XSL Stylesheets 2.65.1
  • Hersteller/Bezugsquelle: Sourceforge
  • I man so in voller Breite mit DocBook arbeiten wollte, muss man einen dafür spezialisierten Editor/IDE/Autorensystem haben.

Das mindeste ist ein “richtiger” XML-Editor. Folgende Produkte sind im Gespräch:

  • jEdit von Sourceforge / jedit.org mit XML-Plugin (Java-basierter sehr guter File-Editor als OpenSourceSoftware, aber sehr schlichte XML-Funktionalität)
  • Eclipse mit XML-Plugin z.B. XMLBuddy (recht odentlich, habe ich für eine erste Testphase für mich ausgewählt)
  • Xopus (kommerziell, kann Tabellen)
  • Abortext Epic (kommerziell, kann Tabellen)
  • epcEdit (kommerziell, kann Tabellen, Screenshots sehen sehr schlicht aus)
  • XMLmind (kommerziell, eine sog. “Standard Edition” ist kostenlos) http://www.xmlmind.com/xmleditor (Java-basiert, der beste kostenlose!!!!)
  • OxygenXMLEditor (sehr schön, aber: kommerziell)
  • XML Spy (kommerziell, ein alter Bekannter,….)

 Ein XSLT-Prozessor

Die DocBook-Gemeinde ist ja sehr auf Unix/Linux fixiert und präferriert xsltproc, das man unter Cygwin als Paket libxslt installieren kann.

Ich verwende zunächst meinen Java-basierten Xalan-XSLT-Prozessor (Siehe: Java)

 DocBook Output generieren

Der generierte Output wird durch die Angabe eines bestimmten Stylesheets und die Angabe von Stylesheet-Parametern bestimmt. Einige der üblichen Stylesheets sind z.B.:

  1. -XSL /html/docbook.xsl (das “normale” HTML-DocBook)
  2. -XSL /html/chunk.xsl (ein modulares HTML-DocBook d.h. “zerstückelt”)
  3. -XSL /fo/docbook.xsl (habe ich noch nicht probiert, soll PDF oder sonstwas rauskommem….)
  4. -XSL /htmlhelp/htmlhelp.xsl (ein “help” DocBook)

Stylesheet-Parameter (in der Xalan-Systax) sehen etwa wie folgt aus:

  • -param shade.verbatim 1
  • -param navig.graphics 1

Erzeugen von: Slideshow und Einbindung von SVG-Verktorgrafik ist (im Prinzip) möglich. Und auch beides in Kombination: http://www.zveno.com/open_source/svgslides.html

 DocBook Beispiel gmo_chronik.xml

Meine Beispiele befinden sich im Ordner E:\var\www\htdocs\docbook.

Der Aufruf des XSLT-Prozessors mit den diversen Parametern erfolgt über das Kommando-Script (BAT-File) xslt_chunk.bat:

rem Aufruf Java XSLT-Prozessor Xalan
rem $Date: 2007/06/02 07:54:32 $
echo  html/chunk.xsl	in %1.xml out %1.htm
pause
%JAVA_HOME%\bin\java org.apache.xalan.xslt.Process -IN %1.xml 
		  -XSL "docbook-xsl-1.65.1/html/chunk.xsl" 
		  -OUT %1.htm 
		  -param generate.meta.abstract 1 
		  -param html.stylesheet "chronik.css" 
		  -param html.stylesheet.type "text/css" 
		  -param navig.graphics 1 
		  -param navig.graphics.extension ".gif"
		  -param chunk.section.depth 2 
		  -param chunk.first.sections 1
pause

So wird jetzt aus der Docbook-XML-Datei eine kleine Website, indem jede Section eine HTML-Seite wird:

e:
cd \var\www\htdocs\docbook
xslt_chunk gmo_chronik

Das fertige DocBook ist gehostet auf:  http://chronik.kr8.de

 Microsoft HTML Help Workshop

Wenn man seine schönen DocBooks unbedingt in Microsoft-Help-Files umsetzen will, benötigt man für den letzten Schritt den MicrosoftHTMLHelp-Workshop und dann ganz einfach:

hhc htmlhelp.hhp 

http://codeproject.com/winhelp/docbook_howto.asp

 DocBook Beispiel

<?xml version="1.0" encoding="ISO-8859-1"?>
<DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" >
  <article>
  <title>Mein Lexikon</title>
  <section id="analogiemethode">
  <title>Analogiemethode</title>
  <para>Analogiemethode, gehört zu den Methoden der <link linkend="aufwandsschätzung">Aufwandsschätzung</link>. Es wird versucht, das zu schätzende Projekt mit ähnlichen, abgeschlossenen Projekten zu vergleichen. Eine Abweichungsanalyse stellt Gemeinsamkeiten und Unterschiede zwischen den Projekten bezüglich der wichtigen Einflussfaktoren (Projektorganisation, Entwicklungsumgebung, Metriken usw.) fest und bewertet diese bezüglich Aufwand und Produktivität.</para>
  <para>Die Schätzgenauigkeit hängt davon ab, wie gut man das zu schätzende Projekt kennt (Pflichtenheft) und von der Erfahrung bei der richtigen Auswahl und Einschätzung der Einflussfaktoren in der Abweichungsanalyse. Umfangreiche Erfahrungen mit abgeschlossenen, ähnlichen Projekten sind die Basis der Analogiemethode. Projekte, die sich in wesentlichen Faktoren grundsätzlich von den bekannten Projekten unterscheiden, können so nicht geschätzt werden.</para>
  <indexterm>
  <seealso>Aufwandsschätzung</seealso>
  <seealso>Pflichtenheft</seealso>
  </indexterm>
  </section>
  <section id="aufwandsschätzung">
  <title>Aufwandsschätzung</title>
  <para>Aufwandsschätzung, für den Anwender gleichermaßen schwieriges Unterfangen wie für den Berater; für letzteren insbesondere vor dem Hintergrund eines Festpreisauftrags. Es geht um die Prognose des Perso­nal­kapa­zitätsbedarfs für ein Projekt. Die Güte der Aufwandsschätzung kann nur so gut sein wie die Qualität der zugrundeliegenden Unterlagen (Ausschreibungsunterlagen, Ist-Analyse, Pflichtenheft). Äusserst schwierig ist es, aus der Sicht der ersten Projektphasen bereits das gesamte Projekt zu schätzen. Eine verbindliche Genauigkeit kann für die jeweils nächste Phase meist erst bei Abschluss der vorange­gan­genen Phase erfolgen. Aufwandsschätzung beruht auf zwei Größen: <emphasis>Arbeitsmenge und Arbeitspro­duk­tivität.</emphasis>
  </para>
  <para>Wesentlich ist auch der Zeitpunkt der Aufwandsschätzung: Vor der Erstellung eines Fach­konzepts können nur grobe Erfahrungswerte und Analogieschlüsse zur Anwendung kommen. Auf der Basis eines Fach­konzepts können ausgefeilte Methoden wie z.B. Function Point angewendet werden. Interindividuelle Varianzen der Produktivität haben nach Capers Jones den größten Einfluss auf die Aufwandsschätzung.
  <simplelist type="vert">
  <member>Die wichtigsten Methoden sind:</member>
  <member>Analogiemethode</member>
  <member>Multiplikatormethode</member>
  <member>Prozentsatzmethode</member>
  <member>Function-Point-Methode</member>
  <member>COCOMO-Methode</member>
  <member>Pi-mal-Daumen-Methode</member>
  <member>Budget-Methode</member>
  </simplelist>
  </para>
  </section>
  </article>

 Weblinks

— Main.DietrichKracht – 10 Jul 2004

Computer: InternetRadio (aus Wiki)

Gehört zu: Audio-Software
Siehe auch: Podcasting, MediaLibrary, COWON Q5W, iPod

Internet-Radio (aus Wiki)

Ist scheint doppelt zu sein???

Über das Internet Radiosender live zu hören, das ist heuzutage ganz einfach möglich. Die Technik heisst Streaming Audio oder um das Internet mit ins Spiel zu bringen: WebRadio bzw. InternetRadio.

Es gibt mehrere konkurriernde Systeme:

Dass überhaupt eine annehmbare Tonqualität zu Stande kommt, liegt an den Komprimierungtechniken. Komprimierung mit MP3 oder auch RealAudio ergibt bei Übertragungsraten von 44 Kbit/s schon einen ordendlichen Klang. Einfachere Sendungen werden mit 32 Kbit/s oder noch weniger übertragen, bei breitbandigem InternetZugang (z.B. DSL) kommt man gut auf 128 kBit/s, was entkomprimiert (1:11) an die CompactDisk-Qualität von 176,4 kByte/s herankommt.

Als Software zum hören von Streaming Audio (Internet Radio) gibt es sehr viel für die Windows-Platform und auch für Android- und iOS-Geräte (SmartPhones, Tablets). Sehr oft gelobt werden:

 Meine Anforderungen

  • Das Gerät soll schön klein sein, damit man es von Raum zu Raum tragen kann
  • Das Gerät soll einen eingebauten Laufsprecher haben, damit man auch mal ohne “große” HiFi-Speaker, schnell mal was hören kann
  • Es müssen unbedingt folgende Sender empfangbar sein:
    • NDR Info
    • Spreeradio
    • Mallorca Inselradio
    • ..

 Meine Favorites

 Meine Shortlist: Hardware

 Meine Bewertung der Software-Lösungen für Windows

Tabelle 1: Meine Bewertung

Eingenschaft iTunes MAGIX JetAudio
MP3 spielen Ja Ja Ja Ja
WMA spielen Nein Ja Ja Ja
Stationsliste importieren Ja Nein Ja XML-Datei
Stationsliste exportieren  ? Nein  ? XML-Datei
WebRadio Recording Nein Ja Nein Ja

Meine Bewertung der Software-Lösungen für Android

xyz

Meine Bewertung der Software-Lösungen für iOS

xyz

Sammelangebote von Sendern

Sender speichen als Playlist

 MP3 WinAmp

#EXTM3U
#EXTINF:-1,Rockantenne
http://mp3.webradio.rockantenne.de:80
#EXTINF:-1, Inselradio Mallorca - Das Inselradio 95,8 FM
#EXTINF:-1, Radiostream von Eins Live
#EXTINF:-1, MDR Sputnik MP3 http://62.146.66.24/3087mdr_sputnik_live.mp3 #EXTINF:-1, Oldie Radio Berlin http://www.oldiestar.de/oldie.asx #EXTINF:-1,Radio VHR Europe http://www.radio-vhr.de/europe.asx EXTINF:-1,Klassik Radio

 MicrosoftMediaPlayer

<?wpl version="1.0"?>
<smil>
   <head>
      <meta name="Generator" content="Microsoft Windows Media Player -- 9.0.0.3250"/>
      <author/>
      <title>Internet Radio SWR3</title>
   </head>
   <body>
      <seq>
         <media src="http://lsd.newmedia.tiscali-business.com/bb/redirect.lsc?stream=swr3$livestream.wma&content=live&media=ms"/>
      </seq>
   </body>
</smil>

 RealPlayer

<?xml version="1.0" encoding="UTF-8"?>
<smil>  
   <body> 
      <seq>	
         <audio src="rtsp://stream1.rbb-online.de/broadcast/antenne-live.ra"/>	
      </seq>
   </body>
</smil>

 Einige Sender

Die deutschen Rundfunkanstalten benutzen gerne das grundsolide (und etwas teurere RealAudio-Format), während viele kleine amerikanische Stationen MP3 streamen.

Siehe auch: http://mypage.bluewin.ch/a-z/cusipage/liveradio2.html

Tabelle 2: Einige Sender

Sender Format URL
104.6 RTL Live Real http://lsd.newmedia.tiscali-business.com/bb/redirect.lsc?adid=1001&content=live&media=rm&stream=rtl1046/rtllive.rm
Deutschlandfunk MP3 http://www.dradio.de/streaming/dlf.ram http://www.dradio.de/streaming/dlf.m3u
DeutschlandRadio Berlin Real http://www.dradio.de/streaming/dlr.ram
DRS1 Schweiz Real http://dms-cl-013.skypro-media.net:8080/ramgen/encoder/drs1.rm rtsp://206.165.150.203:554/encoder/drs1.rm?cloakport=8080,554,7070
EinsLive WDR http://www.wdr.de/wdrlive/media/einslive.smil
NDR 1 Niedersachsen Real http://www.ndr.de/ramgen/live/rnds.rm
NDR 1 Radio MV Real http://www.ndr.de/ramgen/live/rmv.rm
NDR 1 Welle Nord Real http://www.ndr.de/ramgen/live/wn.rm
NDR2 Real http://www.ndr.de/ramgen/live/ndr2.rm
NDR Info Real http://www.ndr.de/ramgen/live/ndrinfo.rm
NDR Kultur Real http://stream.ndr.de/bb/redirect.lsc?stream=ndr/live/ndrkultur.rm&content=live&media=rm
Spreeradio MNS http://cms.streamfarm.net/cms/_vm100/radio/2925spreeradio_live.asx?referer=www.spreeradio.de
Inselradio Mallorca MP3 http://stream.live-inselradio.com:8080/inselradio http://live-inselradio.com:8000/listen.pls
CBC Saskatchewan CBC Radio One http://sask.cbc.ca/radio/cbcsask.smi
88.5 KCSN Real http://www.kcsn.org/listen/kcsnlofidirect.ram
WNYC FM, New York Public Radio http://64.202.98.18:80

 Programm-Informationen

— Main.DietrichKracht – 10 Jun 2004

Computer: Zeitsynchronisation (aus Wiki)

Gehört zu: Internet
Siehe auch: Windows Services

Zeitsynchronisation (aus Wiki)

Zeitsynchronisation über das Internet

  • NTP entwickelt 1981 von David L. Mills an der University of Delaware (http://www.ntp.org)
  • SNTP: Simple Network Time Protocol ist eine vereinfachte Teilmenge von NTP

 NTP Network Time Protocol

NTP has the ability to synchronize computers across multiple time servers while compensating for network jitter and other statistical errors. Because of this ability, it is generally suitable for the synchronization of a corporate time server to an atomic clock on the global internet to within tens of milliseconds. This protocol is defined in the Internet standard RFC 1305. (Port 123)

 SNTP Simple Network Time Protocol

SNTP is a subset of the Network Time Protocol. SNTP is able to compensate for network round trip delay and take account of nominal dispersion to the root time source, but normally depends on a single time server at any given time. Because of this, it is generally suitable for synchronization of clients to a known time source on a corporate intranet.

Accurate synchronization between client and server to the order of microseconds is attainable on local area networks using SNTP. The SNTPv4 protocol is defined in the internet standard RFC 2030. (obsoletes SNTPv3 RFC 1769)

 Zeitquelle NTP Time Server im Internet

  • Uni Osnabrück (DCF77)
    • ntps1-1.rz.uni-osnabrueck.de
  • TU Berlin
    • ntps1-0.cs.tu-berlin.de
    • ntps1-1.cs.tu-berlin.de
  • Physikalisch Technische Bundesanstalt, Braunschweig (PTB)
    • ntp1.ptb.de
    • ntp2.ptb.de
  • Deutsche Telekom
    • ntp1.sda.t-online.de
  • Uni Erlangen
    • ntps1-1.uni-erlangen.de

 Welche Software benötigen wir?

 Stratum 1 und Stratum 2

Stratum 1: primary reference (NTP sites using an atomic clock for timing) Stratum 2-15: secondary reference (Stratum 2: NTP sites with slightly less accurate time sources) Public Servers: Sites that allow the general public to synchronize with them.

 Welche Software benötigen wir?

  • Auf dem Server
  • Auf den Clients: Tardis95

 Time-Service als Bestandteil des Betriebssystems

See: Windows Services Die Betriebssysteme Windows2000 und WindowsXP enthalten einen Time-Service, genannt w32time. Dieser kann so konfiguriert werden, dass direkt gegen einen public NTP-Server im Internet synchronisiert wird.

  • net stop w32time
  • net start w32time
  • net time /setsntp:servername
  • net time /querysntp
  • w32tm -once (Test der Verbindung)

Windows2000 polls every 8 hours (“SpecialSkew”), WindowsXP once a week….. (Knowledgebase Q223184)

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters

Namen von Windows-Services herausfinden: sc query

— Main.DietrichKracht – 06 Jun 2004

Computer: CVS (aus Wiki)

Gehört zu: Version Control
Siehe auch: RCS, GitHub

CVS Concurrent Versions System (aus Wiki)

CVS ist der Klassiker für VersionControl: http://www.cvshome.org

 Meine Anforderungen

  • Lauffähig auf einem Windows-Entwicklungsrechner mit geringstem Aufwand und möglichst “leichtgewichtig”
  • OpenSourceSoftware bzw. GNU GPL bzw. geringe Kosten und hohe Verbreitung

 CVS-Server

Möchte im ersten Schritt noch garnicht einsetzen. Es soll ein lokales CVS-Repository auf meinem Windows-Notebook sein, nur für mich allein.
Da Eclipse anscheinend nicht mit :local: arbeitet, sondern :pserver: benötigt, habe ich zu guter Letzt (s.u.) doch noch den CVSNT-Server installiert.

 CVS-Client

Die Mainstream-Lösungen sind:

WinCVS:
war mir schon von der Software-Architektur zu aufwendig und nicht in Übereinstimmung mit meiner Architektur (Python, Tcl, GTK).
http://www.wincvs.org
TortoiseCVS:
Eine ganz schlanke Windows-Lösung, die nur auf C++ basiert und sich sehr schön in den Windows Explorer integriert. Wirklich leicht zu benutzen. Basiert auf dem Code von WinCVS, ist aber nicht so komplex.
http://www.tortoisecvs.org/
Eclipse:
Muss man sich wohl in diesem Jahr genauer anschauen. Das scheint die Zukunft zu sein.
http://www.eclipse.org

 CVS-Server für Windows: CVSNT

Neben der Möglichkeit einen CVS-Server auf Windows über Cygwin zu realisieren, gibt es eine sehr gute Portierung auf WinNT (Windows 2000,…) CVSNT. Es gibt ganz ausführliche Schritt-für-Schritt-Beschreibungen für die Installation von CVSNT (was auch nötig ist, da es einige Fallstricke gibt).

 Meine CVS Projekte (CVS Module)

Tabelle 1: Meine CVS-Projekte

Name Pfad
Apache D:\Programme\Apache
Backup
diverses
docbook
Dokumente und Einstellungen
etc
faulkner.kr8.de
jobs e:\var\jobs

 CVS Lektion 1: Anlegen und Füllen eines CVS-Repositories

Das cvs.exe (mitgeliefert von ZeusEdit, TortoiseCVS oder CVSNT) sollte im PATH sein (also: \Programme\ZeusSCC-CVS oder \Programme\TortoiseCVS oder …). Es wird einerseits intern von dem jeweiligen SCC-Provider verwendet, andererseits kann es als Kommandozeilen-CVS-Utility unter Windows eingesetzt werden, um z.B. Das CVS-Repository per Hand aufzubauen.

Schritt 1: Initialisieren eines CVS-Repository

cvs -d:local:d:\home\cvsroot init

Damit man für das weitere Arbeiten mit CVS nicht immer den Parameter -d:local:d:\home\cvsroot angeben muss, setzten wir die dafür vorgesehene Environment-Variable: SET CVSROOT=:local:d:\home\cvsroot.

Schritt 2: Dateien in ein CVS-Repository einstellen (“importieren”)

d:
cd \home\kracht\www\dietrich.kracht.free.fr\rolodap	 (genannt "Arbeitsverzeichniss")
cvs import -m"trallala" -d -C rolodap  LONZO V1_00

Damit wird das aktuelle Verzeichnis mit allen Dateien und Unterverzeichnissen unter dem CVS-Modulnamen “rolodap” in das CVS-Repository gestellt. Umgangssprachlich nennt man “CVS-Module” auch gerne “CVS-Projekte”. Das “-d” sorgt dafür, dass das Archivierungsdatum aus dem Filedatum genommen wird, und das “-C” sorgt dafür, dass in das Arbeitsverzeichnis interne Verwaltungsinformationen für CVS gleich mitaufgenommen werden (versteckter Ordner CVS).

Das Riesenproblem mit diesem CVS IMPORT ist, dass Binär-Dateien dadurch zerstört werden (z.B. GIF, JPG,…).

Wenn man das nicht alles in einem Rutsch tun möchte, kann man es auch einzeln Schritt für Schritt tun (s.u.).

Schritt 3: Ein leeres CVS-Modul erstellen

mkdir xyz
cd xyz
cvs import rolodap LONZO V1_00
cd ..
rmdir xyz

Damit wird im CVS-Repository ein neues Modul names rolodap angelegt einschliesslich aller im Repository nötigen CVS-Files (z.B. .owner).

Nun muss ich für jedes CVS-Modul ein CVS-Arbeitsverzeichnis (sog. Sandbox) aufbauen mit “cvs checkout …”. Danach kann ich meinem CVS-Modul gezielt Dateien und Unterverzeichnisse (nur aus dem CVS-Arbeitsverzeichnis) mit “cvs add …” hinzufügen.

Schritt 4: Eine CVS-Sandbox erstellen

d:
cd \home\kracht\www\dietrich.kracht.free.fr
cvs checkout rolodap

Damit wird \home\kracht\www\dietrich.kracht.free.fr\rolodap eine CVS-Sandbox für das CVS-Modul “rolodap”. Wir sehen das daran, dass ein verstecktes Unterverzeichnes namens “CVS” angelegt wurde.

Weil im CVS nicht mit “Locks” gearbeitet wird, benötigt jeder User ständig seine “Work Directories”. In den versteckten CVS-Unterverzeichnissen jeder Sandbox speichert sich das CVS-System die nötige Verwaltungsinformation.

Der Verzeichnisname der CVS-Sandbox ist als identisch mit dem Modulnamen im CVS-Repository. Wenn man da besondere Wünsche für den Sandbox-Namen hat, muss man sich das schon beim Erstellen des CVS-Moduls überlegen.

Wenn die als Sandbox verwendeten Verzeichnisse nicht leer sind (macht man gerne am Anfang), erscheinen Warnmeldungen.

Schritt 5: Einzelne Inhalte der CVS-Sandbox ins CVS-Repository stellen

d:
cd \home\kracht\www\dietrich.kracht.free.fr\rolodap
cvs add index.php			(ggf.  -b	für binary, oder gleich TortoiseCVS nehmen)
cvs commit

Ebenso können Unterverzeichnisse der CVS-Sandbox in das CVS-Repository gestellt werden.
Wichtig im CVS: Eine CVS-Sandbox ist immer ein Ordner mit seiner Unterstruktur, wobei Teile der Sandbox ignoriert werden können. Ich mass also alles was zu meinem “Projekt” gehört, in so einer Sandbox unterbringen. Die CVS-Sandbox entspricht dann spiegelbildlich einem CVS-Modul.
Ich kann keine Dateien, die “neben” der CVS-Sandbox stehen in das CVS-Modul einchecken. Jedes “Projekt” muss also hierarchisch strukturiert sein!

Der cvs checkout arbeitet mit dem im Environment-Parameter “CVSROOT” eingestellten Repository. In diesem Falle ein privates CVS-Repository im lokalen Dateisystem meines Notebook-Computers. Genauso kann man sich aber auch ein CVS-Modul aus einem externen CVS-Repository holen:

cvs -d:pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout ant

— Main.DietrichKracht – 16 May 2004

Computer: Version Control (aus Wiki)

Gehört zu: Software
Siehe auch: Web Authoring
Benutzt: SVG-Grafiken aus GitHub

Version Control (aus Wiki)

Version Control dient der Verfolgung von Änderungen ganz allgemein an Dateien, sog. “Versionierung”. Wenn spezielle weitere Funktionalitäten für Quellcode-Verwaltung hinzukommen, spricht man von Source Code Control “SCC”.

 Meine Einsatzgebiete für Version Control

  • PHP Sourcen
  • HTML-Seiten
  • Konfigurationsdateien
  • Java Sourcen

 Meine Anforderungen an Version Control Lösungen

  • Frei verfügbar
  • Lauffähig auf Windows
  • Zukunftssicher – Mainstream
  • Integrationsmöglichkeiten in IDEs und/oder Filesystem

 Meine Short List von Version Control Lösungen

 Bewertung der Version Control Lösungen

VSS
Ich möchte nach Möglichkeit weniger Microsoft und mehr OpenSourceSoftware. Vorteil ist die Integration mit NamoWebEditor und über Microsofts SCC-API auch mit anderen Entwicklungsumgebungen.
CS-RCS
Sehr alt, Community ist von RCS auf CVS umgestiegen, SCC-API (Microsoft Common Source Code Control API) vorhanden, von Eclipse nicht unterstützt. Produkt CS-RCS nicht wirklich kostenlos.
GNU RCS
Sehr alt, Community ist von RCS auf CVS umgestiegen. Stabile Version für Win32, die ohne Cygwin funktioniert.
CVS
Das ist absolut der Mainstream. Passt zu Eclipse. Über SCC-CVS-Provider von ZeusEdit können auch SCC-IDEs wie ZeusEdit und HomeSite mit CVS arbeiten. Es war immer etwas schwierig, CVS unter Windows einzusetzten, aber mit dem SCC-CVS einerseits und mit TortoiseCVS andererseits ist das doch jetzt sehr einfach und elegant möglich.
Subversion
Soll das Nachfolgeprodukt von CVS werden. Ist schon sehr vielversprechend, aber hat sich noch nicht richtig durchgestezt. Umsteigen von CVS auf Subversion soll ganz einfach sein. Also erstmal mit CVS anfangen.
WebDAV
WebDAV wurde hier aufgenommen, weil NamoWebEditor es als Source-Control-System unterstützt….

 Entscheidung: CVS

  • Subversion ist für meine Zwecke noch nicht “Mainstream” genug.
  • CVS hatte bisher nicht genommen, da der Einstieg unter Windows kompliziert und aufwendig erschien. Das liegt aber zum grossen Teil an den Veröffentlichungen, die sehr aus der Unix-Ecke kommen und daran, dass bei CVS sofort grosse Client/Server-Szenarien berschreiben werden und das Einstiegs-Szenario “Einplatz-Windows-System” sehr stiefmütterlich behandelt wird. Durch das Arbeiten mit ZeusEdit habe ich jetzt aber den Zugang zu CVS unter Windows gefunden.
  • Für die Zwecke von TWiki auf Win32-Plattformen ist GNU RCS das Mittel der Wahl, da es ohne Cygwin funktioniert.

 SCC Interface

Abbildung 1: Verschiedene Frontends über SCC-API

SCC-Provider.svg

— Main.DietrichKracht – 15 May 2004

Computer: RCS (aus Wiki)

Gehört zu: Version Control
Siehe auch: CVS

RCS Revision Control System (aus Wiki)

RCS ist ein VersionControl-System unter GNU Unix entwickelt. Als Nachfolger von RCS kann man das heute sehr verbreitete CVS ansehen. Unter Microsoft Windows wird VSS Visual Source Safe stark propagiert.

Das WikiWiki-System TWiki verwendet RCS zur Verwaltung der Web-Seiten. Standardmäßig wird dazu unter Windows Cygwin verwendet, das dann ein RCS zur Verfügung stellt, welches die für TWiki benötigte Funktionalität bietet, aber ansonsten sich nicht zur Arbeit unter Windows anbietet.

Bei Recherchen zum Thema Parallel Entwicklung bin ich erneut auf RCS gestossen. Eine Firma Component Software bietet ein auf Windows zugeschnittenes CS-RCS Basic und Pro an: http://www.componentsoftware.com. Die Basic Version wird dem privaten Einzelplatz-User kostenlos als Freeware angeboten. CS-RCS unterstützt zusätzlich die von Microsoft propagierte Schnittstelle Microsoft SCC API und lässt sich damit sehr effizient in die eigentlichen Arbeits-Werkzeuge (FileEditing, Authoring, IDE) integrieren.

 GNU RCS 5.7 Windows Binaries

Auf der Web-Seite http://www.gnusoftware.com//directory/?level=Development/Tools/ findet man den Hinweis, auf die Purdue Universität, die Source und Binaries für Windows (Win32) bereitgestellt:

 Installation

  • Definitive Software Library ID: GNURCS
  • Name: GNURCS
  • Version: 5.7
  • Hersteller/Bezugsquelle: University of Purdue ftp://ftp.cs.purdue.edu/pub/RCS/
  • Installations-Ordner: D:\Programme\GNURCS (Rechner: braunbaer.kr8.de)
  • Environment-Variable:
    • SET LOGNAME=hugo
    • SET TZ=CET-1EST
    • SET RCSINIT=-x,v/
    • SET TMP=C:\temp
    • SET TEMP=C:\temp

 Werkzeuge mit RCS-Integration

  • FileEditing: ZeusEdit: Echte Integration über SCC
  • FileEditing: UltraEdit: RCS in das Menü einbaubar
  • HTML-Authoring: HomeSite: Echte Integration über SCC
  • HTML-Authoring: NamoWebEditor: (leider nicht RCS, sondern nur VSS oder WebDAV)
  • IDE: Eclipse: (arbeitet “von Haus aus” mit CVS)

— Main.DietrichKracht – 08 Apr 2004

Computer:: Wiki-Smarty

Gehört zu: Web Authoring
Siehe auch: PHP

Smarty meine PHP Template Engine (aus Wiki)

Smarty ist eine in PHP realisierte Template Engine für die Entwicklung zun Pflege von Websites (siehe: WebAuthoring).

Damit wird der Inhalt der Webseiten getrennt von der Darstellung (“Präsentation”) gehalten und dadurch eine bessere Verwaltung (Site Management) möglich. Smarty erfreut sich einer sehr grossen Community. Der ursprüngliche Entwickler ist Andrei Zmievski. Infos gibt es bei http://smarty.php.net

Die Template-Engine patTemplate (http://www.php-tools.net) wird für den 2003 neu gestalteten Web-Auftritt (Portal) von 1und1.com verwendet.

 Meine Smarty-Installation

  • Definitive Software Library ID: Smarty
  • Version: 2.4.2 (vom 11.02.2003)
  • Bezugsquelle: Freshmeat http://freshmeat.net/projects/smarty/ http://smarty.php.net/
  • Installationsdatum: 11.05.2003
  • Plattform: Entwicklungssystem (Notebook)
  • Installations-Ordner: d:\bin\php\smarty\….
  • Plugin-Ordner: d:\bin\php\smarty\plugins
  • Systemvoraussetzungen: PHP

 Konfiguration

  • In D:\bin\php\smarty\Smarty.class.php sind festverdrahtete Pfade
  • In D:\bin\php\smarty\plugins\function.filemtime.php ist ein festverdrahteter Pfad
  • In der PHP-Konfigurationsdatei D:\bin\php\PHP.INI wird der include_path wie folgt ergänzt: include_path = “.;d:\bin\php\pear;d:\bin\php\smarty;.\templates;.\plugins;.\include”

 Meine Website mit Smarty

Für meine WebsiteTraditionell setze ich Smarty ein. Da ich beim WebProvider keine PHP-Unterstützung habe, setzte ich Smarty auf meinem Entwicklungssystem (Notebook) ein und erzeuge daraus statische HTML-Seiten, die ich von Zeit zu Zeit hochlade.

 Die Smarty-Dateien (*.php)

Die Smarty-Dateien meiner Website liegen auf meinem Entwicklungsrechner (Notebook) in: d:\var\www\htdocs\smarty.kr8.de
Für jede Web-Seite befindet sich dort eine kleine PHP-Datei (z.B. index.php, humor.php, methods.php), in der die Template-Parameter gesetzt werden und die Template dann aufgerufen wird.

Diese Template-Parameter sind:

  • Diverse Parameter (Titel, Autor, Datum, Symbol, Banner,…)
  • Article: Aufruf des eigentlichen Textbausteins (z.B. “humor.inc”)
  • Menu: Ein Array, das die zu generierende Menüleiste definiert.

Als letzte Zeile erfolgt der Aufruf der Template, das ist standardmässig krachtweb.tpl.

 Welche Templates (*.tpl) verwende ich?

  • krachtweb.tpl: Mein Standard
  • krachtweb_popup.tpl: Für die kleinen Popup-Seiten (z.B. im Bereich “Ostern”)
  • krachtweb_print.tpl: Zur Erzeugung “druckerfreundlicher Varianten” einer Seite (z.B. beim CV)
  • krachtweb_tree.tpl: Für Seiten mit spezieller Tree-Navigation (z.B. im Bereich “Ostern”)

Die Templates befinden sich in d:\var\www\htdoc\smarty.kr8.de\templates

 Textbausteine (*.inc)

Die Textbausteine sind Dateien, die ein HTML-Fragment mit dem eigentlichen Text enthalten (z.B. “humor.inc”) und befinden sich in d:\var\www\htdocs\smarty.kr8.de\templates.

 Die dynamische Website

Damit sind wir fertig. Die dynamische Website kann nun (auf dem Entwicklungssystem) betrachtet werden. Zum Beispiel:

Leider besteht auf diese Seiten kein Zugriff vom Internet aus.

 Die statische Website

Zur Generierung der statischen HTML-Seiten wird der PHP Command Line Interpreter “CLI” verwendet. Z.B.:
cd \var\www\htdocs\smarty.kr8.de

 \php\cli\php -f index.php > \var\www\www.kr8.de\htdocs\index.htm
 \php\cli\php -f humor.php > \var\www\www.kr8.de\htdocs\humor.htm
 \php\cli\php -f methods.php > \var\www\www.kr8.de\htdocs\methods.htm 

Die so erzeugten statischen HTML-Seiten werden in \var\www\www.kr8.de\htdocs abgelegt und können dort zur Kontrolle betrachtet werden. Zum Beispiel:

Leider besteht auf diese Seiten kein Zugriff vom Internet aus.

 Upload der statischen Seiten zum Web-Provider

Mit einem FTP-Client werden diese statischen HTML-Seiten nun zum WebProvider hochgeladen und können dort öffentlich betrachtet werden. Zum Beispiel:

 Selektives Generieren der statischen HTML-Seiten mit einem Makefile

Das Generieren aller ca. 120 statischen HTML-Seiten dauert etwas lange. Wenn man jeweils nur das neu generiert, was von Änderungen betroffen war, geht es viel schneller. Dazu verwende ich das bewährte Unix-BuildTool Make.

Das produktive Makefile für meine Website ist:

  • Makefile: D:\home\kracht\www\www.kr8.de\htdocs\makefile

Das Generieren der statischen HTML-Seiten geschiet durch eine Aufruf der Progamms Make durch ein BAT-File:

  • BAT-File: D:\home\kracht\www\www.kr8.de\htdocs\makeweb.bat

Der prinzipielle Aufbau meines Makefiles ist wie folgt:

TEMPL = /var/www/www.kr8.de/smarty/templates/
PHP	= /var/www/www.kr8.de/smarty

# first target is the default target of the make command

all: krachtweb

krachtweb: index.htm humor.htm methods.htm

index.htm:	  ${TEMPL}index.inc ${PHP}index.php ${TEMPL}krachtweb.tpl
	\php\cli\php -f ${PHP}index.php > index.htm

humor.htm:		 ${TEMPL}humor.inc ${PHP}humor.php ${PHP}menu_freizeit.inc ${TEMPL}krachtweb.tpl
	\php\cli\php -f ${PHP}humor.php > humor.htm

methods.htm:		 ${TEMPL}methods.inc ${PHP}methods.php ${PHP}menu_humor.inc ${TEMPL}krachtweb.tpl
	\php\cli\php -f ${PHP}methods.php > methods.htm

03.04.2004 Menü-Ausprägungen für alle Seiten ausgelagert in INC-Dateien “menu_xyz.inc”

03.04.2004 Datum der letzen Änderung wird mithilfe eines Smarty-Plugins übernommen

FileMtime Plugin (Plugin-Ordner: d:\php\smarty\plugins)

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * Type:	  function
 * Name:	  filemtime
 * Purpose:  get the lastmodified date and time from a file
 *
 * Example:  {filemtime file='hugo.inc'}
 * -------------------------------------------------------------
 */
function smarty_function_filemtime($params, &$this)
{
	 extract($params);

	 if (!isset($file)) {
		  $this->trigger_error("filemtime: missing 'file' parameter");
		  return;
	 }
	 if($file == '') {
		  return;
	 }
	 $file = "d:/home/kracht/www/smarty.kr8.de/templates/" . $file;
	 $html = date('Y-m-d H:i:s', filemtime($file));
	 return $html;
}
?>

Einsatz des Plugins in der Smarty-Template

  <address>Dietrich Kracht. Copyright © 2004. All rights reserved. Page last modified: {filemtime file="$Article"}
  </address>

— Main.DietrichKracht – 25 Mar 2004

Computer: Internet (aus Wiki)

Gehört zu: Computer

Das Internet (aus Wiki)

 Das Internet, das World Wide Web, das Web, das WWW

Manche möchten nur darin surfen:

Andere wolle eigene Websites aufbauen:

Immer benötigt man einen Zugang zum Internet:

Senioren im Internet:

Standards

 Captcha

Akronym für: Completely Automated Public Turing test to tell Computers and Humans Apart

 Abzock-Rechnungen

Einschreiben mit folgendem Text:

  1. Weisen Sie mir nach, mit welchen Schritten ich den Vertrag abgeschlossen haben soll.
  2. Hilfsweise widerrufe ich einen möglicherweise abgeschlossenen Vertrag.
  3. Hilfsweise fechte ich meine möglicherweise abgegebene Willenserklärung wegen Inhaltsirrtum und Täuschung an.

— Main.DietrichKracht – 25 Mar 2004