[Allegro] acon report
Thomas Berger
ThB at Gymel.com
Di Jan 6 10:28:29 CET 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Lieber Herr Eversberg, liebe Liste,
ich habe meinen ersten Mini-Job fuer acon geschrieben und
folgende Beobachtungen gemacht (acon.exe vom 22.12.08 fuer
Windows).
- - Erfolg: der Aufruf
type bla.job | Lfw:\ProgVz\acon -ka -bDbVz\DbName
funktioniert wie gewuenscht, d.h. Pfade muessen nicht
in den Job codiert werden.
- - Probleme dabei jedoch:
* Es darf - anders als bei allen anderen allegro-Modulen - kein Spatium
zwischen den Schaltern und ihren Argumenten liegen, gibt man z.B.
"-k a" statt "-ka", so arbeitet der Job nicht und es gibt nur eine
kryptische Ausgabe "DbName."
* Die Angabe der Datenbank bei -b /muss/ mit Backslashes erfolgen,
das fuehrt (denkt man an das Anstossen von acon aus einem
plattformunabhaengigen Programm, etwa einem Perlskript) zu einer
m.E. unnoetigen Plattformabhaengigkeit der Aufrufe
- - I/O-Redirektion mit "|" oder "<" bzw. ">" ist ein Feature der Shell,
ruft man acon direkt aus einem Programm auf, stehen diese nicht
zur Verfuegung und man muss STDIN selber bereitstellen und STDOUT
abschoepfen (bzw. im Job eine Ausgabedatei einstellen). Dies ist
(wir haben das hier in der Liste vor einigen Jahren mit Frau Koczian
diskutiert) problematisch bzw. clientseitig sehr sorgfaeltig
anzugehen, denn alles koennte sich aufhaengen, weil irgendwelche
Buffer voll oder leer sind und das Clientprogramm dummerweise
gerade versucht, den jeweils anderen Stream abzuschoepfen oder zu
bedienen (mit Sockets geht das dann wieder einfacher, aber dafuer
haben wir ja avanti).
In Wirklichkeit ist acon ja auch kein Filter, der kontinuierliche
Daten von STDIN nach STDOUT umwandelt, sondern (ich mag mich in
Details irren) ein Programm, das STDIN einsammelt bis ein EOF
kommt, dann STDOUT bedient und sich beendet (und damit ein EOF auf
STDOUT produziert).
Langer Rede kurzer Sinn: Es sollte einen Schalter -j (oder so) geben,
mit dem man den Job angeben kann, nur wenn der fehlt, wird STDIN
herangezogen. Dann kann man in Clientprogrammen einfach STDOUT
von acon abschoepfen, ohne komplexe Kommunikation zu implementieren
oder noch einen einkapselnden Shell-Aufruf drumherum zu bauen.
- - Nervig ist, dass acon keine $-Variablen kennt. Ist denn wirklich
die einzige existierende Implementierung von Hashes in den MFC?
Gerade bei recht universellen Jobs, die u.U. beliebige Parameter-
dateien nutzen, kann man sich ja nicht darauf verlassen, dass eine
#u-Variable unmodifiziert bleibt.
Haette man $-Variable in acon-Jobs, koennte man zudem ein
Standard-Include bereitstellen, das das Kommandozeilen-Parsen
uebernehmen kann.
viele Gruesse
Thomas Berger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3-nr1 (Windows XP)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iQCVAwUBSWMkPWITJZieluOzAQLXdgP/UmCNiaeWdoNzaXWJ9bERyiVHx3PDu7MC
B9b2bQ7cbn+lOzHbkjUxs2vkLPFKyyqq66S0Ao3j3NyvudugI/G+j8s4DES/7Xri
sZx5yAzXavKj5oHlBsGln223Hf8wqgvDo0Hl2nA3xh9cDccRRvix9AuL7MdPVlx+
vhTC+potSOI=
=l4SZ
-----END PGP SIGNATURE-----
Mehr Informationen über die Mailingliste Allegro