Gehört zu: Knowledge Management
ACM Digital Library (aus Notizbuch)
- Communications of the ACM
- Computing Surveys
- Journal of the ACM
- …..
Link: http://www.acm.org/dl
Gehört zu: Knowledge Management
Link: http://www.acm.org/dl
Gehört zu: Literatur
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.
Gehört zu: Internet
Siehe auch: WebAuthoring
Stand: 30.10.2021
Auf das Thema “DocBook” kam ich, als ich das Sourceforge-Projekt DocBookWiki gestoßen bin.
Zum Experimentieren habe ich zunächst folgendes installiert:
Das mindeste ist ein “richtiger” XML-Editor. Folgende Produkte sind im Gespräch:
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)
Der generierte Output wird durch die Angabe eines bestimmten Stylesheets und die Angabe von Stylesheet-Parametern bestimmt. Einige der üblichen Stylesheets sind z.B.:
Stylesheet-Parameter (in der Xalan-Systax) sehen etwa wie folgt aus:
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
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
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
<?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 Personalkapazitä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 vorangegangenen Phase erfolgen. Aufwandsschätzung beruht auf zwei Größen: <emphasis>Arbeitsmenge und Arbeitsproduktivität.</emphasis> </para> <para>Wesentlich ist auch der Zeitpunkt der Aufwandsschätzung: Vor der Erstellung eines Fachkonzepts können nur grobe Erfahrungswerte und Analogieschlüsse zur Anwendung kommen. Auf der Basis eines Fachkonzepts 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>
— Main.DietrichKracht – 10 Jul 2004
Gehört zu: Audio-Software
Siehe auch: Podcasting, MediaLibrary, COWON Q5W, iPod
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:
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 |
xyz
xyz
#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
<?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>
<?xml version="1.0" encoding="UTF-8"?> <smil> <body> <seq> <audio src="rtsp://stream1.rbb-online.de/broadcast/antenne-live.ra"/> </seq> </body> </smil>
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
— Main.DietrichKracht – 10 Jun 2004
Gehört zu: Internet
Siehe auch: Windows Services
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 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)
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.
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.
Windows2000 polls every 8 hours (“SpecialSkew”), WindowsXP once a week….. (Knowledgebase Q223184)
Namen von Windows-Services herausfinden: sc query
— Main.DietrichKracht – 06 Jun 2004
Gehört zu: Version Control
Siehe auch: RCS, GitHub
CVS ist der Klassiker für VersionControl: http://www.cvshome.org
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.
Die Mainstream-Lösungen sind:
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).
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 |
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
Gehört zu: Software
Siehe auch: Web Authoring
Benutzt: SVG-Grafiken aus GitHub
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”.
Abbildung 1: Verschiedene Frontends über SCC-API
— Main.DietrichKracht – 15 May 2004
Gehört zu: Version Control
Siehe auch: CVS
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.
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:
— Main.DietrichKracht – 08 Apr 2004
Gehört zu: Web Authoring
Siehe auch: PHP
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.
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 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:
Als letzte Zeile erfolgt der Aufruf der Template, das ist standardmässig krachtweb.tpl.
Die Templates befinden sich in d:\var\www\htdoc\smarty.kr8.de\templates
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.
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.
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.
Mit einem FTP-Client werden diese statischen HTML-Seiten nun zum WebProvider hochgeladen und können dort öffentlich betrachtet werden. Zum Beispiel:
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:
Das Generieren der statischen HTML-Seiten geschiet durch eine Aufruf der Progamms Make durch ein BAT-File:
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
<?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; } ?>
<address>Dietrich Kracht. Copyright © 2004. All rights reserved. Page last modified: {filemtime file="$Article"} </address>
— Main.DietrichKracht – 25 Mar 2004