[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