![]() Home Benchmarks Historie Forum Download Helpware Insider Dokumentation Kurs Provider-Infos Impressum |
tdbengine - news vom 12.12.2001Evolution statt Revolution: Bei der Weiterentwicklung der tdbengine wird nachwievor höchstes Augenmerk auf Stabilität und Performance gelegt Durch die wachsende Akzeptanz der tdbengine (auch in SQL-Kreisen) und deren Einsatz jenseits von Trivial-Datenbanken kommt nun ein weiterer Aspekt zum Tragen: SIcherheit - sowohl bei der Authentifizierung als auch bei der Datenübertragung und beim Speichern von Informationen auf dem Server. In der nunmehr vorliegenden Version 6.2.7 finden Sie deshalb die ersten Umsetzungen in dieser Richtung.Sie werden sich vielleicht fragen, was die schon lange in Aussicht gestellte Implementierung der FASTCGI-Schnittstelle macht. Dazu ist zu bemerken, dass hier der Leidensdruck einfach noch nicht stark genug angewachsen ist. Die tdbengine als ganz normale CGI-Applikation schlägt sich auch unter extremen Stress-Bedingungen ganz hervorragend, leistungsfördernder Speicher ist spottbillig und die Computer werden auch immer schneller (zumindest unter Linux und FreeBSD). Aus diesen Gründen : FASTCGI ist zwar keineswegs aufgehoben, aber doch weiter aufgeschoben. Mit Nachdruck arbeiten wir hingegen an einem erweiterten Dateiformat für Tabellen, Memos und Indizies: Transaktionen, Journal, Spiegelung - das sind hier die relevanten Themenkomplexe. Aber auch an dieser Stelle sei gesagt: Das neue Dateiformat kommt erst dann, wenn es in unseren Köpfen und in einer langen Testpraxis gereift ist. Hier nun also die Änderungen und Erweiterungen der neuen Version. Viel Spaß und Erfolg mit der tdbengine wünscht wie immer Ulrich Kern
Änderungen bei der KonfigurationLokale KonfigurationsdateienNormalerweise verwendet die tdbengine die Konfigurationsdatei aus dem gleichem Verzeichnis, in dem auch das ausführbare Programm selbst liegt.Bevor ein Programm ausgeführt wird, wechselt die tdbengine in dasjenige Verzeichnis, in dem das Programm enthalten ist. Befindet sich in diesem Verzeichnis eine Datei tdbengine.ini, so wird diese als (ausschließliche) Konfigurationsdatei verwendet. Das hat viele Vorteile: * lokale Konfigurationsdateien sind übersichtlicher
Logdateien festlegenEin zusätzlicher Eintrag in der Konfigurationsdatei erlaubt es, Logfiles in andere Dateien als cgi.log zu schreiben.[globals]
Damit wird das Logfile in die angegebene Datei geschrieben. Zusätzlich kann dieser Eintrag jedem Programm zugeordnet werden, wodurch für einzelne Programme oder Programmgruppen separate Logfiles geschrieben werden: [globals]
Bitte beachten: logcgi ist (derzeit) nur unter [globals] erlaubt, genauso wie semadir.
Neue Funktionen:Neue Ramtext-FunktionenDie tdbengine stellt jetzt einen weiteren System-Ramtext unter dem Namen "ramtext:~clip" zur Verfügung. Dieser ist anfangs leer, kann aber mit allen bisher bekannten Mitteln gelesen und geschrieben werden. Zusätzlich wirken noch folgende Funktionen ganz speziell auf diesen Ramtext:ramtext_delete(ramtext : STRING; startpos, anzahl : INTEGER) : INTEGER Diese Funktion ist bereits bekannt: Sie löscht aus einem Ramtext ab der Startposition eine vorgegebene Menge von Zeichen. Diese Zeichenmenge wird nunmehr aber vor dem Löschen in den Ramtext "ramtext:~clip" kopiert (also wie bei der berühmten Zwischenablage). ramtext_copy(ramtext : STRING; startpos, anzahl : INTEGER) : INTEGER Das ist eine neue Funktion. Sie macht das Gleiche wie "ramtext:_delete", nur dass die Zeichen nicht gelöscht, sondern nur nach "ramtext:~clip" kopiert werden. Und schließlich noch ramtext_paste(ramtext : STRING; startpos : INETEGER) : INTEGER Hier wird der Inhalt von "ramtext:~clip" in den Ramtext ab der Startposition
"startpos" komplett eingefügt.
Codierung und VerschlüsselungEncodeB64(s : STRING) : STRING // verschüsselt einen String mit Base64DecodeB64(s : STRING) : STRING // entschlüsselt einen String mit Base64 Die Base64-Codierung ist der Standard bei der E-Mail-Übertragung von binären Dateien. Dabei werden aus drei Quell-Bytes vier Ziel-Bytes erzeugt, wobei die Zielbytes allesamt Zeichen im druckbaren Bereich ergeben. Beispiel:
Ausgabe: Ulrich Andreas Kern VWxyaWNoIEFuZHJlYXMgS2Vybg== Ulrich Andreas Kern Routinen zur Passwort-BehandlungDie tdbengine stellt nun zwei Routinen aus der Crypt-Bibliothek zur Verfügung:MakePW(s : STRING) : STRING // verschlüsselt ein Passwort
im Unix-Standard
Beispiel:
Einfache Socket-FunktionenDie folgenden vier Funktionen sind in allen Versionen der tdbengine verfügbar. Mit ihnen ist es möglich, Klients aus allen Bereichen zu schreiben.OpenSock(adr : STRING) : INTEGER // öffnet einen TCP-Stream-Socket adr ist ein String der Form: IP:Port wie '192.168.1.100:80' oder auch
Rückgabewert ist ein Socket-Handle (1 bis 32) CloseSock(s : INTEGER) : INTEGER // schließt einen offenen Socket s : Handle von OpenSock
GetSock(s : INTEGER; VAR p : CHAR[]; maxchars : INTEGER) : INTEGER;
Überträgt aus dem Socket maxchars Zeichen bzw. maxbyte Bytes in die Array-Variable p. Rückgabewert: Anzahl der wirklich übertragenen Zeichen/Bytes.
PutSock(s : INTEGER; VAR p : CHAR[]; maxchars : INTEGER) : INTEGER;
Überträgt zu dem Socket maxchars Zeichen bzw. maxbyte Bytes aus der Array-Variablen p. Rückgabewert: Anzahl der wirklich übertragenen Zeichen/Bytes. Kleines Programmbeispiel (bitte nicht unverändert ausprobieren,
ich krieg schon so genügend Mails)
Und so ist die Ausgabe des Programms:
Alle Socket-Funktionen führen im Fehlerfall zu einem (behandelbaren) Laufzeitfehler. GetSock und PutSock liefern im Fehlerfall negative Ergebnisse, OpenSock den Wert 0.
tdbengine als Unix-ScriptspracheUnd noch eine schöne Neuerung (nur unter Linux/FreeBSD praktikabel):EASY-Programme können unter Linux/FreeBSD jetzt (auch) als "normale" Scripten aufgefasst werden. Dazu wird, wie bei der Shell, Perl und anderen Scriptsprachen, in der
ersten Zeile der Interpreter angegeben:
oder, wenn eine Kopie der tdbengine in /usr/local/bin liegt:
Dann wird das EASY-Script ausführbar gemacht und kann anschließend
einfach wie jedes andere Programm auch gestartet werden.
Beispiel:
Speichern unter /usr/local/sbin/mailer
Dann einmal starten: sudo -b /usr/local/sbin/mailer ...und schon haben wir einen Mail-Versender, der alle zehn Sekunden Mails aus dem Spoolverzeichnis verschickt und dabei ein sauberes Log-File schreibt. Freilich könnte man das auch mit /home/tdbengine/bin/tdbengine mailer.prg machen, aber 1. entfällt hier der Compilierungsvorgang (er erfolgt sozusagen
on the fly)
Weitere VerbesserungenLoadTemplate mit http-Adressen funktioniert jetzt auch in der Windows-Version.Beispiel: IF LoadTemplate('http://www.irgendeinedomain.de/templates/irgendeintamplate.html')=0
Diese Funktion ist nicht zu unterschätzen, erlaubt sie doch nicht nur (wie bisher) die funktionale, sondern (nunmehr) auch die räumliche Trennung von (CGI-)Programmierung und (HTML-)Design Die Funktion SetIdent wurde neu kodiert ist ist jetzt in der Ausführung
wesentlich (Faktor 10) schneller. Zudem erzeugt sie Zeilenvorschübe
je nach Betriebssystem: LF bei Linux und FreeBSD, CRLF bei Win32.
Hinweise zur FehlersucheDie tdbengine ist wieder einmal ein bisschen strenger geworden. Diesmal geht um das Lesen und Schreiben von Ramtexten:reset(Ramtext) liefert einen Laufzeitfehler (1), wenn der Ramtext bereits
zum Schreiben geöffnet ist.
|
Newsletter
|